packages feed

amazonka-iotsitewise (empty) → 2.0

raw patch · 368 files changed

+40694/−0 lines, 368 filesdep +amazonka-coredep +amazonka-iotsitewisedep +amazonka-test

Dependencies added: amazonka-core, amazonka-iotsitewise, 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 IoT SiteWise SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2019-12-02@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-iotsitewise)+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.IoTSiteWise](http://hackage.haskell.org/package/amazonka-iotsitewise/docs/Amazonka-IoTSiteWise.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-iotsitewise` 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-iotsitewise.cabal view
@@ -0,0 +1,293 @@+cabal-version:      2.2+name:               amazonka-iotsitewise+version:            2.0+synopsis:           Amazon IoT SiteWise SDK.+homepage:           https://github.com/brendanhay/amazonka+bug-reports:        https://github.com/brendanhay/amazonka/issues+license:            MPL-2.0+license-file:       LICENSE+author:             Brendan Hay+maintainer:+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>++copyright:          Copyright (c) 2013-2023 Brendan Hay+category:           AWS+build-type:         Simple+extra-source-files:+  fixture/*.proto+  fixture/*.yaml+  README.md+  src/.gitkeep++description:+  Derived from API version @2019-12-02@ 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.IoTSiteWise.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.IoTSiteWise" 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-iotsitewise++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.IoTSiteWise+    Amazonka.IoTSiteWise.AssociateAssets+    Amazonka.IoTSiteWise.AssociateTimeSeriesToAssetProperty+    Amazonka.IoTSiteWise.BatchAssociateProjectAssets+    Amazonka.IoTSiteWise.BatchDisassociateProjectAssets+    Amazonka.IoTSiteWise.BatchGetAssetPropertyAggregates+    Amazonka.IoTSiteWise.BatchGetAssetPropertyValue+    Amazonka.IoTSiteWise.BatchGetAssetPropertyValueHistory+    Amazonka.IoTSiteWise.BatchPutAssetPropertyValue+    Amazonka.IoTSiteWise.CreateAccessPolicy+    Amazonka.IoTSiteWise.CreateAsset+    Amazonka.IoTSiteWise.CreateAssetModel+    Amazonka.IoTSiteWise.CreateBulkImportJob+    Amazonka.IoTSiteWise.CreateDashboard+    Amazonka.IoTSiteWise.CreateGateway+    Amazonka.IoTSiteWise.CreatePortal+    Amazonka.IoTSiteWise.CreateProject+    Amazonka.IoTSiteWise.DeleteAccessPolicy+    Amazonka.IoTSiteWise.DeleteAsset+    Amazonka.IoTSiteWise.DeleteAssetModel+    Amazonka.IoTSiteWise.DeleteDashboard+    Amazonka.IoTSiteWise.DeleteGateway+    Amazonka.IoTSiteWise.DeletePortal+    Amazonka.IoTSiteWise.DeleteProject+    Amazonka.IoTSiteWise.DeleteTimeSeries+    Amazonka.IoTSiteWise.DescribeAccessPolicy+    Amazonka.IoTSiteWise.DescribeAsset+    Amazonka.IoTSiteWise.DescribeAssetModel+    Amazonka.IoTSiteWise.DescribeAssetProperty+    Amazonka.IoTSiteWise.DescribeBulkImportJob+    Amazonka.IoTSiteWise.DescribeDashboard+    Amazonka.IoTSiteWise.DescribeDefaultEncryptionConfiguration+    Amazonka.IoTSiteWise.DescribeGateway+    Amazonka.IoTSiteWise.DescribeGatewayCapabilityConfiguration+    Amazonka.IoTSiteWise.DescribeLoggingOptions+    Amazonka.IoTSiteWise.DescribePortal+    Amazonka.IoTSiteWise.DescribeProject+    Amazonka.IoTSiteWise.DescribeStorageConfiguration+    Amazonka.IoTSiteWise.DescribeTimeSeries+    Amazonka.IoTSiteWise.DisassociateAssets+    Amazonka.IoTSiteWise.DisassociateTimeSeriesFromAssetProperty+    Amazonka.IoTSiteWise.GetAssetPropertyAggregates+    Amazonka.IoTSiteWise.GetAssetPropertyValue+    Amazonka.IoTSiteWise.GetAssetPropertyValueHistory+    Amazonka.IoTSiteWise.GetInterpolatedAssetPropertyValues+    Amazonka.IoTSiteWise.Lens+    Amazonka.IoTSiteWise.ListAccessPolicies+    Amazonka.IoTSiteWise.ListAssetModelProperties+    Amazonka.IoTSiteWise.ListAssetModels+    Amazonka.IoTSiteWise.ListAssetProperties+    Amazonka.IoTSiteWise.ListAssetRelationships+    Amazonka.IoTSiteWise.ListAssets+    Amazonka.IoTSiteWise.ListAssociatedAssets+    Amazonka.IoTSiteWise.ListBulkImportJobs+    Amazonka.IoTSiteWise.ListDashboards+    Amazonka.IoTSiteWise.ListGateways+    Amazonka.IoTSiteWise.ListPortals+    Amazonka.IoTSiteWise.ListProjectAssets+    Amazonka.IoTSiteWise.ListProjects+    Amazonka.IoTSiteWise.ListTagsForResource+    Amazonka.IoTSiteWise.ListTimeSeries+    Amazonka.IoTSiteWise.PutDefaultEncryptionConfiguration+    Amazonka.IoTSiteWise.PutLoggingOptions+    Amazonka.IoTSiteWise.PutStorageConfiguration+    Amazonka.IoTSiteWise.TagResource+    Amazonka.IoTSiteWise.Types+    Amazonka.IoTSiteWise.Types.AccessPolicySummary+    Amazonka.IoTSiteWise.Types.AggregatedValue+    Amazonka.IoTSiteWise.Types.Aggregates+    Amazonka.IoTSiteWise.Types.AggregateType+    Amazonka.IoTSiteWise.Types.Alarms+    Amazonka.IoTSiteWise.Types.AssetCompositeModel+    Amazonka.IoTSiteWise.Types.AssetErrorCode+    Amazonka.IoTSiteWise.Types.AssetErrorDetails+    Amazonka.IoTSiteWise.Types.AssetHierarchy+    Amazonka.IoTSiteWise.Types.AssetHierarchyInfo+    Amazonka.IoTSiteWise.Types.AssetModelCompositeModel+    Amazonka.IoTSiteWise.Types.AssetModelCompositeModelDefinition+    Amazonka.IoTSiteWise.Types.AssetModelHierarchy+    Amazonka.IoTSiteWise.Types.AssetModelHierarchyDefinition+    Amazonka.IoTSiteWise.Types.AssetModelProperty+    Amazonka.IoTSiteWise.Types.AssetModelPropertyDefinition+    Amazonka.IoTSiteWise.Types.AssetModelPropertySummary+    Amazonka.IoTSiteWise.Types.AssetModelState+    Amazonka.IoTSiteWise.Types.AssetModelStatus+    Amazonka.IoTSiteWise.Types.AssetModelSummary+    Amazonka.IoTSiteWise.Types.AssetProperty+    Amazonka.IoTSiteWise.Types.AssetPropertySummary+    Amazonka.IoTSiteWise.Types.AssetPropertyValue+    Amazonka.IoTSiteWise.Types.AssetRelationshipSummary+    Amazonka.IoTSiteWise.Types.AssetRelationshipType+    Amazonka.IoTSiteWise.Types.AssetState+    Amazonka.IoTSiteWise.Types.AssetStatus+    Amazonka.IoTSiteWise.Types.AssetSummary+    Amazonka.IoTSiteWise.Types.AssociatedAssetsSummary+    Amazonka.IoTSiteWise.Types.Attribute+    Amazonka.IoTSiteWise.Types.AuthMode+    Amazonka.IoTSiteWise.Types.BatchEntryCompletionStatus+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesEntry+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorCode+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorEntry+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorInfo+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesSkippedEntry+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesSuccessEntry+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueEntry+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorCode+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorEntry+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorInfo+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryEntry+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorCode+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorEntry+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorInfo+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistorySkippedEntry+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistorySuccessEntry+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueSkippedEntry+    Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueSuccessEntry+    Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyError+    Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyErrorEntry+    Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyValueErrorCode+    Amazonka.IoTSiteWise.Types.CapabilitySyncStatus+    Amazonka.IoTSiteWise.Types.ColumnName+    Amazonka.IoTSiteWise.Types.CompositeModelProperty+    Amazonka.IoTSiteWise.Types.ComputeLocation+    Amazonka.IoTSiteWise.Types.ConfigurationErrorDetails+    Amazonka.IoTSiteWise.Types.ConfigurationState+    Amazonka.IoTSiteWise.Types.ConfigurationStatus+    Amazonka.IoTSiteWise.Types.Csv+    Amazonka.IoTSiteWise.Types.CustomerManagedS3Storage+    Amazonka.IoTSiteWise.Types.DashboardSummary+    Amazonka.IoTSiteWise.Types.DetailedError+    Amazonka.IoTSiteWise.Types.DetailedErrorCode+    Amazonka.IoTSiteWise.Types.DisassociatedDataStorageState+    Amazonka.IoTSiteWise.Types.EncryptionType+    Amazonka.IoTSiteWise.Types.ErrorCode+    Amazonka.IoTSiteWise.Types.ErrorDetails+    Amazonka.IoTSiteWise.Types.ErrorReportLocation+    Amazonka.IoTSiteWise.Types.ExpressionVariable+    Amazonka.IoTSiteWise.Types.File+    Amazonka.IoTSiteWise.Types.FileFormat+    Amazonka.IoTSiteWise.Types.ForwardingConfig+    Amazonka.IoTSiteWise.Types.ForwardingConfigState+    Amazonka.IoTSiteWise.Types.GatewayCapabilitySummary+    Amazonka.IoTSiteWise.Types.GatewayPlatform+    Amazonka.IoTSiteWise.Types.GatewaySummary+    Amazonka.IoTSiteWise.Types.Greengrass+    Amazonka.IoTSiteWise.Types.GreengrassV2+    Amazonka.IoTSiteWise.Types.GroupIdentity+    Amazonka.IoTSiteWise.Types.IAMRoleIdentity+    Amazonka.IoTSiteWise.Types.IAMUserIdentity+    Amazonka.IoTSiteWise.Types.Identity+    Amazonka.IoTSiteWise.Types.IdentityType+    Amazonka.IoTSiteWise.Types.Image+    Amazonka.IoTSiteWise.Types.ImageFile+    Amazonka.IoTSiteWise.Types.ImageFileType+    Amazonka.IoTSiteWise.Types.ImageLocation+    Amazonka.IoTSiteWise.Types.InterpolatedAssetPropertyValue+    Amazonka.IoTSiteWise.Types.JobConfiguration+    Amazonka.IoTSiteWise.Types.JobStatus+    Amazonka.IoTSiteWise.Types.JobSummary+    Amazonka.IoTSiteWise.Types.ListAssetModelPropertiesFilter+    Amazonka.IoTSiteWise.Types.ListAssetPropertiesFilter+    Amazonka.IoTSiteWise.Types.ListAssetsFilter+    Amazonka.IoTSiteWise.Types.ListBulkImportJobsFilter+    Amazonka.IoTSiteWise.Types.ListTimeSeriesType+    Amazonka.IoTSiteWise.Types.LoggingLevel+    Amazonka.IoTSiteWise.Types.LoggingOptions+    Amazonka.IoTSiteWise.Types.Measurement+    Amazonka.IoTSiteWise.Types.MeasurementProcessingConfig+    Amazonka.IoTSiteWise.Types.Metric+    Amazonka.IoTSiteWise.Types.MetricProcessingConfig+    Amazonka.IoTSiteWise.Types.MetricWindow+    Amazonka.IoTSiteWise.Types.MonitorErrorCode+    Amazonka.IoTSiteWise.Types.MonitorErrorDetails+    Amazonka.IoTSiteWise.Types.MultiLayerStorage+    Amazonka.IoTSiteWise.Types.Permission+    Amazonka.IoTSiteWise.Types.PortalResource+    Amazonka.IoTSiteWise.Types.PortalState+    Amazonka.IoTSiteWise.Types.PortalStatus+    Amazonka.IoTSiteWise.Types.PortalSummary+    Amazonka.IoTSiteWise.Types.ProjectResource+    Amazonka.IoTSiteWise.Types.ProjectSummary+    Amazonka.IoTSiteWise.Types.Property+    Amazonka.IoTSiteWise.Types.PropertyDataType+    Amazonka.IoTSiteWise.Types.PropertyNotification+    Amazonka.IoTSiteWise.Types.PropertyNotificationState+    Amazonka.IoTSiteWise.Types.PropertyType+    Amazonka.IoTSiteWise.Types.PutAssetPropertyValueEntry+    Amazonka.IoTSiteWise.Types.Quality+    Amazonka.IoTSiteWise.Types.Resource+    Amazonka.IoTSiteWise.Types.ResourceType+    Amazonka.IoTSiteWise.Types.RetentionPeriod+    Amazonka.IoTSiteWise.Types.StorageType+    Amazonka.IoTSiteWise.Types.TimeInNanos+    Amazonka.IoTSiteWise.Types.TimeOrdering+    Amazonka.IoTSiteWise.Types.TimeSeriesSummary+    Amazonka.IoTSiteWise.Types.Transform+    Amazonka.IoTSiteWise.Types.TransformProcessingConfig+    Amazonka.IoTSiteWise.Types.TraversalDirection+    Amazonka.IoTSiteWise.Types.TraversalType+    Amazonka.IoTSiteWise.Types.TumblingWindow+    Amazonka.IoTSiteWise.Types.UserIdentity+    Amazonka.IoTSiteWise.Types.VariableValue+    Amazonka.IoTSiteWise.Types.Variant+    Amazonka.IoTSiteWise.UntagResource+    Amazonka.IoTSiteWise.UpdateAccessPolicy+    Amazonka.IoTSiteWise.UpdateAsset+    Amazonka.IoTSiteWise.UpdateAssetModel+    Amazonka.IoTSiteWise.UpdateAssetProperty+    Amazonka.IoTSiteWise.UpdateDashboard+    Amazonka.IoTSiteWise.UpdateGateway+    Amazonka.IoTSiteWise.UpdateGatewayCapabilityConfiguration+    Amazonka.IoTSiteWise.UpdatePortal+    Amazonka.IoTSiteWise.UpdateProject+    Amazonka.IoTSiteWise.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-iotsitewise-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.IoTSiteWise+    Test.Amazonka.IoTSiteWise+    Test.Amazonka.IoTSiteWise.Internal++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-iotsitewise+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/AssociateAssets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/AssociateAssetsResponse.proto view
+ fixture/AssociateTimeSeriesToAssetProperty.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/AssociateTimeSeriesToAssetPropertyResponse.proto view
+ fixture/BatchAssociateProjectAssets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/BatchAssociateProjectAssetsResponse.proto view
+ fixture/BatchDisassociateProjectAssets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/BatchDisassociateProjectAssetsResponse.proto view
+ fixture/BatchGetAssetPropertyAggregates.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/BatchGetAssetPropertyAggregatesResponse.proto view
+ fixture/BatchGetAssetPropertyValue.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/BatchGetAssetPropertyValueHistory.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/BatchGetAssetPropertyValueHistoryResponse.proto view
+ fixture/BatchGetAssetPropertyValueResponse.proto view
+ fixture/BatchPutAssetPropertyValue.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/BatchPutAssetPropertyValueResponse.proto view
+ fixture/CreateAccessPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/CreateAccessPolicyResponse.proto view
+ fixture/CreateAsset.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/CreateAssetModel.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/CreateAssetModelResponse.proto view
+ fixture/CreateAssetResponse.proto view
+ fixture/CreateBulkImportJob.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/CreateBulkImportJobResponse.proto view
+ fixture/CreateDashboard.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/CreateDashboardResponse.proto view
+ fixture/CreateGateway.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/CreateGatewayResponse.proto view
+ fixture/CreatePortal.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/CreatePortalResponse.proto view
+ fixture/CreateProject.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/CreateProjectResponse.proto view
+ fixture/DeleteAccessPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DeleteAccessPolicyResponse.proto view
+ fixture/DeleteAsset.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DeleteAssetModel.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DeleteAssetModelResponse.proto view
+ fixture/DeleteAssetResponse.proto view
+ fixture/DeleteDashboard.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DeleteDashboardResponse.proto view
+ fixture/DeleteGateway.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DeleteGatewayResponse.proto view
+ fixture/DeletePortal.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DeletePortalResponse.proto view
+ fixture/DeleteProject.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DeleteProjectResponse.proto view
+ fixture/DeleteTimeSeries.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DeleteTimeSeriesResponse.proto view
+ fixture/DescribeAccessPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeAccessPolicyResponse.proto view
+ fixture/DescribeAsset.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeAssetModel.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeAssetModelResponse.proto view
+ fixture/DescribeAssetProperty.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeAssetPropertyResponse.proto view
+ fixture/DescribeAssetResponse.proto view
+ fixture/DescribeBulkImportJob.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeBulkImportJobResponse.proto view
+ fixture/DescribeDashboard.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeDashboardResponse.proto view
+ fixture/DescribeDefaultEncryptionConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeDefaultEncryptionConfigurationResponse.proto view
+ fixture/DescribeGateway.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeGatewayCapabilityConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeGatewayCapabilityConfigurationResponse.proto view
+ fixture/DescribeGatewayResponse.proto view
+ fixture/DescribeLoggingOptions.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeLoggingOptionsResponse.proto view
+ fixture/DescribePortal.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribePortalResponse.proto view
+ fixture/DescribeProject.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeProjectResponse.proto view
+ fixture/DescribeStorageConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeStorageConfigurationResponse.proto view
+ fixture/DescribeTimeSeries.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DescribeTimeSeriesResponse.proto view
+ fixture/DisassociateAssets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DisassociateAssetsResponse.proto view
+ fixture/DisassociateTimeSeriesFromAssetProperty.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/DisassociateTimeSeriesFromAssetPropertyResponse.proto view
+ fixture/GetAssetPropertyAggregates.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/GetAssetPropertyAggregatesResponse.proto view
+ fixture/GetAssetPropertyValue.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/GetAssetPropertyValueHistory.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/GetAssetPropertyValueHistoryResponse.proto view
+ fixture/GetAssetPropertyValueResponse.proto view
+ fixture/GetInterpolatedAssetPropertyValues.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/GetInterpolatedAssetPropertyValuesResponse.proto view
+ fixture/ListAccessPolicies.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListAccessPoliciesResponse.proto view
+ fixture/ListAssetModelProperties.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListAssetModelPropertiesResponse.proto view
+ fixture/ListAssetModels.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListAssetModelsResponse.proto view
+ fixture/ListAssetProperties.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListAssetPropertiesResponse.proto view
+ fixture/ListAssetRelationships.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListAssetRelationshipsResponse.proto view
+ fixture/ListAssets.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListAssetsResponse.proto view
+ fixture/ListAssociatedAssets.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListAssociatedAssetsResponse.proto view
+ fixture/ListBulkImportJobs.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListBulkImportJobsResponse.proto view
+ fixture/ListDashboards.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListDashboardsResponse.proto view
+ fixture/ListGateways.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListGatewaysResponse.proto view
+ fixture/ListPortals.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListPortalsResponse.proto view
+ fixture/ListProjectAssets.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListProjectAssetsResponse.proto view
+ fixture/ListProjects.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListProjectsResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListTimeSeries.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/ListTimeSeriesResponse.proto view
+ fixture/PutDefaultEncryptionConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/PutDefaultEncryptionConfigurationResponse.proto view
+ fixture/PutLoggingOptions.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/PutLoggingOptionsResponse.proto view
+ fixture/PutStorageConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/PutStorageConfigurationResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/UpdateAccessPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/UpdateAccessPolicyResponse.proto view
+ fixture/UpdateAsset.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/UpdateAssetModel.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/UpdateAssetModelResponse.proto view
+ fixture/UpdateAssetProperty.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/UpdateAssetPropertyResponse.proto view
+ fixture/UpdateAssetResponse.proto view
+ fixture/UpdateDashboard.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/UpdateDashboardResponse.proto view
+ fixture/UpdateGateway.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/UpdateGatewayCapabilityConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/UpdateGatewayCapabilityConfigurationResponse.proto view
+ fixture/UpdateGatewayResponse.proto view
+ fixture/UpdatePortal.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/UpdatePortalResponse.proto view
+ fixture/UpdateProject.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/iotsitewise/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  iotsitewise.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/UpdateProjectResponse.proto view
+ gen/Amazonka/IoTSiteWise.hs view
@@ -0,0 +1,1136 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.IoTSiteWise+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Derived from API version @2019-12-02@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- Welcome to the IoT SiteWise API Reference. IoT SiteWise is an Amazon Web+-- Services service that connects+-- <https://en.wikipedia.org/wiki/Internet_of_things#Industrial_applications Industrial Internet of Things (IIoT)>+-- devices to the power of the Amazon Web Services Cloud. For more+-- information, see the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/ IoT SiteWise User Guide>.+-- For information about IoT SiteWise quotas, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** ConflictingOperationException+    _ConflictingOperationException,++    -- ** InternalFailureException+    _InternalFailureException,++    -- ** InvalidRequestException+    _InvalidRequestException,++    -- ** LimitExceededException+    _LimitExceededException,++    -- ** ResourceAlreadyExistsException+    _ResourceAlreadyExistsException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ServiceUnavailableException+    _ServiceUnavailableException,++    -- ** ThrottlingException+    _ThrottlingException,++    -- ** TooManyTagsException+    _TooManyTagsException,++    -- ** UnauthorizedException+    _UnauthorizedException,++    -- * Waiters+    -- $waiters++    -- ** AssetActive+    newAssetActive,++    -- ** AssetModelActive+    newAssetModelActive,++    -- ** AssetModelNotExists+    newAssetModelNotExists,++    -- ** AssetNotExists+    newAssetNotExists,++    -- ** PortalActive+    newPortalActive,++    -- ** PortalNotExists+    newPortalNotExists,++    -- * Operations+    -- $operations++    -- ** AssociateAssets+    AssociateAssets (AssociateAssets'),+    newAssociateAssets,+    AssociateAssetsResponse (AssociateAssetsResponse'),+    newAssociateAssetsResponse,++    -- ** AssociateTimeSeriesToAssetProperty+    AssociateTimeSeriesToAssetProperty (AssociateTimeSeriesToAssetProperty'),+    newAssociateTimeSeriesToAssetProperty,+    AssociateTimeSeriesToAssetPropertyResponse (AssociateTimeSeriesToAssetPropertyResponse'),+    newAssociateTimeSeriesToAssetPropertyResponse,++    -- ** BatchAssociateProjectAssets+    BatchAssociateProjectAssets (BatchAssociateProjectAssets'),+    newBatchAssociateProjectAssets,+    BatchAssociateProjectAssetsResponse (BatchAssociateProjectAssetsResponse'),+    newBatchAssociateProjectAssetsResponse,++    -- ** BatchDisassociateProjectAssets+    BatchDisassociateProjectAssets (BatchDisassociateProjectAssets'),+    newBatchDisassociateProjectAssets,+    BatchDisassociateProjectAssetsResponse (BatchDisassociateProjectAssetsResponse'),+    newBatchDisassociateProjectAssetsResponse,++    -- ** BatchGetAssetPropertyAggregates+    BatchGetAssetPropertyAggregates (BatchGetAssetPropertyAggregates'),+    newBatchGetAssetPropertyAggregates,+    BatchGetAssetPropertyAggregatesResponse (BatchGetAssetPropertyAggregatesResponse'),+    newBatchGetAssetPropertyAggregatesResponse,++    -- ** BatchGetAssetPropertyValue+    BatchGetAssetPropertyValue (BatchGetAssetPropertyValue'),+    newBatchGetAssetPropertyValue,+    BatchGetAssetPropertyValueResponse (BatchGetAssetPropertyValueResponse'),+    newBatchGetAssetPropertyValueResponse,++    -- ** BatchGetAssetPropertyValueHistory+    BatchGetAssetPropertyValueHistory (BatchGetAssetPropertyValueHistory'),+    newBatchGetAssetPropertyValueHistory,+    BatchGetAssetPropertyValueHistoryResponse (BatchGetAssetPropertyValueHistoryResponse'),+    newBatchGetAssetPropertyValueHistoryResponse,++    -- ** BatchPutAssetPropertyValue+    BatchPutAssetPropertyValue (BatchPutAssetPropertyValue'),+    newBatchPutAssetPropertyValue,+    BatchPutAssetPropertyValueResponse (BatchPutAssetPropertyValueResponse'),+    newBatchPutAssetPropertyValueResponse,++    -- ** CreateAccessPolicy+    CreateAccessPolicy (CreateAccessPolicy'),+    newCreateAccessPolicy,+    CreateAccessPolicyResponse (CreateAccessPolicyResponse'),+    newCreateAccessPolicyResponse,++    -- ** CreateAsset+    CreateAsset (CreateAsset'),+    newCreateAsset,+    CreateAssetResponse (CreateAssetResponse'),+    newCreateAssetResponse,++    -- ** CreateAssetModel+    CreateAssetModel (CreateAssetModel'),+    newCreateAssetModel,+    CreateAssetModelResponse (CreateAssetModelResponse'),+    newCreateAssetModelResponse,++    -- ** CreateBulkImportJob+    CreateBulkImportJob (CreateBulkImportJob'),+    newCreateBulkImportJob,+    CreateBulkImportJobResponse (CreateBulkImportJobResponse'),+    newCreateBulkImportJobResponse,++    -- ** CreateDashboard+    CreateDashboard (CreateDashboard'),+    newCreateDashboard,+    CreateDashboardResponse (CreateDashboardResponse'),+    newCreateDashboardResponse,++    -- ** CreateGateway+    CreateGateway (CreateGateway'),+    newCreateGateway,+    CreateGatewayResponse (CreateGatewayResponse'),+    newCreateGatewayResponse,++    -- ** CreatePortal+    CreatePortal (CreatePortal'),+    newCreatePortal,+    CreatePortalResponse (CreatePortalResponse'),+    newCreatePortalResponse,++    -- ** CreateProject+    CreateProject (CreateProject'),+    newCreateProject,+    CreateProjectResponse (CreateProjectResponse'),+    newCreateProjectResponse,++    -- ** DeleteAccessPolicy+    DeleteAccessPolicy (DeleteAccessPolicy'),+    newDeleteAccessPolicy,+    DeleteAccessPolicyResponse (DeleteAccessPolicyResponse'),+    newDeleteAccessPolicyResponse,++    -- ** DeleteAsset+    DeleteAsset (DeleteAsset'),+    newDeleteAsset,+    DeleteAssetResponse (DeleteAssetResponse'),+    newDeleteAssetResponse,++    -- ** DeleteAssetModel+    DeleteAssetModel (DeleteAssetModel'),+    newDeleteAssetModel,+    DeleteAssetModelResponse (DeleteAssetModelResponse'),+    newDeleteAssetModelResponse,++    -- ** DeleteDashboard+    DeleteDashboard (DeleteDashboard'),+    newDeleteDashboard,+    DeleteDashboardResponse (DeleteDashboardResponse'),+    newDeleteDashboardResponse,++    -- ** DeleteGateway+    DeleteGateway (DeleteGateway'),+    newDeleteGateway,+    DeleteGatewayResponse (DeleteGatewayResponse'),+    newDeleteGatewayResponse,++    -- ** DeletePortal+    DeletePortal (DeletePortal'),+    newDeletePortal,+    DeletePortalResponse (DeletePortalResponse'),+    newDeletePortalResponse,++    -- ** DeleteProject+    DeleteProject (DeleteProject'),+    newDeleteProject,+    DeleteProjectResponse (DeleteProjectResponse'),+    newDeleteProjectResponse,++    -- ** DeleteTimeSeries+    DeleteTimeSeries (DeleteTimeSeries'),+    newDeleteTimeSeries,+    DeleteTimeSeriesResponse (DeleteTimeSeriesResponse'),+    newDeleteTimeSeriesResponse,++    -- ** DescribeAccessPolicy+    DescribeAccessPolicy (DescribeAccessPolicy'),+    newDescribeAccessPolicy,+    DescribeAccessPolicyResponse (DescribeAccessPolicyResponse'),+    newDescribeAccessPolicyResponse,++    -- ** DescribeAsset+    DescribeAsset (DescribeAsset'),+    newDescribeAsset,+    DescribeAssetResponse (DescribeAssetResponse'),+    newDescribeAssetResponse,++    -- ** DescribeAssetModel+    DescribeAssetModel (DescribeAssetModel'),+    newDescribeAssetModel,+    DescribeAssetModelResponse (DescribeAssetModelResponse'),+    newDescribeAssetModelResponse,++    -- ** DescribeAssetProperty+    DescribeAssetProperty (DescribeAssetProperty'),+    newDescribeAssetProperty,+    DescribeAssetPropertyResponse (DescribeAssetPropertyResponse'),+    newDescribeAssetPropertyResponse,++    -- ** DescribeBulkImportJob+    DescribeBulkImportJob (DescribeBulkImportJob'),+    newDescribeBulkImportJob,+    DescribeBulkImportJobResponse (DescribeBulkImportJobResponse'),+    newDescribeBulkImportJobResponse,++    -- ** DescribeDashboard+    DescribeDashboard (DescribeDashboard'),+    newDescribeDashboard,+    DescribeDashboardResponse (DescribeDashboardResponse'),+    newDescribeDashboardResponse,++    -- ** DescribeDefaultEncryptionConfiguration+    DescribeDefaultEncryptionConfiguration (DescribeDefaultEncryptionConfiguration'),+    newDescribeDefaultEncryptionConfiguration,+    DescribeDefaultEncryptionConfigurationResponse (DescribeDefaultEncryptionConfigurationResponse'),+    newDescribeDefaultEncryptionConfigurationResponse,++    -- ** DescribeGateway+    DescribeGateway (DescribeGateway'),+    newDescribeGateway,+    DescribeGatewayResponse (DescribeGatewayResponse'),+    newDescribeGatewayResponse,++    -- ** DescribeGatewayCapabilityConfiguration+    DescribeGatewayCapabilityConfiguration (DescribeGatewayCapabilityConfiguration'),+    newDescribeGatewayCapabilityConfiguration,+    DescribeGatewayCapabilityConfigurationResponse (DescribeGatewayCapabilityConfigurationResponse'),+    newDescribeGatewayCapabilityConfigurationResponse,++    -- ** DescribeLoggingOptions+    DescribeLoggingOptions (DescribeLoggingOptions'),+    newDescribeLoggingOptions,+    DescribeLoggingOptionsResponse (DescribeLoggingOptionsResponse'),+    newDescribeLoggingOptionsResponse,++    -- ** DescribePortal+    DescribePortal (DescribePortal'),+    newDescribePortal,+    DescribePortalResponse (DescribePortalResponse'),+    newDescribePortalResponse,++    -- ** DescribeProject+    DescribeProject (DescribeProject'),+    newDescribeProject,+    DescribeProjectResponse (DescribeProjectResponse'),+    newDescribeProjectResponse,++    -- ** DescribeStorageConfiguration+    DescribeStorageConfiguration (DescribeStorageConfiguration'),+    newDescribeStorageConfiguration,+    DescribeStorageConfigurationResponse (DescribeStorageConfigurationResponse'),+    newDescribeStorageConfigurationResponse,++    -- ** DescribeTimeSeries+    DescribeTimeSeries (DescribeTimeSeries'),+    newDescribeTimeSeries,+    DescribeTimeSeriesResponse (DescribeTimeSeriesResponse'),+    newDescribeTimeSeriesResponse,++    -- ** DisassociateAssets+    DisassociateAssets (DisassociateAssets'),+    newDisassociateAssets,+    DisassociateAssetsResponse (DisassociateAssetsResponse'),+    newDisassociateAssetsResponse,++    -- ** DisassociateTimeSeriesFromAssetProperty+    DisassociateTimeSeriesFromAssetProperty (DisassociateTimeSeriesFromAssetProperty'),+    newDisassociateTimeSeriesFromAssetProperty,+    DisassociateTimeSeriesFromAssetPropertyResponse (DisassociateTimeSeriesFromAssetPropertyResponse'),+    newDisassociateTimeSeriesFromAssetPropertyResponse,++    -- ** GetAssetPropertyAggregates (Paginated)+    GetAssetPropertyAggregates (GetAssetPropertyAggregates'),+    newGetAssetPropertyAggregates,+    GetAssetPropertyAggregatesResponse (GetAssetPropertyAggregatesResponse'),+    newGetAssetPropertyAggregatesResponse,++    -- ** GetAssetPropertyValue+    GetAssetPropertyValue (GetAssetPropertyValue'),+    newGetAssetPropertyValue,+    GetAssetPropertyValueResponse (GetAssetPropertyValueResponse'),+    newGetAssetPropertyValueResponse,++    -- ** GetAssetPropertyValueHistory (Paginated)+    GetAssetPropertyValueHistory (GetAssetPropertyValueHistory'),+    newGetAssetPropertyValueHistory,+    GetAssetPropertyValueHistoryResponse (GetAssetPropertyValueHistoryResponse'),+    newGetAssetPropertyValueHistoryResponse,++    -- ** GetInterpolatedAssetPropertyValues (Paginated)+    GetInterpolatedAssetPropertyValues (GetInterpolatedAssetPropertyValues'),+    newGetInterpolatedAssetPropertyValues,+    GetInterpolatedAssetPropertyValuesResponse (GetInterpolatedAssetPropertyValuesResponse'),+    newGetInterpolatedAssetPropertyValuesResponse,++    -- ** ListAccessPolicies (Paginated)+    ListAccessPolicies (ListAccessPolicies'),+    newListAccessPolicies,+    ListAccessPoliciesResponse (ListAccessPoliciesResponse'),+    newListAccessPoliciesResponse,++    -- ** ListAssetModelProperties (Paginated)+    ListAssetModelProperties (ListAssetModelProperties'),+    newListAssetModelProperties,+    ListAssetModelPropertiesResponse (ListAssetModelPropertiesResponse'),+    newListAssetModelPropertiesResponse,++    -- ** ListAssetModels (Paginated)+    ListAssetModels (ListAssetModels'),+    newListAssetModels,+    ListAssetModelsResponse (ListAssetModelsResponse'),+    newListAssetModelsResponse,++    -- ** ListAssetProperties (Paginated)+    ListAssetProperties (ListAssetProperties'),+    newListAssetProperties,+    ListAssetPropertiesResponse (ListAssetPropertiesResponse'),+    newListAssetPropertiesResponse,++    -- ** ListAssetRelationships (Paginated)+    ListAssetRelationships (ListAssetRelationships'),+    newListAssetRelationships,+    ListAssetRelationshipsResponse (ListAssetRelationshipsResponse'),+    newListAssetRelationshipsResponse,++    -- ** ListAssets (Paginated)+    ListAssets (ListAssets'),+    newListAssets,+    ListAssetsResponse (ListAssetsResponse'),+    newListAssetsResponse,++    -- ** ListAssociatedAssets (Paginated)+    ListAssociatedAssets (ListAssociatedAssets'),+    newListAssociatedAssets,+    ListAssociatedAssetsResponse (ListAssociatedAssetsResponse'),+    newListAssociatedAssetsResponse,++    -- ** ListBulkImportJobs (Paginated)+    ListBulkImportJobs (ListBulkImportJobs'),+    newListBulkImportJobs,+    ListBulkImportJobsResponse (ListBulkImportJobsResponse'),+    newListBulkImportJobsResponse,++    -- ** ListDashboards (Paginated)+    ListDashboards (ListDashboards'),+    newListDashboards,+    ListDashboardsResponse (ListDashboardsResponse'),+    newListDashboardsResponse,++    -- ** ListGateways (Paginated)+    ListGateways (ListGateways'),+    newListGateways,+    ListGatewaysResponse (ListGatewaysResponse'),+    newListGatewaysResponse,++    -- ** ListPortals (Paginated)+    ListPortals (ListPortals'),+    newListPortals,+    ListPortalsResponse (ListPortalsResponse'),+    newListPortalsResponse,++    -- ** ListProjectAssets (Paginated)+    ListProjectAssets (ListProjectAssets'),+    newListProjectAssets,+    ListProjectAssetsResponse (ListProjectAssetsResponse'),+    newListProjectAssetsResponse,++    -- ** ListProjects (Paginated)+    ListProjects (ListProjects'),+    newListProjects,+    ListProjectsResponse (ListProjectsResponse'),+    newListProjectsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** ListTimeSeries (Paginated)+    ListTimeSeries (ListTimeSeries'),+    newListTimeSeries,+    ListTimeSeriesResponse (ListTimeSeriesResponse'),+    newListTimeSeriesResponse,++    -- ** PutDefaultEncryptionConfiguration+    PutDefaultEncryptionConfiguration (PutDefaultEncryptionConfiguration'),+    newPutDefaultEncryptionConfiguration,+    PutDefaultEncryptionConfigurationResponse (PutDefaultEncryptionConfigurationResponse'),+    newPutDefaultEncryptionConfigurationResponse,++    -- ** PutLoggingOptions+    PutLoggingOptions (PutLoggingOptions'),+    newPutLoggingOptions,+    PutLoggingOptionsResponse (PutLoggingOptionsResponse'),+    newPutLoggingOptionsResponse,++    -- ** PutStorageConfiguration+    PutStorageConfiguration (PutStorageConfiguration'),+    newPutStorageConfiguration,+    PutStorageConfigurationResponse (PutStorageConfigurationResponse'),+    newPutStorageConfigurationResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateAccessPolicy+    UpdateAccessPolicy (UpdateAccessPolicy'),+    newUpdateAccessPolicy,+    UpdateAccessPolicyResponse (UpdateAccessPolicyResponse'),+    newUpdateAccessPolicyResponse,++    -- ** UpdateAsset+    UpdateAsset (UpdateAsset'),+    newUpdateAsset,+    UpdateAssetResponse (UpdateAssetResponse'),+    newUpdateAssetResponse,++    -- ** UpdateAssetModel+    UpdateAssetModel (UpdateAssetModel'),+    newUpdateAssetModel,+    UpdateAssetModelResponse (UpdateAssetModelResponse'),+    newUpdateAssetModelResponse,++    -- ** UpdateAssetProperty+    UpdateAssetProperty (UpdateAssetProperty'),+    newUpdateAssetProperty,+    UpdateAssetPropertyResponse (UpdateAssetPropertyResponse'),+    newUpdateAssetPropertyResponse,++    -- ** UpdateDashboard+    UpdateDashboard (UpdateDashboard'),+    newUpdateDashboard,+    UpdateDashboardResponse (UpdateDashboardResponse'),+    newUpdateDashboardResponse,++    -- ** UpdateGateway+    UpdateGateway (UpdateGateway'),+    newUpdateGateway,+    UpdateGatewayResponse (UpdateGatewayResponse'),+    newUpdateGatewayResponse,++    -- ** UpdateGatewayCapabilityConfiguration+    UpdateGatewayCapabilityConfiguration (UpdateGatewayCapabilityConfiguration'),+    newUpdateGatewayCapabilityConfiguration,+    UpdateGatewayCapabilityConfigurationResponse (UpdateGatewayCapabilityConfigurationResponse'),+    newUpdateGatewayCapabilityConfigurationResponse,++    -- ** UpdatePortal+    UpdatePortal (UpdatePortal'),+    newUpdatePortal,+    UpdatePortalResponse (UpdatePortalResponse'),+    newUpdatePortalResponse,++    -- ** UpdateProject+    UpdateProject (UpdateProject'),+    newUpdateProject,+    UpdateProjectResponse (UpdateProjectResponse'),+    newUpdateProjectResponse,++    -- * Types++    -- ** AggregateType+    AggregateType (..),++    -- ** AssetErrorCode+    AssetErrorCode (..),++    -- ** AssetModelState+    AssetModelState (..),++    -- ** AssetRelationshipType+    AssetRelationshipType (..),++    -- ** AssetState+    AssetState (..),++    -- ** AuthMode+    AuthMode (..),++    -- ** BatchEntryCompletionStatus+    BatchEntryCompletionStatus (..),++    -- ** BatchGetAssetPropertyAggregatesErrorCode+    BatchGetAssetPropertyAggregatesErrorCode (..),++    -- ** BatchGetAssetPropertyValueErrorCode+    BatchGetAssetPropertyValueErrorCode (..),++    -- ** BatchGetAssetPropertyValueHistoryErrorCode+    BatchGetAssetPropertyValueHistoryErrorCode (..),++    -- ** BatchPutAssetPropertyValueErrorCode+    BatchPutAssetPropertyValueErrorCode (..),++    -- ** CapabilitySyncStatus+    CapabilitySyncStatus (..),++    -- ** ColumnName+    ColumnName (..),++    -- ** ComputeLocation+    ComputeLocation (..),++    -- ** ConfigurationState+    ConfigurationState (..),++    -- ** DetailedErrorCode+    DetailedErrorCode (..),++    -- ** DisassociatedDataStorageState+    DisassociatedDataStorageState (..),++    -- ** EncryptionType+    EncryptionType (..),++    -- ** ErrorCode+    ErrorCode (..),++    -- ** ForwardingConfigState+    ForwardingConfigState (..),++    -- ** IdentityType+    IdentityType (..),++    -- ** ImageFileType+    ImageFileType (..),++    -- ** JobStatus+    JobStatus (..),++    -- ** ListAssetModelPropertiesFilter+    ListAssetModelPropertiesFilter (..),++    -- ** ListAssetPropertiesFilter+    ListAssetPropertiesFilter (..),++    -- ** ListAssetsFilter+    ListAssetsFilter (..),++    -- ** ListBulkImportJobsFilter+    ListBulkImportJobsFilter (..),++    -- ** ListTimeSeriesType+    ListTimeSeriesType (..),++    -- ** LoggingLevel+    LoggingLevel (..),++    -- ** MonitorErrorCode+    MonitorErrorCode (..),++    -- ** Permission+    Permission (..),++    -- ** PortalState+    PortalState (..),++    -- ** PropertyDataType+    PropertyDataType (..),++    -- ** PropertyNotificationState+    PropertyNotificationState (..),++    -- ** Quality+    Quality (..),++    -- ** ResourceType+    ResourceType (..),++    -- ** StorageType+    StorageType (..),++    -- ** TimeOrdering+    TimeOrdering (..),++    -- ** TraversalDirection+    TraversalDirection (..),++    -- ** TraversalType+    TraversalType (..),++    -- ** AccessPolicySummary+    AccessPolicySummary (AccessPolicySummary'),+    newAccessPolicySummary,++    -- ** AggregatedValue+    AggregatedValue (AggregatedValue'),+    newAggregatedValue,++    -- ** Aggregates+    Aggregates (Aggregates'),+    newAggregates,++    -- ** Alarms+    Alarms (Alarms'),+    newAlarms,++    -- ** AssetCompositeModel+    AssetCompositeModel (AssetCompositeModel'),+    newAssetCompositeModel,++    -- ** AssetErrorDetails+    AssetErrorDetails (AssetErrorDetails'),+    newAssetErrorDetails,++    -- ** AssetHierarchy+    AssetHierarchy (AssetHierarchy'),+    newAssetHierarchy,++    -- ** AssetHierarchyInfo+    AssetHierarchyInfo (AssetHierarchyInfo'),+    newAssetHierarchyInfo,++    -- ** AssetModelCompositeModel+    AssetModelCompositeModel (AssetModelCompositeModel'),+    newAssetModelCompositeModel,++    -- ** AssetModelCompositeModelDefinition+    AssetModelCompositeModelDefinition (AssetModelCompositeModelDefinition'),+    newAssetModelCompositeModelDefinition,++    -- ** AssetModelHierarchy+    AssetModelHierarchy (AssetModelHierarchy'),+    newAssetModelHierarchy,++    -- ** AssetModelHierarchyDefinition+    AssetModelHierarchyDefinition (AssetModelHierarchyDefinition'),+    newAssetModelHierarchyDefinition,++    -- ** AssetModelProperty+    AssetModelProperty (AssetModelProperty'),+    newAssetModelProperty,++    -- ** AssetModelPropertyDefinition+    AssetModelPropertyDefinition (AssetModelPropertyDefinition'),+    newAssetModelPropertyDefinition,++    -- ** AssetModelPropertySummary+    AssetModelPropertySummary (AssetModelPropertySummary'),+    newAssetModelPropertySummary,++    -- ** AssetModelStatus+    AssetModelStatus (AssetModelStatus'),+    newAssetModelStatus,++    -- ** AssetModelSummary+    AssetModelSummary (AssetModelSummary'),+    newAssetModelSummary,++    -- ** AssetProperty+    AssetProperty (AssetProperty'),+    newAssetProperty,++    -- ** AssetPropertySummary+    AssetPropertySummary (AssetPropertySummary'),+    newAssetPropertySummary,++    -- ** AssetPropertyValue+    AssetPropertyValue (AssetPropertyValue'),+    newAssetPropertyValue,++    -- ** AssetRelationshipSummary+    AssetRelationshipSummary (AssetRelationshipSummary'),+    newAssetRelationshipSummary,++    -- ** AssetStatus+    AssetStatus (AssetStatus'),+    newAssetStatus,++    -- ** AssetSummary+    AssetSummary (AssetSummary'),+    newAssetSummary,++    -- ** AssociatedAssetsSummary+    AssociatedAssetsSummary (AssociatedAssetsSummary'),+    newAssociatedAssetsSummary,++    -- ** Attribute+    Attribute (Attribute'),+    newAttribute,++    -- ** BatchGetAssetPropertyAggregatesEntry+    BatchGetAssetPropertyAggregatesEntry (BatchGetAssetPropertyAggregatesEntry'),+    newBatchGetAssetPropertyAggregatesEntry,++    -- ** BatchGetAssetPropertyAggregatesErrorEntry+    BatchGetAssetPropertyAggregatesErrorEntry (BatchGetAssetPropertyAggregatesErrorEntry'),+    newBatchGetAssetPropertyAggregatesErrorEntry,++    -- ** BatchGetAssetPropertyAggregatesErrorInfo+    BatchGetAssetPropertyAggregatesErrorInfo (BatchGetAssetPropertyAggregatesErrorInfo'),+    newBatchGetAssetPropertyAggregatesErrorInfo,++    -- ** BatchGetAssetPropertyAggregatesSkippedEntry+    BatchGetAssetPropertyAggregatesSkippedEntry (BatchGetAssetPropertyAggregatesSkippedEntry'),+    newBatchGetAssetPropertyAggregatesSkippedEntry,++    -- ** BatchGetAssetPropertyAggregatesSuccessEntry+    BatchGetAssetPropertyAggregatesSuccessEntry (BatchGetAssetPropertyAggregatesSuccessEntry'),+    newBatchGetAssetPropertyAggregatesSuccessEntry,++    -- ** BatchGetAssetPropertyValueEntry+    BatchGetAssetPropertyValueEntry (BatchGetAssetPropertyValueEntry'),+    newBatchGetAssetPropertyValueEntry,++    -- ** BatchGetAssetPropertyValueErrorEntry+    BatchGetAssetPropertyValueErrorEntry (BatchGetAssetPropertyValueErrorEntry'),+    newBatchGetAssetPropertyValueErrorEntry,++    -- ** BatchGetAssetPropertyValueErrorInfo+    BatchGetAssetPropertyValueErrorInfo (BatchGetAssetPropertyValueErrorInfo'),+    newBatchGetAssetPropertyValueErrorInfo,++    -- ** BatchGetAssetPropertyValueHistoryEntry+    BatchGetAssetPropertyValueHistoryEntry (BatchGetAssetPropertyValueHistoryEntry'),+    newBatchGetAssetPropertyValueHistoryEntry,++    -- ** BatchGetAssetPropertyValueHistoryErrorEntry+    BatchGetAssetPropertyValueHistoryErrorEntry (BatchGetAssetPropertyValueHistoryErrorEntry'),+    newBatchGetAssetPropertyValueHistoryErrorEntry,++    -- ** BatchGetAssetPropertyValueHistoryErrorInfo+    BatchGetAssetPropertyValueHistoryErrorInfo (BatchGetAssetPropertyValueHistoryErrorInfo'),+    newBatchGetAssetPropertyValueHistoryErrorInfo,++    -- ** BatchGetAssetPropertyValueHistorySkippedEntry+    BatchGetAssetPropertyValueHistorySkippedEntry (BatchGetAssetPropertyValueHistorySkippedEntry'),+    newBatchGetAssetPropertyValueHistorySkippedEntry,++    -- ** BatchGetAssetPropertyValueHistorySuccessEntry+    BatchGetAssetPropertyValueHistorySuccessEntry (BatchGetAssetPropertyValueHistorySuccessEntry'),+    newBatchGetAssetPropertyValueHistorySuccessEntry,++    -- ** BatchGetAssetPropertyValueSkippedEntry+    BatchGetAssetPropertyValueSkippedEntry (BatchGetAssetPropertyValueSkippedEntry'),+    newBatchGetAssetPropertyValueSkippedEntry,++    -- ** BatchGetAssetPropertyValueSuccessEntry+    BatchGetAssetPropertyValueSuccessEntry (BatchGetAssetPropertyValueSuccessEntry'),+    newBatchGetAssetPropertyValueSuccessEntry,++    -- ** BatchPutAssetPropertyError+    BatchPutAssetPropertyError (BatchPutAssetPropertyError'),+    newBatchPutAssetPropertyError,++    -- ** BatchPutAssetPropertyErrorEntry+    BatchPutAssetPropertyErrorEntry (BatchPutAssetPropertyErrorEntry'),+    newBatchPutAssetPropertyErrorEntry,++    -- ** CompositeModelProperty+    CompositeModelProperty (CompositeModelProperty'),+    newCompositeModelProperty,++    -- ** ConfigurationErrorDetails+    ConfigurationErrorDetails (ConfigurationErrorDetails'),+    newConfigurationErrorDetails,++    -- ** ConfigurationStatus+    ConfigurationStatus (ConfigurationStatus'),+    newConfigurationStatus,++    -- ** Csv+    Csv (Csv'),+    newCsv,++    -- ** CustomerManagedS3Storage+    CustomerManagedS3Storage (CustomerManagedS3Storage'),+    newCustomerManagedS3Storage,++    -- ** DashboardSummary+    DashboardSummary (DashboardSummary'),+    newDashboardSummary,++    -- ** DetailedError+    DetailedError (DetailedError'),+    newDetailedError,++    -- ** ErrorDetails+    ErrorDetails (ErrorDetails'),+    newErrorDetails,++    -- ** ErrorReportLocation+    ErrorReportLocation (ErrorReportLocation'),+    newErrorReportLocation,++    -- ** ExpressionVariable+    ExpressionVariable (ExpressionVariable'),+    newExpressionVariable,++    -- ** File+    File (File'),+    newFile,++    -- ** FileFormat+    FileFormat (FileFormat'),+    newFileFormat,++    -- ** ForwardingConfig+    ForwardingConfig (ForwardingConfig'),+    newForwardingConfig,++    -- ** GatewayCapabilitySummary+    GatewayCapabilitySummary (GatewayCapabilitySummary'),+    newGatewayCapabilitySummary,++    -- ** GatewayPlatform+    GatewayPlatform (GatewayPlatform'),+    newGatewayPlatform,++    -- ** GatewaySummary+    GatewaySummary (GatewaySummary'),+    newGatewaySummary,++    -- ** Greengrass+    Greengrass (Greengrass'),+    newGreengrass,++    -- ** GreengrassV2+    GreengrassV2 (GreengrassV2'),+    newGreengrassV2,++    -- ** GroupIdentity+    GroupIdentity (GroupIdentity'),+    newGroupIdentity,++    -- ** IAMRoleIdentity+    IAMRoleIdentity (IAMRoleIdentity'),+    newIAMRoleIdentity,++    -- ** IAMUserIdentity+    IAMUserIdentity (IAMUserIdentity'),+    newIAMUserIdentity,++    -- ** Identity+    Identity (Identity'),+    newIdentity,++    -- ** Image+    Image (Image'),+    newImage,++    -- ** ImageFile+    ImageFile (ImageFile'),+    newImageFile,++    -- ** ImageLocation+    ImageLocation (ImageLocation'),+    newImageLocation,++    -- ** InterpolatedAssetPropertyValue+    InterpolatedAssetPropertyValue (InterpolatedAssetPropertyValue'),+    newInterpolatedAssetPropertyValue,++    -- ** JobConfiguration+    JobConfiguration (JobConfiguration'),+    newJobConfiguration,++    -- ** JobSummary+    JobSummary (JobSummary'),+    newJobSummary,++    -- ** LoggingOptions+    LoggingOptions (LoggingOptions'),+    newLoggingOptions,++    -- ** Measurement+    Measurement (Measurement'),+    newMeasurement,++    -- ** MeasurementProcessingConfig+    MeasurementProcessingConfig (MeasurementProcessingConfig'),+    newMeasurementProcessingConfig,++    -- ** Metric+    Metric (Metric'),+    newMetric,++    -- ** MetricProcessingConfig+    MetricProcessingConfig (MetricProcessingConfig'),+    newMetricProcessingConfig,++    -- ** MetricWindow+    MetricWindow (MetricWindow'),+    newMetricWindow,++    -- ** MonitorErrorDetails+    MonitorErrorDetails (MonitorErrorDetails'),+    newMonitorErrorDetails,++    -- ** MultiLayerStorage+    MultiLayerStorage (MultiLayerStorage'),+    newMultiLayerStorage,++    -- ** PortalResource+    PortalResource (PortalResource'),+    newPortalResource,++    -- ** PortalStatus+    PortalStatus (PortalStatus'),+    newPortalStatus,++    -- ** PortalSummary+    PortalSummary (PortalSummary'),+    newPortalSummary,++    -- ** ProjectResource+    ProjectResource (ProjectResource'),+    newProjectResource,++    -- ** ProjectSummary+    ProjectSummary (ProjectSummary'),+    newProjectSummary,++    -- ** Property+    Property (Property'),+    newProperty,++    -- ** PropertyNotification+    PropertyNotification (PropertyNotification'),+    newPropertyNotification,++    -- ** PropertyType+    PropertyType (PropertyType'),+    newPropertyType,++    -- ** PutAssetPropertyValueEntry+    PutAssetPropertyValueEntry (PutAssetPropertyValueEntry'),+    newPutAssetPropertyValueEntry,++    -- ** Resource+    Resource (Resource'),+    newResource,++    -- ** RetentionPeriod+    RetentionPeriod (RetentionPeriod'),+    newRetentionPeriod,++    -- ** TimeInNanos+    TimeInNanos (TimeInNanos'),+    newTimeInNanos,++    -- ** TimeSeriesSummary+    TimeSeriesSummary (TimeSeriesSummary'),+    newTimeSeriesSummary,++    -- ** Transform+    Transform (Transform'),+    newTransform,++    -- ** TransformProcessingConfig+    TransformProcessingConfig (TransformProcessingConfig'),+    newTransformProcessingConfig,++    -- ** TumblingWindow+    TumblingWindow (TumblingWindow'),+    newTumblingWindow,++    -- ** UserIdentity+    UserIdentity (UserIdentity'),+    newUserIdentity,++    -- ** VariableValue+    VariableValue (VariableValue'),+    newVariableValue,++    -- ** Variant+    Variant (Variant'),+    newVariant,+  )+where++import Amazonka.IoTSiteWise.AssociateAssets+import Amazonka.IoTSiteWise.AssociateTimeSeriesToAssetProperty+import Amazonka.IoTSiteWise.BatchAssociateProjectAssets+import Amazonka.IoTSiteWise.BatchDisassociateProjectAssets+import Amazonka.IoTSiteWise.BatchGetAssetPropertyAggregates+import Amazonka.IoTSiteWise.BatchGetAssetPropertyValue+import Amazonka.IoTSiteWise.BatchGetAssetPropertyValueHistory+import Amazonka.IoTSiteWise.BatchPutAssetPropertyValue+import Amazonka.IoTSiteWise.CreateAccessPolicy+import Amazonka.IoTSiteWise.CreateAsset+import Amazonka.IoTSiteWise.CreateAssetModel+import Amazonka.IoTSiteWise.CreateBulkImportJob+import Amazonka.IoTSiteWise.CreateDashboard+import Amazonka.IoTSiteWise.CreateGateway+import Amazonka.IoTSiteWise.CreatePortal+import Amazonka.IoTSiteWise.CreateProject+import Amazonka.IoTSiteWise.DeleteAccessPolicy+import Amazonka.IoTSiteWise.DeleteAsset+import Amazonka.IoTSiteWise.DeleteAssetModel+import Amazonka.IoTSiteWise.DeleteDashboard+import Amazonka.IoTSiteWise.DeleteGateway+import Amazonka.IoTSiteWise.DeletePortal+import Amazonka.IoTSiteWise.DeleteProject+import Amazonka.IoTSiteWise.DeleteTimeSeries+import Amazonka.IoTSiteWise.DescribeAccessPolicy+import Amazonka.IoTSiteWise.DescribeAsset+import Amazonka.IoTSiteWise.DescribeAssetModel+import Amazonka.IoTSiteWise.DescribeAssetProperty+import Amazonka.IoTSiteWise.DescribeBulkImportJob+import Amazonka.IoTSiteWise.DescribeDashboard+import Amazonka.IoTSiteWise.DescribeDefaultEncryptionConfiguration+import Amazonka.IoTSiteWise.DescribeGateway+import Amazonka.IoTSiteWise.DescribeGatewayCapabilityConfiguration+import Amazonka.IoTSiteWise.DescribeLoggingOptions+import Amazonka.IoTSiteWise.DescribePortal+import Amazonka.IoTSiteWise.DescribeProject+import Amazonka.IoTSiteWise.DescribeStorageConfiguration+import Amazonka.IoTSiteWise.DescribeTimeSeries+import Amazonka.IoTSiteWise.DisassociateAssets+import Amazonka.IoTSiteWise.DisassociateTimeSeriesFromAssetProperty+import Amazonka.IoTSiteWise.GetAssetPropertyAggregates+import Amazonka.IoTSiteWise.GetAssetPropertyValue+import Amazonka.IoTSiteWise.GetAssetPropertyValueHistory+import Amazonka.IoTSiteWise.GetInterpolatedAssetPropertyValues+import Amazonka.IoTSiteWise.Lens+import Amazonka.IoTSiteWise.ListAccessPolicies+import Amazonka.IoTSiteWise.ListAssetModelProperties+import Amazonka.IoTSiteWise.ListAssetModels+import Amazonka.IoTSiteWise.ListAssetProperties+import Amazonka.IoTSiteWise.ListAssetRelationships+import Amazonka.IoTSiteWise.ListAssets+import Amazonka.IoTSiteWise.ListAssociatedAssets+import Amazonka.IoTSiteWise.ListBulkImportJobs+import Amazonka.IoTSiteWise.ListDashboards+import Amazonka.IoTSiteWise.ListGateways+import Amazonka.IoTSiteWise.ListPortals+import Amazonka.IoTSiteWise.ListProjectAssets+import Amazonka.IoTSiteWise.ListProjects+import Amazonka.IoTSiteWise.ListTagsForResource+import Amazonka.IoTSiteWise.ListTimeSeries+import Amazonka.IoTSiteWise.PutDefaultEncryptionConfiguration+import Amazonka.IoTSiteWise.PutLoggingOptions+import Amazonka.IoTSiteWise.PutStorageConfiguration+import Amazonka.IoTSiteWise.TagResource+import Amazonka.IoTSiteWise.Types+import Amazonka.IoTSiteWise.UntagResource+import Amazonka.IoTSiteWise.UpdateAccessPolicy+import Amazonka.IoTSiteWise.UpdateAsset+import Amazonka.IoTSiteWise.UpdateAssetModel+import Amazonka.IoTSiteWise.UpdateAssetProperty+import Amazonka.IoTSiteWise.UpdateDashboard+import Amazonka.IoTSiteWise.UpdateGateway+import Amazonka.IoTSiteWise.UpdateGatewayCapabilityConfiguration+import Amazonka.IoTSiteWise.UpdatePortal+import Amazonka.IoTSiteWise.UpdateProject+import Amazonka.IoTSiteWise.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 'IoTSiteWise'.++-- $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/IoTSiteWise/AssociateAssets.hs view
@@ -0,0 +1,201 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.AssociateAssets+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Associates a child asset with the given parent asset through a hierarchy+-- defined in the parent asset\'s model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/add-associated-assets.html Associating assets>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.AssociateAssets+  ( -- * Creating a Request+    AssociateAssets (..),+    newAssociateAssets,++    -- * Request Lenses+    associateAssets_clientToken,+    associateAssets_assetId,+    associateAssets_hierarchyId,+    associateAssets_childAssetId,++    -- * Destructuring the Response+    AssociateAssetsResponse (..),+    newAssociateAssetsResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAssociateAssets' smart constructor.+data AssociateAssets = AssociateAssets'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the parent asset.+    assetId :: Prelude.Text,+    -- | The ID of a hierarchy in the parent asset\'s model. Hierarchies allow+    -- different groupings of assets to be formed that all come from the same+    -- asset model. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+    -- in the /IoT SiteWise User Guide/.+    hierarchyId :: Prelude.Text,+    -- | The ID of the child asset to be associated.+    childAssetId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateAssets' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'associateAssets_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'assetId', 'associateAssets_assetId' - The ID of the parent asset.+--+-- 'hierarchyId', 'associateAssets_hierarchyId' - The ID of a hierarchy in the parent asset\'s model. Hierarchies allow+-- different groupings of assets to be formed that all come from the same+-- asset model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+--+-- 'childAssetId', 'associateAssets_childAssetId' - The ID of the child asset to be associated.+newAssociateAssets ::+  -- | 'assetId'+  Prelude.Text ->+  -- | 'hierarchyId'+  Prelude.Text ->+  -- | 'childAssetId'+  Prelude.Text ->+  AssociateAssets+newAssociateAssets+  pAssetId_+  pHierarchyId_+  pChildAssetId_ =+    AssociateAssets'+      { clientToken = Prelude.Nothing,+        assetId = pAssetId_,+        hierarchyId = pHierarchyId_,+        childAssetId = pChildAssetId_+      }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+associateAssets_clientToken :: Lens.Lens' AssociateAssets (Prelude.Maybe Prelude.Text)+associateAssets_clientToken = Lens.lens (\AssociateAssets' {clientToken} -> clientToken) (\s@AssociateAssets' {} a -> s {clientToken = a} :: AssociateAssets)++-- | The ID of the parent asset.+associateAssets_assetId :: Lens.Lens' AssociateAssets Prelude.Text+associateAssets_assetId = Lens.lens (\AssociateAssets' {assetId} -> assetId) (\s@AssociateAssets' {} a -> s {assetId = a} :: AssociateAssets)++-- | The ID of a hierarchy in the parent asset\'s model. Hierarchies allow+-- different groupings of assets to be formed that all come from the same+-- asset model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+associateAssets_hierarchyId :: Lens.Lens' AssociateAssets Prelude.Text+associateAssets_hierarchyId = Lens.lens (\AssociateAssets' {hierarchyId} -> hierarchyId) (\s@AssociateAssets' {} a -> s {hierarchyId = a} :: AssociateAssets)++-- | The ID of the child asset to be associated.+associateAssets_childAssetId :: Lens.Lens' AssociateAssets Prelude.Text+associateAssets_childAssetId = Lens.lens (\AssociateAssets' {childAssetId} -> childAssetId) (\s@AssociateAssets' {} a -> s {childAssetId = a} :: AssociateAssets)++instance Core.AWSRequest AssociateAssets where+  type+    AWSResponse AssociateAssets =+      AssociateAssetsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull AssociateAssetsResponse'++instance Prelude.Hashable AssociateAssets where+  hashWithSalt _salt AssociateAssets' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` hierarchyId+      `Prelude.hashWithSalt` childAssetId++instance Prelude.NFData AssociateAssets where+  rnf AssociateAssets' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf hierarchyId+      `Prelude.seq` Prelude.rnf childAssetId++instance Data.ToHeaders AssociateAssets where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON AssociateAssets where+  toJSON AssociateAssets' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just ("hierarchyId" Data..= hierarchyId),+            Prelude.Just ("childAssetId" Data..= childAssetId)+          ]+      )++instance Data.ToPath AssociateAssets where+  toPath AssociateAssets' {..} =+    Prelude.mconcat+      ["/assets/", Data.toBS assetId, "/associate"]++instance Data.ToQuery AssociateAssets where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAssociateAssetsResponse' smart constructor.+data AssociateAssetsResponse = AssociateAssetsResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateAssetsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newAssociateAssetsResponse ::+  AssociateAssetsResponse+newAssociateAssetsResponse = AssociateAssetsResponse'++instance Prelude.NFData AssociateAssetsResponse where+  rnf _ = ()
+ gen/Amazonka/IoTSiteWise/AssociateTimeSeriesToAssetProperty.hs view
@@ -0,0 +1,215 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.AssociateTimeSeriesToAssetProperty+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Associates a time series (data stream) with an asset property.+module Amazonka.IoTSiteWise.AssociateTimeSeriesToAssetProperty+  ( -- * Creating a Request+    AssociateTimeSeriesToAssetProperty (..),+    newAssociateTimeSeriesToAssetProperty,++    -- * Request Lenses+    associateTimeSeriesToAssetProperty_clientToken,+    associateTimeSeriesToAssetProperty_alias,+    associateTimeSeriesToAssetProperty_assetId,+    associateTimeSeriesToAssetProperty_propertyId,++    -- * Destructuring the Response+    AssociateTimeSeriesToAssetPropertyResponse (..),+    newAssociateTimeSeriesToAssetPropertyResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAssociateTimeSeriesToAssetProperty' smart constructor.+data AssociateTimeSeriesToAssetProperty = AssociateTimeSeriesToAssetProperty'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The alias that identifies the time series.+    alias :: Prelude.Text,+    -- | The ID of the asset in which the asset property was created.+    assetId :: Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateTimeSeriesToAssetProperty' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'associateTimeSeriesToAssetProperty_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'alias', 'associateTimeSeriesToAssetProperty_alias' - The alias that identifies the time series.+--+-- 'assetId', 'associateTimeSeriesToAssetProperty_assetId' - The ID of the asset in which the asset property was created.+--+-- 'propertyId', 'associateTimeSeriesToAssetProperty_propertyId' - The ID of the asset property.+newAssociateTimeSeriesToAssetProperty ::+  -- | 'alias'+  Prelude.Text ->+  -- | 'assetId'+  Prelude.Text ->+  -- | 'propertyId'+  Prelude.Text ->+  AssociateTimeSeriesToAssetProperty+newAssociateTimeSeriesToAssetProperty+  pAlias_+  pAssetId_+  pPropertyId_ =+    AssociateTimeSeriesToAssetProperty'+      { clientToken =+          Prelude.Nothing,+        alias = pAlias_,+        assetId = pAssetId_,+        propertyId = pPropertyId_+      }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+associateTimeSeriesToAssetProperty_clientToken :: Lens.Lens' AssociateTimeSeriesToAssetProperty (Prelude.Maybe Prelude.Text)+associateTimeSeriesToAssetProperty_clientToken = Lens.lens (\AssociateTimeSeriesToAssetProperty' {clientToken} -> clientToken) (\s@AssociateTimeSeriesToAssetProperty' {} a -> s {clientToken = a} :: AssociateTimeSeriesToAssetProperty)++-- | The alias that identifies the time series.+associateTimeSeriesToAssetProperty_alias :: Lens.Lens' AssociateTimeSeriesToAssetProperty Prelude.Text+associateTimeSeriesToAssetProperty_alias = Lens.lens (\AssociateTimeSeriesToAssetProperty' {alias} -> alias) (\s@AssociateTimeSeriesToAssetProperty' {} a -> s {alias = a} :: AssociateTimeSeriesToAssetProperty)++-- | The ID of the asset in which the asset property was created.+associateTimeSeriesToAssetProperty_assetId :: Lens.Lens' AssociateTimeSeriesToAssetProperty Prelude.Text+associateTimeSeriesToAssetProperty_assetId = Lens.lens (\AssociateTimeSeriesToAssetProperty' {assetId} -> assetId) (\s@AssociateTimeSeriesToAssetProperty' {} a -> s {assetId = a} :: AssociateTimeSeriesToAssetProperty)++-- | The ID of the asset property.+associateTimeSeriesToAssetProperty_propertyId :: Lens.Lens' AssociateTimeSeriesToAssetProperty Prelude.Text+associateTimeSeriesToAssetProperty_propertyId = Lens.lens (\AssociateTimeSeriesToAssetProperty' {propertyId} -> propertyId) (\s@AssociateTimeSeriesToAssetProperty' {} a -> s {propertyId = a} :: AssociateTimeSeriesToAssetProperty)++instance+  Core.AWSRequest+    AssociateTimeSeriesToAssetProperty+  where+  type+    AWSResponse AssociateTimeSeriesToAssetProperty =+      AssociateTimeSeriesToAssetPropertyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      AssociateTimeSeriesToAssetPropertyResponse'++instance+  Prelude.Hashable+    AssociateTimeSeriesToAssetProperty+  where+  hashWithSalt+    _salt+    AssociateTimeSeriesToAssetProperty' {..} =+      _salt+        `Prelude.hashWithSalt` clientToken+        `Prelude.hashWithSalt` alias+        `Prelude.hashWithSalt` assetId+        `Prelude.hashWithSalt` propertyId++instance+  Prelude.NFData+    AssociateTimeSeriesToAssetProperty+  where+  rnf AssociateTimeSeriesToAssetProperty' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf alias+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf propertyId++instance+  Data.ToHeaders+    AssociateTimeSeriesToAssetProperty+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    AssociateTimeSeriesToAssetProperty+  where+  toJSON AssociateTimeSeriesToAssetProperty' {..} =+    Data.object+      ( Prelude.catMaybes+          [("clientToken" Data..=) Prelude.<$> clientToken]+      )++instance+  Data.ToPath+    AssociateTimeSeriesToAssetProperty+  where+  toPath = Prelude.const "/timeseries/associate/"++instance+  Data.ToQuery+    AssociateTimeSeriesToAssetProperty+  where+  toQuery AssociateTimeSeriesToAssetProperty' {..} =+    Prelude.mconcat+      [ "alias" Data.=: alias,+        "assetId" Data.=: assetId,+        "propertyId" Data.=: propertyId+      ]++-- | /See:/ 'newAssociateTimeSeriesToAssetPropertyResponse' smart constructor.+data AssociateTimeSeriesToAssetPropertyResponse = AssociateTimeSeriesToAssetPropertyResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateTimeSeriesToAssetPropertyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newAssociateTimeSeriesToAssetPropertyResponse ::+  AssociateTimeSeriesToAssetPropertyResponse+newAssociateTimeSeriesToAssetPropertyResponse =+  AssociateTimeSeriesToAssetPropertyResponse'++instance+  Prelude.NFData+    AssociateTimeSeriesToAssetPropertyResponse+  where+  rnf _ = ()
+ gen/Amazonka/IoTSiteWise/BatchAssociateProjectAssets.hs view
@@ -0,0 +1,212 @@+{-# 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.IoTSiteWise.BatchAssociateProjectAssets+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Associates a group (batch) of assets with an IoT SiteWise Monitor+-- project.+module Amazonka.IoTSiteWise.BatchAssociateProjectAssets+  ( -- * Creating a Request+    BatchAssociateProjectAssets (..),+    newBatchAssociateProjectAssets,++    -- * Request Lenses+    batchAssociateProjectAssets_clientToken,+    batchAssociateProjectAssets_projectId,+    batchAssociateProjectAssets_assetIds,++    -- * Destructuring the Response+    BatchAssociateProjectAssetsResponse (..),+    newBatchAssociateProjectAssetsResponse,++    -- * Response Lenses+    batchAssociateProjectAssetsResponse_errors,+    batchAssociateProjectAssetsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchAssociateProjectAssets' smart constructor.+data BatchAssociateProjectAssets = BatchAssociateProjectAssets'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the project to which to associate the assets.+    projectId :: Prelude.Text,+    -- | The IDs of the assets to be associated to the project.+    assetIds :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchAssociateProjectAssets' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'batchAssociateProjectAssets_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'projectId', 'batchAssociateProjectAssets_projectId' - The ID of the project to which to associate the assets.+--+-- 'assetIds', 'batchAssociateProjectAssets_assetIds' - The IDs of the assets to be associated to the project.+newBatchAssociateProjectAssets ::+  -- | 'projectId'+  Prelude.Text ->+  -- | 'assetIds'+  Prelude.NonEmpty Prelude.Text ->+  BatchAssociateProjectAssets+newBatchAssociateProjectAssets pProjectId_ pAssetIds_ =+  BatchAssociateProjectAssets'+    { clientToken =+        Prelude.Nothing,+      projectId = pProjectId_,+      assetIds = Lens.coerced Lens.# pAssetIds_+    }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+batchAssociateProjectAssets_clientToken :: Lens.Lens' BatchAssociateProjectAssets (Prelude.Maybe Prelude.Text)+batchAssociateProjectAssets_clientToken = Lens.lens (\BatchAssociateProjectAssets' {clientToken} -> clientToken) (\s@BatchAssociateProjectAssets' {} a -> s {clientToken = a} :: BatchAssociateProjectAssets)++-- | The ID of the project to which to associate the assets.+batchAssociateProjectAssets_projectId :: Lens.Lens' BatchAssociateProjectAssets Prelude.Text+batchAssociateProjectAssets_projectId = Lens.lens (\BatchAssociateProjectAssets' {projectId} -> projectId) (\s@BatchAssociateProjectAssets' {} a -> s {projectId = a} :: BatchAssociateProjectAssets)++-- | The IDs of the assets to be associated to the project.+batchAssociateProjectAssets_assetIds :: Lens.Lens' BatchAssociateProjectAssets (Prelude.NonEmpty Prelude.Text)+batchAssociateProjectAssets_assetIds = Lens.lens (\BatchAssociateProjectAssets' {assetIds} -> assetIds) (\s@BatchAssociateProjectAssets' {} a -> s {assetIds = a} :: BatchAssociateProjectAssets) Prelude.. Lens.coerced++instance Core.AWSRequest BatchAssociateProjectAssets where+  type+    AWSResponse BatchAssociateProjectAssets =+      BatchAssociateProjectAssetsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchAssociateProjectAssetsResponse'+            Prelude.<$> (x Data..?> "errors" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable BatchAssociateProjectAssets where+  hashWithSalt _salt BatchAssociateProjectAssets' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` projectId+      `Prelude.hashWithSalt` assetIds++instance Prelude.NFData BatchAssociateProjectAssets where+  rnf BatchAssociateProjectAssets' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf projectId+      `Prelude.seq` Prelude.rnf assetIds++instance Data.ToHeaders BatchAssociateProjectAssets where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchAssociateProjectAssets where+  toJSON BatchAssociateProjectAssets' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just ("assetIds" Data..= assetIds)+          ]+      )++instance Data.ToPath BatchAssociateProjectAssets where+  toPath BatchAssociateProjectAssets' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS projectId,+        "/assets/associate"+      ]++instance Data.ToQuery BatchAssociateProjectAssets where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchAssociateProjectAssetsResponse' smart constructor.+data BatchAssociateProjectAssetsResponse = BatchAssociateProjectAssetsResponse'+  { -- | A list of associated error information, if any.+    errors :: Prelude.Maybe [AssetErrorDetails],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchAssociateProjectAssetsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errors', 'batchAssociateProjectAssetsResponse_errors' - A list of associated error information, if any.+--+-- 'httpStatus', 'batchAssociateProjectAssetsResponse_httpStatus' - The response's http status code.+newBatchAssociateProjectAssetsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchAssociateProjectAssetsResponse+newBatchAssociateProjectAssetsResponse pHttpStatus_ =+  BatchAssociateProjectAssetsResponse'+    { errors =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of associated error information, if any.+batchAssociateProjectAssetsResponse_errors :: Lens.Lens' BatchAssociateProjectAssetsResponse (Prelude.Maybe [AssetErrorDetails])+batchAssociateProjectAssetsResponse_errors = Lens.lens (\BatchAssociateProjectAssetsResponse' {errors} -> errors) (\s@BatchAssociateProjectAssetsResponse' {} a -> s {errors = a} :: BatchAssociateProjectAssetsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchAssociateProjectAssetsResponse_httpStatus :: Lens.Lens' BatchAssociateProjectAssetsResponse Prelude.Int+batchAssociateProjectAssetsResponse_httpStatus = Lens.lens (\BatchAssociateProjectAssetsResponse' {httpStatus} -> httpStatus) (\s@BatchAssociateProjectAssetsResponse' {} a -> s {httpStatus = a} :: BatchAssociateProjectAssetsResponse)++instance+  Prelude.NFData+    BatchAssociateProjectAssetsResponse+  where+  rnf BatchAssociateProjectAssetsResponse' {..} =+    Prelude.rnf errors+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/BatchDisassociateProjectAssets.hs view
@@ -0,0 +1,229 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.BatchDisassociateProjectAssets+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Disassociates a group (batch) of assets from an IoT SiteWise Monitor+-- project.+module Amazonka.IoTSiteWise.BatchDisassociateProjectAssets+  ( -- * Creating a Request+    BatchDisassociateProjectAssets (..),+    newBatchDisassociateProjectAssets,++    -- * Request Lenses+    batchDisassociateProjectAssets_clientToken,+    batchDisassociateProjectAssets_projectId,+    batchDisassociateProjectAssets_assetIds,++    -- * Destructuring the Response+    BatchDisassociateProjectAssetsResponse (..),+    newBatchDisassociateProjectAssetsResponse,++    -- * Response Lenses+    batchDisassociateProjectAssetsResponse_errors,+    batchDisassociateProjectAssetsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchDisassociateProjectAssets' smart constructor.+data BatchDisassociateProjectAssets = BatchDisassociateProjectAssets'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the project from which to disassociate the assets.+    projectId :: Prelude.Text,+    -- | The IDs of the assets to be disassociated from the project.+    assetIds :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDisassociateProjectAssets' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'batchDisassociateProjectAssets_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'projectId', 'batchDisassociateProjectAssets_projectId' - The ID of the project from which to disassociate the assets.+--+-- 'assetIds', 'batchDisassociateProjectAssets_assetIds' - The IDs of the assets to be disassociated from the project.+newBatchDisassociateProjectAssets ::+  -- | 'projectId'+  Prelude.Text ->+  -- | 'assetIds'+  Prelude.NonEmpty Prelude.Text ->+  BatchDisassociateProjectAssets+newBatchDisassociateProjectAssets+  pProjectId_+  pAssetIds_ =+    BatchDisassociateProjectAssets'+      { clientToken =+          Prelude.Nothing,+        projectId = pProjectId_,+        assetIds = Lens.coerced Lens.# pAssetIds_+      }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+batchDisassociateProjectAssets_clientToken :: Lens.Lens' BatchDisassociateProjectAssets (Prelude.Maybe Prelude.Text)+batchDisassociateProjectAssets_clientToken = Lens.lens (\BatchDisassociateProjectAssets' {clientToken} -> clientToken) (\s@BatchDisassociateProjectAssets' {} a -> s {clientToken = a} :: BatchDisassociateProjectAssets)++-- | The ID of the project from which to disassociate the assets.+batchDisassociateProjectAssets_projectId :: Lens.Lens' BatchDisassociateProjectAssets Prelude.Text+batchDisassociateProjectAssets_projectId = Lens.lens (\BatchDisassociateProjectAssets' {projectId} -> projectId) (\s@BatchDisassociateProjectAssets' {} a -> s {projectId = a} :: BatchDisassociateProjectAssets)++-- | The IDs of the assets to be disassociated from the project.+batchDisassociateProjectAssets_assetIds :: Lens.Lens' BatchDisassociateProjectAssets (Prelude.NonEmpty Prelude.Text)+batchDisassociateProjectAssets_assetIds = Lens.lens (\BatchDisassociateProjectAssets' {assetIds} -> assetIds) (\s@BatchDisassociateProjectAssets' {} a -> s {assetIds = a} :: BatchDisassociateProjectAssets) Prelude.. Lens.coerced++instance+  Core.AWSRequest+    BatchDisassociateProjectAssets+  where+  type+    AWSResponse BatchDisassociateProjectAssets =+      BatchDisassociateProjectAssetsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchDisassociateProjectAssetsResponse'+            Prelude.<$> (x Data..?> "errors" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    BatchDisassociateProjectAssets+  where+  hashWithSalt+    _salt+    BatchDisassociateProjectAssets' {..} =+      _salt+        `Prelude.hashWithSalt` clientToken+        `Prelude.hashWithSalt` projectId+        `Prelude.hashWithSalt` assetIds++instance+  Prelude.NFData+    BatchDisassociateProjectAssets+  where+  rnf BatchDisassociateProjectAssets' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf projectId+      `Prelude.seq` Prelude.rnf assetIds++instance+  Data.ToHeaders+    BatchDisassociateProjectAssets+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchDisassociateProjectAssets where+  toJSON BatchDisassociateProjectAssets' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just ("assetIds" Data..= assetIds)+          ]+      )++instance Data.ToPath BatchDisassociateProjectAssets where+  toPath BatchDisassociateProjectAssets' {..} =+    Prelude.mconcat+      [ "/projects/",+        Data.toBS projectId,+        "/assets/disassociate"+      ]++instance Data.ToQuery BatchDisassociateProjectAssets where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchDisassociateProjectAssetsResponse' smart constructor.+data BatchDisassociateProjectAssetsResponse = BatchDisassociateProjectAssetsResponse'+  { -- | A list of associated error information, if any.+    errors :: Prelude.Maybe [AssetErrorDetails],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDisassociateProjectAssetsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errors', 'batchDisassociateProjectAssetsResponse_errors' - A list of associated error information, if any.+--+-- 'httpStatus', 'batchDisassociateProjectAssetsResponse_httpStatus' - The response's http status code.+newBatchDisassociateProjectAssetsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchDisassociateProjectAssetsResponse+newBatchDisassociateProjectAssetsResponse+  pHttpStatus_ =+    BatchDisassociateProjectAssetsResponse'+      { errors =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | A list of associated error information, if any.+batchDisassociateProjectAssetsResponse_errors :: Lens.Lens' BatchDisassociateProjectAssetsResponse (Prelude.Maybe [AssetErrorDetails])+batchDisassociateProjectAssetsResponse_errors = Lens.lens (\BatchDisassociateProjectAssetsResponse' {errors} -> errors) (\s@BatchDisassociateProjectAssetsResponse' {} a -> s {errors = a} :: BatchDisassociateProjectAssetsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchDisassociateProjectAssetsResponse_httpStatus :: Lens.Lens' BatchDisassociateProjectAssetsResponse Prelude.Int+batchDisassociateProjectAssetsResponse_httpStatus = Lens.lens (\BatchDisassociateProjectAssetsResponse' {httpStatus} -> httpStatus) (\s@BatchDisassociateProjectAssetsResponse' {} a -> s {httpStatus = a} :: BatchDisassociateProjectAssetsResponse)++instance+  Prelude.NFData+    BatchDisassociateProjectAssetsResponse+  where+  rnf BatchDisassociateProjectAssetsResponse' {..} =+    Prelude.rnf errors+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/BatchGetAssetPropertyAggregates.hs view
@@ -0,0 +1,296 @@+{-# 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.IoTSiteWise.BatchGetAssetPropertyAggregates+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets aggregated values (for example, average, minimum, and maximum) for+-- one or more asset properties. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#aggregates Querying aggregates>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.BatchGetAssetPropertyAggregates+  ( -- * Creating a Request+    BatchGetAssetPropertyAggregates (..),+    newBatchGetAssetPropertyAggregates,++    -- * Request Lenses+    batchGetAssetPropertyAggregates_maxResults,+    batchGetAssetPropertyAggregates_nextToken,+    batchGetAssetPropertyAggregates_entries,++    -- * Destructuring the Response+    BatchGetAssetPropertyAggregatesResponse (..),+    newBatchGetAssetPropertyAggregatesResponse,++    -- * Response Lenses+    batchGetAssetPropertyAggregatesResponse_nextToken,+    batchGetAssetPropertyAggregatesResponse_httpStatus,+    batchGetAssetPropertyAggregatesResponse_errorEntries,+    batchGetAssetPropertyAggregatesResponse_successEntries,+    batchGetAssetPropertyAggregatesResponse_skippedEntries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchGetAssetPropertyAggregates' smart constructor.+data BatchGetAssetPropertyAggregates = BatchGetAssetPropertyAggregates'+  { -- | The maximum number of results to return for each paginated request. A+    -- result set is returned in the two cases, whichever occurs first.+    --+    -- -   The size of the result set is less than 1 MB.+    --+    -- -   The number of data points in the result set is less than the value+    --     of @maxResults@. The maximum value of @maxResults@ is 4000.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The list of asset property aggregate entries for the batch get request.+    -- You can specify up to 16 entries per request.+    entries :: [BatchGetAssetPropertyAggregatesEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyAggregates' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchGetAssetPropertyAggregates_maxResults' - The maximum number of results to return for each paginated request. A+-- result set is returned in the two cases, whichever occurs first.+--+-- -   The size of the result set is less than 1 MB.+--+-- -   The number of data points in the result set is less than the value+--     of @maxResults@. The maximum value of @maxResults@ is 4000.+--+-- 'nextToken', 'batchGetAssetPropertyAggregates_nextToken' - The token to be used for the next set of paginated results.+--+-- 'entries', 'batchGetAssetPropertyAggregates_entries' - The list of asset property aggregate entries for the batch get request.+-- You can specify up to 16 entries per request.+newBatchGetAssetPropertyAggregates ::+  BatchGetAssetPropertyAggregates+newBatchGetAssetPropertyAggregates =+  BatchGetAssetPropertyAggregates'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      entries = Prelude.mempty+    }++-- | The maximum number of results to return for each paginated request. A+-- result set is returned in the two cases, whichever occurs first.+--+-- -   The size of the result set is less than 1 MB.+--+-- -   The number of data points in the result set is less than the value+--     of @maxResults@. The maximum value of @maxResults@ is 4000.+batchGetAssetPropertyAggregates_maxResults :: Lens.Lens' BatchGetAssetPropertyAggregates (Prelude.Maybe Prelude.Natural)+batchGetAssetPropertyAggregates_maxResults = Lens.lens (\BatchGetAssetPropertyAggregates' {maxResults} -> maxResults) (\s@BatchGetAssetPropertyAggregates' {} a -> s {maxResults = a} :: BatchGetAssetPropertyAggregates)++-- | The token to be used for the next set of paginated results.+batchGetAssetPropertyAggregates_nextToken :: Lens.Lens' BatchGetAssetPropertyAggregates (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyAggregates_nextToken = Lens.lens (\BatchGetAssetPropertyAggregates' {nextToken} -> nextToken) (\s@BatchGetAssetPropertyAggregates' {} a -> s {nextToken = a} :: BatchGetAssetPropertyAggregates)++-- | The list of asset property aggregate entries for the batch get request.+-- You can specify up to 16 entries per request.+batchGetAssetPropertyAggregates_entries :: Lens.Lens' BatchGetAssetPropertyAggregates [BatchGetAssetPropertyAggregatesEntry]+batchGetAssetPropertyAggregates_entries = Lens.lens (\BatchGetAssetPropertyAggregates' {entries} -> entries) (\s@BatchGetAssetPropertyAggregates' {} a -> s {entries = a} :: BatchGetAssetPropertyAggregates) Prelude.. Lens.coerced++instance+  Core.AWSRequest+    BatchGetAssetPropertyAggregates+  where+  type+    AWSResponse BatchGetAssetPropertyAggregates =+      BatchGetAssetPropertyAggregatesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchGetAssetPropertyAggregatesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "errorEntries" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "successEntries" Core..!@ Prelude.mempty)+            Prelude.<*> ( x+                            Data..?> "skippedEntries"+                            Core..!@ Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyAggregates+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyAggregates' {..} =+      _salt+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` entries++instance+  Prelude.NFData+    BatchGetAssetPropertyAggregates+  where+  rnf BatchGetAssetPropertyAggregates' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf entries++instance+  Data.ToHeaders+    BatchGetAssetPropertyAggregates+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchGetAssetPropertyAggregates where+  toJSON BatchGetAssetPropertyAggregates' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("entries" Data..= entries)+          ]+      )++instance Data.ToPath BatchGetAssetPropertyAggregates where+  toPath = Prelude.const "/properties/batch/aggregates"++instance Data.ToQuery BatchGetAssetPropertyAggregates where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchGetAssetPropertyAggregatesResponse' smart constructor.+data BatchGetAssetPropertyAggregatesResponse = BatchGetAssetPropertyAggregatesResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list of the errors (if any) associated with the batch request. Each+    -- error entry contains the @entryId@ of the entry that failed.+    errorEntries :: [BatchGetAssetPropertyAggregatesErrorEntry],+    -- | A list of entries that were processed successfully by this batch+    -- request. Each success entry contains the @entryId@ of the entry that+    -- succeeded and the latest query result.+    successEntries :: [BatchGetAssetPropertyAggregatesSuccessEntry],+    -- | A list of entries that were not processed by this batch request. because+    -- these entries had been completely processed by previous paginated+    -- requests. Each skipped entry contains the @entryId@ of the entry that+    -- skipped.+    skippedEntries :: [BatchGetAssetPropertyAggregatesSkippedEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyAggregatesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchGetAssetPropertyAggregatesResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'batchGetAssetPropertyAggregatesResponse_httpStatus' - The response's http status code.+--+-- 'errorEntries', 'batchGetAssetPropertyAggregatesResponse_errorEntries' - A list of the errors (if any) associated with the batch request. Each+-- error entry contains the @entryId@ of the entry that failed.+--+-- 'successEntries', 'batchGetAssetPropertyAggregatesResponse_successEntries' - A list of entries that were processed successfully by this batch+-- request. Each success entry contains the @entryId@ of the entry that+-- succeeded and the latest query result.+--+-- 'skippedEntries', 'batchGetAssetPropertyAggregatesResponse_skippedEntries' - A list of entries that were not processed by this batch request. because+-- these entries had been completely processed by previous paginated+-- requests. Each skipped entry contains the @entryId@ of the entry that+-- skipped.+newBatchGetAssetPropertyAggregatesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchGetAssetPropertyAggregatesResponse+newBatchGetAssetPropertyAggregatesResponse+  pHttpStatus_ =+    BatchGetAssetPropertyAggregatesResponse'+      { nextToken =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        errorEntries = Prelude.mempty,+        successEntries = Prelude.mempty,+        skippedEntries = Prelude.mempty+      }++-- | The token for the next set of results, or null if there are no+-- additional results.+batchGetAssetPropertyAggregatesResponse_nextToken :: Lens.Lens' BatchGetAssetPropertyAggregatesResponse (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyAggregatesResponse_nextToken = Lens.lens (\BatchGetAssetPropertyAggregatesResponse' {nextToken} -> nextToken) (\s@BatchGetAssetPropertyAggregatesResponse' {} a -> s {nextToken = a} :: BatchGetAssetPropertyAggregatesResponse)++-- | The response's http status code.+batchGetAssetPropertyAggregatesResponse_httpStatus :: Lens.Lens' BatchGetAssetPropertyAggregatesResponse Prelude.Int+batchGetAssetPropertyAggregatesResponse_httpStatus = Lens.lens (\BatchGetAssetPropertyAggregatesResponse' {httpStatus} -> httpStatus) (\s@BatchGetAssetPropertyAggregatesResponse' {} a -> s {httpStatus = a} :: BatchGetAssetPropertyAggregatesResponse)++-- | A list of the errors (if any) associated with the batch request. Each+-- error entry contains the @entryId@ of the entry that failed.+batchGetAssetPropertyAggregatesResponse_errorEntries :: Lens.Lens' BatchGetAssetPropertyAggregatesResponse [BatchGetAssetPropertyAggregatesErrorEntry]+batchGetAssetPropertyAggregatesResponse_errorEntries = Lens.lens (\BatchGetAssetPropertyAggregatesResponse' {errorEntries} -> errorEntries) (\s@BatchGetAssetPropertyAggregatesResponse' {} a -> s {errorEntries = a} :: BatchGetAssetPropertyAggregatesResponse) Prelude.. Lens.coerced++-- | A list of entries that were processed successfully by this batch+-- request. Each success entry contains the @entryId@ of the entry that+-- succeeded and the latest query result.+batchGetAssetPropertyAggregatesResponse_successEntries :: Lens.Lens' BatchGetAssetPropertyAggregatesResponse [BatchGetAssetPropertyAggregatesSuccessEntry]+batchGetAssetPropertyAggregatesResponse_successEntries = Lens.lens (\BatchGetAssetPropertyAggregatesResponse' {successEntries} -> successEntries) (\s@BatchGetAssetPropertyAggregatesResponse' {} a -> s {successEntries = a} :: BatchGetAssetPropertyAggregatesResponse) Prelude.. Lens.coerced++-- | A list of entries that were not processed by this batch request. because+-- these entries had been completely processed by previous paginated+-- requests. Each skipped entry contains the @entryId@ of the entry that+-- skipped.+batchGetAssetPropertyAggregatesResponse_skippedEntries :: Lens.Lens' BatchGetAssetPropertyAggregatesResponse [BatchGetAssetPropertyAggregatesSkippedEntry]+batchGetAssetPropertyAggregatesResponse_skippedEntries = Lens.lens (\BatchGetAssetPropertyAggregatesResponse' {skippedEntries} -> skippedEntries) (\s@BatchGetAssetPropertyAggregatesResponse' {} a -> s {skippedEntries = a} :: BatchGetAssetPropertyAggregatesResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    BatchGetAssetPropertyAggregatesResponse+  where+  rnf BatchGetAssetPropertyAggregatesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf errorEntries+      `Prelude.seq` Prelude.rnf successEntries+      `Prelude.seq` Prelude.rnf skippedEntries
+ gen/Amazonka/IoTSiteWise/BatchGetAssetPropertyValue.hs view
@@ -0,0 +1,250 @@+{-# 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.IoTSiteWise.BatchGetAssetPropertyValue+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets the current value for one or more asset properties. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#current-values Querying current values>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.BatchGetAssetPropertyValue+  ( -- * Creating a Request+    BatchGetAssetPropertyValue (..),+    newBatchGetAssetPropertyValue,++    -- * Request Lenses+    batchGetAssetPropertyValue_nextToken,+    batchGetAssetPropertyValue_entries,++    -- * Destructuring the Response+    BatchGetAssetPropertyValueResponse (..),+    newBatchGetAssetPropertyValueResponse,++    -- * Response Lenses+    batchGetAssetPropertyValueResponse_nextToken,+    batchGetAssetPropertyValueResponse_httpStatus,+    batchGetAssetPropertyValueResponse_errorEntries,+    batchGetAssetPropertyValueResponse_successEntries,+    batchGetAssetPropertyValueResponse_skippedEntries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchGetAssetPropertyValue' smart constructor.+data BatchGetAssetPropertyValue = BatchGetAssetPropertyValue'+  { -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The list of asset property value entries for the batch get request. You+    -- can specify up to 16 entries per request.+    entries :: [BatchGetAssetPropertyValueEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchGetAssetPropertyValue_nextToken' - The token to be used for the next set of paginated results.+--+-- 'entries', 'batchGetAssetPropertyValue_entries' - The list of asset property value entries for the batch get request. You+-- can specify up to 16 entries per request.+newBatchGetAssetPropertyValue ::+  BatchGetAssetPropertyValue+newBatchGetAssetPropertyValue =+  BatchGetAssetPropertyValue'+    { nextToken =+        Prelude.Nothing,+      entries = Prelude.mempty+    }++-- | The token to be used for the next set of paginated results.+batchGetAssetPropertyValue_nextToken :: Lens.Lens' BatchGetAssetPropertyValue (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyValue_nextToken = Lens.lens (\BatchGetAssetPropertyValue' {nextToken} -> nextToken) (\s@BatchGetAssetPropertyValue' {} a -> s {nextToken = a} :: BatchGetAssetPropertyValue)++-- | The list of asset property value entries for the batch get request. You+-- can specify up to 16 entries per request.+batchGetAssetPropertyValue_entries :: Lens.Lens' BatchGetAssetPropertyValue [BatchGetAssetPropertyValueEntry]+batchGetAssetPropertyValue_entries = Lens.lens (\BatchGetAssetPropertyValue' {entries} -> entries) (\s@BatchGetAssetPropertyValue' {} a -> s {entries = a} :: BatchGetAssetPropertyValue) Prelude.. Lens.coerced++instance Core.AWSRequest BatchGetAssetPropertyValue where+  type+    AWSResponse BatchGetAssetPropertyValue =+      BatchGetAssetPropertyValueResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchGetAssetPropertyValueResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "errorEntries" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "successEntries" Core..!@ Prelude.mempty)+            Prelude.<*> ( x+                            Data..?> "skippedEntries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable BatchGetAssetPropertyValue where+  hashWithSalt _salt BatchGetAssetPropertyValue' {..} =+    _salt+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` entries++instance Prelude.NFData BatchGetAssetPropertyValue where+  rnf BatchGetAssetPropertyValue' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf entries++instance Data.ToHeaders BatchGetAssetPropertyValue where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchGetAssetPropertyValue where+  toJSON BatchGetAssetPropertyValue' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("nextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("entries" Data..= entries)+          ]+      )++instance Data.ToPath BatchGetAssetPropertyValue where+  toPath = Prelude.const "/properties/batch/latest"++instance Data.ToQuery BatchGetAssetPropertyValue where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchGetAssetPropertyValueResponse' smart constructor.+data BatchGetAssetPropertyValueResponse = BatchGetAssetPropertyValueResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list of the errors (if any) associated with the batch request. Each+    -- error entry contains the @entryId@ of the entry that failed.+    errorEntries :: [BatchGetAssetPropertyValueErrorEntry],+    -- | A list of entries that were processed successfully by this batch+    -- request. Each success entry contains the @entryId@ of the entry that+    -- succeeded and the latest query result.+    successEntries :: [BatchGetAssetPropertyValueSuccessEntry],+    -- | A list of entries that were not processed by this batch request. because+    -- these entries had been completely processed by previous paginated+    -- requests. Each skipped entry contains the @entryId@ of the entry that+    -- skipped.+    skippedEntries :: [BatchGetAssetPropertyValueSkippedEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchGetAssetPropertyValueResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'batchGetAssetPropertyValueResponse_httpStatus' - The response's http status code.+--+-- 'errorEntries', 'batchGetAssetPropertyValueResponse_errorEntries' - A list of the errors (if any) associated with the batch request. Each+-- error entry contains the @entryId@ of the entry that failed.+--+-- 'successEntries', 'batchGetAssetPropertyValueResponse_successEntries' - A list of entries that were processed successfully by this batch+-- request. Each success entry contains the @entryId@ of the entry that+-- succeeded and the latest query result.+--+-- 'skippedEntries', 'batchGetAssetPropertyValueResponse_skippedEntries' - A list of entries that were not processed by this batch request. because+-- these entries had been completely processed by previous paginated+-- requests. Each skipped entry contains the @entryId@ of the entry that+-- skipped.+newBatchGetAssetPropertyValueResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchGetAssetPropertyValueResponse+newBatchGetAssetPropertyValueResponse pHttpStatus_ =+  BatchGetAssetPropertyValueResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      errorEntries = Prelude.mempty,+      successEntries = Prelude.mempty,+      skippedEntries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+batchGetAssetPropertyValueResponse_nextToken :: Lens.Lens' BatchGetAssetPropertyValueResponse (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyValueResponse_nextToken = Lens.lens (\BatchGetAssetPropertyValueResponse' {nextToken} -> nextToken) (\s@BatchGetAssetPropertyValueResponse' {} a -> s {nextToken = a} :: BatchGetAssetPropertyValueResponse)++-- | The response's http status code.+batchGetAssetPropertyValueResponse_httpStatus :: Lens.Lens' BatchGetAssetPropertyValueResponse Prelude.Int+batchGetAssetPropertyValueResponse_httpStatus = Lens.lens (\BatchGetAssetPropertyValueResponse' {httpStatus} -> httpStatus) (\s@BatchGetAssetPropertyValueResponse' {} a -> s {httpStatus = a} :: BatchGetAssetPropertyValueResponse)++-- | A list of the errors (if any) associated with the batch request. Each+-- error entry contains the @entryId@ of the entry that failed.+batchGetAssetPropertyValueResponse_errorEntries :: Lens.Lens' BatchGetAssetPropertyValueResponse [BatchGetAssetPropertyValueErrorEntry]+batchGetAssetPropertyValueResponse_errorEntries = Lens.lens (\BatchGetAssetPropertyValueResponse' {errorEntries} -> errorEntries) (\s@BatchGetAssetPropertyValueResponse' {} a -> s {errorEntries = a} :: BatchGetAssetPropertyValueResponse) Prelude.. Lens.coerced++-- | A list of entries that were processed successfully by this batch+-- request. Each success entry contains the @entryId@ of the entry that+-- succeeded and the latest query result.+batchGetAssetPropertyValueResponse_successEntries :: Lens.Lens' BatchGetAssetPropertyValueResponse [BatchGetAssetPropertyValueSuccessEntry]+batchGetAssetPropertyValueResponse_successEntries = Lens.lens (\BatchGetAssetPropertyValueResponse' {successEntries} -> successEntries) (\s@BatchGetAssetPropertyValueResponse' {} a -> s {successEntries = a} :: BatchGetAssetPropertyValueResponse) Prelude.. Lens.coerced++-- | A list of entries that were not processed by this batch request. because+-- these entries had been completely processed by previous paginated+-- requests. Each skipped entry contains the @entryId@ of the entry that+-- skipped.+batchGetAssetPropertyValueResponse_skippedEntries :: Lens.Lens' BatchGetAssetPropertyValueResponse [BatchGetAssetPropertyValueSkippedEntry]+batchGetAssetPropertyValueResponse_skippedEntries = Lens.lens (\BatchGetAssetPropertyValueResponse' {skippedEntries} -> skippedEntries) (\s@BatchGetAssetPropertyValueResponse' {} a -> s {skippedEntries = a} :: BatchGetAssetPropertyValueResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    BatchGetAssetPropertyValueResponse+  where+  rnf BatchGetAssetPropertyValueResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf errorEntries+      `Prelude.seq` Prelude.rnf successEntries+      `Prelude.seq` Prelude.rnf skippedEntries
+ gen/Amazonka/IoTSiteWise/BatchGetAssetPropertyValueHistory.hs view
@@ -0,0 +1,305 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.BatchGetAssetPropertyValueHistory+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets the historical values for one or more asset properties. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#historical-values Querying historical values>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.BatchGetAssetPropertyValueHistory+  ( -- * Creating a Request+    BatchGetAssetPropertyValueHistory (..),+    newBatchGetAssetPropertyValueHistory,++    -- * Request Lenses+    batchGetAssetPropertyValueHistory_maxResults,+    batchGetAssetPropertyValueHistory_nextToken,+    batchGetAssetPropertyValueHistory_entries,++    -- * Destructuring the Response+    BatchGetAssetPropertyValueHistoryResponse (..),+    newBatchGetAssetPropertyValueHistoryResponse,++    -- * Response Lenses+    batchGetAssetPropertyValueHistoryResponse_nextToken,+    batchGetAssetPropertyValueHistoryResponse_httpStatus,+    batchGetAssetPropertyValueHistoryResponse_errorEntries,+    batchGetAssetPropertyValueHistoryResponse_successEntries,+    batchGetAssetPropertyValueHistoryResponse_skippedEntries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchGetAssetPropertyValueHistory' smart constructor.+data BatchGetAssetPropertyValueHistory = BatchGetAssetPropertyValueHistory'+  { -- | The maximum number of results to return for each paginated request. A+    -- result set is returned in the two cases, whichever occurs first.+    --+    -- -   The size of the result set is less than 1 MB.+    --+    -- -   The number of data points in the result set is less than the value+    --     of @maxResults@. The maximum value of @maxResults@ is 4000.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The list of asset property historical value entries for the batch get+    -- request. You can specify up to 16 entries per request.+    entries :: [BatchGetAssetPropertyValueHistoryEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueHistory' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchGetAssetPropertyValueHistory_maxResults' - The maximum number of results to return for each paginated request. A+-- result set is returned in the two cases, whichever occurs first.+--+-- -   The size of the result set is less than 1 MB.+--+-- -   The number of data points in the result set is less than the value+--     of @maxResults@. The maximum value of @maxResults@ is 4000.+--+-- 'nextToken', 'batchGetAssetPropertyValueHistory_nextToken' - The token to be used for the next set of paginated results.+--+-- 'entries', 'batchGetAssetPropertyValueHistory_entries' - The list of asset property historical value entries for the batch get+-- request. You can specify up to 16 entries per request.+newBatchGetAssetPropertyValueHistory ::+  BatchGetAssetPropertyValueHistory+newBatchGetAssetPropertyValueHistory =+  BatchGetAssetPropertyValueHistory'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      entries = Prelude.mempty+    }++-- | The maximum number of results to return for each paginated request. A+-- result set is returned in the two cases, whichever occurs first.+--+-- -   The size of the result set is less than 1 MB.+--+-- -   The number of data points in the result set is less than the value+--     of @maxResults@. The maximum value of @maxResults@ is 4000.+batchGetAssetPropertyValueHistory_maxResults :: Lens.Lens' BatchGetAssetPropertyValueHistory (Prelude.Maybe Prelude.Natural)+batchGetAssetPropertyValueHistory_maxResults = Lens.lens (\BatchGetAssetPropertyValueHistory' {maxResults} -> maxResults) (\s@BatchGetAssetPropertyValueHistory' {} a -> s {maxResults = a} :: BatchGetAssetPropertyValueHistory)++-- | The token to be used for the next set of paginated results.+batchGetAssetPropertyValueHistory_nextToken :: Lens.Lens' BatchGetAssetPropertyValueHistory (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyValueHistory_nextToken = Lens.lens (\BatchGetAssetPropertyValueHistory' {nextToken} -> nextToken) (\s@BatchGetAssetPropertyValueHistory' {} a -> s {nextToken = a} :: BatchGetAssetPropertyValueHistory)++-- | The list of asset property historical value entries for the batch get+-- request. You can specify up to 16 entries per request.+batchGetAssetPropertyValueHistory_entries :: Lens.Lens' BatchGetAssetPropertyValueHistory [BatchGetAssetPropertyValueHistoryEntry]+batchGetAssetPropertyValueHistory_entries = Lens.lens (\BatchGetAssetPropertyValueHistory' {entries} -> entries) (\s@BatchGetAssetPropertyValueHistory' {} a -> s {entries = a} :: BatchGetAssetPropertyValueHistory) Prelude.. Lens.coerced++instance+  Core.AWSRequest+    BatchGetAssetPropertyValueHistory+  where+  type+    AWSResponse BatchGetAssetPropertyValueHistory =+      BatchGetAssetPropertyValueHistoryResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchGetAssetPropertyValueHistoryResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "errorEntries" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "successEntries" Core..!@ Prelude.mempty)+            Prelude.<*> ( x+                            Data..?> "skippedEntries"+                            Core..!@ Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyValueHistory+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyValueHistory' {..} =+      _salt+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` entries++instance+  Prelude.NFData+    BatchGetAssetPropertyValueHistory+  where+  rnf BatchGetAssetPropertyValueHistory' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf entries++instance+  Data.ToHeaders+    BatchGetAssetPropertyValueHistory+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    BatchGetAssetPropertyValueHistory+  where+  toJSON BatchGetAssetPropertyValueHistory' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("entries" Data..= entries)+          ]+      )++instance+  Data.ToPath+    BatchGetAssetPropertyValueHistory+  where+  toPath = Prelude.const "/properties/batch/history"++instance+  Data.ToQuery+    BatchGetAssetPropertyValueHistory+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchGetAssetPropertyValueHistoryResponse' smart constructor.+data BatchGetAssetPropertyValueHistoryResponse = BatchGetAssetPropertyValueHistoryResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list of the errors (if any) associated with the batch request. Each+    -- error entry contains the @entryId@ of the entry that failed.+    errorEntries :: [BatchGetAssetPropertyValueHistoryErrorEntry],+    -- | A list of entries that were processed successfully by this batch+    -- request. Each success entry contains the @entryId@ of the entry that+    -- succeeded and the latest query result.+    successEntries :: [BatchGetAssetPropertyValueHistorySuccessEntry],+    -- | A list of entries that were not processed by this batch request. because+    -- these entries had been completely processed by previous paginated+    -- requests. Each skipped entry contains the @entryId@ of the entry that+    -- skipped.+    skippedEntries :: [BatchGetAssetPropertyValueHistorySkippedEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueHistoryResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchGetAssetPropertyValueHistoryResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'batchGetAssetPropertyValueHistoryResponse_httpStatus' - The response's http status code.+--+-- 'errorEntries', 'batchGetAssetPropertyValueHistoryResponse_errorEntries' - A list of the errors (if any) associated with the batch request. Each+-- error entry contains the @entryId@ of the entry that failed.+--+-- 'successEntries', 'batchGetAssetPropertyValueHistoryResponse_successEntries' - A list of entries that were processed successfully by this batch+-- request. Each success entry contains the @entryId@ of the entry that+-- succeeded and the latest query result.+--+-- 'skippedEntries', 'batchGetAssetPropertyValueHistoryResponse_skippedEntries' - A list of entries that were not processed by this batch request. because+-- these entries had been completely processed by previous paginated+-- requests. Each skipped entry contains the @entryId@ of the entry that+-- skipped.+newBatchGetAssetPropertyValueHistoryResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchGetAssetPropertyValueHistoryResponse+newBatchGetAssetPropertyValueHistoryResponse+  pHttpStatus_ =+    BatchGetAssetPropertyValueHistoryResponse'+      { nextToken =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        errorEntries = Prelude.mempty,+        successEntries = Prelude.mempty,+        skippedEntries = Prelude.mempty+      }++-- | The token for the next set of results, or null if there are no+-- additional results.+batchGetAssetPropertyValueHistoryResponse_nextToken :: Lens.Lens' BatchGetAssetPropertyValueHistoryResponse (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyValueHistoryResponse_nextToken = Lens.lens (\BatchGetAssetPropertyValueHistoryResponse' {nextToken} -> nextToken) (\s@BatchGetAssetPropertyValueHistoryResponse' {} a -> s {nextToken = a} :: BatchGetAssetPropertyValueHistoryResponse)++-- | The response's http status code.+batchGetAssetPropertyValueHistoryResponse_httpStatus :: Lens.Lens' BatchGetAssetPropertyValueHistoryResponse Prelude.Int+batchGetAssetPropertyValueHistoryResponse_httpStatus = Lens.lens (\BatchGetAssetPropertyValueHistoryResponse' {httpStatus} -> httpStatus) (\s@BatchGetAssetPropertyValueHistoryResponse' {} a -> s {httpStatus = a} :: BatchGetAssetPropertyValueHistoryResponse)++-- | A list of the errors (if any) associated with the batch request. Each+-- error entry contains the @entryId@ of the entry that failed.+batchGetAssetPropertyValueHistoryResponse_errorEntries :: Lens.Lens' BatchGetAssetPropertyValueHistoryResponse [BatchGetAssetPropertyValueHistoryErrorEntry]+batchGetAssetPropertyValueHistoryResponse_errorEntries = Lens.lens (\BatchGetAssetPropertyValueHistoryResponse' {errorEntries} -> errorEntries) (\s@BatchGetAssetPropertyValueHistoryResponse' {} a -> s {errorEntries = a} :: BatchGetAssetPropertyValueHistoryResponse) Prelude.. Lens.coerced++-- | A list of entries that were processed successfully by this batch+-- request. Each success entry contains the @entryId@ of the entry that+-- succeeded and the latest query result.+batchGetAssetPropertyValueHistoryResponse_successEntries :: Lens.Lens' BatchGetAssetPropertyValueHistoryResponse [BatchGetAssetPropertyValueHistorySuccessEntry]+batchGetAssetPropertyValueHistoryResponse_successEntries = Lens.lens (\BatchGetAssetPropertyValueHistoryResponse' {successEntries} -> successEntries) (\s@BatchGetAssetPropertyValueHistoryResponse' {} a -> s {successEntries = a} :: BatchGetAssetPropertyValueHistoryResponse) Prelude.. Lens.coerced++-- | A list of entries that were not processed by this batch request. because+-- these entries had been completely processed by previous paginated+-- requests. Each skipped entry contains the @entryId@ of the entry that+-- skipped.+batchGetAssetPropertyValueHistoryResponse_skippedEntries :: Lens.Lens' BatchGetAssetPropertyValueHistoryResponse [BatchGetAssetPropertyValueHistorySkippedEntry]+batchGetAssetPropertyValueHistoryResponse_skippedEntries = Lens.lens (\BatchGetAssetPropertyValueHistoryResponse' {skippedEntries} -> skippedEntries) (\s@BatchGetAssetPropertyValueHistoryResponse' {} a -> s {skippedEntries = a} :: BatchGetAssetPropertyValueHistoryResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    BatchGetAssetPropertyValueHistoryResponse+  where+  rnf BatchGetAssetPropertyValueHistoryResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf errorEntries+      `Prelude.seq` Prelude.rnf successEntries+      `Prelude.seq` Prelude.rnf skippedEntries
+ gen/Amazonka/IoTSiteWise/BatchPutAssetPropertyValue.hs view
@@ -0,0 +1,203 @@+{-# 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.IoTSiteWise.BatchPutAssetPropertyValue+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Sends a list of asset property values to IoT SiteWise. Each value is a+-- timestamp-quality-value (TQV) data point. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/ingest-api.html Ingesting data using the API>+-- in the /IoT SiteWise User Guide/.+--+-- To identify an asset property, you must specify one of the following:+--+-- -   The @assetId@ and @propertyId@ of an asset property.+--+-- -   A @propertyAlias@, which is a data stream alias (for example,+--     @\/company\/windfarm\/3\/turbine\/7\/temperature@). To define an+--     asset property\'s alias, see+--     <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+--+-- With respect to Unix epoch time, IoT SiteWise accepts only TQVs that+-- have a timestamp of no more than 7 days in the past and no more than 10+-- minutes in the future. IoT SiteWise rejects timestamps outside of the+-- inclusive range of [-7 days, +10 minutes] and returns a+-- @TimestampOutOfRangeException@ error.+--+-- For each asset property, IoT SiteWise overwrites TQVs with duplicate+-- timestamps unless the newer TQV has a different quality. For example, if+-- you store a TQV @{T1, GOOD, V1}@, then storing @{T1, GOOD, V2}@ replaces+-- the existing TQV.+--+-- IoT SiteWise authorizes access to each @BatchPutAssetPropertyValue@+-- entry individually. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-batchputassetpropertyvalue-action BatchPutAssetPropertyValue authorization>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.BatchPutAssetPropertyValue+  ( -- * Creating a Request+    BatchPutAssetPropertyValue (..),+    newBatchPutAssetPropertyValue,++    -- * Request Lenses+    batchPutAssetPropertyValue_entries,++    -- * Destructuring the Response+    BatchPutAssetPropertyValueResponse (..),+    newBatchPutAssetPropertyValueResponse,++    -- * Response Lenses+    batchPutAssetPropertyValueResponse_httpStatus,+    batchPutAssetPropertyValueResponse_errorEntries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchPutAssetPropertyValue' smart constructor.+data BatchPutAssetPropertyValue = BatchPutAssetPropertyValue'+  { -- | The list of asset property value entries for the batch put request. You+    -- can specify up to 10 entries per request.+    entries :: [PutAssetPropertyValueEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchPutAssetPropertyValue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'entries', 'batchPutAssetPropertyValue_entries' - The list of asset property value entries for the batch put request. You+-- can specify up to 10 entries per request.+newBatchPutAssetPropertyValue ::+  BatchPutAssetPropertyValue+newBatchPutAssetPropertyValue =+  BatchPutAssetPropertyValue'+    { entries =+        Prelude.mempty+    }++-- | The list of asset property value entries for the batch put request. You+-- can specify up to 10 entries per request.+batchPutAssetPropertyValue_entries :: Lens.Lens' BatchPutAssetPropertyValue [PutAssetPropertyValueEntry]+batchPutAssetPropertyValue_entries = Lens.lens (\BatchPutAssetPropertyValue' {entries} -> entries) (\s@BatchPutAssetPropertyValue' {} a -> s {entries = a} :: BatchPutAssetPropertyValue) Prelude.. Lens.coerced++instance Core.AWSRequest BatchPutAssetPropertyValue where+  type+    AWSResponse BatchPutAssetPropertyValue =+      BatchPutAssetPropertyValueResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchPutAssetPropertyValueResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "errorEntries" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable BatchPutAssetPropertyValue where+  hashWithSalt _salt BatchPutAssetPropertyValue' {..} =+    _salt `Prelude.hashWithSalt` entries++instance Prelude.NFData BatchPutAssetPropertyValue where+  rnf BatchPutAssetPropertyValue' {..} =+    Prelude.rnf entries++instance Data.ToHeaders BatchPutAssetPropertyValue where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchPutAssetPropertyValue where+  toJSON BatchPutAssetPropertyValue' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("entries" Data..= entries)]+      )++instance Data.ToPath BatchPutAssetPropertyValue where+  toPath = Prelude.const "/properties"++instance Data.ToQuery BatchPutAssetPropertyValue where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchPutAssetPropertyValueResponse' smart constructor.+data BatchPutAssetPropertyValueResponse = BatchPutAssetPropertyValueResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list of the errors (if any) associated with the batch put request.+    -- Each error entry contains the @entryId@ of the entry that failed.+    errorEntries :: [BatchPutAssetPropertyErrorEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchPutAssetPropertyValueResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchPutAssetPropertyValueResponse_httpStatus' - The response's http status code.+--+-- 'errorEntries', 'batchPutAssetPropertyValueResponse_errorEntries' - A list of the errors (if any) associated with the batch put request.+-- Each error entry contains the @entryId@ of the entry that failed.+newBatchPutAssetPropertyValueResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchPutAssetPropertyValueResponse+newBatchPutAssetPropertyValueResponse pHttpStatus_ =+  BatchPutAssetPropertyValueResponse'+    { httpStatus =+        pHttpStatus_,+      errorEntries = Prelude.mempty+    }++-- | The response's http status code.+batchPutAssetPropertyValueResponse_httpStatus :: Lens.Lens' BatchPutAssetPropertyValueResponse Prelude.Int+batchPutAssetPropertyValueResponse_httpStatus = Lens.lens (\BatchPutAssetPropertyValueResponse' {httpStatus} -> httpStatus) (\s@BatchPutAssetPropertyValueResponse' {} a -> s {httpStatus = a} :: BatchPutAssetPropertyValueResponse)++-- | A list of the errors (if any) associated with the batch put request.+-- Each error entry contains the @entryId@ of the entry that failed.+batchPutAssetPropertyValueResponse_errorEntries :: Lens.Lens' BatchPutAssetPropertyValueResponse [BatchPutAssetPropertyErrorEntry]+batchPutAssetPropertyValueResponse_errorEntries = Lens.lens (\BatchPutAssetPropertyValueResponse' {errorEntries} -> errorEntries) (\s@BatchPutAssetPropertyValueResponse' {} a -> s {errorEntries = a} :: BatchPutAssetPropertyValueResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    BatchPutAssetPropertyValueResponse+  where+  rnf BatchPutAssetPropertyValueResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf errorEntries
+ gen/Amazonka/IoTSiteWise/CreateAccessPolicy.hs view
@@ -0,0 +1,294 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.CreateAccessPolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates an access policy that grants the specified identity (IAM+-- Identity Center user, IAM Identity Center group, or IAM user) access to+-- the specified IoT SiteWise Monitor portal or project resource.+module Amazonka.IoTSiteWise.CreateAccessPolicy+  ( -- * Creating a Request+    CreateAccessPolicy (..),+    newCreateAccessPolicy,++    -- * Request Lenses+    createAccessPolicy_clientToken,+    createAccessPolicy_tags,+    createAccessPolicy_accessPolicyIdentity,+    createAccessPolicy_accessPolicyResource,+    createAccessPolicy_accessPolicyPermission,++    -- * Destructuring the Response+    CreateAccessPolicyResponse (..),+    newCreateAccessPolicyResponse,++    -- * Response Lenses+    createAccessPolicyResponse_httpStatus,+    createAccessPolicyResponse_accessPolicyId,+    createAccessPolicyResponse_accessPolicyArn,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateAccessPolicy' smart constructor.+data CreateAccessPolicy = CreateAccessPolicy'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | A list of key-value pairs that contain metadata for the access policy.+    -- For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+    -- in the /IoT SiteWise User Guide/.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The identity for this access policy. Choose an IAM Identity Center user,+    -- an IAM Identity Center group, or an IAM user.+    accessPolicyIdentity :: Identity,+    -- | The IoT SiteWise Monitor resource for this access policy. Choose either+    -- a portal or a project.+    accessPolicyResource :: Resource,+    -- | The permission level for this access policy. Note that a project+    -- @ADMINISTRATOR@ is also known as a project owner.+    accessPolicyPermission :: Permission+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateAccessPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createAccessPolicy_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'tags', 'createAccessPolicy_tags' - A list of key-value pairs that contain metadata for the access policy.+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+--+-- 'accessPolicyIdentity', 'createAccessPolicy_accessPolicyIdentity' - The identity for this access policy. Choose an IAM Identity Center user,+-- an IAM Identity Center group, or an IAM user.+--+-- 'accessPolicyResource', 'createAccessPolicy_accessPolicyResource' - The IoT SiteWise Monitor resource for this access policy. Choose either+-- a portal or a project.+--+-- 'accessPolicyPermission', 'createAccessPolicy_accessPolicyPermission' - The permission level for this access policy. Note that a project+-- @ADMINISTRATOR@ is also known as a project owner.+newCreateAccessPolicy ::+  -- | 'accessPolicyIdentity'+  Identity ->+  -- | 'accessPolicyResource'+  Resource ->+  -- | 'accessPolicyPermission'+  Permission ->+  CreateAccessPolicy+newCreateAccessPolicy+  pAccessPolicyIdentity_+  pAccessPolicyResource_+  pAccessPolicyPermission_ =+    CreateAccessPolicy'+      { clientToken = Prelude.Nothing,+        tags = Prelude.Nothing,+        accessPolicyIdentity = pAccessPolicyIdentity_,+        accessPolicyResource = pAccessPolicyResource_,+        accessPolicyPermission = pAccessPolicyPermission_+      }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+createAccessPolicy_clientToken :: Lens.Lens' CreateAccessPolicy (Prelude.Maybe Prelude.Text)+createAccessPolicy_clientToken = Lens.lens (\CreateAccessPolicy' {clientToken} -> clientToken) (\s@CreateAccessPolicy' {} a -> s {clientToken = a} :: CreateAccessPolicy)++-- | A list of key-value pairs that contain metadata for the access policy.+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+createAccessPolicy_tags :: Lens.Lens' CreateAccessPolicy (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createAccessPolicy_tags = Lens.lens (\CreateAccessPolicy' {tags} -> tags) (\s@CreateAccessPolicy' {} a -> s {tags = a} :: CreateAccessPolicy) Prelude.. Lens.mapping Lens.coerced++-- | The identity for this access policy. Choose an IAM Identity Center user,+-- an IAM Identity Center group, or an IAM user.+createAccessPolicy_accessPolicyIdentity :: Lens.Lens' CreateAccessPolicy Identity+createAccessPolicy_accessPolicyIdentity = Lens.lens (\CreateAccessPolicy' {accessPolicyIdentity} -> accessPolicyIdentity) (\s@CreateAccessPolicy' {} a -> s {accessPolicyIdentity = a} :: CreateAccessPolicy)++-- | The IoT SiteWise Monitor resource for this access policy. Choose either+-- a portal or a project.+createAccessPolicy_accessPolicyResource :: Lens.Lens' CreateAccessPolicy Resource+createAccessPolicy_accessPolicyResource = Lens.lens (\CreateAccessPolicy' {accessPolicyResource} -> accessPolicyResource) (\s@CreateAccessPolicy' {} a -> s {accessPolicyResource = a} :: CreateAccessPolicy)++-- | The permission level for this access policy. Note that a project+-- @ADMINISTRATOR@ is also known as a project owner.+createAccessPolicy_accessPolicyPermission :: Lens.Lens' CreateAccessPolicy Permission+createAccessPolicy_accessPolicyPermission = Lens.lens (\CreateAccessPolicy' {accessPolicyPermission} -> accessPolicyPermission) (\s@CreateAccessPolicy' {} a -> s {accessPolicyPermission = a} :: CreateAccessPolicy)++instance Core.AWSRequest CreateAccessPolicy where+  type+    AWSResponse CreateAccessPolicy =+      CreateAccessPolicyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateAccessPolicyResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "accessPolicyId")+            Prelude.<*> (x Data..:> "accessPolicyArn")+      )++instance Prelude.Hashable CreateAccessPolicy where+  hashWithSalt _salt CreateAccessPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` accessPolicyIdentity+      `Prelude.hashWithSalt` accessPolicyResource+      `Prelude.hashWithSalt` accessPolicyPermission++instance Prelude.NFData CreateAccessPolicy where+  rnf CreateAccessPolicy' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf accessPolicyIdentity+      `Prelude.seq` Prelude.rnf accessPolicyResource+      `Prelude.seq` Prelude.rnf accessPolicyPermission++instance Data.ToHeaders CreateAccessPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateAccessPolicy where+  toJSON CreateAccessPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ( "accessPolicyIdentity"+                  Data..= accessPolicyIdentity+              ),+            Prelude.Just+              ( "accessPolicyResource"+                  Data..= accessPolicyResource+              ),+            Prelude.Just+              ( "accessPolicyPermission"+                  Data..= accessPolicyPermission+              )+          ]+      )++instance Data.ToPath CreateAccessPolicy where+  toPath = Prelude.const "/access-policies"++instance Data.ToQuery CreateAccessPolicy where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateAccessPolicyResponse' smart constructor.+data CreateAccessPolicyResponse = CreateAccessPolicyResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the access policy.+    accessPolicyId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the access policy, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:access-policy\/${AccessPolicyId}@+    accessPolicyArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateAccessPolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createAccessPolicyResponse_httpStatus' - The response's http status code.+--+-- 'accessPolicyId', 'createAccessPolicyResponse_accessPolicyId' - The ID of the access policy.+--+-- 'accessPolicyArn', 'createAccessPolicyResponse_accessPolicyArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the access policy, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:access-policy\/${AccessPolicyId}@+newCreateAccessPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'accessPolicyId'+  Prelude.Text ->+  -- | 'accessPolicyArn'+  Prelude.Text ->+  CreateAccessPolicyResponse+newCreateAccessPolicyResponse+  pHttpStatus_+  pAccessPolicyId_+  pAccessPolicyArn_ =+    CreateAccessPolicyResponse'+      { httpStatus =+          pHttpStatus_,+        accessPolicyId = pAccessPolicyId_,+        accessPolicyArn = pAccessPolicyArn_+      }++-- | The response's http status code.+createAccessPolicyResponse_httpStatus :: Lens.Lens' CreateAccessPolicyResponse Prelude.Int+createAccessPolicyResponse_httpStatus = Lens.lens (\CreateAccessPolicyResponse' {httpStatus} -> httpStatus) (\s@CreateAccessPolicyResponse' {} a -> s {httpStatus = a} :: CreateAccessPolicyResponse)++-- | The ID of the access policy.+createAccessPolicyResponse_accessPolicyId :: Lens.Lens' CreateAccessPolicyResponse Prelude.Text+createAccessPolicyResponse_accessPolicyId = Lens.lens (\CreateAccessPolicyResponse' {accessPolicyId} -> accessPolicyId) (\s@CreateAccessPolicyResponse' {} a -> s {accessPolicyId = a} :: CreateAccessPolicyResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the access policy, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:access-policy\/${AccessPolicyId}@+createAccessPolicyResponse_accessPolicyArn :: Lens.Lens' CreateAccessPolicyResponse Prelude.Text+createAccessPolicyResponse_accessPolicyArn = Lens.lens (\CreateAccessPolicyResponse' {accessPolicyArn} -> accessPolicyArn) (\s@CreateAccessPolicyResponse' {} a -> s {accessPolicyArn = a} :: CreateAccessPolicyResponse)++instance Prelude.NFData CreateAccessPolicyResponse where+  rnf CreateAccessPolicyResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf accessPolicyId+      `Prelude.seq` Prelude.rnf accessPolicyArn
+ gen/Amazonka/IoTSiteWise/CreateAsset.hs view
@@ -0,0 +1,290 @@+{-# 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.IoTSiteWise.CreateAsset+-- 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 asset from an existing asset model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-assets.html Creating assets>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.CreateAsset+  ( -- * Creating a Request+    CreateAsset (..),+    newCreateAsset,++    -- * Request Lenses+    createAsset_assetDescription,+    createAsset_clientToken,+    createAsset_tags,+    createAsset_assetName,+    createAsset_assetModelId,++    -- * Destructuring the Response+    CreateAssetResponse (..),+    newCreateAssetResponse,++    -- * Response Lenses+    createAssetResponse_httpStatus,+    createAssetResponse_assetId,+    createAssetResponse_assetArn,+    createAssetResponse_assetStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateAsset' smart constructor.+data CreateAsset = CreateAsset'+  { -- | A description for the asset.+    assetDescription :: Prelude.Maybe Prelude.Text,+    -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | A list of key-value pairs that contain metadata for the asset. For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+    -- in the /IoT SiteWise User Guide/.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A friendly name for the asset.+    assetName :: Prelude.Text,+    -- | The ID of the asset model from which to create the asset.+    assetModelId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateAsset' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetDescription', 'createAsset_assetDescription' - A description for the asset.+--+-- 'clientToken', 'createAsset_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'tags', 'createAsset_tags' - A list of key-value pairs that contain metadata for the asset. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+--+-- 'assetName', 'createAsset_assetName' - A friendly name for the asset.+--+-- 'assetModelId', 'createAsset_assetModelId' - The ID of the asset model from which to create the asset.+newCreateAsset ::+  -- | 'assetName'+  Prelude.Text ->+  -- | 'assetModelId'+  Prelude.Text ->+  CreateAsset+newCreateAsset pAssetName_ pAssetModelId_ =+  CreateAsset'+    { assetDescription = Prelude.Nothing,+      clientToken = Prelude.Nothing,+      tags = Prelude.Nothing,+      assetName = pAssetName_,+      assetModelId = pAssetModelId_+    }++-- | A description for the asset.+createAsset_assetDescription :: Lens.Lens' CreateAsset (Prelude.Maybe Prelude.Text)+createAsset_assetDescription = Lens.lens (\CreateAsset' {assetDescription} -> assetDescription) (\s@CreateAsset' {} a -> s {assetDescription = a} :: CreateAsset)++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+createAsset_clientToken :: Lens.Lens' CreateAsset (Prelude.Maybe Prelude.Text)+createAsset_clientToken = Lens.lens (\CreateAsset' {clientToken} -> clientToken) (\s@CreateAsset' {} a -> s {clientToken = a} :: CreateAsset)++-- | A list of key-value pairs that contain metadata for the asset. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+createAsset_tags :: Lens.Lens' CreateAsset (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createAsset_tags = Lens.lens (\CreateAsset' {tags} -> tags) (\s@CreateAsset' {} a -> s {tags = a} :: CreateAsset) Prelude.. Lens.mapping Lens.coerced++-- | A friendly name for the asset.+createAsset_assetName :: Lens.Lens' CreateAsset Prelude.Text+createAsset_assetName = Lens.lens (\CreateAsset' {assetName} -> assetName) (\s@CreateAsset' {} a -> s {assetName = a} :: CreateAsset)++-- | The ID of the asset model from which to create the asset.+createAsset_assetModelId :: Lens.Lens' CreateAsset Prelude.Text+createAsset_assetModelId = Lens.lens (\CreateAsset' {assetModelId} -> assetModelId) (\s@CreateAsset' {} a -> s {assetModelId = a} :: CreateAsset)++instance Core.AWSRequest CreateAsset where+  type AWSResponse CreateAsset = CreateAssetResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateAssetResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "assetId")+            Prelude.<*> (x Data..:> "assetArn")+            Prelude.<*> (x Data..:> "assetStatus")+      )++instance Prelude.Hashable CreateAsset where+  hashWithSalt _salt CreateAsset' {..} =+    _salt+      `Prelude.hashWithSalt` assetDescription+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` assetName+      `Prelude.hashWithSalt` assetModelId++instance Prelude.NFData CreateAsset where+  rnf CreateAsset' {..} =+    Prelude.rnf assetDescription+      `Prelude.seq` Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf assetName+      `Prelude.seq` Prelude.rnf assetModelId++instance Data.ToHeaders CreateAsset where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateAsset where+  toJSON CreateAsset' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("assetDescription" Data..=)+              Prelude.<$> assetDescription,+            ("clientToken" Data..=) Prelude.<$> clientToken,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("assetName" Data..= assetName),+            Prelude.Just ("assetModelId" Data..= assetModelId)+          ]+      )++instance Data.ToPath CreateAsset where+  toPath = Prelude.const "/assets"++instance Data.ToQuery CreateAsset where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateAssetResponse' smart constructor.+data CreateAssetResponse = CreateAssetResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the asset. This ID uniquely identifies the asset within IoT+    -- SiteWise and can be used with other IoT SiteWise APIs.+    assetId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the asset, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+    assetArn :: Prelude.Text,+    -- | The status of the asset, which contains a state (@CREATING@ after+    -- successfully calling this operation) and any error message.+    assetStatus :: AssetStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateAssetResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createAssetResponse_httpStatus' - The response's http status code.+--+-- 'assetId', 'createAssetResponse_assetId' - The ID of the asset. This ID uniquely identifies the asset within IoT+-- SiteWise and can be used with other IoT SiteWise APIs.+--+-- 'assetArn', 'createAssetResponse_assetArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+--+-- 'assetStatus', 'createAssetResponse_assetStatus' - The status of the asset, which contains a state (@CREATING@ after+-- successfully calling this operation) and any error message.+newCreateAssetResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'assetId'+  Prelude.Text ->+  -- | 'assetArn'+  Prelude.Text ->+  -- | 'assetStatus'+  AssetStatus ->+  CreateAssetResponse+newCreateAssetResponse+  pHttpStatus_+  pAssetId_+  pAssetArn_+  pAssetStatus_ =+    CreateAssetResponse'+      { httpStatus = pHttpStatus_,+        assetId = pAssetId_,+        assetArn = pAssetArn_,+        assetStatus = pAssetStatus_+      }++-- | The response's http status code.+createAssetResponse_httpStatus :: Lens.Lens' CreateAssetResponse Prelude.Int+createAssetResponse_httpStatus = Lens.lens (\CreateAssetResponse' {httpStatus} -> httpStatus) (\s@CreateAssetResponse' {} a -> s {httpStatus = a} :: CreateAssetResponse)++-- | The ID of the asset. This ID uniquely identifies the asset within IoT+-- SiteWise and can be used with other IoT SiteWise APIs.+createAssetResponse_assetId :: Lens.Lens' CreateAssetResponse Prelude.Text+createAssetResponse_assetId = Lens.lens (\CreateAssetResponse' {assetId} -> assetId) (\s@CreateAssetResponse' {} a -> s {assetId = a} :: CreateAssetResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+createAssetResponse_assetArn :: Lens.Lens' CreateAssetResponse Prelude.Text+createAssetResponse_assetArn = Lens.lens (\CreateAssetResponse' {assetArn} -> assetArn) (\s@CreateAssetResponse' {} a -> s {assetArn = a} :: CreateAssetResponse)++-- | The status of the asset, which contains a state (@CREATING@ after+-- successfully calling this operation) and any error message.+createAssetResponse_assetStatus :: Lens.Lens' CreateAssetResponse AssetStatus+createAssetResponse_assetStatus = Lens.lens (\CreateAssetResponse' {assetStatus} -> assetStatus) (\s@CreateAssetResponse' {} a -> s {assetStatus = a} :: CreateAssetResponse)++instance Prelude.NFData CreateAssetResponse where+  rnf CreateAssetResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf assetArn+      `Prelude.seq` Prelude.rnf assetStatus
+ gen/Amazonka/IoTSiteWise/CreateAssetModel.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.IoTSiteWise.CreateAssetModel+-- 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 asset model from specified property and hierarchy+-- definitions. You create assets from asset models. With asset models, you+-- can easily create assets of the same type that have standardized+-- definitions. Each asset created from a model inherits the asset model\'s+-- property and hierarchy definitions. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/define-models.html Defining asset models>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.CreateAssetModel+  ( -- * Creating a Request+    CreateAssetModel (..),+    newCreateAssetModel,++    -- * Request Lenses+    createAssetModel_assetModelCompositeModels,+    createAssetModel_assetModelDescription,+    createAssetModel_assetModelHierarchies,+    createAssetModel_assetModelProperties,+    createAssetModel_clientToken,+    createAssetModel_tags,+    createAssetModel_assetModelName,++    -- * Destructuring the Response+    CreateAssetModelResponse (..),+    newCreateAssetModelResponse,++    -- * Response Lenses+    createAssetModelResponse_httpStatus,+    createAssetModelResponse_assetModelId,+    createAssetModelResponse_assetModelArn,+    createAssetModelResponse_assetModelStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateAssetModel' smart constructor.+data CreateAssetModel = CreateAssetModel'+  { -- | The composite asset models that are part of this asset model. Composite+    -- asset models are asset models that contain specific properties. Each+    -- composite model has a type that defines the properties that the+    -- composite model supports. Use composite asset models to define alarms on+    -- this asset model.+    assetModelCompositeModels :: Prelude.Maybe [AssetModelCompositeModelDefinition],+    -- | A description for the asset model.+    assetModelDescription :: Prelude.Maybe Prelude.Text,+    -- | The hierarchy definitions of the asset model. Each hierarchy specifies+    -- an asset model whose assets can be children of any other assets created+    -- from this asset model. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+    -- in the /IoT SiteWise User Guide/.+    --+    -- You can specify up to 10 hierarchies per asset model. For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+    -- in the /IoT SiteWise User Guide/.+    assetModelHierarchies :: Prelude.Maybe [AssetModelHierarchyDefinition],+    -- | The property definitions of the asset model. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html Asset properties>+    -- in the /IoT SiteWise User Guide/.+    --+    -- You can specify up to 200 properties per asset model. For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+    -- in the /IoT SiteWise User Guide/.+    assetModelProperties :: Prelude.Maybe [AssetModelPropertyDefinition],+    -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | A list of key-value pairs that contain metadata for the asset model. For+    -- more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+    -- in the /IoT SiteWise User Guide/.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A unique, friendly name for the asset model.+    assetModelName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateAssetModel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetModelCompositeModels', 'createAssetModel_assetModelCompositeModels' - The composite asset models that are part of this asset model. Composite+-- asset models are asset models that contain specific properties. Each+-- composite model has a type that defines the properties that the+-- composite model supports. Use composite asset models to define alarms on+-- this asset model.+--+-- 'assetModelDescription', 'createAssetModel_assetModelDescription' - A description for the asset model.+--+-- 'assetModelHierarchies', 'createAssetModel_assetModelHierarchies' - The hierarchy definitions of the asset model. Each hierarchy specifies+-- an asset model whose assets can be children of any other assets created+-- from this asset model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+--+-- You can specify up to 10 hierarchies per asset model. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+--+-- 'assetModelProperties', 'createAssetModel_assetModelProperties' - The property definitions of the asset model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html Asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- You can specify up to 200 properties per asset model. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+--+-- 'clientToken', 'createAssetModel_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'tags', 'createAssetModel_tags' - A list of key-value pairs that contain metadata for the asset model. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+--+-- 'assetModelName', 'createAssetModel_assetModelName' - A unique, friendly name for the asset model.+newCreateAssetModel ::+  -- | 'assetModelName'+  Prelude.Text ->+  CreateAssetModel+newCreateAssetModel pAssetModelName_ =+  CreateAssetModel'+    { assetModelCompositeModels =+        Prelude.Nothing,+      assetModelDescription = Prelude.Nothing,+      assetModelHierarchies = Prelude.Nothing,+      assetModelProperties = Prelude.Nothing,+      clientToken = Prelude.Nothing,+      tags = Prelude.Nothing,+      assetModelName = pAssetModelName_+    }++-- | The composite asset models that are part of this asset model. Composite+-- asset models are asset models that contain specific properties. Each+-- composite model has a type that defines the properties that the+-- composite model supports. Use composite asset models to define alarms on+-- this asset model.+createAssetModel_assetModelCompositeModels :: Lens.Lens' CreateAssetModel (Prelude.Maybe [AssetModelCompositeModelDefinition])+createAssetModel_assetModelCompositeModels = Lens.lens (\CreateAssetModel' {assetModelCompositeModels} -> assetModelCompositeModels) (\s@CreateAssetModel' {} a -> s {assetModelCompositeModels = a} :: CreateAssetModel) Prelude.. Lens.mapping Lens.coerced++-- | A description for the asset model.+createAssetModel_assetModelDescription :: Lens.Lens' CreateAssetModel (Prelude.Maybe Prelude.Text)+createAssetModel_assetModelDescription = Lens.lens (\CreateAssetModel' {assetModelDescription} -> assetModelDescription) (\s@CreateAssetModel' {} a -> s {assetModelDescription = a} :: CreateAssetModel)++-- | The hierarchy definitions of the asset model. Each hierarchy specifies+-- an asset model whose assets can be children of any other assets created+-- from this asset model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+--+-- You can specify up to 10 hierarchies per asset model. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+createAssetModel_assetModelHierarchies :: Lens.Lens' CreateAssetModel (Prelude.Maybe [AssetModelHierarchyDefinition])+createAssetModel_assetModelHierarchies = Lens.lens (\CreateAssetModel' {assetModelHierarchies} -> assetModelHierarchies) (\s@CreateAssetModel' {} a -> s {assetModelHierarchies = a} :: CreateAssetModel) Prelude.. Lens.mapping Lens.coerced++-- | The property definitions of the asset model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html Asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- You can specify up to 200 properties per asset model. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+createAssetModel_assetModelProperties :: Lens.Lens' CreateAssetModel (Prelude.Maybe [AssetModelPropertyDefinition])+createAssetModel_assetModelProperties = Lens.lens (\CreateAssetModel' {assetModelProperties} -> assetModelProperties) (\s@CreateAssetModel' {} a -> s {assetModelProperties = a} :: CreateAssetModel) Prelude.. Lens.mapping Lens.coerced++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+createAssetModel_clientToken :: Lens.Lens' CreateAssetModel (Prelude.Maybe Prelude.Text)+createAssetModel_clientToken = Lens.lens (\CreateAssetModel' {clientToken} -> clientToken) (\s@CreateAssetModel' {} a -> s {clientToken = a} :: CreateAssetModel)++-- | A list of key-value pairs that contain metadata for the asset model. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+createAssetModel_tags :: Lens.Lens' CreateAssetModel (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createAssetModel_tags = Lens.lens (\CreateAssetModel' {tags} -> tags) (\s@CreateAssetModel' {} a -> s {tags = a} :: CreateAssetModel) Prelude.. Lens.mapping Lens.coerced++-- | A unique, friendly name for the asset model.+createAssetModel_assetModelName :: Lens.Lens' CreateAssetModel Prelude.Text+createAssetModel_assetModelName = Lens.lens (\CreateAssetModel' {assetModelName} -> assetModelName) (\s@CreateAssetModel' {} a -> s {assetModelName = a} :: CreateAssetModel)++instance Core.AWSRequest CreateAssetModel where+  type+    AWSResponse CreateAssetModel =+      CreateAssetModelResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateAssetModelResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "assetModelId")+            Prelude.<*> (x Data..:> "assetModelArn")+            Prelude.<*> (x Data..:> "assetModelStatus")+      )++instance Prelude.Hashable CreateAssetModel where+  hashWithSalt _salt CreateAssetModel' {..} =+    _salt+      `Prelude.hashWithSalt` assetModelCompositeModels+      `Prelude.hashWithSalt` assetModelDescription+      `Prelude.hashWithSalt` assetModelHierarchies+      `Prelude.hashWithSalt` assetModelProperties+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` assetModelName++instance Prelude.NFData CreateAssetModel where+  rnf CreateAssetModel' {..} =+    Prelude.rnf assetModelCompositeModels+      `Prelude.seq` Prelude.rnf assetModelDescription+      `Prelude.seq` Prelude.rnf assetModelHierarchies+      `Prelude.seq` Prelude.rnf assetModelProperties+      `Prelude.seq` Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf assetModelName++instance Data.ToHeaders CreateAssetModel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateAssetModel where+  toJSON CreateAssetModel' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("assetModelCompositeModels" Data..=)+              Prelude.<$> assetModelCompositeModels,+            ("assetModelDescription" Data..=)+              Prelude.<$> assetModelDescription,+            ("assetModelHierarchies" Data..=)+              Prelude.<$> assetModelHierarchies,+            ("assetModelProperties" Data..=)+              Prelude.<$> assetModelProperties,+            ("clientToken" Data..=) Prelude.<$> clientToken,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("assetModelName" Data..= assetModelName)+          ]+      )++instance Data.ToPath CreateAssetModel where+  toPath = Prelude.const "/asset-models"++instance Data.ToQuery CreateAssetModel where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateAssetModelResponse' smart constructor.+data CreateAssetModelResponse = CreateAssetModelResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the asset model. You can use this ID when you call other IoT+    -- SiteWise APIs.+    assetModelId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the asset model, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model\/${AssetModelId}@+    assetModelArn :: Prelude.Text,+    -- | The status of the asset model, which contains a state (@CREATING@ after+    -- successfully calling this operation) and any error message.+    assetModelStatus :: AssetModelStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateAssetModelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createAssetModelResponse_httpStatus' - The response's http status code.+--+-- 'assetModelId', 'createAssetModelResponse_assetModelId' - The ID of the asset model. You can use this ID when you call other IoT+-- SiteWise APIs.+--+-- 'assetModelArn', 'createAssetModelResponse_assetModelArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset model, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model\/${AssetModelId}@+--+-- 'assetModelStatus', 'createAssetModelResponse_assetModelStatus' - The status of the asset model, which contains a state (@CREATING@ after+-- successfully calling this operation) and any error message.+newCreateAssetModelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'assetModelId'+  Prelude.Text ->+  -- | 'assetModelArn'+  Prelude.Text ->+  -- | 'assetModelStatus'+  AssetModelStatus ->+  CreateAssetModelResponse+newCreateAssetModelResponse+  pHttpStatus_+  pAssetModelId_+  pAssetModelArn_+  pAssetModelStatus_ =+    CreateAssetModelResponse'+      { httpStatus =+          pHttpStatus_,+        assetModelId = pAssetModelId_,+        assetModelArn = pAssetModelArn_,+        assetModelStatus = pAssetModelStatus_+      }++-- | The response's http status code.+createAssetModelResponse_httpStatus :: Lens.Lens' CreateAssetModelResponse Prelude.Int+createAssetModelResponse_httpStatus = Lens.lens (\CreateAssetModelResponse' {httpStatus} -> httpStatus) (\s@CreateAssetModelResponse' {} a -> s {httpStatus = a} :: CreateAssetModelResponse)++-- | The ID of the asset model. You can use this ID when you call other IoT+-- SiteWise APIs.+createAssetModelResponse_assetModelId :: Lens.Lens' CreateAssetModelResponse Prelude.Text+createAssetModelResponse_assetModelId = Lens.lens (\CreateAssetModelResponse' {assetModelId} -> assetModelId) (\s@CreateAssetModelResponse' {} a -> s {assetModelId = a} :: CreateAssetModelResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset model, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model\/${AssetModelId}@+createAssetModelResponse_assetModelArn :: Lens.Lens' CreateAssetModelResponse Prelude.Text+createAssetModelResponse_assetModelArn = Lens.lens (\CreateAssetModelResponse' {assetModelArn} -> assetModelArn) (\s@CreateAssetModelResponse' {} a -> s {assetModelArn = a} :: CreateAssetModelResponse)++-- | The status of the asset model, which contains a state (@CREATING@ after+-- successfully calling this operation) and any error message.+createAssetModelResponse_assetModelStatus :: Lens.Lens' CreateAssetModelResponse AssetModelStatus+createAssetModelResponse_assetModelStatus = Lens.lens (\CreateAssetModelResponse' {assetModelStatus} -> assetModelStatus) (\s@CreateAssetModelResponse' {} a -> s {assetModelStatus = a} :: CreateAssetModelResponse)++instance Prelude.NFData CreateAssetModelResponse where+  rnf CreateAssetModelResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetModelId+      `Prelude.seq` Prelude.rnf assetModelArn+      `Prelude.seq` Prelude.rnf assetModelStatus
+ gen/Amazonka/IoTSiteWise/CreateBulkImportJob.hs view
@@ -0,0 +1,347 @@+{-# 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.IoTSiteWise.CreateBulkImportJob+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Defines a job to ingest data to IoT SiteWise from Amazon S3. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/CreateBulkImportJob.html Create a bulk import job (CLI)>+-- in the /Amazon Simple Storage Service User Guide/.+--+-- You must enable IoT SiteWise to export data to Amazon S3 before you+-- create a bulk import job. For more information about how to configure+-- storage settings, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutStorageConfiguration.html PutStorageConfiguration>.+module Amazonka.IoTSiteWise.CreateBulkImportJob+  ( -- * Creating a Request+    CreateBulkImportJob (..),+    newCreateBulkImportJob,++    -- * Request Lenses+    createBulkImportJob_jobName,+    createBulkImportJob_jobRoleArn,+    createBulkImportJob_files,+    createBulkImportJob_errorReportLocation,+    createBulkImportJob_jobConfiguration,++    -- * Destructuring the Response+    CreateBulkImportJobResponse (..),+    newCreateBulkImportJobResponse,++    -- * Response Lenses+    createBulkImportJobResponse_httpStatus,+    createBulkImportJobResponse_jobId,+    createBulkImportJobResponse_jobName,+    createBulkImportJobResponse_jobStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateBulkImportJob' smart constructor.+data CreateBulkImportJob = CreateBulkImportJob'+  { -- | The unique name that helps identify the job request.+    jobName :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the IAM role that allows IoT SiteWise to read Amazon S3 data.+    jobRoleArn :: Prelude.Text,+    -- | The files in the specified Amazon S3 bucket that contain your data.+    files :: [File],+    -- | The Amazon S3 destination where errors associated with the job creation+    -- request are saved.+    errorReportLocation :: ErrorReportLocation,+    -- | Contains the configuration information of a job, such as the file format+    -- used to save data in Amazon S3.+    jobConfiguration :: JobConfiguration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateBulkImportJob' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'jobName', 'createBulkImportJob_jobName' - The unique name that helps identify the job request.+--+-- 'jobRoleArn', 'createBulkImportJob_jobRoleArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IAM role that allows IoT SiteWise to read Amazon S3 data.+--+-- 'files', 'createBulkImportJob_files' - The files in the specified Amazon S3 bucket that contain your data.+--+-- 'errorReportLocation', 'createBulkImportJob_errorReportLocation' - The Amazon S3 destination where errors associated with the job creation+-- request are saved.+--+-- 'jobConfiguration', 'createBulkImportJob_jobConfiguration' - Contains the configuration information of a job, such as the file format+-- used to save data in Amazon S3.+newCreateBulkImportJob ::+  -- | 'jobName'+  Prelude.Text ->+  -- | 'jobRoleArn'+  Prelude.Text ->+  -- | 'errorReportLocation'+  ErrorReportLocation ->+  -- | 'jobConfiguration'+  JobConfiguration ->+  CreateBulkImportJob+newCreateBulkImportJob+  pJobName_+  pJobRoleArn_+  pErrorReportLocation_+  pJobConfiguration_ =+    CreateBulkImportJob'+      { jobName = pJobName_,+        jobRoleArn = pJobRoleArn_,+        files = Prelude.mempty,+        errorReportLocation = pErrorReportLocation_,+        jobConfiguration = pJobConfiguration_+      }++-- | The unique name that helps identify the job request.+createBulkImportJob_jobName :: Lens.Lens' CreateBulkImportJob Prelude.Text+createBulkImportJob_jobName = Lens.lens (\CreateBulkImportJob' {jobName} -> jobName) (\s@CreateBulkImportJob' {} a -> s {jobName = a} :: CreateBulkImportJob)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IAM role that allows IoT SiteWise to read Amazon S3 data.+createBulkImportJob_jobRoleArn :: Lens.Lens' CreateBulkImportJob Prelude.Text+createBulkImportJob_jobRoleArn = Lens.lens (\CreateBulkImportJob' {jobRoleArn} -> jobRoleArn) (\s@CreateBulkImportJob' {} a -> s {jobRoleArn = a} :: CreateBulkImportJob)++-- | The files in the specified Amazon S3 bucket that contain your data.+createBulkImportJob_files :: Lens.Lens' CreateBulkImportJob [File]+createBulkImportJob_files = Lens.lens (\CreateBulkImportJob' {files} -> files) (\s@CreateBulkImportJob' {} a -> s {files = a} :: CreateBulkImportJob) Prelude.. Lens.coerced++-- | The Amazon S3 destination where errors associated with the job creation+-- request are saved.+createBulkImportJob_errorReportLocation :: Lens.Lens' CreateBulkImportJob ErrorReportLocation+createBulkImportJob_errorReportLocation = Lens.lens (\CreateBulkImportJob' {errorReportLocation} -> errorReportLocation) (\s@CreateBulkImportJob' {} a -> s {errorReportLocation = a} :: CreateBulkImportJob)++-- | Contains the configuration information of a job, such as the file format+-- used to save data in Amazon S3.+createBulkImportJob_jobConfiguration :: Lens.Lens' CreateBulkImportJob JobConfiguration+createBulkImportJob_jobConfiguration = Lens.lens (\CreateBulkImportJob' {jobConfiguration} -> jobConfiguration) (\s@CreateBulkImportJob' {} a -> s {jobConfiguration = a} :: CreateBulkImportJob)++instance Core.AWSRequest CreateBulkImportJob where+  type+    AWSResponse CreateBulkImportJob =+      CreateBulkImportJobResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateBulkImportJobResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "jobId")+            Prelude.<*> (x Data..:> "jobName")+            Prelude.<*> (x Data..:> "jobStatus")+      )++instance Prelude.Hashable CreateBulkImportJob where+  hashWithSalt _salt CreateBulkImportJob' {..} =+    _salt+      `Prelude.hashWithSalt` jobName+      `Prelude.hashWithSalt` jobRoleArn+      `Prelude.hashWithSalt` files+      `Prelude.hashWithSalt` errorReportLocation+      `Prelude.hashWithSalt` jobConfiguration++instance Prelude.NFData CreateBulkImportJob where+  rnf CreateBulkImportJob' {..} =+    Prelude.rnf jobName+      `Prelude.seq` Prelude.rnf jobRoleArn+      `Prelude.seq` Prelude.rnf files+      `Prelude.seq` Prelude.rnf errorReportLocation+      `Prelude.seq` Prelude.rnf jobConfiguration++instance Data.ToHeaders CreateBulkImportJob where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateBulkImportJob where+  toJSON CreateBulkImportJob' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("jobName" Data..= jobName),+            Prelude.Just ("jobRoleArn" Data..= jobRoleArn),+            Prelude.Just ("files" Data..= files),+            Prelude.Just+              ("errorReportLocation" Data..= errorReportLocation),+            Prelude.Just+              ("jobConfiguration" Data..= jobConfiguration)+          ]+      )++instance Data.ToPath CreateBulkImportJob where+  toPath = Prelude.const "/jobs"++instance Data.ToQuery CreateBulkImportJob where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateBulkImportJobResponse' smart constructor.+data CreateBulkImportJobResponse = CreateBulkImportJobResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the job.+    jobId :: Prelude.Text,+    -- | The unique name that helps identify the job request.+    jobName :: Prelude.Text,+    -- | The status of the bulk import job can be one of following values.+    --+    -- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job+    --     to finish.+    --+    -- -   @CANCELLED@ – The bulk import job has been canceled.+    --+    -- -   @RUNNING@ – IoT SiteWise is processing your request to import your+    --     data from Amazon S3.+    --+    -- -   @COMPLETED@ – IoT SiteWise successfully completed your request to+    --     import data from Amazon S3.+    --+    -- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import+    --     data from Amazon S3. You can use logs saved in the specified error+    --     report location in Amazon S3 to troubleshoot issues.+    --+    -- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to+    --     import data from Amazon S3 with errors. You can use logs saved in+    --     the specified error report location in Amazon S3 to troubleshoot+    --     issues.+    jobStatus :: JobStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateBulkImportJobResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createBulkImportJobResponse_httpStatus' - The response's http status code.+--+-- 'jobId', 'createBulkImportJobResponse_jobId' - The ID of the job.+--+-- 'jobName', 'createBulkImportJobResponse_jobName' - The unique name that helps identify the job request.+--+-- 'jobStatus', 'createBulkImportJobResponse_jobStatus' - The status of the bulk import job can be one of following values.+--+-- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job+--     to finish.+--+-- -   @CANCELLED@ – The bulk import job has been canceled.+--+-- -   @RUNNING@ – IoT SiteWise is processing your request to import your+--     data from Amazon S3.+--+-- -   @COMPLETED@ – IoT SiteWise successfully completed your request to+--     import data from Amazon S3.+--+-- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import+--     data from Amazon S3. You can use logs saved in the specified error+--     report location in Amazon S3 to troubleshoot issues.+--+-- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to+--     import data from Amazon S3 with errors. You can use logs saved in+--     the specified error report location in Amazon S3 to troubleshoot+--     issues.+newCreateBulkImportJobResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'jobId'+  Prelude.Text ->+  -- | 'jobName'+  Prelude.Text ->+  -- | 'jobStatus'+  JobStatus ->+  CreateBulkImportJobResponse+newCreateBulkImportJobResponse+  pHttpStatus_+  pJobId_+  pJobName_+  pJobStatus_ =+    CreateBulkImportJobResponse'+      { httpStatus =+          pHttpStatus_,+        jobId = pJobId_,+        jobName = pJobName_,+        jobStatus = pJobStatus_+      }++-- | The response's http status code.+createBulkImportJobResponse_httpStatus :: Lens.Lens' CreateBulkImportJobResponse Prelude.Int+createBulkImportJobResponse_httpStatus = Lens.lens (\CreateBulkImportJobResponse' {httpStatus} -> httpStatus) (\s@CreateBulkImportJobResponse' {} a -> s {httpStatus = a} :: CreateBulkImportJobResponse)++-- | The ID of the job.+createBulkImportJobResponse_jobId :: Lens.Lens' CreateBulkImportJobResponse Prelude.Text+createBulkImportJobResponse_jobId = Lens.lens (\CreateBulkImportJobResponse' {jobId} -> jobId) (\s@CreateBulkImportJobResponse' {} a -> s {jobId = a} :: CreateBulkImportJobResponse)++-- | The unique name that helps identify the job request.+createBulkImportJobResponse_jobName :: Lens.Lens' CreateBulkImportJobResponse Prelude.Text+createBulkImportJobResponse_jobName = Lens.lens (\CreateBulkImportJobResponse' {jobName} -> jobName) (\s@CreateBulkImportJobResponse' {} a -> s {jobName = a} :: CreateBulkImportJobResponse)++-- | The status of the bulk import job can be one of following values.+--+-- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job+--     to finish.+--+-- -   @CANCELLED@ – The bulk import job has been canceled.+--+-- -   @RUNNING@ – IoT SiteWise is processing your request to import your+--     data from Amazon S3.+--+-- -   @COMPLETED@ – IoT SiteWise successfully completed your request to+--     import data from Amazon S3.+--+-- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import+--     data from Amazon S3. You can use logs saved in the specified error+--     report location in Amazon S3 to troubleshoot issues.+--+-- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to+--     import data from Amazon S3 with errors. You can use logs saved in+--     the specified error report location in Amazon S3 to troubleshoot+--     issues.+createBulkImportJobResponse_jobStatus :: Lens.Lens' CreateBulkImportJobResponse JobStatus+createBulkImportJobResponse_jobStatus = Lens.lens (\CreateBulkImportJobResponse' {jobStatus} -> jobStatus) (\s@CreateBulkImportJobResponse' {} a -> s {jobStatus = a} :: CreateBulkImportJobResponse)++instance Prelude.NFData CreateBulkImportJobResponse where+  rnf CreateBulkImportJobResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf jobName+      `Prelude.seq` Prelude.rnf jobStatus
+ gen/Amazonka/IoTSiteWise/CreateDashboard.hs view
@@ -0,0 +1,297 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.CreateDashboard+-- 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 dashboard in an IoT SiteWise Monitor project.+module Amazonka.IoTSiteWise.CreateDashboard+  ( -- * Creating a Request+    CreateDashboard (..),+    newCreateDashboard,++    -- * Request Lenses+    createDashboard_clientToken,+    createDashboard_dashboardDescription,+    createDashboard_tags,+    createDashboard_projectId,+    createDashboard_dashboardName,+    createDashboard_dashboardDefinition,++    -- * Destructuring the Response+    CreateDashboardResponse (..),+    newCreateDashboardResponse,++    -- * Response Lenses+    createDashboardResponse_httpStatus,+    createDashboardResponse_dashboardId,+    createDashboardResponse_dashboardArn,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateDashboard' smart constructor.+data CreateDashboard = CreateDashboard'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | A description for the dashboard.+    dashboardDescription :: Prelude.Maybe Prelude.Text,+    -- | A list of key-value pairs that contain metadata for the dashboard. For+    -- more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+    -- in the /IoT SiteWise User Guide/.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The ID of the project in which to create the dashboard.+    projectId :: Prelude.Text,+    -- | A friendly name for the dashboard.+    dashboardName :: Prelude.Text,+    -- | The dashboard definition specified in a JSON literal. For detailed+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html Creating dashboards (CLI)>+    -- in the /IoT SiteWise User Guide/.+    dashboardDefinition :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDashboard' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createDashboard_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'dashboardDescription', 'createDashboard_dashboardDescription' - A description for the dashboard.+--+-- 'tags', 'createDashboard_tags' - A list of key-value pairs that contain metadata for the dashboard. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+--+-- 'projectId', 'createDashboard_projectId' - The ID of the project in which to create the dashboard.+--+-- 'dashboardName', 'createDashboard_dashboardName' - A friendly name for the dashboard.+--+-- 'dashboardDefinition', 'createDashboard_dashboardDefinition' - The dashboard definition specified in a JSON literal. For detailed+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html Creating dashboards (CLI)>+-- in the /IoT SiteWise User Guide/.+newCreateDashboard ::+  -- | 'projectId'+  Prelude.Text ->+  -- | 'dashboardName'+  Prelude.Text ->+  -- | 'dashboardDefinition'+  Prelude.Text ->+  CreateDashboard+newCreateDashboard+  pProjectId_+  pDashboardName_+  pDashboardDefinition_ =+    CreateDashboard'+      { clientToken = Prelude.Nothing,+        dashboardDescription = Prelude.Nothing,+        tags = Prelude.Nothing,+        projectId = pProjectId_,+        dashboardName = pDashboardName_,+        dashboardDefinition = pDashboardDefinition_+      }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+createDashboard_clientToken :: Lens.Lens' CreateDashboard (Prelude.Maybe Prelude.Text)+createDashboard_clientToken = Lens.lens (\CreateDashboard' {clientToken} -> clientToken) (\s@CreateDashboard' {} a -> s {clientToken = a} :: CreateDashboard)++-- | A description for the dashboard.+createDashboard_dashboardDescription :: Lens.Lens' CreateDashboard (Prelude.Maybe Prelude.Text)+createDashboard_dashboardDescription = Lens.lens (\CreateDashboard' {dashboardDescription} -> dashboardDescription) (\s@CreateDashboard' {} a -> s {dashboardDescription = a} :: CreateDashboard)++-- | A list of key-value pairs that contain metadata for the dashboard. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+createDashboard_tags :: Lens.Lens' CreateDashboard (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createDashboard_tags = Lens.lens (\CreateDashboard' {tags} -> tags) (\s@CreateDashboard' {} a -> s {tags = a} :: CreateDashboard) Prelude.. Lens.mapping Lens.coerced++-- | The ID of the project in which to create the dashboard.+createDashboard_projectId :: Lens.Lens' CreateDashboard Prelude.Text+createDashboard_projectId = Lens.lens (\CreateDashboard' {projectId} -> projectId) (\s@CreateDashboard' {} a -> s {projectId = a} :: CreateDashboard)++-- | A friendly name for the dashboard.+createDashboard_dashboardName :: Lens.Lens' CreateDashboard Prelude.Text+createDashboard_dashboardName = Lens.lens (\CreateDashboard' {dashboardName} -> dashboardName) (\s@CreateDashboard' {} a -> s {dashboardName = a} :: CreateDashboard)++-- | The dashboard definition specified in a JSON literal. For detailed+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html Creating dashboards (CLI)>+-- in the /IoT SiteWise User Guide/.+createDashboard_dashboardDefinition :: Lens.Lens' CreateDashboard Prelude.Text+createDashboard_dashboardDefinition = Lens.lens (\CreateDashboard' {dashboardDefinition} -> dashboardDefinition) (\s@CreateDashboard' {} a -> s {dashboardDefinition = a} :: CreateDashboard)++instance Core.AWSRequest CreateDashboard where+  type+    AWSResponse CreateDashboard =+      CreateDashboardResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateDashboardResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "dashboardId")+            Prelude.<*> (x Data..:> "dashboardArn")+      )++instance Prelude.Hashable CreateDashboard where+  hashWithSalt _salt CreateDashboard' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` dashboardDescription+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` projectId+      `Prelude.hashWithSalt` dashboardName+      `Prelude.hashWithSalt` dashboardDefinition++instance Prelude.NFData CreateDashboard where+  rnf CreateDashboard' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf dashboardDescription+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf projectId+      `Prelude.seq` Prelude.rnf dashboardName+      `Prelude.seq` Prelude.rnf dashboardDefinition++instance Data.ToHeaders CreateDashboard where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateDashboard where+  toJSON CreateDashboard' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("dashboardDescription" Data..=)+              Prelude.<$> dashboardDescription,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("projectId" Data..= projectId),+            Prelude.Just ("dashboardName" Data..= dashboardName),+            Prelude.Just+              ("dashboardDefinition" Data..= dashboardDefinition)+          ]+      )++instance Data.ToPath CreateDashboard where+  toPath = Prelude.const "/dashboards"++instance Data.ToQuery CreateDashboard where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateDashboardResponse' smart constructor.+data CreateDashboardResponse = CreateDashboardResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the dashboard.+    dashboardId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the dashboard, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:dashboard\/${DashboardId}@+    dashboardArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDashboardResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createDashboardResponse_httpStatus' - The response's http status code.+--+-- 'dashboardId', 'createDashboardResponse_dashboardId' - The ID of the dashboard.+--+-- 'dashboardArn', 'createDashboardResponse_dashboardArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the dashboard, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:dashboard\/${DashboardId}@+newCreateDashboardResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'dashboardId'+  Prelude.Text ->+  -- | 'dashboardArn'+  Prelude.Text ->+  CreateDashboardResponse+newCreateDashboardResponse+  pHttpStatus_+  pDashboardId_+  pDashboardArn_ =+    CreateDashboardResponse'+      { httpStatus = pHttpStatus_,+        dashboardId = pDashboardId_,+        dashboardArn = pDashboardArn_+      }++-- | The response's http status code.+createDashboardResponse_httpStatus :: Lens.Lens' CreateDashboardResponse Prelude.Int+createDashboardResponse_httpStatus = Lens.lens (\CreateDashboardResponse' {httpStatus} -> httpStatus) (\s@CreateDashboardResponse' {} a -> s {httpStatus = a} :: CreateDashboardResponse)++-- | The ID of the dashboard.+createDashboardResponse_dashboardId :: Lens.Lens' CreateDashboardResponse Prelude.Text+createDashboardResponse_dashboardId = Lens.lens (\CreateDashboardResponse' {dashboardId} -> dashboardId) (\s@CreateDashboardResponse' {} a -> s {dashboardId = a} :: CreateDashboardResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the dashboard, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:dashboard\/${DashboardId}@+createDashboardResponse_dashboardArn :: Lens.Lens' CreateDashboardResponse Prelude.Text+createDashboardResponse_dashboardArn = Lens.lens (\CreateDashboardResponse' {dashboardArn} -> dashboardArn) (\s@CreateDashboardResponse' {} a -> s {dashboardArn = a} :: CreateDashboardResponse)++instance Prelude.NFData CreateDashboardResponse where+  rnf CreateDashboardResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf dashboardId+      `Prelude.seq` Prelude.rnf dashboardArn
+ gen/Amazonka/IoTSiteWise/CreateGateway.hs view
@@ -0,0 +1,244 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.CreateGateway+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Creates a gateway, which is a virtual or edge device that delivers+-- industrial data streams from local servers to IoT SiteWise. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gateway-connector.html Ingesting data using a gateway>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.CreateGateway+  ( -- * Creating a Request+    CreateGateway (..),+    newCreateGateway,++    -- * Request Lenses+    createGateway_tags,+    createGateway_gatewayName,+    createGateway_gatewayPlatform,++    -- * Destructuring the Response+    CreateGatewayResponse (..),+    newCreateGatewayResponse,++    -- * Response Lenses+    createGatewayResponse_httpStatus,+    createGatewayResponse_gatewayId,+    createGatewayResponse_gatewayArn,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateGateway' smart constructor.+data CreateGateway = CreateGateway'+  { -- | A list of key-value pairs that contain metadata for the gateway. For+    -- more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+    -- in the /IoT SiteWise User Guide/.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A unique, friendly name for the gateway.+    gatewayName :: Prelude.Text,+    -- | The gateway\'s platform. You can only specify one platform in a gateway.+    gatewayPlatform :: GatewayPlatform+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateGateway' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createGateway_tags' - A list of key-value pairs that contain metadata for the gateway. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+--+-- 'gatewayName', 'createGateway_gatewayName' - A unique, friendly name for the gateway.+--+-- 'gatewayPlatform', 'createGateway_gatewayPlatform' - The gateway\'s platform. You can only specify one platform in a gateway.+newCreateGateway ::+  -- | 'gatewayName'+  Prelude.Text ->+  -- | 'gatewayPlatform'+  GatewayPlatform ->+  CreateGateway+newCreateGateway pGatewayName_ pGatewayPlatform_ =+  CreateGateway'+    { tags = Prelude.Nothing,+      gatewayName = pGatewayName_,+      gatewayPlatform = pGatewayPlatform_+    }++-- | A list of key-value pairs that contain metadata for the gateway. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+createGateway_tags :: Lens.Lens' CreateGateway (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createGateway_tags = Lens.lens (\CreateGateway' {tags} -> tags) (\s@CreateGateway' {} a -> s {tags = a} :: CreateGateway) Prelude.. Lens.mapping Lens.coerced++-- | A unique, friendly name for the gateway.+createGateway_gatewayName :: Lens.Lens' CreateGateway Prelude.Text+createGateway_gatewayName = Lens.lens (\CreateGateway' {gatewayName} -> gatewayName) (\s@CreateGateway' {} a -> s {gatewayName = a} :: CreateGateway)++-- | The gateway\'s platform. You can only specify one platform in a gateway.+createGateway_gatewayPlatform :: Lens.Lens' CreateGateway GatewayPlatform+createGateway_gatewayPlatform = Lens.lens (\CreateGateway' {gatewayPlatform} -> gatewayPlatform) (\s@CreateGateway' {} a -> s {gatewayPlatform = a} :: CreateGateway)++instance Core.AWSRequest CreateGateway where+  type+    AWSResponse CreateGateway =+      CreateGatewayResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateGatewayResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "gatewayId")+            Prelude.<*> (x Data..:> "gatewayArn")+      )++instance Prelude.Hashable CreateGateway where+  hashWithSalt _salt CreateGateway' {..} =+    _salt+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` gatewayName+      `Prelude.hashWithSalt` gatewayPlatform++instance Prelude.NFData CreateGateway where+  rnf CreateGateway' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf gatewayName+      `Prelude.seq` Prelude.rnf gatewayPlatform++instance Data.ToHeaders CreateGateway where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateGateway where+  toJSON CreateGateway' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("gatewayName" Data..= gatewayName),+            Prelude.Just+              ("gatewayPlatform" Data..= gatewayPlatform)+          ]+      )++instance Data.ToPath CreateGateway where+  toPath = Prelude.const "/20200301/gateways"++instance Data.ToQuery CreateGateway where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateGatewayResponse' smart constructor.+data CreateGatewayResponse = CreateGatewayResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the gateway device. You can use this ID when you call other+    -- IoT SiteWise APIs.+    gatewayId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the gateway, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:gateway\/${GatewayId}@+    gatewayArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateGatewayResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createGatewayResponse_httpStatus' - The response's http status code.+--+-- 'gatewayId', 'createGatewayResponse_gatewayId' - The ID of the gateway device. You can use this ID when you call other+-- IoT SiteWise APIs.+--+-- 'gatewayArn', 'createGatewayResponse_gatewayArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the gateway, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:gateway\/${GatewayId}@+newCreateGatewayResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'gatewayId'+  Prelude.Text ->+  -- | 'gatewayArn'+  Prelude.Text ->+  CreateGatewayResponse+newCreateGatewayResponse+  pHttpStatus_+  pGatewayId_+  pGatewayArn_ =+    CreateGatewayResponse'+      { httpStatus = pHttpStatus_,+        gatewayId = pGatewayId_,+        gatewayArn = pGatewayArn_+      }++-- | The response's http status code.+createGatewayResponse_httpStatus :: Lens.Lens' CreateGatewayResponse Prelude.Int+createGatewayResponse_httpStatus = Lens.lens (\CreateGatewayResponse' {httpStatus} -> httpStatus) (\s@CreateGatewayResponse' {} a -> s {httpStatus = a} :: CreateGatewayResponse)++-- | The ID of the gateway device. You can use this ID when you call other+-- IoT SiteWise APIs.+createGatewayResponse_gatewayId :: Lens.Lens' CreateGatewayResponse Prelude.Text+createGatewayResponse_gatewayId = Lens.lens (\CreateGatewayResponse' {gatewayId} -> gatewayId) (\s@CreateGatewayResponse' {} a -> s {gatewayId = a} :: CreateGatewayResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the gateway, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:gateway\/${GatewayId}@+createGatewayResponse_gatewayArn :: Lens.Lens' CreateGatewayResponse Prelude.Text+createGatewayResponse_gatewayArn = Lens.lens (\CreateGatewayResponse' {gatewayArn} -> gatewayArn) (\s@CreateGatewayResponse' {} a -> s {gatewayArn = a} :: CreateGatewayResponse)++instance Prelude.NFData CreateGatewayResponse where+  rnf CreateGatewayResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf gatewayId+      `Prelude.seq` Prelude.rnf gatewayArn
+ gen/Amazonka/IoTSiteWise/CreatePortal.hs view
@@ -0,0 +1,504 @@+{-# 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.IoTSiteWise.CreatePortal+-- 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 portal, which can contain projects and dashboards. IoT+-- SiteWise Monitor uses IAM Identity Center or IAM to authenticate portal+-- users and manage user permissions.+--+-- Before you can sign in to a new portal, you must add at least one+-- identity to that portal. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/administer-portals.html#portal-change-admins Adding or removing portal administrators>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.CreatePortal+  ( -- * Creating a Request+    CreatePortal (..),+    newCreatePortal,++    -- * Request Lenses+    createPortal_alarms,+    createPortal_clientToken,+    createPortal_notificationSenderEmail,+    createPortal_portalAuthMode,+    createPortal_portalDescription,+    createPortal_portalLogoImageFile,+    createPortal_tags,+    createPortal_portalName,+    createPortal_portalContactEmail,+    createPortal_roleArn,++    -- * Destructuring the Response+    CreatePortalResponse (..),+    newCreatePortalResponse,++    -- * Response Lenses+    createPortalResponse_httpStatus,+    createPortalResponse_portalId,+    createPortalResponse_portalArn,+    createPortalResponse_portalStartUrl,+    createPortalResponse_portalStatus,+    createPortalResponse_ssoApplicationId,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreatePortal' smart constructor.+data CreatePortal = CreatePortal'+  { -- | Contains the configuration information of an alarm created in an IoT+    -- SiteWise Monitor portal. You can use the alarm to monitor an asset+    -- property and get notified when the asset property value is outside a+    -- specified range. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html Monitoring with alarms>+    -- in the /IoT SiteWise Application Guide/.+    alarms :: Prelude.Maybe Alarms,+    -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The email address that sends alarm notifications.+    --+    -- If you use the+    -- <https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html IoT Events managed Lambda function>+    -- to manage your emails, you must+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html verify the sender email address in Amazon SES>.+    notificationSenderEmail :: Prelude.Maybe Prelude.Text,+    -- | The service to use to authenticate users to the portal. Choose from the+    -- following options:+    --+    -- -   @SSO@ – The portal uses IAM Identity Center (successor to Single+    --     Sign-On) to authenticate users and manage user permissions. Before+    --     you can create a portal that uses IAM Identity Center, you must+    --     enable IAM Identity Center. For more information, see+    --     <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-get-started.html#mon-gs-sso Enabling IAM Identity Center>+    --     in the /IoT SiteWise User Guide/. This option is only available in+    --     Amazon Web Services Regions other than the China Regions.+    --+    -- -   @IAM@ – The portal uses Identity and Access Management to+    --     authenticate users and manage user permissions.+    --+    -- You can\'t change this value after you create a portal.+    --+    -- Default: @SSO@+    portalAuthMode :: Prelude.Maybe AuthMode,+    -- | A description for the portal.+    portalDescription :: Prelude.Maybe Prelude.Text,+    -- | A logo image to display in the portal. Upload a square, high-resolution+    -- image. The image is displayed on a dark background.+    portalLogoImageFile :: Prelude.Maybe ImageFile,+    -- | A list of key-value pairs that contain metadata for the portal. For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+    -- in the /IoT SiteWise User Guide/.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A friendly name for the portal.+    portalName :: Prelude.Text,+    -- | The Amazon Web Services administrator\'s contact email address.+    portalContactEmail :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of a service role that allows the portal\'s users to access your IoT+    -- SiteWise resources on your behalf. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+    -- in the /IoT SiteWise User Guide/.+    roleArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreatePortal' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'alarms', 'createPortal_alarms' - Contains the configuration information of an alarm created in an IoT+-- SiteWise Monitor portal. You can use the alarm to monitor an asset+-- property and get notified when the asset property value is outside a+-- specified range. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html Monitoring with alarms>+-- in the /IoT SiteWise Application Guide/.+--+-- 'clientToken', 'createPortal_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'notificationSenderEmail', 'createPortal_notificationSenderEmail' - The email address that sends alarm notifications.+--+-- If you use the+-- <https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html IoT Events managed Lambda function>+-- to manage your emails, you must+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html verify the sender email address in Amazon SES>.+--+-- 'portalAuthMode', 'createPortal_portalAuthMode' - The service to use to authenticate users to the portal. Choose from the+-- following options:+--+-- -   @SSO@ – The portal uses IAM Identity Center (successor to Single+--     Sign-On) to authenticate users and manage user permissions. Before+--     you can create a portal that uses IAM Identity Center, you must+--     enable IAM Identity Center. For more information, see+--     <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-get-started.html#mon-gs-sso Enabling IAM Identity Center>+--     in the /IoT SiteWise User Guide/. This option is only available in+--     Amazon Web Services Regions other than the China Regions.+--+-- -   @IAM@ – The portal uses Identity and Access Management to+--     authenticate users and manage user permissions.+--+-- You can\'t change this value after you create a portal.+--+-- Default: @SSO@+--+-- 'portalDescription', 'createPortal_portalDescription' - A description for the portal.+--+-- 'portalLogoImageFile', 'createPortal_portalLogoImageFile' - A logo image to display in the portal. Upload a square, high-resolution+-- image. The image is displayed on a dark background.+--+-- 'tags', 'createPortal_tags' - A list of key-value pairs that contain metadata for the portal. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+--+-- 'portalName', 'createPortal_portalName' - A friendly name for the portal.+--+-- 'portalContactEmail', 'createPortal_portalContactEmail' - The Amazon Web Services administrator\'s contact email address.+--+-- 'roleArn', 'createPortal_roleArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of a service role that allows the portal\'s users to access your IoT+-- SiteWise resources on your behalf. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+-- in the /IoT SiteWise User Guide/.+newCreatePortal ::+  -- | 'portalName'+  Prelude.Text ->+  -- | 'portalContactEmail'+  Prelude.Text ->+  -- | 'roleArn'+  Prelude.Text ->+  CreatePortal+newCreatePortal+  pPortalName_+  pPortalContactEmail_+  pRoleArn_ =+    CreatePortal'+      { alarms = Prelude.Nothing,+        clientToken = Prelude.Nothing,+        notificationSenderEmail = Prelude.Nothing,+        portalAuthMode = Prelude.Nothing,+        portalDescription = Prelude.Nothing,+        portalLogoImageFile = Prelude.Nothing,+        tags = Prelude.Nothing,+        portalName = pPortalName_,+        portalContactEmail = pPortalContactEmail_,+        roleArn = pRoleArn_+      }++-- | Contains the configuration information of an alarm created in an IoT+-- SiteWise Monitor portal. You can use the alarm to monitor an asset+-- property and get notified when the asset property value is outside a+-- specified range. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html Monitoring with alarms>+-- in the /IoT SiteWise Application Guide/.+createPortal_alarms :: Lens.Lens' CreatePortal (Prelude.Maybe Alarms)+createPortal_alarms = Lens.lens (\CreatePortal' {alarms} -> alarms) (\s@CreatePortal' {} a -> s {alarms = a} :: CreatePortal)++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+createPortal_clientToken :: Lens.Lens' CreatePortal (Prelude.Maybe Prelude.Text)+createPortal_clientToken = Lens.lens (\CreatePortal' {clientToken} -> clientToken) (\s@CreatePortal' {} a -> s {clientToken = a} :: CreatePortal)++-- | The email address that sends alarm notifications.+--+-- If you use the+-- <https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html IoT Events managed Lambda function>+-- to manage your emails, you must+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html verify the sender email address in Amazon SES>.+createPortal_notificationSenderEmail :: Lens.Lens' CreatePortal (Prelude.Maybe Prelude.Text)+createPortal_notificationSenderEmail = Lens.lens (\CreatePortal' {notificationSenderEmail} -> notificationSenderEmail) (\s@CreatePortal' {} a -> s {notificationSenderEmail = a} :: CreatePortal)++-- | The service to use to authenticate users to the portal. Choose from the+-- following options:+--+-- -   @SSO@ – The portal uses IAM Identity Center (successor to Single+--     Sign-On) to authenticate users and manage user permissions. Before+--     you can create a portal that uses IAM Identity Center, you must+--     enable IAM Identity Center. For more information, see+--     <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-get-started.html#mon-gs-sso Enabling IAM Identity Center>+--     in the /IoT SiteWise User Guide/. This option is only available in+--     Amazon Web Services Regions other than the China Regions.+--+-- -   @IAM@ – The portal uses Identity and Access Management to+--     authenticate users and manage user permissions.+--+-- You can\'t change this value after you create a portal.+--+-- Default: @SSO@+createPortal_portalAuthMode :: Lens.Lens' CreatePortal (Prelude.Maybe AuthMode)+createPortal_portalAuthMode = Lens.lens (\CreatePortal' {portalAuthMode} -> portalAuthMode) (\s@CreatePortal' {} a -> s {portalAuthMode = a} :: CreatePortal)++-- | A description for the portal.+createPortal_portalDescription :: Lens.Lens' CreatePortal (Prelude.Maybe Prelude.Text)+createPortal_portalDescription = Lens.lens (\CreatePortal' {portalDescription} -> portalDescription) (\s@CreatePortal' {} a -> s {portalDescription = a} :: CreatePortal)++-- | A logo image to display in the portal. Upload a square, high-resolution+-- image. The image is displayed on a dark background.+createPortal_portalLogoImageFile :: Lens.Lens' CreatePortal (Prelude.Maybe ImageFile)+createPortal_portalLogoImageFile = Lens.lens (\CreatePortal' {portalLogoImageFile} -> portalLogoImageFile) (\s@CreatePortal' {} a -> s {portalLogoImageFile = a} :: CreatePortal)++-- | A list of key-value pairs that contain metadata for the portal. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+createPortal_tags :: Lens.Lens' CreatePortal (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createPortal_tags = Lens.lens (\CreatePortal' {tags} -> tags) (\s@CreatePortal' {} a -> s {tags = a} :: CreatePortal) Prelude.. Lens.mapping Lens.coerced++-- | A friendly name for the portal.+createPortal_portalName :: Lens.Lens' CreatePortal Prelude.Text+createPortal_portalName = Lens.lens (\CreatePortal' {portalName} -> portalName) (\s@CreatePortal' {} a -> s {portalName = a} :: CreatePortal)++-- | The Amazon Web Services administrator\'s contact email address.+createPortal_portalContactEmail :: Lens.Lens' CreatePortal Prelude.Text+createPortal_portalContactEmail = Lens.lens (\CreatePortal' {portalContactEmail} -> portalContactEmail) (\s@CreatePortal' {} a -> s {portalContactEmail = a} :: CreatePortal)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of a service role that allows the portal\'s users to access your IoT+-- SiteWise resources on your behalf. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+-- in the /IoT SiteWise User Guide/.+createPortal_roleArn :: Lens.Lens' CreatePortal Prelude.Text+createPortal_roleArn = Lens.lens (\CreatePortal' {roleArn} -> roleArn) (\s@CreatePortal' {} a -> s {roleArn = a} :: CreatePortal)++instance Core.AWSRequest CreatePortal where+  type AWSResponse CreatePortal = CreatePortalResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreatePortalResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "portalId")+            Prelude.<*> (x Data..:> "portalArn")+            Prelude.<*> (x Data..:> "portalStartUrl")+            Prelude.<*> (x Data..:> "portalStatus")+            Prelude.<*> (x Data..:> "ssoApplicationId")+      )++instance Prelude.Hashable CreatePortal where+  hashWithSalt _salt CreatePortal' {..} =+    _salt+      `Prelude.hashWithSalt` alarms+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` notificationSenderEmail+      `Prelude.hashWithSalt` portalAuthMode+      `Prelude.hashWithSalt` portalDescription+      `Prelude.hashWithSalt` portalLogoImageFile+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` portalName+      `Prelude.hashWithSalt` portalContactEmail+      `Prelude.hashWithSalt` roleArn++instance Prelude.NFData CreatePortal where+  rnf CreatePortal' {..} =+    Prelude.rnf alarms+      `Prelude.seq` Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf notificationSenderEmail+      `Prelude.seq` Prelude.rnf portalAuthMode+      `Prelude.seq` Prelude.rnf portalDescription+      `Prelude.seq` Prelude.rnf portalLogoImageFile+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf portalName+      `Prelude.seq` Prelude.rnf portalContactEmail+      `Prelude.seq` Prelude.rnf roleArn++instance Data.ToHeaders CreatePortal where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreatePortal where+  toJSON CreatePortal' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("alarms" Data..=) Prelude.<$> alarms,+            ("clientToken" Data..=) Prelude.<$> clientToken,+            ("notificationSenderEmail" Data..=)+              Prelude.<$> notificationSenderEmail,+            ("portalAuthMode" Data..=)+              Prelude.<$> portalAuthMode,+            ("portalDescription" Data..=)+              Prelude.<$> portalDescription,+            ("portalLogoImageFile" Data..=)+              Prelude.<$> portalLogoImageFile,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("portalName" Data..= portalName),+            Prelude.Just+              ("portalContactEmail" Data..= portalContactEmail),+            Prelude.Just ("roleArn" Data..= roleArn)+          ]+      )++instance Data.ToPath CreatePortal where+  toPath = Prelude.const "/portals"++instance Data.ToQuery CreatePortal where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreatePortalResponse' smart constructor.+data CreatePortalResponse = CreatePortalResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the created portal.+    portalId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the portal, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:portal\/${PortalId}@+    portalArn :: Prelude.Text,+    -- | The URL for the IoT SiteWise Monitor portal. You can use this URL to+    -- access portals that use IAM Identity Center for authentication. For+    -- portals that use IAM for authentication, you must use the IoT SiteWise+    -- console to get a URL that you can use to access the portal.+    portalStartUrl :: Prelude.Text,+    -- | The status of the portal, which contains a state (@CREATING@ after+    -- successfully calling this operation) and any error message.+    portalStatus :: PortalStatus,+    -- | The associated IAM Identity Center application ID, if the portal uses+    -- IAM Identity Center.+    ssoApplicationId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreatePortalResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createPortalResponse_httpStatus' - The response's http status code.+--+-- 'portalId', 'createPortalResponse_portalId' - The ID of the created portal.+--+-- 'portalArn', 'createPortalResponse_portalArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the portal, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:portal\/${PortalId}@+--+-- 'portalStartUrl', 'createPortalResponse_portalStartUrl' - The URL for the IoT SiteWise Monitor portal. You can use this URL to+-- access portals that use IAM Identity Center for authentication. For+-- portals that use IAM for authentication, you must use the IoT SiteWise+-- console to get a URL that you can use to access the portal.+--+-- 'portalStatus', 'createPortalResponse_portalStatus' - The status of the portal, which contains a state (@CREATING@ after+-- successfully calling this operation) and any error message.+--+-- 'ssoApplicationId', 'createPortalResponse_ssoApplicationId' - The associated IAM Identity Center application ID, if the portal uses+-- IAM Identity Center.+newCreatePortalResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'portalId'+  Prelude.Text ->+  -- | 'portalArn'+  Prelude.Text ->+  -- | 'portalStartUrl'+  Prelude.Text ->+  -- | 'portalStatus'+  PortalStatus ->+  -- | 'ssoApplicationId'+  Prelude.Text ->+  CreatePortalResponse+newCreatePortalResponse+  pHttpStatus_+  pPortalId_+  pPortalArn_+  pPortalStartUrl_+  pPortalStatus_+  pSsoApplicationId_ =+    CreatePortalResponse'+      { httpStatus = pHttpStatus_,+        portalId = pPortalId_,+        portalArn = pPortalArn_,+        portalStartUrl = pPortalStartUrl_,+        portalStatus = pPortalStatus_,+        ssoApplicationId = pSsoApplicationId_+      }++-- | The response's http status code.+createPortalResponse_httpStatus :: Lens.Lens' CreatePortalResponse Prelude.Int+createPortalResponse_httpStatus = Lens.lens (\CreatePortalResponse' {httpStatus} -> httpStatus) (\s@CreatePortalResponse' {} a -> s {httpStatus = a} :: CreatePortalResponse)++-- | The ID of the created portal.+createPortalResponse_portalId :: Lens.Lens' CreatePortalResponse Prelude.Text+createPortalResponse_portalId = Lens.lens (\CreatePortalResponse' {portalId} -> portalId) (\s@CreatePortalResponse' {} a -> s {portalId = a} :: CreatePortalResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the portal, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:portal\/${PortalId}@+createPortalResponse_portalArn :: Lens.Lens' CreatePortalResponse Prelude.Text+createPortalResponse_portalArn = Lens.lens (\CreatePortalResponse' {portalArn} -> portalArn) (\s@CreatePortalResponse' {} a -> s {portalArn = a} :: CreatePortalResponse)++-- | The URL for the IoT SiteWise Monitor portal. You can use this URL to+-- access portals that use IAM Identity Center for authentication. For+-- portals that use IAM for authentication, you must use the IoT SiteWise+-- console to get a URL that you can use to access the portal.+createPortalResponse_portalStartUrl :: Lens.Lens' CreatePortalResponse Prelude.Text+createPortalResponse_portalStartUrl = Lens.lens (\CreatePortalResponse' {portalStartUrl} -> portalStartUrl) (\s@CreatePortalResponse' {} a -> s {portalStartUrl = a} :: CreatePortalResponse)++-- | The status of the portal, which contains a state (@CREATING@ after+-- successfully calling this operation) and any error message.+createPortalResponse_portalStatus :: Lens.Lens' CreatePortalResponse PortalStatus+createPortalResponse_portalStatus = Lens.lens (\CreatePortalResponse' {portalStatus} -> portalStatus) (\s@CreatePortalResponse' {} a -> s {portalStatus = a} :: CreatePortalResponse)++-- | The associated IAM Identity Center application ID, if the portal uses+-- IAM Identity Center.+createPortalResponse_ssoApplicationId :: Lens.Lens' CreatePortalResponse Prelude.Text+createPortalResponse_ssoApplicationId = Lens.lens (\CreatePortalResponse' {ssoApplicationId} -> ssoApplicationId) (\s@CreatePortalResponse' {} a -> s {ssoApplicationId = a} :: CreatePortalResponse)++instance Prelude.NFData CreatePortalResponse where+  rnf CreatePortalResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf portalId+      `Prelude.seq` Prelude.rnf portalArn+      `Prelude.seq` Prelude.rnf portalStartUrl+      `Prelude.seq` Prelude.rnf portalStatus+      `Prelude.seq` Prelude.rnf ssoApplicationId
+ gen/Amazonka/IoTSiteWise/CreateProject.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.IoTSiteWise.CreateProject+-- 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 project in the specified portal.+--+-- Make sure that the project name and description don\'t contain+-- confidential information.+module Amazonka.IoTSiteWise.CreateProject+  ( -- * Creating a Request+    CreateProject (..),+    newCreateProject,++    -- * Request Lenses+    createProject_clientToken,+    createProject_projectDescription,+    createProject_tags,+    createProject_portalId,+    createProject_projectName,++    -- * Destructuring the Response+    CreateProjectResponse (..),+    newCreateProjectResponse,++    -- * Response Lenses+    createProjectResponse_httpStatus,+    createProjectResponse_projectId,+    createProjectResponse_projectArn,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateProject' smart constructor.+data CreateProject = CreateProject'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | A description for the project.+    projectDescription :: Prelude.Maybe Prelude.Text,+    -- | A list of key-value pairs that contain metadata for the project. For+    -- more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+    -- in the /IoT SiteWise User Guide/.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The ID of the portal in which to create the project.+    portalId :: Prelude.Text,+    -- | A friendly name for the project.+    projectName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateProject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'createProject_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'projectDescription', 'createProject_projectDescription' - A description for the project.+--+-- 'tags', 'createProject_tags' - A list of key-value pairs that contain metadata for the project. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+--+-- 'portalId', 'createProject_portalId' - The ID of the portal in which to create the project.+--+-- 'projectName', 'createProject_projectName' - A friendly name for the project.+newCreateProject ::+  -- | 'portalId'+  Prelude.Text ->+  -- | 'projectName'+  Prelude.Text ->+  CreateProject+newCreateProject pPortalId_ pProjectName_ =+  CreateProject'+    { clientToken = Prelude.Nothing,+      projectDescription = Prelude.Nothing,+      tags = Prelude.Nothing,+      portalId = pPortalId_,+      projectName = pProjectName_+    }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+createProject_clientToken :: Lens.Lens' CreateProject (Prelude.Maybe Prelude.Text)+createProject_clientToken = Lens.lens (\CreateProject' {clientToken} -> clientToken) (\s@CreateProject' {} a -> s {clientToken = a} :: CreateProject)++-- | A description for the project.+createProject_projectDescription :: Lens.Lens' CreateProject (Prelude.Maybe Prelude.Text)+createProject_projectDescription = Lens.lens (\CreateProject' {projectDescription} -> projectDescription) (\s@CreateProject' {} a -> s {projectDescription = a} :: CreateProject)++-- | A list of key-value pairs that contain metadata for the project. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+createProject_tags :: Lens.Lens' CreateProject (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createProject_tags = Lens.lens (\CreateProject' {tags} -> tags) (\s@CreateProject' {} a -> s {tags = a} :: CreateProject) Prelude.. Lens.mapping Lens.coerced++-- | The ID of the portal in which to create the project.+createProject_portalId :: Lens.Lens' CreateProject Prelude.Text+createProject_portalId = Lens.lens (\CreateProject' {portalId} -> portalId) (\s@CreateProject' {} a -> s {portalId = a} :: CreateProject)++-- | A friendly name for the project.+createProject_projectName :: Lens.Lens' CreateProject Prelude.Text+createProject_projectName = Lens.lens (\CreateProject' {projectName} -> projectName) (\s@CreateProject' {} a -> s {projectName = a} :: CreateProject)++instance Core.AWSRequest CreateProject where+  type+    AWSResponse CreateProject =+      CreateProjectResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateProjectResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "projectId")+            Prelude.<*> (x Data..:> "projectArn")+      )++instance Prelude.Hashable CreateProject where+  hashWithSalt _salt CreateProject' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` projectDescription+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` portalId+      `Prelude.hashWithSalt` projectName++instance Prelude.NFData CreateProject where+  rnf CreateProject' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf projectDescription+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf portalId+      `Prelude.seq` Prelude.rnf projectName++instance Data.ToHeaders CreateProject where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateProject where+  toJSON CreateProject' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("projectDescription" Data..=)+              Prelude.<$> projectDescription,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("portalId" Data..= portalId),+            Prelude.Just ("projectName" Data..= projectName)+          ]+      )++instance Data.ToPath CreateProject where+  toPath = Prelude.const "/projects"++instance Data.ToQuery CreateProject where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateProjectResponse' smart constructor.+data CreateProjectResponse = CreateProjectResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the project.+    projectId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the project, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:project\/${ProjectId}@+    projectArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateProjectResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createProjectResponse_httpStatus' - The response's http status code.+--+-- 'projectId', 'createProjectResponse_projectId' - The ID of the project.+--+-- 'projectArn', 'createProjectResponse_projectArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the project, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:project\/${ProjectId}@+newCreateProjectResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'projectId'+  Prelude.Text ->+  -- | 'projectArn'+  Prelude.Text ->+  CreateProjectResponse+newCreateProjectResponse+  pHttpStatus_+  pProjectId_+  pProjectArn_ =+    CreateProjectResponse'+      { httpStatus = pHttpStatus_,+        projectId = pProjectId_,+        projectArn = pProjectArn_+      }++-- | The response's http status code.+createProjectResponse_httpStatus :: Lens.Lens' CreateProjectResponse Prelude.Int+createProjectResponse_httpStatus = Lens.lens (\CreateProjectResponse' {httpStatus} -> httpStatus) (\s@CreateProjectResponse' {} a -> s {httpStatus = a} :: CreateProjectResponse)++-- | The ID of the project.+createProjectResponse_projectId :: Lens.Lens' CreateProjectResponse Prelude.Text+createProjectResponse_projectId = Lens.lens (\CreateProjectResponse' {projectId} -> projectId) (\s@CreateProjectResponse' {} a -> s {projectId = a} :: CreateProjectResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the project, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:project\/${ProjectId}@+createProjectResponse_projectArn :: Lens.Lens' CreateProjectResponse Prelude.Text+createProjectResponse_projectArn = Lens.lens (\CreateProjectResponse' {projectArn} -> projectArn) (\s@CreateProjectResponse' {} a -> s {projectArn = a} :: CreateProjectResponse)++instance Prelude.NFData CreateProjectResponse where+  rnf CreateProjectResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf projectId+      `Prelude.seq` Prelude.rnf projectArn
+ gen/Amazonka/IoTSiteWise/DeleteAccessPolicy.hs view
@@ -0,0 +1,172 @@+{-# 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.IoTSiteWise.DeleteAccessPolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes an access policy that grants the specified identity access to+-- the specified IoT SiteWise Monitor resource. You can use this operation+-- to revoke access to an IoT SiteWise Monitor resource.+module Amazonka.IoTSiteWise.DeleteAccessPolicy+  ( -- * Creating a Request+    DeleteAccessPolicy (..),+    newDeleteAccessPolicy,++    -- * Request Lenses+    deleteAccessPolicy_clientToken,+    deleteAccessPolicy_accessPolicyId,++    -- * Destructuring the Response+    DeleteAccessPolicyResponse (..),+    newDeleteAccessPolicyResponse,++    -- * Response Lenses+    deleteAccessPolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteAccessPolicy' smart constructor.+data DeleteAccessPolicy = DeleteAccessPolicy'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the access policy to be deleted.+    accessPolicyId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteAccessPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'deleteAccessPolicy_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'accessPolicyId', 'deleteAccessPolicy_accessPolicyId' - The ID of the access policy to be deleted.+newDeleteAccessPolicy ::+  -- | 'accessPolicyId'+  Prelude.Text ->+  DeleteAccessPolicy+newDeleteAccessPolicy pAccessPolicyId_ =+  DeleteAccessPolicy'+    { clientToken = Prelude.Nothing,+      accessPolicyId = pAccessPolicyId_+    }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+deleteAccessPolicy_clientToken :: Lens.Lens' DeleteAccessPolicy (Prelude.Maybe Prelude.Text)+deleteAccessPolicy_clientToken = Lens.lens (\DeleteAccessPolicy' {clientToken} -> clientToken) (\s@DeleteAccessPolicy' {} a -> s {clientToken = a} :: DeleteAccessPolicy)++-- | The ID of the access policy to be deleted.+deleteAccessPolicy_accessPolicyId :: Lens.Lens' DeleteAccessPolicy Prelude.Text+deleteAccessPolicy_accessPolicyId = Lens.lens (\DeleteAccessPolicy' {accessPolicyId} -> accessPolicyId) (\s@DeleteAccessPolicy' {} a -> s {accessPolicyId = a} :: DeleteAccessPolicy)++instance Core.AWSRequest DeleteAccessPolicy where+  type+    AWSResponse DeleteAccessPolicy =+      DeleteAccessPolicyResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteAccessPolicyResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteAccessPolicy where+  hashWithSalt _salt DeleteAccessPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` accessPolicyId++instance Prelude.NFData DeleteAccessPolicy where+  rnf DeleteAccessPolicy' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf accessPolicyId++instance Data.ToHeaders DeleteAccessPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteAccessPolicy where+  toPath DeleteAccessPolicy' {..} =+    Prelude.mconcat+      ["/access-policies/", Data.toBS accessPolicyId]++instance Data.ToQuery DeleteAccessPolicy where+  toQuery DeleteAccessPolicy' {..} =+    Prelude.mconcat ["clientToken" Data.=: clientToken]++-- | /See:/ 'newDeleteAccessPolicyResponse' smart constructor.+data DeleteAccessPolicyResponse = DeleteAccessPolicyResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteAccessPolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteAccessPolicyResponse_httpStatus' - The response's http status code.+newDeleteAccessPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteAccessPolicyResponse+newDeleteAccessPolicyResponse pHttpStatus_ =+  DeleteAccessPolicyResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteAccessPolicyResponse_httpStatus :: Lens.Lens' DeleteAccessPolicyResponse Prelude.Int+deleteAccessPolicyResponse_httpStatus = Lens.lens (\DeleteAccessPolicyResponse' {httpStatus} -> httpStatus) (\s@DeleteAccessPolicyResponse' {} a -> s {httpStatus = a} :: DeleteAccessPolicyResponse)++instance Prelude.NFData DeleteAccessPolicyResponse where+  rnf DeleteAccessPolicyResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/DeleteAsset.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.IoTSiteWise.DeleteAsset+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes an asset. This action can\'t be undone. For more information,+-- see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/delete-assets-and-models.html Deleting assets and models>+-- in the /IoT SiteWise User Guide/.+--+-- You can\'t delete an asset that\'s associated to another asset. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DisassociateAssets.html DisassociateAssets>.+module Amazonka.IoTSiteWise.DeleteAsset+  ( -- * Creating a Request+    DeleteAsset (..),+    newDeleteAsset,++    -- * Request Lenses+    deleteAsset_clientToken,+    deleteAsset_assetId,++    -- * Destructuring the Response+    DeleteAssetResponse (..),+    newDeleteAssetResponse,++    -- * Response Lenses+    deleteAssetResponse_httpStatus,+    deleteAssetResponse_assetStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteAsset' smart constructor.+data DeleteAsset = DeleteAsset'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset to delete.+    assetId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteAsset' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'deleteAsset_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'assetId', 'deleteAsset_assetId' - The ID of the asset to delete.+newDeleteAsset ::+  -- | 'assetId'+  Prelude.Text ->+  DeleteAsset+newDeleteAsset pAssetId_ =+  DeleteAsset'+    { clientToken = Prelude.Nothing,+      assetId = pAssetId_+    }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+deleteAsset_clientToken :: Lens.Lens' DeleteAsset (Prelude.Maybe Prelude.Text)+deleteAsset_clientToken = Lens.lens (\DeleteAsset' {clientToken} -> clientToken) (\s@DeleteAsset' {} a -> s {clientToken = a} :: DeleteAsset)++-- | The ID of the asset to delete.+deleteAsset_assetId :: Lens.Lens' DeleteAsset Prelude.Text+deleteAsset_assetId = Lens.lens (\DeleteAsset' {assetId} -> assetId) (\s@DeleteAsset' {} a -> s {assetId = a} :: DeleteAsset)++instance Core.AWSRequest DeleteAsset where+  type AWSResponse DeleteAsset = DeleteAssetResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteAssetResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "assetStatus")+      )++instance Prelude.Hashable DeleteAsset where+  hashWithSalt _salt DeleteAsset' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` assetId++instance Prelude.NFData DeleteAsset where+  rnf DeleteAsset' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf assetId++instance Data.ToHeaders DeleteAsset where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteAsset where+  toPath DeleteAsset' {..} =+    Prelude.mconcat ["/assets/", Data.toBS assetId]++instance Data.ToQuery DeleteAsset where+  toQuery DeleteAsset' {..} =+    Prelude.mconcat ["clientToken" Data.=: clientToken]++-- | /See:/ 'newDeleteAssetResponse' smart constructor.+data DeleteAssetResponse = DeleteAssetResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The status of the asset, which contains a state (@DELETING@ after+    -- successfully calling this operation) and any error message.+    assetStatus :: AssetStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteAssetResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteAssetResponse_httpStatus' - The response's http status code.+--+-- 'assetStatus', 'deleteAssetResponse_assetStatus' - The status of the asset, which contains a state (@DELETING@ after+-- successfully calling this operation) and any error message.+newDeleteAssetResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'assetStatus'+  AssetStatus ->+  DeleteAssetResponse+newDeleteAssetResponse pHttpStatus_ pAssetStatus_ =+  DeleteAssetResponse'+    { httpStatus = pHttpStatus_,+      assetStatus = pAssetStatus_+    }++-- | The response's http status code.+deleteAssetResponse_httpStatus :: Lens.Lens' DeleteAssetResponse Prelude.Int+deleteAssetResponse_httpStatus = Lens.lens (\DeleteAssetResponse' {httpStatus} -> httpStatus) (\s@DeleteAssetResponse' {} a -> s {httpStatus = a} :: DeleteAssetResponse)++-- | The status of the asset, which contains a state (@DELETING@ after+-- successfully calling this operation) and any error message.+deleteAssetResponse_assetStatus :: Lens.Lens' DeleteAssetResponse AssetStatus+deleteAssetResponse_assetStatus = Lens.lens (\DeleteAssetResponse' {assetStatus} -> assetStatus) (\s@DeleteAssetResponse' {} a -> s {assetStatus = a} :: DeleteAssetResponse)++instance Prelude.NFData DeleteAssetResponse where+  rnf DeleteAssetResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetStatus
+ gen/Amazonka/IoTSiteWise/DeleteAssetModel.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.IoTSiteWise.DeleteAssetModel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes an asset model. This action can\'t be undone. You must delete+-- all assets created from an asset model before you can delete the model.+-- Also, you can\'t delete an asset model if a parent asset model exists+-- that contains a property formula expression that depends on the asset+-- model that you want to delete. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/delete-assets-and-models.html Deleting assets and models>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.DeleteAssetModel+  ( -- * Creating a Request+    DeleteAssetModel (..),+    newDeleteAssetModel,++    -- * Request Lenses+    deleteAssetModel_clientToken,+    deleteAssetModel_assetModelId,++    -- * Destructuring the Response+    DeleteAssetModelResponse (..),+    newDeleteAssetModelResponse,++    -- * Response Lenses+    deleteAssetModelResponse_httpStatus,+    deleteAssetModelResponse_assetModelStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteAssetModel' smart constructor.+data DeleteAssetModel = DeleteAssetModel'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset model to delete.+    assetModelId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteAssetModel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'deleteAssetModel_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'assetModelId', 'deleteAssetModel_assetModelId' - The ID of the asset model to delete.+newDeleteAssetModel ::+  -- | 'assetModelId'+  Prelude.Text ->+  DeleteAssetModel+newDeleteAssetModel pAssetModelId_ =+  DeleteAssetModel'+    { clientToken = Prelude.Nothing,+      assetModelId = pAssetModelId_+    }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+deleteAssetModel_clientToken :: Lens.Lens' DeleteAssetModel (Prelude.Maybe Prelude.Text)+deleteAssetModel_clientToken = Lens.lens (\DeleteAssetModel' {clientToken} -> clientToken) (\s@DeleteAssetModel' {} a -> s {clientToken = a} :: DeleteAssetModel)++-- | The ID of the asset model to delete.+deleteAssetModel_assetModelId :: Lens.Lens' DeleteAssetModel Prelude.Text+deleteAssetModel_assetModelId = Lens.lens (\DeleteAssetModel' {assetModelId} -> assetModelId) (\s@DeleteAssetModel' {} a -> s {assetModelId = a} :: DeleteAssetModel)++instance Core.AWSRequest DeleteAssetModel where+  type+    AWSResponse DeleteAssetModel =+      DeleteAssetModelResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteAssetModelResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "assetModelStatus")+      )++instance Prelude.Hashable DeleteAssetModel where+  hashWithSalt _salt DeleteAssetModel' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` assetModelId++instance Prelude.NFData DeleteAssetModel where+  rnf DeleteAssetModel' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf assetModelId++instance Data.ToHeaders DeleteAssetModel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteAssetModel where+  toPath DeleteAssetModel' {..} =+    Prelude.mconcat+      ["/asset-models/", Data.toBS assetModelId]++instance Data.ToQuery DeleteAssetModel where+  toQuery DeleteAssetModel' {..} =+    Prelude.mconcat ["clientToken" Data.=: clientToken]++-- | /See:/ 'newDeleteAssetModelResponse' smart constructor.+data DeleteAssetModelResponse = DeleteAssetModelResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The status of the asset model, which contains a state (@DELETING@ after+    -- successfully calling this operation) and any error message.+    assetModelStatus :: AssetModelStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteAssetModelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteAssetModelResponse_httpStatus' - The response's http status code.+--+-- 'assetModelStatus', 'deleteAssetModelResponse_assetModelStatus' - The status of the asset model, which contains a state (@DELETING@ after+-- successfully calling this operation) and any error message.+newDeleteAssetModelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'assetModelStatus'+  AssetModelStatus ->+  DeleteAssetModelResponse+newDeleteAssetModelResponse+  pHttpStatus_+  pAssetModelStatus_ =+    DeleteAssetModelResponse'+      { httpStatus =+          pHttpStatus_,+        assetModelStatus = pAssetModelStatus_+      }++-- | The response's http status code.+deleteAssetModelResponse_httpStatus :: Lens.Lens' DeleteAssetModelResponse Prelude.Int+deleteAssetModelResponse_httpStatus = Lens.lens (\DeleteAssetModelResponse' {httpStatus} -> httpStatus) (\s@DeleteAssetModelResponse' {} a -> s {httpStatus = a} :: DeleteAssetModelResponse)++-- | The status of the asset model, which contains a state (@DELETING@ after+-- successfully calling this operation) and any error message.+deleteAssetModelResponse_assetModelStatus :: Lens.Lens' DeleteAssetModelResponse AssetModelStatus+deleteAssetModelResponse_assetModelStatus = Lens.lens (\DeleteAssetModelResponse' {assetModelStatus} -> assetModelStatus) (\s@DeleteAssetModelResponse' {} a -> s {assetModelStatus = a} :: DeleteAssetModelResponse)++instance Prelude.NFData DeleteAssetModelResponse where+  rnf DeleteAssetModelResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetModelStatus
+ gen/Amazonka/IoTSiteWise/DeleteDashboard.hs view
@@ -0,0 +1,167 @@+{-# 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.IoTSiteWise.DeleteDashboard+-- 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 dashboard from IoT SiteWise Monitor.+module Amazonka.IoTSiteWise.DeleteDashboard+  ( -- * Creating a Request+    DeleteDashboard (..),+    newDeleteDashboard,++    -- * Request Lenses+    deleteDashboard_clientToken,+    deleteDashboard_dashboardId,++    -- * Destructuring the Response+    DeleteDashboardResponse (..),+    newDeleteDashboardResponse,++    -- * Response Lenses+    deleteDashboardResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteDashboard' smart constructor.+data DeleteDashboard = DeleteDashboard'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the dashboard to delete.+    dashboardId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDashboard' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'deleteDashboard_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'dashboardId', 'deleteDashboard_dashboardId' - The ID of the dashboard to delete.+newDeleteDashboard ::+  -- | 'dashboardId'+  Prelude.Text ->+  DeleteDashboard+newDeleteDashboard pDashboardId_ =+  DeleteDashboard'+    { clientToken = Prelude.Nothing,+      dashboardId = pDashboardId_+    }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+deleteDashboard_clientToken :: Lens.Lens' DeleteDashboard (Prelude.Maybe Prelude.Text)+deleteDashboard_clientToken = Lens.lens (\DeleteDashboard' {clientToken} -> clientToken) (\s@DeleteDashboard' {} a -> s {clientToken = a} :: DeleteDashboard)++-- | The ID of the dashboard to delete.+deleteDashboard_dashboardId :: Lens.Lens' DeleteDashboard Prelude.Text+deleteDashboard_dashboardId = Lens.lens (\DeleteDashboard' {dashboardId} -> dashboardId) (\s@DeleteDashboard' {} a -> s {dashboardId = a} :: DeleteDashboard)++instance Core.AWSRequest DeleteDashboard where+  type+    AWSResponse DeleteDashboard =+      DeleteDashboardResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteDashboardResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteDashboard where+  hashWithSalt _salt DeleteDashboard' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` dashboardId++instance Prelude.NFData DeleteDashboard where+  rnf DeleteDashboard' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf dashboardId++instance Data.ToHeaders DeleteDashboard where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteDashboard where+  toPath DeleteDashboard' {..} =+    Prelude.mconcat+      ["/dashboards/", Data.toBS dashboardId]++instance Data.ToQuery DeleteDashboard where+  toQuery DeleteDashboard' {..} =+    Prelude.mconcat ["clientToken" Data.=: clientToken]++-- | /See:/ 'newDeleteDashboardResponse' smart constructor.+data DeleteDashboardResponse = DeleteDashboardResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDashboardResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteDashboardResponse_httpStatus' - The response's http status code.+newDeleteDashboardResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteDashboardResponse+newDeleteDashboardResponse pHttpStatus_ =+  DeleteDashboardResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteDashboardResponse_httpStatus :: Lens.Lens' DeleteDashboardResponse Prelude.Int+deleteDashboardResponse_httpStatus = Lens.lens (\DeleteDashboardResponse' {httpStatus} -> httpStatus) (\s@DeleteDashboardResponse' {} a -> s {httpStatus = a} :: DeleteDashboardResponse)++instance Prelude.NFData DeleteDashboardResponse where+  rnf DeleteDashboardResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/DeleteGateway.hs view
@@ -0,0 +1,124 @@+{-# 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.IoTSiteWise.DeleteGateway+-- 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 gateway from IoT SiteWise. When you delete a gateway, some of+-- the gateway\'s files remain in your gateway\'s file system.+module Amazonka.IoTSiteWise.DeleteGateway+  ( -- * Creating a Request+    DeleteGateway (..),+    newDeleteGateway,++    -- * Request Lenses+    deleteGateway_gatewayId,++    -- * Destructuring the Response+    DeleteGatewayResponse (..),+    newDeleteGatewayResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteGateway' smart constructor.+data DeleteGateway = DeleteGateway'+  { -- | The ID of the gateway to delete.+    gatewayId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteGateway' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'gatewayId', 'deleteGateway_gatewayId' - The ID of the gateway to delete.+newDeleteGateway ::+  -- | 'gatewayId'+  Prelude.Text ->+  DeleteGateway+newDeleteGateway pGatewayId_ =+  DeleteGateway' {gatewayId = pGatewayId_}++-- | The ID of the gateway to delete.+deleteGateway_gatewayId :: Lens.Lens' DeleteGateway Prelude.Text+deleteGateway_gatewayId = Lens.lens (\DeleteGateway' {gatewayId} -> gatewayId) (\s@DeleteGateway' {} a -> s {gatewayId = a} :: DeleteGateway)++instance Core.AWSRequest DeleteGateway where+  type+    AWSResponse DeleteGateway =+      DeleteGatewayResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveNull DeleteGatewayResponse'++instance Prelude.Hashable DeleteGateway where+  hashWithSalt _salt DeleteGateway' {..} =+    _salt `Prelude.hashWithSalt` gatewayId++instance Prelude.NFData DeleteGateway where+  rnf DeleteGateway' {..} = Prelude.rnf gatewayId++instance Data.ToHeaders DeleteGateway where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteGateway where+  toPath DeleteGateway' {..} =+    Prelude.mconcat+      ["/20200301/gateways/", Data.toBS gatewayId]++instance Data.ToQuery DeleteGateway where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteGatewayResponse' smart constructor.+data DeleteGatewayResponse = DeleteGatewayResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteGatewayResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteGatewayResponse ::+  DeleteGatewayResponse+newDeleteGatewayResponse = DeleteGatewayResponse'++instance Prelude.NFData DeleteGatewayResponse where+  rnf _ = ()
+ gen/Amazonka/IoTSiteWise/DeletePortal.hs view
@@ -0,0 +1,183 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.DeletePortal+-- 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 portal from IoT SiteWise Monitor.+module Amazonka.IoTSiteWise.DeletePortal+  ( -- * Creating a Request+    DeletePortal (..),+    newDeletePortal,++    -- * Request Lenses+    deletePortal_clientToken,+    deletePortal_portalId,++    -- * Destructuring the Response+    DeletePortalResponse (..),+    newDeletePortalResponse,++    -- * Response Lenses+    deletePortalResponse_httpStatus,+    deletePortalResponse_portalStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeletePortal' smart constructor.+data DeletePortal = DeletePortal'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the portal to delete.+    portalId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeletePortal' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'deletePortal_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'portalId', 'deletePortal_portalId' - The ID of the portal to delete.+newDeletePortal ::+  -- | 'portalId'+  Prelude.Text ->+  DeletePortal+newDeletePortal pPortalId_ =+  DeletePortal'+    { clientToken = Prelude.Nothing,+      portalId = pPortalId_+    }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+deletePortal_clientToken :: Lens.Lens' DeletePortal (Prelude.Maybe Prelude.Text)+deletePortal_clientToken = Lens.lens (\DeletePortal' {clientToken} -> clientToken) (\s@DeletePortal' {} a -> s {clientToken = a} :: DeletePortal)++-- | The ID of the portal to delete.+deletePortal_portalId :: Lens.Lens' DeletePortal Prelude.Text+deletePortal_portalId = Lens.lens (\DeletePortal' {portalId} -> portalId) (\s@DeletePortal' {} a -> s {portalId = a} :: DeletePortal)++instance Core.AWSRequest DeletePortal where+  type AWSResponse DeletePortal = DeletePortalResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeletePortalResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "portalStatus")+      )++instance Prelude.Hashable DeletePortal where+  hashWithSalt _salt DeletePortal' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` portalId++instance Prelude.NFData DeletePortal where+  rnf DeletePortal' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf portalId++instance Data.ToHeaders DeletePortal where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeletePortal where+  toPath DeletePortal' {..} =+    Prelude.mconcat ["/portals/", Data.toBS portalId]++instance Data.ToQuery DeletePortal where+  toQuery DeletePortal' {..} =+    Prelude.mconcat ["clientToken" Data.=: clientToken]++-- | /See:/ 'newDeletePortalResponse' smart constructor.+data DeletePortalResponse = DeletePortalResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The status of the portal, which contains a state (@DELETING@ after+    -- successfully calling this operation) and any error message.+    portalStatus :: PortalStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeletePortalResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deletePortalResponse_httpStatus' - The response's http status code.+--+-- 'portalStatus', 'deletePortalResponse_portalStatus' - The status of the portal, which contains a state (@DELETING@ after+-- successfully calling this operation) and any error message.+newDeletePortalResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'portalStatus'+  PortalStatus ->+  DeletePortalResponse+newDeletePortalResponse pHttpStatus_ pPortalStatus_ =+  DeletePortalResponse'+    { httpStatus = pHttpStatus_,+      portalStatus = pPortalStatus_+    }++-- | The response's http status code.+deletePortalResponse_httpStatus :: Lens.Lens' DeletePortalResponse Prelude.Int+deletePortalResponse_httpStatus = Lens.lens (\DeletePortalResponse' {httpStatus} -> httpStatus) (\s@DeletePortalResponse' {} a -> s {httpStatus = a} :: DeletePortalResponse)++-- | The status of the portal, which contains a state (@DELETING@ after+-- successfully calling this operation) and any error message.+deletePortalResponse_portalStatus :: Lens.Lens' DeletePortalResponse PortalStatus+deletePortalResponse_portalStatus = Lens.lens (\DeletePortalResponse' {portalStatus} -> portalStatus) (\s@DeletePortalResponse' {} a -> s {portalStatus = a} :: DeletePortalResponse)++instance Prelude.NFData DeletePortalResponse where+  rnf DeletePortalResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf portalStatus
+ gen/Amazonka/IoTSiteWise/DeleteProject.hs view
@@ -0,0 +1,166 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.DeleteProject+-- 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 project from IoT SiteWise Monitor.+module Amazonka.IoTSiteWise.DeleteProject+  ( -- * Creating a Request+    DeleteProject (..),+    newDeleteProject,++    -- * Request Lenses+    deleteProject_clientToken,+    deleteProject_projectId,++    -- * Destructuring the Response+    DeleteProjectResponse (..),+    newDeleteProjectResponse,++    -- * Response Lenses+    deleteProjectResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteProject' smart constructor.+data DeleteProject = DeleteProject'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the project.+    projectId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'deleteProject_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'projectId', 'deleteProject_projectId' - The ID of the project.+newDeleteProject ::+  -- | 'projectId'+  Prelude.Text ->+  DeleteProject+newDeleteProject pProjectId_ =+  DeleteProject'+    { clientToken = Prelude.Nothing,+      projectId = pProjectId_+    }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+deleteProject_clientToken :: Lens.Lens' DeleteProject (Prelude.Maybe Prelude.Text)+deleteProject_clientToken = Lens.lens (\DeleteProject' {clientToken} -> clientToken) (\s@DeleteProject' {} a -> s {clientToken = a} :: DeleteProject)++-- | The ID of the project.+deleteProject_projectId :: Lens.Lens' DeleteProject Prelude.Text+deleteProject_projectId = Lens.lens (\DeleteProject' {projectId} -> projectId) (\s@DeleteProject' {} a -> s {projectId = a} :: DeleteProject)++instance Core.AWSRequest DeleteProject where+  type+    AWSResponse DeleteProject =+      DeleteProjectResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteProjectResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteProject where+  hashWithSalt _salt DeleteProject' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` projectId++instance Prelude.NFData DeleteProject where+  rnf DeleteProject' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf projectId++instance Data.ToHeaders DeleteProject where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteProject where+  toPath DeleteProject' {..} =+    Prelude.mconcat ["/projects/", Data.toBS projectId]++instance Data.ToQuery DeleteProject where+  toQuery DeleteProject' {..} =+    Prelude.mconcat ["clientToken" Data.=: clientToken]++-- | /See:/ 'newDeleteProjectResponse' smart constructor.+data DeleteProjectResponse = DeleteProjectResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteProjectResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteProjectResponse_httpStatus' - The response's http status code.+newDeleteProjectResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteProjectResponse+newDeleteProjectResponse pHttpStatus_ =+  DeleteProjectResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteProjectResponse_httpStatus :: Lens.Lens' DeleteProjectResponse Prelude.Int+deleteProjectResponse_httpStatus = Lens.lens (\DeleteProjectResponse' {httpStatus} -> httpStatus) (\s@DeleteProjectResponse' {} a -> s {httpStatus = a} :: DeleteProjectResponse)++instance Prelude.NFData DeleteProjectResponse where+  rnf DeleteProjectResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/DeleteTimeSeries.hs view
@@ -0,0 +1,193 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.DeleteTimeSeries+-- 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 time series (data stream). If you delete a time series that\'s+-- associated with an asset property, the asset property still exists, but+-- the time series will no longer be associated with this asset property.+--+-- To identify a time series, do one of the following:+--+-- -   If the time series isn\'t associated with an asset property, specify+--     the @alias@ of the time series.+--+-- -   If the time series is associated with an asset property, specify one+--     of the following:+--+--     -   The @alias@ of the time series.+--+--     -   The @assetId@ and @propertyId@ that identifies the asset+--         property.+module Amazonka.IoTSiteWise.DeleteTimeSeries+  ( -- * Creating a Request+    DeleteTimeSeries (..),+    newDeleteTimeSeries,++    -- * Request Lenses+    deleteTimeSeries_alias,+    deleteTimeSeries_assetId,+    deleteTimeSeries_clientToken,+    deleteTimeSeries_propertyId,++    -- * Destructuring the Response+    DeleteTimeSeriesResponse (..),+    newDeleteTimeSeriesResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteTimeSeries' smart constructor.+data DeleteTimeSeries = DeleteTimeSeries'+  { -- | The alias that identifies the time series.+    alias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset in which the asset property was created.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteTimeSeries' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'alias', 'deleteTimeSeries_alias' - The alias that identifies the time series.+--+-- 'assetId', 'deleteTimeSeries_assetId' - The ID of the asset in which the asset property was created.+--+-- 'clientToken', 'deleteTimeSeries_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'propertyId', 'deleteTimeSeries_propertyId' - The ID of the asset property.+newDeleteTimeSeries ::+  DeleteTimeSeries+newDeleteTimeSeries =+  DeleteTimeSeries'+    { alias = Prelude.Nothing,+      assetId = Prelude.Nothing,+      clientToken = Prelude.Nothing,+      propertyId = Prelude.Nothing+    }++-- | The alias that identifies the time series.+deleteTimeSeries_alias :: Lens.Lens' DeleteTimeSeries (Prelude.Maybe Prelude.Text)+deleteTimeSeries_alias = Lens.lens (\DeleteTimeSeries' {alias} -> alias) (\s@DeleteTimeSeries' {} a -> s {alias = a} :: DeleteTimeSeries)++-- | The ID of the asset in which the asset property was created.+deleteTimeSeries_assetId :: Lens.Lens' DeleteTimeSeries (Prelude.Maybe Prelude.Text)+deleteTimeSeries_assetId = Lens.lens (\DeleteTimeSeries' {assetId} -> assetId) (\s@DeleteTimeSeries' {} a -> s {assetId = a} :: DeleteTimeSeries)++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+deleteTimeSeries_clientToken :: Lens.Lens' DeleteTimeSeries (Prelude.Maybe Prelude.Text)+deleteTimeSeries_clientToken = Lens.lens (\DeleteTimeSeries' {clientToken} -> clientToken) (\s@DeleteTimeSeries' {} a -> s {clientToken = a} :: DeleteTimeSeries)++-- | The ID of the asset property.+deleteTimeSeries_propertyId :: Lens.Lens' DeleteTimeSeries (Prelude.Maybe Prelude.Text)+deleteTimeSeries_propertyId = Lens.lens (\DeleteTimeSeries' {propertyId} -> propertyId) (\s@DeleteTimeSeries' {} a -> s {propertyId = a} :: DeleteTimeSeries)++instance Core.AWSRequest DeleteTimeSeries where+  type+    AWSResponse DeleteTimeSeries =+      DeleteTimeSeriesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull DeleteTimeSeriesResponse'++instance Prelude.Hashable DeleteTimeSeries where+  hashWithSalt _salt DeleteTimeSeries' {..} =+    _salt+      `Prelude.hashWithSalt` alias+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` propertyId++instance Prelude.NFData DeleteTimeSeries where+  rnf DeleteTimeSeries' {..} =+    Prelude.rnf alias+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf propertyId++instance Data.ToHeaders DeleteTimeSeries where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteTimeSeries where+  toJSON DeleteTimeSeries' {..} =+    Data.object+      ( Prelude.catMaybes+          [("clientToken" Data..=) Prelude.<$> clientToken]+      )++instance Data.ToPath DeleteTimeSeries where+  toPath = Prelude.const "/timeseries/delete/"++instance Data.ToQuery DeleteTimeSeries where+  toQuery DeleteTimeSeries' {..} =+    Prelude.mconcat+      [ "alias" Data.=: alias,+        "assetId" Data.=: assetId,+        "propertyId" Data.=: propertyId+      ]++-- | /See:/ 'newDeleteTimeSeriesResponse' smart constructor.+data DeleteTimeSeriesResponse = DeleteTimeSeriesResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteTimeSeriesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteTimeSeriesResponse ::+  DeleteTimeSeriesResponse+newDeleteTimeSeriesResponse =+  DeleteTimeSeriesResponse'++instance Prelude.NFData DeleteTimeSeriesResponse where+  rnf _ = ()
+ gen/Amazonka/IoTSiteWise/DescribeAccessPolicy.hs view
@@ -0,0 +1,284 @@+{-# 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.IoTSiteWise.DescribeAccessPolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes an access policy, which specifies an identity\'s access to an+-- IoT SiteWise Monitor portal or project.+module Amazonka.IoTSiteWise.DescribeAccessPolicy+  ( -- * Creating a Request+    DescribeAccessPolicy (..),+    newDescribeAccessPolicy,++    -- * Request Lenses+    describeAccessPolicy_accessPolicyId,++    -- * Destructuring the Response+    DescribeAccessPolicyResponse (..),+    newDescribeAccessPolicyResponse,++    -- * Response Lenses+    describeAccessPolicyResponse_httpStatus,+    describeAccessPolicyResponse_accessPolicyId,+    describeAccessPolicyResponse_accessPolicyArn,+    describeAccessPolicyResponse_accessPolicyIdentity,+    describeAccessPolicyResponse_accessPolicyResource,+    describeAccessPolicyResponse_accessPolicyPermission,+    describeAccessPolicyResponse_accessPolicyCreationDate,+    describeAccessPolicyResponse_accessPolicyLastUpdateDate,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAccessPolicy' smart constructor.+data DescribeAccessPolicy = DescribeAccessPolicy'+  { -- | The ID of the access policy.+    accessPolicyId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAccessPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'accessPolicyId', 'describeAccessPolicy_accessPolicyId' - The ID of the access policy.+newDescribeAccessPolicy ::+  -- | 'accessPolicyId'+  Prelude.Text ->+  DescribeAccessPolicy+newDescribeAccessPolicy pAccessPolicyId_ =+  DescribeAccessPolicy'+    { accessPolicyId =+        pAccessPolicyId_+    }++-- | The ID of the access policy.+describeAccessPolicy_accessPolicyId :: Lens.Lens' DescribeAccessPolicy Prelude.Text+describeAccessPolicy_accessPolicyId = Lens.lens (\DescribeAccessPolicy' {accessPolicyId} -> accessPolicyId) (\s@DescribeAccessPolicy' {} a -> s {accessPolicyId = a} :: DescribeAccessPolicy)++instance Core.AWSRequest DescribeAccessPolicy where+  type+    AWSResponse DescribeAccessPolicy =+      DescribeAccessPolicyResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAccessPolicyResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "accessPolicyId")+            Prelude.<*> (x Data..:> "accessPolicyArn")+            Prelude.<*> (x Data..:> "accessPolicyIdentity")+            Prelude.<*> (x Data..:> "accessPolicyResource")+            Prelude.<*> (x Data..:> "accessPolicyPermission")+            Prelude.<*> (x Data..:> "accessPolicyCreationDate")+            Prelude.<*> (x Data..:> "accessPolicyLastUpdateDate")+      )++instance Prelude.Hashable DescribeAccessPolicy where+  hashWithSalt _salt DescribeAccessPolicy' {..} =+    _salt `Prelude.hashWithSalt` accessPolicyId++instance Prelude.NFData DescribeAccessPolicy where+  rnf DescribeAccessPolicy' {..} =+    Prelude.rnf accessPolicyId++instance Data.ToHeaders DescribeAccessPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeAccessPolicy where+  toPath DescribeAccessPolicy' {..} =+    Prelude.mconcat+      ["/access-policies/", Data.toBS accessPolicyId]++instance Data.ToQuery DescribeAccessPolicy where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeAccessPolicyResponse' smart constructor.+data DescribeAccessPolicyResponse = DescribeAccessPolicyResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the access policy.+    accessPolicyId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the access policy, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:access-policy\/${AccessPolicyId}@+    accessPolicyArn :: Prelude.Text,+    -- | The identity (IAM Identity Center user, IAM Identity Center group, or+    -- IAM user) to which this access policy applies.+    accessPolicyIdentity :: Identity,+    -- | The IoT SiteWise Monitor resource (portal or project) to which this+    -- access policy provides access.+    accessPolicyResource :: Resource,+    -- | The access policy permission. Note that a project @ADMINISTRATOR@ is+    -- also known as a project owner.+    accessPolicyPermission :: Permission,+    -- | The date the access policy was created, in Unix epoch time.+    accessPolicyCreationDate :: Data.POSIX,+    -- | The date the access policy was last updated, in Unix epoch time.+    accessPolicyLastUpdateDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAccessPolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeAccessPolicyResponse_httpStatus' - The response's http status code.+--+-- 'accessPolicyId', 'describeAccessPolicyResponse_accessPolicyId' - The ID of the access policy.+--+-- 'accessPolicyArn', 'describeAccessPolicyResponse_accessPolicyArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the access policy, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:access-policy\/${AccessPolicyId}@+--+-- 'accessPolicyIdentity', 'describeAccessPolicyResponse_accessPolicyIdentity' - The identity (IAM Identity Center user, IAM Identity Center group, or+-- IAM user) to which this access policy applies.+--+-- 'accessPolicyResource', 'describeAccessPolicyResponse_accessPolicyResource' - The IoT SiteWise Monitor resource (portal or project) to which this+-- access policy provides access.+--+-- 'accessPolicyPermission', 'describeAccessPolicyResponse_accessPolicyPermission' - The access policy permission. Note that a project @ADMINISTRATOR@ is+-- also known as a project owner.+--+-- 'accessPolicyCreationDate', 'describeAccessPolicyResponse_accessPolicyCreationDate' - The date the access policy was created, in Unix epoch time.+--+-- 'accessPolicyLastUpdateDate', 'describeAccessPolicyResponse_accessPolicyLastUpdateDate' - The date the access policy was last updated, in Unix epoch time.+newDescribeAccessPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'accessPolicyId'+  Prelude.Text ->+  -- | 'accessPolicyArn'+  Prelude.Text ->+  -- | 'accessPolicyIdentity'+  Identity ->+  -- | 'accessPolicyResource'+  Resource ->+  -- | 'accessPolicyPermission'+  Permission ->+  -- | 'accessPolicyCreationDate'+  Prelude.UTCTime ->+  -- | 'accessPolicyLastUpdateDate'+  Prelude.UTCTime ->+  DescribeAccessPolicyResponse+newDescribeAccessPolicyResponse+  pHttpStatus_+  pAccessPolicyId_+  pAccessPolicyArn_+  pAccessPolicyIdentity_+  pAccessPolicyResource_+  pAccessPolicyPermission_+  pAccessPolicyCreationDate_+  pAccessPolicyLastUpdateDate_ =+    DescribeAccessPolicyResponse'+      { httpStatus =+          pHttpStatus_,+        accessPolicyId = pAccessPolicyId_,+        accessPolicyArn = pAccessPolicyArn_,+        accessPolicyIdentity = pAccessPolicyIdentity_,+        accessPolicyResource = pAccessPolicyResource_,+        accessPolicyPermission =+          pAccessPolicyPermission_,+        accessPolicyCreationDate =+          Data._Time+            Lens.# pAccessPolicyCreationDate_,+        accessPolicyLastUpdateDate =+          Data._Time+            Lens.# pAccessPolicyLastUpdateDate_+      }++-- | The response's http status code.+describeAccessPolicyResponse_httpStatus :: Lens.Lens' DescribeAccessPolicyResponse Prelude.Int+describeAccessPolicyResponse_httpStatus = Lens.lens (\DescribeAccessPolicyResponse' {httpStatus} -> httpStatus) (\s@DescribeAccessPolicyResponse' {} a -> s {httpStatus = a} :: DescribeAccessPolicyResponse)++-- | The ID of the access policy.+describeAccessPolicyResponse_accessPolicyId :: Lens.Lens' DescribeAccessPolicyResponse Prelude.Text+describeAccessPolicyResponse_accessPolicyId = Lens.lens (\DescribeAccessPolicyResponse' {accessPolicyId} -> accessPolicyId) (\s@DescribeAccessPolicyResponse' {} a -> s {accessPolicyId = a} :: DescribeAccessPolicyResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the access policy, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:access-policy\/${AccessPolicyId}@+describeAccessPolicyResponse_accessPolicyArn :: Lens.Lens' DescribeAccessPolicyResponse Prelude.Text+describeAccessPolicyResponse_accessPolicyArn = Lens.lens (\DescribeAccessPolicyResponse' {accessPolicyArn} -> accessPolicyArn) (\s@DescribeAccessPolicyResponse' {} a -> s {accessPolicyArn = a} :: DescribeAccessPolicyResponse)++-- | The identity (IAM Identity Center user, IAM Identity Center group, or+-- IAM user) to which this access policy applies.+describeAccessPolicyResponse_accessPolicyIdentity :: Lens.Lens' DescribeAccessPolicyResponse Identity+describeAccessPolicyResponse_accessPolicyIdentity = Lens.lens (\DescribeAccessPolicyResponse' {accessPolicyIdentity} -> accessPolicyIdentity) (\s@DescribeAccessPolicyResponse' {} a -> s {accessPolicyIdentity = a} :: DescribeAccessPolicyResponse)++-- | The IoT SiteWise Monitor resource (portal or project) to which this+-- access policy provides access.+describeAccessPolicyResponse_accessPolicyResource :: Lens.Lens' DescribeAccessPolicyResponse Resource+describeAccessPolicyResponse_accessPolicyResource = Lens.lens (\DescribeAccessPolicyResponse' {accessPolicyResource} -> accessPolicyResource) (\s@DescribeAccessPolicyResponse' {} a -> s {accessPolicyResource = a} :: DescribeAccessPolicyResponse)++-- | The access policy permission. Note that a project @ADMINISTRATOR@ is+-- also known as a project owner.+describeAccessPolicyResponse_accessPolicyPermission :: Lens.Lens' DescribeAccessPolicyResponse Permission+describeAccessPolicyResponse_accessPolicyPermission = Lens.lens (\DescribeAccessPolicyResponse' {accessPolicyPermission} -> accessPolicyPermission) (\s@DescribeAccessPolicyResponse' {} a -> s {accessPolicyPermission = a} :: DescribeAccessPolicyResponse)++-- | The date the access policy was created, in Unix epoch time.+describeAccessPolicyResponse_accessPolicyCreationDate :: Lens.Lens' DescribeAccessPolicyResponse Prelude.UTCTime+describeAccessPolicyResponse_accessPolicyCreationDate = Lens.lens (\DescribeAccessPolicyResponse' {accessPolicyCreationDate} -> accessPolicyCreationDate) (\s@DescribeAccessPolicyResponse' {} a -> s {accessPolicyCreationDate = a} :: DescribeAccessPolicyResponse) Prelude.. Data._Time++-- | The date the access policy was last updated, in Unix epoch time.+describeAccessPolicyResponse_accessPolicyLastUpdateDate :: Lens.Lens' DescribeAccessPolicyResponse Prelude.UTCTime+describeAccessPolicyResponse_accessPolicyLastUpdateDate = Lens.lens (\DescribeAccessPolicyResponse' {accessPolicyLastUpdateDate} -> accessPolicyLastUpdateDate) (\s@DescribeAccessPolicyResponse' {} a -> s {accessPolicyLastUpdateDate = a} :: DescribeAccessPolicyResponse) Prelude.. Data._Time++instance Prelude.NFData DescribeAccessPolicyResponse where+  rnf DescribeAccessPolicyResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf accessPolicyId+      `Prelude.seq` Prelude.rnf accessPolicyArn+      `Prelude.seq` Prelude.rnf accessPolicyIdentity+      `Prelude.seq` Prelude.rnf accessPolicyResource+      `Prelude.seq` Prelude.rnf accessPolicyPermission+      `Prelude.seq` Prelude.rnf accessPolicyCreationDate+      `Prelude.seq` Prelude.rnf accessPolicyLastUpdateDate
+ gen/Amazonka/IoTSiteWise/DescribeAsset.hs view
@@ -0,0 +1,359 @@+{-# 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.IoTSiteWise.DescribeAsset+-- 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 information about an asset.+module Amazonka.IoTSiteWise.DescribeAsset+  ( -- * Creating a Request+    DescribeAsset (..),+    newDescribeAsset,++    -- * Request Lenses+    describeAsset_excludeProperties,+    describeAsset_assetId,++    -- * Destructuring the Response+    DescribeAssetResponse (..),+    newDescribeAssetResponse,++    -- * Response Lenses+    describeAssetResponse_assetCompositeModels,+    describeAssetResponse_assetDescription,+    describeAssetResponse_httpStatus,+    describeAssetResponse_assetId,+    describeAssetResponse_assetArn,+    describeAssetResponse_assetName,+    describeAssetResponse_assetModelId,+    describeAssetResponse_assetProperties,+    describeAssetResponse_assetHierarchies,+    describeAssetResponse_assetCreationDate,+    describeAssetResponse_assetLastUpdateDate,+    describeAssetResponse_assetStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAsset' smart constructor.+data DescribeAsset = DescribeAsset'+  { -- | Whether or not to exclude asset properties from the response.+    excludeProperties :: Prelude.Maybe Prelude.Bool,+    -- | The ID of the asset.+    assetId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAsset' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'excludeProperties', 'describeAsset_excludeProperties' - Whether or not to exclude asset properties from the response.+--+-- 'assetId', 'describeAsset_assetId' - The ID of the asset.+newDescribeAsset ::+  -- | 'assetId'+  Prelude.Text ->+  DescribeAsset+newDescribeAsset pAssetId_ =+  DescribeAsset'+    { excludeProperties = Prelude.Nothing,+      assetId = pAssetId_+    }++-- | Whether or not to exclude asset properties from the response.+describeAsset_excludeProperties :: Lens.Lens' DescribeAsset (Prelude.Maybe Prelude.Bool)+describeAsset_excludeProperties = Lens.lens (\DescribeAsset' {excludeProperties} -> excludeProperties) (\s@DescribeAsset' {} a -> s {excludeProperties = a} :: DescribeAsset)++-- | The ID of the asset.+describeAsset_assetId :: Lens.Lens' DescribeAsset Prelude.Text+describeAsset_assetId = Lens.lens (\DescribeAsset' {assetId} -> assetId) (\s@DescribeAsset' {} a -> s {assetId = a} :: DescribeAsset)++instance Core.AWSRequest DescribeAsset where+  type+    AWSResponse DescribeAsset =+      DescribeAssetResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAssetResponse'+            Prelude.<$> ( x+                            Data..?> "assetCompositeModels"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "assetDescription")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "assetId")+            Prelude.<*> (x Data..:> "assetArn")+            Prelude.<*> (x Data..:> "assetName")+            Prelude.<*> (x Data..:> "assetModelId")+            Prelude.<*> ( x+                            Data..?> "assetProperties"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..?> "assetHierarchies"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..:> "assetCreationDate")+            Prelude.<*> (x Data..:> "assetLastUpdateDate")+            Prelude.<*> (x Data..:> "assetStatus")+      )++instance Prelude.Hashable DescribeAsset where+  hashWithSalt _salt DescribeAsset' {..} =+    _salt+      `Prelude.hashWithSalt` excludeProperties+      `Prelude.hashWithSalt` assetId++instance Prelude.NFData DescribeAsset where+  rnf DescribeAsset' {..} =+    Prelude.rnf excludeProperties+      `Prelude.seq` Prelude.rnf assetId++instance Data.ToHeaders DescribeAsset where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeAsset where+  toPath DescribeAsset' {..} =+    Prelude.mconcat ["/assets/", Data.toBS assetId]++instance Data.ToQuery DescribeAsset where+  toQuery DescribeAsset' {..} =+    Prelude.mconcat+      ["excludeProperties" Data.=: excludeProperties]++-- | /See:/ 'newDescribeAssetResponse' smart constructor.+data DescribeAssetResponse = DescribeAssetResponse'+  { -- | The composite models for the asset.+    assetCompositeModels :: Prelude.Maybe [AssetCompositeModel],+    -- | A description for the asset.+    assetDescription :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the asset.+    assetId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the asset, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+    assetArn :: Prelude.Text,+    -- | The name of the asset.+    assetName :: Prelude.Text,+    -- | The ID of the asset model that was used to create the asset.+    assetModelId :: Prelude.Text,+    -- | The list of asset properties for the asset.+    --+    -- This object doesn\'t include properties that you define in composite+    -- models. You can find composite model properties in the+    -- @assetCompositeModels@ object.+    assetProperties :: [AssetProperty],+    -- | A list of asset hierarchies that each contain a @hierarchyId@. A+    -- hierarchy specifies allowed parent\/child asset relationships.+    assetHierarchies :: [AssetHierarchy],+    -- | The date the asset was created, in Unix epoch time.+    assetCreationDate :: Data.POSIX,+    -- | The date the asset was last updated, in Unix epoch time.+    assetLastUpdateDate :: Data.POSIX,+    -- | The current status of the asset, which contains a state and any error+    -- message.+    assetStatus :: AssetStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAssetResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetCompositeModels', 'describeAssetResponse_assetCompositeModels' - The composite models for the asset.+--+-- 'assetDescription', 'describeAssetResponse_assetDescription' - A description for the asset.+--+-- 'httpStatus', 'describeAssetResponse_httpStatus' - The response's http status code.+--+-- 'assetId', 'describeAssetResponse_assetId' - The ID of the asset.+--+-- 'assetArn', 'describeAssetResponse_assetArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+--+-- 'assetName', 'describeAssetResponse_assetName' - The name of the asset.+--+-- 'assetModelId', 'describeAssetResponse_assetModelId' - The ID of the asset model that was used to create the asset.+--+-- 'assetProperties', 'describeAssetResponse_assetProperties' - The list of asset properties for the asset.+--+-- This object doesn\'t include properties that you define in composite+-- models. You can find composite model properties in the+-- @assetCompositeModels@ object.+--+-- 'assetHierarchies', 'describeAssetResponse_assetHierarchies' - A list of asset hierarchies that each contain a @hierarchyId@. A+-- hierarchy specifies allowed parent\/child asset relationships.+--+-- 'assetCreationDate', 'describeAssetResponse_assetCreationDate' - The date the asset was created, in Unix epoch time.+--+-- 'assetLastUpdateDate', 'describeAssetResponse_assetLastUpdateDate' - The date the asset was last updated, in Unix epoch time.+--+-- 'assetStatus', 'describeAssetResponse_assetStatus' - The current status of the asset, which contains a state and any error+-- message.+newDescribeAssetResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'assetId'+  Prelude.Text ->+  -- | 'assetArn'+  Prelude.Text ->+  -- | 'assetName'+  Prelude.Text ->+  -- | 'assetModelId'+  Prelude.Text ->+  -- | 'assetCreationDate'+  Prelude.UTCTime ->+  -- | 'assetLastUpdateDate'+  Prelude.UTCTime ->+  -- | 'assetStatus'+  AssetStatus ->+  DescribeAssetResponse+newDescribeAssetResponse+  pHttpStatus_+  pAssetId_+  pAssetArn_+  pAssetName_+  pAssetModelId_+  pAssetCreationDate_+  pAssetLastUpdateDate_+  pAssetStatus_ =+    DescribeAssetResponse'+      { assetCompositeModels =+          Prelude.Nothing,+        assetDescription = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        assetId = pAssetId_,+        assetArn = pAssetArn_,+        assetName = pAssetName_,+        assetModelId = pAssetModelId_,+        assetProperties = Prelude.mempty,+        assetHierarchies = Prelude.mempty,+        assetCreationDate =+          Data._Time Lens.# pAssetCreationDate_,+        assetLastUpdateDate =+          Data._Time Lens.# pAssetLastUpdateDate_,+        assetStatus = pAssetStatus_+      }++-- | The composite models for the asset.+describeAssetResponse_assetCompositeModels :: Lens.Lens' DescribeAssetResponse (Prelude.Maybe [AssetCompositeModel])+describeAssetResponse_assetCompositeModels = Lens.lens (\DescribeAssetResponse' {assetCompositeModels} -> assetCompositeModels) (\s@DescribeAssetResponse' {} a -> s {assetCompositeModels = a} :: DescribeAssetResponse) Prelude.. Lens.mapping Lens.coerced++-- | A description for the asset.+describeAssetResponse_assetDescription :: Lens.Lens' DescribeAssetResponse (Prelude.Maybe Prelude.Text)+describeAssetResponse_assetDescription = Lens.lens (\DescribeAssetResponse' {assetDescription} -> assetDescription) (\s@DescribeAssetResponse' {} a -> s {assetDescription = a} :: DescribeAssetResponse)++-- | The response's http status code.+describeAssetResponse_httpStatus :: Lens.Lens' DescribeAssetResponse Prelude.Int+describeAssetResponse_httpStatus = Lens.lens (\DescribeAssetResponse' {httpStatus} -> httpStatus) (\s@DescribeAssetResponse' {} a -> s {httpStatus = a} :: DescribeAssetResponse)++-- | The ID of the asset.+describeAssetResponse_assetId :: Lens.Lens' DescribeAssetResponse Prelude.Text+describeAssetResponse_assetId = Lens.lens (\DescribeAssetResponse' {assetId} -> assetId) (\s@DescribeAssetResponse' {} a -> s {assetId = a} :: DescribeAssetResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+describeAssetResponse_assetArn :: Lens.Lens' DescribeAssetResponse Prelude.Text+describeAssetResponse_assetArn = Lens.lens (\DescribeAssetResponse' {assetArn} -> assetArn) (\s@DescribeAssetResponse' {} a -> s {assetArn = a} :: DescribeAssetResponse)++-- | The name of the asset.+describeAssetResponse_assetName :: Lens.Lens' DescribeAssetResponse Prelude.Text+describeAssetResponse_assetName = Lens.lens (\DescribeAssetResponse' {assetName} -> assetName) (\s@DescribeAssetResponse' {} a -> s {assetName = a} :: DescribeAssetResponse)++-- | The ID of the asset model that was used to create the asset.+describeAssetResponse_assetModelId :: Lens.Lens' DescribeAssetResponse Prelude.Text+describeAssetResponse_assetModelId = Lens.lens (\DescribeAssetResponse' {assetModelId} -> assetModelId) (\s@DescribeAssetResponse' {} a -> s {assetModelId = a} :: DescribeAssetResponse)++-- | The list of asset properties for the asset.+--+-- This object doesn\'t include properties that you define in composite+-- models. You can find composite model properties in the+-- @assetCompositeModels@ object.+describeAssetResponse_assetProperties :: Lens.Lens' DescribeAssetResponse [AssetProperty]+describeAssetResponse_assetProperties = Lens.lens (\DescribeAssetResponse' {assetProperties} -> assetProperties) (\s@DescribeAssetResponse' {} a -> s {assetProperties = a} :: DescribeAssetResponse) Prelude.. Lens.coerced++-- | A list of asset hierarchies that each contain a @hierarchyId@. A+-- hierarchy specifies allowed parent\/child asset relationships.+describeAssetResponse_assetHierarchies :: Lens.Lens' DescribeAssetResponse [AssetHierarchy]+describeAssetResponse_assetHierarchies = Lens.lens (\DescribeAssetResponse' {assetHierarchies} -> assetHierarchies) (\s@DescribeAssetResponse' {} a -> s {assetHierarchies = a} :: DescribeAssetResponse) Prelude.. Lens.coerced++-- | The date the asset was created, in Unix epoch time.+describeAssetResponse_assetCreationDate :: Lens.Lens' DescribeAssetResponse Prelude.UTCTime+describeAssetResponse_assetCreationDate = Lens.lens (\DescribeAssetResponse' {assetCreationDate} -> assetCreationDate) (\s@DescribeAssetResponse' {} a -> s {assetCreationDate = a} :: DescribeAssetResponse) Prelude.. Data._Time++-- | The date the asset was last updated, in Unix epoch time.+describeAssetResponse_assetLastUpdateDate :: Lens.Lens' DescribeAssetResponse Prelude.UTCTime+describeAssetResponse_assetLastUpdateDate = Lens.lens (\DescribeAssetResponse' {assetLastUpdateDate} -> assetLastUpdateDate) (\s@DescribeAssetResponse' {} a -> s {assetLastUpdateDate = a} :: DescribeAssetResponse) Prelude.. Data._Time++-- | The current status of the asset, which contains a state and any error+-- message.+describeAssetResponse_assetStatus :: Lens.Lens' DescribeAssetResponse AssetStatus+describeAssetResponse_assetStatus = Lens.lens (\DescribeAssetResponse' {assetStatus} -> assetStatus) (\s@DescribeAssetResponse' {} a -> s {assetStatus = a} :: DescribeAssetResponse)++instance Prelude.NFData DescribeAssetResponse where+  rnf DescribeAssetResponse' {..} =+    Prelude.rnf assetCompositeModels+      `Prelude.seq` Prelude.rnf assetDescription+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf assetArn+      `Prelude.seq` Prelude.rnf assetName+      `Prelude.seq` Prelude.rnf assetModelId+      `Prelude.seq` Prelude.rnf assetProperties+      `Prelude.seq` Prelude.rnf assetHierarchies+      `Prelude.seq` Prelude.rnf assetCreationDate+      `Prelude.seq` Prelude.rnf assetLastUpdateDate+      `Prelude.seq` Prelude.rnf assetStatus
+ gen/Amazonka/IoTSiteWise/DescribeAssetModel.hs view
@@ -0,0 +1,352 @@+{-# 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.IoTSiteWise.DescribeAssetModel+-- 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 information about an asset model.+module Amazonka.IoTSiteWise.DescribeAssetModel+  ( -- * Creating a Request+    DescribeAssetModel (..),+    newDescribeAssetModel,++    -- * Request Lenses+    describeAssetModel_excludeProperties,+    describeAssetModel_assetModelId,++    -- * Destructuring the Response+    DescribeAssetModelResponse (..),+    newDescribeAssetModelResponse,++    -- * Response Lenses+    describeAssetModelResponse_assetModelCompositeModels,+    describeAssetModelResponse_httpStatus,+    describeAssetModelResponse_assetModelId,+    describeAssetModelResponse_assetModelArn,+    describeAssetModelResponse_assetModelName,+    describeAssetModelResponse_assetModelDescription,+    describeAssetModelResponse_assetModelProperties,+    describeAssetModelResponse_assetModelHierarchies,+    describeAssetModelResponse_assetModelCreationDate,+    describeAssetModelResponse_assetModelLastUpdateDate,+    describeAssetModelResponse_assetModelStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAssetModel' smart constructor.+data DescribeAssetModel = DescribeAssetModel'+  { -- | Whether or not to exclude asset model properties from the response.+    excludeProperties :: Prelude.Maybe Prelude.Bool,+    -- | The ID of the asset model.+    assetModelId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAssetModel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'excludeProperties', 'describeAssetModel_excludeProperties' - Whether or not to exclude asset model properties from the response.+--+-- 'assetModelId', 'describeAssetModel_assetModelId' - The ID of the asset model.+newDescribeAssetModel ::+  -- | 'assetModelId'+  Prelude.Text ->+  DescribeAssetModel+newDescribeAssetModel pAssetModelId_ =+  DescribeAssetModel'+    { excludeProperties =+        Prelude.Nothing,+      assetModelId = pAssetModelId_+    }++-- | Whether or not to exclude asset model properties from the response.+describeAssetModel_excludeProperties :: Lens.Lens' DescribeAssetModel (Prelude.Maybe Prelude.Bool)+describeAssetModel_excludeProperties = Lens.lens (\DescribeAssetModel' {excludeProperties} -> excludeProperties) (\s@DescribeAssetModel' {} a -> s {excludeProperties = a} :: DescribeAssetModel)++-- | The ID of the asset model.+describeAssetModel_assetModelId :: Lens.Lens' DescribeAssetModel Prelude.Text+describeAssetModel_assetModelId = Lens.lens (\DescribeAssetModel' {assetModelId} -> assetModelId) (\s@DescribeAssetModel' {} a -> s {assetModelId = a} :: DescribeAssetModel)++instance Core.AWSRequest DescribeAssetModel where+  type+    AWSResponse DescribeAssetModel =+      DescribeAssetModelResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAssetModelResponse'+            Prelude.<$> ( x+                            Data..?> "assetModelCompositeModels"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "assetModelId")+            Prelude.<*> (x Data..:> "assetModelArn")+            Prelude.<*> (x Data..:> "assetModelName")+            Prelude.<*> (x Data..:> "assetModelDescription")+            Prelude.<*> ( x+                            Data..?> "assetModelProperties"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..?> "assetModelHierarchies"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..:> "assetModelCreationDate")+            Prelude.<*> (x Data..:> "assetModelLastUpdateDate")+            Prelude.<*> (x Data..:> "assetModelStatus")+      )++instance Prelude.Hashable DescribeAssetModel where+  hashWithSalt _salt DescribeAssetModel' {..} =+    _salt+      `Prelude.hashWithSalt` excludeProperties+      `Prelude.hashWithSalt` assetModelId++instance Prelude.NFData DescribeAssetModel where+  rnf DescribeAssetModel' {..} =+    Prelude.rnf excludeProperties+      `Prelude.seq` Prelude.rnf assetModelId++instance Data.ToHeaders DescribeAssetModel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeAssetModel where+  toPath DescribeAssetModel' {..} =+    Prelude.mconcat+      ["/asset-models/", Data.toBS assetModelId]++instance Data.ToQuery DescribeAssetModel where+  toQuery DescribeAssetModel' {..} =+    Prelude.mconcat+      ["excludeProperties" Data.=: excludeProperties]++-- | /See:/ 'newDescribeAssetModelResponse' smart constructor.+data DescribeAssetModelResponse = DescribeAssetModelResponse'+  { -- | The list of composite asset models for the asset model.+    assetModelCompositeModels :: Prelude.Maybe [AssetModelCompositeModel],+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the asset model.+    assetModelId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the asset model, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model\/${AssetModelId}@+    assetModelArn :: Prelude.Text,+    -- | The name of the asset model.+    assetModelName :: Prelude.Text,+    -- | The asset model\'s description.+    assetModelDescription :: Prelude.Text,+    -- | The list of asset properties for the asset model.+    --+    -- This object doesn\'t include properties that you define in composite+    -- models. You can find composite model properties in the+    -- @assetModelCompositeModels@ object.+    assetModelProperties :: [AssetModelProperty],+    -- | A list of asset model hierarchies that each contain a+    -- @childAssetModelId@ and a @hierarchyId@ (named @id@). A hierarchy+    -- specifies allowed parent\/child asset relationships for an asset model.+    assetModelHierarchies :: [AssetModelHierarchy],+    -- | The date the asset model was created, in Unix epoch time.+    assetModelCreationDate :: Data.POSIX,+    -- | The date the asset model was last updated, in Unix epoch time.+    assetModelLastUpdateDate :: Data.POSIX,+    -- | The current status of the asset model, which contains a state and any+    -- error message.+    assetModelStatus :: AssetModelStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAssetModelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetModelCompositeModels', 'describeAssetModelResponse_assetModelCompositeModels' - The list of composite asset models for the asset model.+--+-- 'httpStatus', 'describeAssetModelResponse_httpStatus' - The response's http status code.+--+-- 'assetModelId', 'describeAssetModelResponse_assetModelId' - The ID of the asset model.+--+-- 'assetModelArn', 'describeAssetModelResponse_assetModelArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset model, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model\/${AssetModelId}@+--+-- 'assetModelName', 'describeAssetModelResponse_assetModelName' - The name of the asset model.+--+-- 'assetModelDescription', 'describeAssetModelResponse_assetModelDescription' - The asset model\'s description.+--+-- 'assetModelProperties', 'describeAssetModelResponse_assetModelProperties' - The list of asset properties for the asset model.+--+-- This object doesn\'t include properties that you define in composite+-- models. You can find composite model properties in the+-- @assetModelCompositeModels@ object.+--+-- 'assetModelHierarchies', 'describeAssetModelResponse_assetModelHierarchies' - A list of asset model hierarchies that each contain a+-- @childAssetModelId@ and a @hierarchyId@ (named @id@). A hierarchy+-- specifies allowed parent\/child asset relationships for an asset model.+--+-- 'assetModelCreationDate', 'describeAssetModelResponse_assetModelCreationDate' - The date the asset model was created, in Unix epoch time.+--+-- 'assetModelLastUpdateDate', 'describeAssetModelResponse_assetModelLastUpdateDate' - The date the asset model was last updated, in Unix epoch time.+--+-- 'assetModelStatus', 'describeAssetModelResponse_assetModelStatus' - The current status of the asset model, which contains a state and any+-- error message.+newDescribeAssetModelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'assetModelId'+  Prelude.Text ->+  -- | 'assetModelArn'+  Prelude.Text ->+  -- | 'assetModelName'+  Prelude.Text ->+  -- | 'assetModelDescription'+  Prelude.Text ->+  -- | 'assetModelCreationDate'+  Prelude.UTCTime ->+  -- | 'assetModelLastUpdateDate'+  Prelude.UTCTime ->+  -- | 'assetModelStatus'+  AssetModelStatus ->+  DescribeAssetModelResponse+newDescribeAssetModelResponse+  pHttpStatus_+  pAssetModelId_+  pAssetModelArn_+  pAssetModelName_+  pAssetModelDescription_+  pAssetModelCreationDate_+  pAssetModelLastUpdateDate_+  pAssetModelStatus_ =+    DescribeAssetModelResponse'+      { assetModelCompositeModels =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        assetModelId = pAssetModelId_,+        assetModelArn = pAssetModelArn_,+        assetModelName = pAssetModelName_,+        assetModelDescription = pAssetModelDescription_,+        assetModelProperties = Prelude.mempty,+        assetModelHierarchies = Prelude.mempty,+        assetModelCreationDate =+          Data._Time Lens.# pAssetModelCreationDate_,+        assetModelLastUpdateDate =+          Data._Time Lens.# pAssetModelLastUpdateDate_,+        assetModelStatus = pAssetModelStatus_+      }++-- | The list of composite asset models for the asset model.+describeAssetModelResponse_assetModelCompositeModels :: Lens.Lens' DescribeAssetModelResponse (Prelude.Maybe [AssetModelCompositeModel])+describeAssetModelResponse_assetModelCompositeModels = Lens.lens (\DescribeAssetModelResponse' {assetModelCompositeModels} -> assetModelCompositeModels) (\s@DescribeAssetModelResponse' {} a -> s {assetModelCompositeModels = a} :: DescribeAssetModelResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeAssetModelResponse_httpStatus :: Lens.Lens' DescribeAssetModelResponse Prelude.Int+describeAssetModelResponse_httpStatus = Lens.lens (\DescribeAssetModelResponse' {httpStatus} -> httpStatus) (\s@DescribeAssetModelResponse' {} a -> s {httpStatus = a} :: DescribeAssetModelResponse)++-- | The ID of the asset model.+describeAssetModelResponse_assetModelId :: Lens.Lens' DescribeAssetModelResponse Prelude.Text+describeAssetModelResponse_assetModelId = Lens.lens (\DescribeAssetModelResponse' {assetModelId} -> assetModelId) (\s@DescribeAssetModelResponse' {} a -> s {assetModelId = a} :: DescribeAssetModelResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset model, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model\/${AssetModelId}@+describeAssetModelResponse_assetModelArn :: Lens.Lens' DescribeAssetModelResponse Prelude.Text+describeAssetModelResponse_assetModelArn = Lens.lens (\DescribeAssetModelResponse' {assetModelArn} -> assetModelArn) (\s@DescribeAssetModelResponse' {} a -> s {assetModelArn = a} :: DescribeAssetModelResponse)++-- | The name of the asset model.+describeAssetModelResponse_assetModelName :: Lens.Lens' DescribeAssetModelResponse Prelude.Text+describeAssetModelResponse_assetModelName = Lens.lens (\DescribeAssetModelResponse' {assetModelName} -> assetModelName) (\s@DescribeAssetModelResponse' {} a -> s {assetModelName = a} :: DescribeAssetModelResponse)++-- | The asset model\'s description.+describeAssetModelResponse_assetModelDescription :: Lens.Lens' DescribeAssetModelResponse Prelude.Text+describeAssetModelResponse_assetModelDescription = Lens.lens (\DescribeAssetModelResponse' {assetModelDescription} -> assetModelDescription) (\s@DescribeAssetModelResponse' {} a -> s {assetModelDescription = a} :: DescribeAssetModelResponse)++-- | The list of asset properties for the asset model.+--+-- This object doesn\'t include properties that you define in composite+-- models. You can find composite model properties in the+-- @assetModelCompositeModels@ object.+describeAssetModelResponse_assetModelProperties :: Lens.Lens' DescribeAssetModelResponse [AssetModelProperty]+describeAssetModelResponse_assetModelProperties = Lens.lens (\DescribeAssetModelResponse' {assetModelProperties} -> assetModelProperties) (\s@DescribeAssetModelResponse' {} a -> s {assetModelProperties = a} :: DescribeAssetModelResponse) Prelude.. Lens.coerced++-- | A list of asset model hierarchies that each contain a+-- @childAssetModelId@ and a @hierarchyId@ (named @id@). A hierarchy+-- specifies allowed parent\/child asset relationships for an asset model.+describeAssetModelResponse_assetModelHierarchies :: Lens.Lens' DescribeAssetModelResponse [AssetModelHierarchy]+describeAssetModelResponse_assetModelHierarchies = Lens.lens (\DescribeAssetModelResponse' {assetModelHierarchies} -> assetModelHierarchies) (\s@DescribeAssetModelResponse' {} a -> s {assetModelHierarchies = a} :: DescribeAssetModelResponse) Prelude.. Lens.coerced++-- | The date the asset model was created, in Unix epoch time.+describeAssetModelResponse_assetModelCreationDate :: Lens.Lens' DescribeAssetModelResponse Prelude.UTCTime+describeAssetModelResponse_assetModelCreationDate = Lens.lens (\DescribeAssetModelResponse' {assetModelCreationDate} -> assetModelCreationDate) (\s@DescribeAssetModelResponse' {} a -> s {assetModelCreationDate = a} :: DescribeAssetModelResponse) Prelude.. Data._Time++-- | The date the asset model was last updated, in Unix epoch time.+describeAssetModelResponse_assetModelLastUpdateDate :: Lens.Lens' DescribeAssetModelResponse Prelude.UTCTime+describeAssetModelResponse_assetModelLastUpdateDate = Lens.lens (\DescribeAssetModelResponse' {assetModelLastUpdateDate} -> assetModelLastUpdateDate) (\s@DescribeAssetModelResponse' {} a -> s {assetModelLastUpdateDate = a} :: DescribeAssetModelResponse) Prelude.. Data._Time++-- | The current status of the asset model, which contains a state and any+-- error message.+describeAssetModelResponse_assetModelStatus :: Lens.Lens' DescribeAssetModelResponse AssetModelStatus+describeAssetModelResponse_assetModelStatus = Lens.lens (\DescribeAssetModelResponse' {assetModelStatus} -> assetModelStatus) (\s@DescribeAssetModelResponse' {} a -> s {assetModelStatus = a} :: DescribeAssetModelResponse)++instance Prelude.NFData DescribeAssetModelResponse where+  rnf DescribeAssetModelResponse' {..} =+    Prelude.rnf assetModelCompositeModels+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetModelId+      `Prelude.seq` Prelude.rnf assetModelArn+      `Prelude.seq` Prelude.rnf assetModelName+      `Prelude.seq` Prelude.rnf assetModelDescription+      `Prelude.seq` Prelude.rnf assetModelProperties+      `Prelude.seq` Prelude.rnf assetModelHierarchies+      `Prelude.seq` Prelude.rnf assetModelCreationDate+      `Prelude.seq` Prelude.rnf assetModelLastUpdateDate+      `Prelude.seq` Prelude.rnf assetModelStatus
+ gen/Amazonka/IoTSiteWise/DescribeAssetProperty.hs view
@@ -0,0 +1,263 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.DescribeAssetProperty+-- 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 information about an asset property.+--+-- When you call this operation for an attribute property, this response+-- includes the default attribute value that you define in the asset model.+-- If you update the default value in the model, this operation\'s response+-- includes the new default value.+--+-- This operation doesn\'t return the value of the asset property. To get+-- the value of an asset property, use+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html GetAssetPropertyValue>.+module Amazonka.IoTSiteWise.DescribeAssetProperty+  ( -- * Creating a Request+    DescribeAssetProperty (..),+    newDescribeAssetProperty,++    -- * Request Lenses+    describeAssetProperty_assetId,+    describeAssetProperty_propertyId,++    -- * Destructuring the Response+    DescribeAssetPropertyResponse (..),+    newDescribeAssetPropertyResponse,++    -- * Response Lenses+    describeAssetPropertyResponse_assetProperty,+    describeAssetPropertyResponse_compositeModel,+    describeAssetPropertyResponse_httpStatus,+    describeAssetPropertyResponse_assetId,+    describeAssetPropertyResponse_assetName,+    describeAssetPropertyResponse_assetModelId,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeAssetProperty' smart constructor.+data DescribeAssetProperty = DescribeAssetProperty'+  { -- | The ID of the asset.+    assetId :: Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAssetProperty' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetId', 'describeAssetProperty_assetId' - The ID of the asset.+--+-- 'propertyId', 'describeAssetProperty_propertyId' - The ID of the asset property.+newDescribeAssetProperty ::+  -- | 'assetId'+  Prelude.Text ->+  -- | 'propertyId'+  Prelude.Text ->+  DescribeAssetProperty+newDescribeAssetProperty pAssetId_ pPropertyId_ =+  DescribeAssetProperty'+    { assetId = pAssetId_,+      propertyId = pPropertyId_+    }++-- | The ID of the asset.+describeAssetProperty_assetId :: Lens.Lens' DescribeAssetProperty Prelude.Text+describeAssetProperty_assetId = Lens.lens (\DescribeAssetProperty' {assetId} -> assetId) (\s@DescribeAssetProperty' {} a -> s {assetId = a} :: DescribeAssetProperty)++-- | The ID of the asset property.+describeAssetProperty_propertyId :: Lens.Lens' DescribeAssetProperty Prelude.Text+describeAssetProperty_propertyId = Lens.lens (\DescribeAssetProperty' {propertyId} -> propertyId) (\s@DescribeAssetProperty' {} a -> s {propertyId = a} :: DescribeAssetProperty)++instance Core.AWSRequest DescribeAssetProperty where+  type+    AWSResponse DescribeAssetProperty =+      DescribeAssetPropertyResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeAssetPropertyResponse'+            Prelude.<$> (x Data..?> "assetProperty")+            Prelude.<*> (x Data..?> "compositeModel")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "assetId")+            Prelude.<*> (x Data..:> "assetName")+            Prelude.<*> (x Data..:> "assetModelId")+      )++instance Prelude.Hashable DescribeAssetProperty where+  hashWithSalt _salt DescribeAssetProperty' {..} =+    _salt+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` propertyId++instance Prelude.NFData DescribeAssetProperty where+  rnf DescribeAssetProperty' {..} =+    Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf propertyId++instance Data.ToHeaders DescribeAssetProperty where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeAssetProperty where+  toPath DescribeAssetProperty' {..} =+    Prelude.mconcat+      [ "/assets/",+        Data.toBS assetId,+        "/properties/",+        Data.toBS propertyId+      ]++instance Data.ToQuery DescribeAssetProperty where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeAssetPropertyResponse' smart constructor.+data DescribeAssetPropertyResponse = DescribeAssetPropertyResponse'+  { -- | The asset property\'s definition, alias, and notification state.+    --+    -- This response includes this object for normal asset properties. If you+    -- describe an asset property in a composite model, this response includes+    -- the asset property information in @compositeModel@.+    assetProperty :: Prelude.Maybe Property,+    -- | The composite asset model that declares this asset property, if this+    -- asset property exists in a composite model.+    compositeModel :: Prelude.Maybe CompositeModelProperty,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the asset.+    assetId :: Prelude.Text,+    -- | The name of the asset.+    assetName :: Prelude.Text,+    -- | The ID of the asset model.+    assetModelId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeAssetPropertyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetProperty', 'describeAssetPropertyResponse_assetProperty' - The asset property\'s definition, alias, and notification state.+--+-- This response includes this object for normal asset properties. If you+-- describe an asset property in a composite model, this response includes+-- the asset property information in @compositeModel@.+--+-- 'compositeModel', 'describeAssetPropertyResponse_compositeModel' - The composite asset model that declares this asset property, if this+-- asset property exists in a composite model.+--+-- 'httpStatus', 'describeAssetPropertyResponse_httpStatus' - The response's http status code.+--+-- 'assetId', 'describeAssetPropertyResponse_assetId' - The ID of the asset.+--+-- 'assetName', 'describeAssetPropertyResponse_assetName' - The name of the asset.+--+-- 'assetModelId', 'describeAssetPropertyResponse_assetModelId' - The ID of the asset model.+newDescribeAssetPropertyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'assetId'+  Prelude.Text ->+  -- | 'assetName'+  Prelude.Text ->+  -- | 'assetModelId'+  Prelude.Text ->+  DescribeAssetPropertyResponse+newDescribeAssetPropertyResponse+  pHttpStatus_+  pAssetId_+  pAssetName_+  pAssetModelId_ =+    DescribeAssetPropertyResponse'+      { assetProperty =+          Prelude.Nothing,+        compositeModel = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        assetId = pAssetId_,+        assetName = pAssetName_,+        assetModelId = pAssetModelId_+      }++-- | The asset property\'s definition, alias, and notification state.+--+-- This response includes this object for normal asset properties. If you+-- describe an asset property in a composite model, this response includes+-- the asset property information in @compositeModel@.+describeAssetPropertyResponse_assetProperty :: Lens.Lens' DescribeAssetPropertyResponse (Prelude.Maybe Property)+describeAssetPropertyResponse_assetProperty = Lens.lens (\DescribeAssetPropertyResponse' {assetProperty} -> assetProperty) (\s@DescribeAssetPropertyResponse' {} a -> s {assetProperty = a} :: DescribeAssetPropertyResponse)++-- | The composite asset model that declares this asset property, if this+-- asset property exists in a composite model.+describeAssetPropertyResponse_compositeModel :: Lens.Lens' DescribeAssetPropertyResponse (Prelude.Maybe CompositeModelProperty)+describeAssetPropertyResponse_compositeModel = Lens.lens (\DescribeAssetPropertyResponse' {compositeModel} -> compositeModel) (\s@DescribeAssetPropertyResponse' {} a -> s {compositeModel = a} :: DescribeAssetPropertyResponse)++-- | The response's http status code.+describeAssetPropertyResponse_httpStatus :: Lens.Lens' DescribeAssetPropertyResponse Prelude.Int+describeAssetPropertyResponse_httpStatus = Lens.lens (\DescribeAssetPropertyResponse' {httpStatus} -> httpStatus) (\s@DescribeAssetPropertyResponse' {} a -> s {httpStatus = a} :: DescribeAssetPropertyResponse)++-- | The ID of the asset.+describeAssetPropertyResponse_assetId :: Lens.Lens' DescribeAssetPropertyResponse Prelude.Text+describeAssetPropertyResponse_assetId = Lens.lens (\DescribeAssetPropertyResponse' {assetId} -> assetId) (\s@DescribeAssetPropertyResponse' {} a -> s {assetId = a} :: DescribeAssetPropertyResponse)++-- | The name of the asset.+describeAssetPropertyResponse_assetName :: Lens.Lens' DescribeAssetPropertyResponse Prelude.Text+describeAssetPropertyResponse_assetName = Lens.lens (\DescribeAssetPropertyResponse' {assetName} -> assetName) (\s@DescribeAssetPropertyResponse' {} a -> s {assetName = a} :: DescribeAssetPropertyResponse)++-- | The ID of the asset model.+describeAssetPropertyResponse_assetModelId :: Lens.Lens' DescribeAssetPropertyResponse Prelude.Text+describeAssetPropertyResponse_assetModelId = Lens.lens (\DescribeAssetPropertyResponse' {assetModelId} -> assetModelId) (\s@DescribeAssetPropertyResponse' {} a -> s {assetModelId = a} :: DescribeAssetPropertyResponse)++instance Prelude.NFData DescribeAssetPropertyResponse where+  rnf DescribeAssetPropertyResponse' {..} =+    Prelude.rnf assetProperty+      `Prelude.seq` Prelude.rnf compositeModel+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf assetName+      `Prelude.seq` Prelude.rnf assetModelId
+ gen/Amazonka/IoTSiteWise/DescribeBulkImportJob.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.IoTSiteWise.DescribeBulkImportJob+-- 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 information about a bulk import job request. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/DescribeBulkImportJob.html Describe a bulk import job (CLI)>+-- in the /Amazon Simple Storage Service User Guide/.+module Amazonka.IoTSiteWise.DescribeBulkImportJob+  ( -- * Creating a Request+    DescribeBulkImportJob (..),+    newDescribeBulkImportJob,++    -- * Request Lenses+    describeBulkImportJob_jobId,++    -- * Destructuring the Response+    DescribeBulkImportJobResponse (..),+    newDescribeBulkImportJobResponse,++    -- * Response Lenses+    describeBulkImportJobResponse_httpStatus,+    describeBulkImportJobResponse_jobId,+    describeBulkImportJobResponse_jobName,+    describeBulkImportJobResponse_jobStatus,+    describeBulkImportJobResponse_jobRoleArn,+    describeBulkImportJobResponse_files,+    describeBulkImportJobResponse_errorReportLocation,+    describeBulkImportJobResponse_jobConfiguration,+    describeBulkImportJobResponse_jobCreationDate,+    describeBulkImportJobResponse_jobLastUpdateDate,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeBulkImportJob' smart constructor.+data DescribeBulkImportJob = DescribeBulkImportJob'+  { -- | The ID of the job.+    jobId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeBulkImportJob' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'jobId', 'describeBulkImportJob_jobId' - The ID of the job.+newDescribeBulkImportJob ::+  -- | 'jobId'+  Prelude.Text ->+  DescribeBulkImportJob+newDescribeBulkImportJob pJobId_ =+  DescribeBulkImportJob' {jobId = pJobId_}++-- | The ID of the job.+describeBulkImportJob_jobId :: Lens.Lens' DescribeBulkImportJob Prelude.Text+describeBulkImportJob_jobId = Lens.lens (\DescribeBulkImportJob' {jobId} -> jobId) (\s@DescribeBulkImportJob' {} a -> s {jobId = a} :: DescribeBulkImportJob)++instance Core.AWSRequest DescribeBulkImportJob where+  type+    AWSResponse DescribeBulkImportJob =+      DescribeBulkImportJobResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeBulkImportJobResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "jobId")+            Prelude.<*> (x Data..:> "jobName")+            Prelude.<*> (x Data..:> "jobStatus")+            Prelude.<*> (x Data..:> "jobRoleArn")+            Prelude.<*> (x Data..?> "files" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..:> "errorReportLocation")+            Prelude.<*> (x Data..:> "jobConfiguration")+            Prelude.<*> (x Data..:> "jobCreationDate")+            Prelude.<*> (x Data..:> "jobLastUpdateDate")+      )++instance Prelude.Hashable DescribeBulkImportJob where+  hashWithSalt _salt DescribeBulkImportJob' {..} =+    _salt `Prelude.hashWithSalt` jobId++instance Prelude.NFData DescribeBulkImportJob where+  rnf DescribeBulkImportJob' {..} = Prelude.rnf jobId++instance Data.ToHeaders DescribeBulkImportJob where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeBulkImportJob where+  toPath DescribeBulkImportJob' {..} =+    Prelude.mconcat ["/jobs/", Data.toBS jobId]++instance Data.ToQuery DescribeBulkImportJob where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeBulkImportJobResponse' smart constructor.+data DescribeBulkImportJobResponse = DescribeBulkImportJobResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the job.+    jobId :: Prelude.Text,+    -- | The unique name that helps identify the job request.+    jobName :: Prelude.Text,+    -- | The status of the bulk import job can be one of following values.+    --+    -- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job+    --     to finish.+    --+    -- -   @CANCELLED@ – The bulk import job has been canceled.+    --+    -- -   @RUNNING@ – IoT SiteWise is processing your request to import your+    --     data from Amazon S3.+    --+    -- -   @COMPLETED@ – IoT SiteWise successfully completed your request to+    --     import data from Amazon S3.+    --+    -- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import+    --     data from Amazon S3. You can use logs saved in the specified error+    --     report location in Amazon S3 to troubleshoot issues.+    --+    -- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to+    --     import data from Amazon S3 with errors. You can use logs saved in+    --     the specified error report location in Amazon S3 to troubleshoot+    --     issues.+    jobStatus :: JobStatus,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the IAM role that allows IoT SiteWise to read Amazon S3 data.+    jobRoleArn :: Prelude.Text,+    -- | The files in the specified Amazon S3 bucket that contain your data.+    files :: [File],+    -- | The Amazon S3 destination where errors associated with the job creation+    -- request are saved.+    errorReportLocation :: ErrorReportLocation,+    -- | Contains the configuration information of a job, such as the file format+    -- used to save data in Amazon S3.+    jobConfiguration :: JobConfiguration,+    -- | The date the job was created, in Unix epoch TIME.+    jobCreationDate :: Data.POSIX,+    -- | The date the job was last updated, in Unix epoch time.+    jobLastUpdateDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeBulkImportJobResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeBulkImportJobResponse_httpStatus' - The response's http status code.+--+-- 'jobId', 'describeBulkImportJobResponse_jobId' - The ID of the job.+--+-- 'jobName', 'describeBulkImportJobResponse_jobName' - The unique name that helps identify the job request.+--+-- 'jobStatus', 'describeBulkImportJobResponse_jobStatus' - The status of the bulk import job can be one of following values.+--+-- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job+--     to finish.+--+-- -   @CANCELLED@ – The bulk import job has been canceled.+--+-- -   @RUNNING@ – IoT SiteWise is processing your request to import your+--     data from Amazon S3.+--+-- -   @COMPLETED@ – IoT SiteWise successfully completed your request to+--     import data from Amazon S3.+--+-- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import+--     data from Amazon S3. You can use logs saved in the specified error+--     report location in Amazon S3 to troubleshoot issues.+--+-- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to+--     import data from Amazon S3 with errors. You can use logs saved in+--     the specified error report location in Amazon S3 to troubleshoot+--     issues.+--+-- 'jobRoleArn', 'describeBulkImportJobResponse_jobRoleArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IAM role that allows IoT SiteWise to read Amazon S3 data.+--+-- 'files', 'describeBulkImportJobResponse_files' - The files in the specified Amazon S3 bucket that contain your data.+--+-- 'errorReportLocation', 'describeBulkImportJobResponse_errorReportLocation' - The Amazon S3 destination where errors associated with the job creation+-- request are saved.+--+-- 'jobConfiguration', 'describeBulkImportJobResponse_jobConfiguration' - Contains the configuration information of a job, such as the file format+-- used to save data in Amazon S3.+--+-- 'jobCreationDate', 'describeBulkImportJobResponse_jobCreationDate' - The date the job was created, in Unix epoch TIME.+--+-- 'jobLastUpdateDate', 'describeBulkImportJobResponse_jobLastUpdateDate' - The date the job was last updated, in Unix epoch time.+newDescribeBulkImportJobResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'jobId'+  Prelude.Text ->+  -- | 'jobName'+  Prelude.Text ->+  -- | 'jobStatus'+  JobStatus ->+  -- | 'jobRoleArn'+  Prelude.Text ->+  -- | 'errorReportLocation'+  ErrorReportLocation ->+  -- | 'jobConfiguration'+  JobConfiguration ->+  -- | 'jobCreationDate'+  Prelude.UTCTime ->+  -- | 'jobLastUpdateDate'+  Prelude.UTCTime ->+  DescribeBulkImportJobResponse+newDescribeBulkImportJobResponse+  pHttpStatus_+  pJobId_+  pJobName_+  pJobStatus_+  pJobRoleArn_+  pErrorReportLocation_+  pJobConfiguration_+  pJobCreationDate_+  pJobLastUpdateDate_ =+    DescribeBulkImportJobResponse'+      { httpStatus =+          pHttpStatus_,+        jobId = pJobId_,+        jobName = pJobName_,+        jobStatus = pJobStatus_,+        jobRoleArn = pJobRoleArn_,+        files = Prelude.mempty,+        errorReportLocation = pErrorReportLocation_,+        jobConfiguration = pJobConfiguration_,+        jobCreationDate =+          Data._Time Lens.# pJobCreationDate_,+        jobLastUpdateDate =+          Data._Time Lens.# pJobLastUpdateDate_+      }++-- | The response's http status code.+describeBulkImportJobResponse_httpStatus :: Lens.Lens' DescribeBulkImportJobResponse Prelude.Int+describeBulkImportJobResponse_httpStatus = Lens.lens (\DescribeBulkImportJobResponse' {httpStatus} -> httpStatus) (\s@DescribeBulkImportJobResponse' {} a -> s {httpStatus = a} :: DescribeBulkImportJobResponse)++-- | The ID of the job.+describeBulkImportJobResponse_jobId :: Lens.Lens' DescribeBulkImportJobResponse Prelude.Text+describeBulkImportJobResponse_jobId = Lens.lens (\DescribeBulkImportJobResponse' {jobId} -> jobId) (\s@DescribeBulkImportJobResponse' {} a -> s {jobId = a} :: DescribeBulkImportJobResponse)++-- | The unique name that helps identify the job request.+describeBulkImportJobResponse_jobName :: Lens.Lens' DescribeBulkImportJobResponse Prelude.Text+describeBulkImportJobResponse_jobName = Lens.lens (\DescribeBulkImportJobResponse' {jobName} -> jobName) (\s@DescribeBulkImportJobResponse' {} a -> s {jobName = a} :: DescribeBulkImportJobResponse)++-- | The status of the bulk import job can be one of following values.+--+-- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job+--     to finish.+--+-- -   @CANCELLED@ – The bulk import job has been canceled.+--+-- -   @RUNNING@ – IoT SiteWise is processing your request to import your+--     data from Amazon S3.+--+-- -   @COMPLETED@ – IoT SiteWise successfully completed your request to+--     import data from Amazon S3.+--+-- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import+--     data from Amazon S3. You can use logs saved in the specified error+--     report location in Amazon S3 to troubleshoot issues.+--+-- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to+--     import data from Amazon S3 with errors. You can use logs saved in+--     the specified error report location in Amazon S3 to troubleshoot+--     issues.+describeBulkImportJobResponse_jobStatus :: Lens.Lens' DescribeBulkImportJobResponse JobStatus+describeBulkImportJobResponse_jobStatus = Lens.lens (\DescribeBulkImportJobResponse' {jobStatus} -> jobStatus) (\s@DescribeBulkImportJobResponse' {} a -> s {jobStatus = a} :: DescribeBulkImportJobResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IAM role that allows IoT SiteWise to read Amazon S3 data.+describeBulkImportJobResponse_jobRoleArn :: Lens.Lens' DescribeBulkImportJobResponse Prelude.Text+describeBulkImportJobResponse_jobRoleArn = Lens.lens (\DescribeBulkImportJobResponse' {jobRoleArn} -> jobRoleArn) (\s@DescribeBulkImportJobResponse' {} a -> s {jobRoleArn = a} :: DescribeBulkImportJobResponse)++-- | The files in the specified Amazon S3 bucket that contain your data.+describeBulkImportJobResponse_files :: Lens.Lens' DescribeBulkImportJobResponse [File]+describeBulkImportJobResponse_files = Lens.lens (\DescribeBulkImportJobResponse' {files} -> files) (\s@DescribeBulkImportJobResponse' {} a -> s {files = a} :: DescribeBulkImportJobResponse) Prelude.. Lens.coerced++-- | The Amazon S3 destination where errors associated with the job creation+-- request are saved.+describeBulkImportJobResponse_errorReportLocation :: Lens.Lens' DescribeBulkImportJobResponse ErrorReportLocation+describeBulkImportJobResponse_errorReportLocation = Lens.lens (\DescribeBulkImportJobResponse' {errorReportLocation} -> errorReportLocation) (\s@DescribeBulkImportJobResponse' {} a -> s {errorReportLocation = a} :: DescribeBulkImportJobResponse)++-- | Contains the configuration information of a job, such as the file format+-- used to save data in Amazon S3.+describeBulkImportJobResponse_jobConfiguration :: Lens.Lens' DescribeBulkImportJobResponse JobConfiguration+describeBulkImportJobResponse_jobConfiguration = Lens.lens (\DescribeBulkImportJobResponse' {jobConfiguration} -> jobConfiguration) (\s@DescribeBulkImportJobResponse' {} a -> s {jobConfiguration = a} :: DescribeBulkImportJobResponse)++-- | The date the job was created, in Unix epoch TIME.+describeBulkImportJobResponse_jobCreationDate :: Lens.Lens' DescribeBulkImportJobResponse Prelude.UTCTime+describeBulkImportJobResponse_jobCreationDate = Lens.lens (\DescribeBulkImportJobResponse' {jobCreationDate} -> jobCreationDate) (\s@DescribeBulkImportJobResponse' {} a -> s {jobCreationDate = a} :: DescribeBulkImportJobResponse) Prelude.. Data._Time++-- | The date the job was last updated, in Unix epoch time.+describeBulkImportJobResponse_jobLastUpdateDate :: Lens.Lens' DescribeBulkImportJobResponse Prelude.UTCTime+describeBulkImportJobResponse_jobLastUpdateDate = Lens.lens (\DescribeBulkImportJobResponse' {jobLastUpdateDate} -> jobLastUpdateDate) (\s@DescribeBulkImportJobResponse' {} a -> s {jobLastUpdateDate = a} :: DescribeBulkImportJobResponse) Prelude.. Data._Time++instance Prelude.NFData DescribeBulkImportJobResponse where+  rnf DescribeBulkImportJobResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf jobName+      `Prelude.seq` Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf jobRoleArn+      `Prelude.seq` Prelude.rnf files+      `Prelude.seq` Prelude.rnf errorReportLocation+      `Prelude.seq` Prelude.rnf jobConfiguration+      `Prelude.seq` Prelude.rnf jobCreationDate+      `Prelude.seq` Prelude.rnf jobLastUpdateDate
+ gen/Amazonka/IoTSiteWise/DescribeDashboard.hs view
@@ -0,0 +1,285 @@+{-# 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.IoTSiteWise.DescribeDashboard+-- 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 information about a dashboard.+module Amazonka.IoTSiteWise.DescribeDashboard+  ( -- * Creating a Request+    DescribeDashboard (..),+    newDescribeDashboard,++    -- * Request Lenses+    describeDashboard_dashboardId,++    -- * Destructuring the Response+    DescribeDashboardResponse (..),+    newDescribeDashboardResponse,++    -- * Response Lenses+    describeDashboardResponse_dashboardDescription,+    describeDashboardResponse_httpStatus,+    describeDashboardResponse_dashboardId,+    describeDashboardResponse_dashboardArn,+    describeDashboardResponse_dashboardName,+    describeDashboardResponse_projectId,+    describeDashboardResponse_dashboardDefinition,+    describeDashboardResponse_dashboardCreationDate,+    describeDashboardResponse_dashboardLastUpdateDate,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeDashboard' smart constructor.+data DescribeDashboard = DescribeDashboard'+  { -- | The ID of the dashboard.+    dashboardId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeDashboard' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dashboardId', 'describeDashboard_dashboardId' - The ID of the dashboard.+newDescribeDashboard ::+  -- | 'dashboardId'+  Prelude.Text ->+  DescribeDashboard+newDescribeDashboard pDashboardId_ =+  DescribeDashboard' {dashboardId = pDashboardId_}++-- | The ID of the dashboard.+describeDashboard_dashboardId :: Lens.Lens' DescribeDashboard Prelude.Text+describeDashboard_dashboardId = Lens.lens (\DescribeDashboard' {dashboardId} -> dashboardId) (\s@DescribeDashboard' {} a -> s {dashboardId = a} :: DescribeDashboard)++instance Core.AWSRequest DescribeDashboard where+  type+    AWSResponse DescribeDashboard =+      DescribeDashboardResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeDashboardResponse'+            Prelude.<$> (x Data..?> "dashboardDescription")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "dashboardId")+            Prelude.<*> (x Data..:> "dashboardArn")+            Prelude.<*> (x Data..:> "dashboardName")+            Prelude.<*> (x Data..:> "projectId")+            Prelude.<*> (x Data..:> "dashboardDefinition")+            Prelude.<*> (x Data..:> "dashboardCreationDate")+            Prelude.<*> (x Data..:> "dashboardLastUpdateDate")+      )++instance Prelude.Hashable DescribeDashboard where+  hashWithSalt _salt DescribeDashboard' {..} =+    _salt `Prelude.hashWithSalt` dashboardId++instance Prelude.NFData DescribeDashboard where+  rnf DescribeDashboard' {..} = Prelude.rnf dashboardId++instance Data.ToHeaders DescribeDashboard where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeDashboard where+  toPath DescribeDashboard' {..} =+    Prelude.mconcat+      ["/dashboards/", Data.toBS dashboardId]++instance Data.ToQuery DescribeDashboard where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeDashboardResponse' smart constructor.+data DescribeDashboardResponse = DescribeDashboardResponse'+  { -- | The dashboard\'s description.+    dashboardDescription :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the dashboard.+    dashboardId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the dashboard, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:dashboard\/${DashboardId}@+    dashboardArn :: Prelude.Text,+    -- | The name of the dashboard.+    dashboardName :: Prelude.Text,+    -- | The ID of the project that the dashboard is in.+    projectId :: Prelude.Text,+    -- | The dashboard\'s definition JSON literal. For detailed information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html Creating dashboards (CLI)>+    -- in the /IoT SiteWise User Guide/.+    dashboardDefinition :: Prelude.Text,+    -- | The date the dashboard was created, in Unix epoch time.+    dashboardCreationDate :: Data.POSIX,+    -- | The date the dashboard was last updated, in Unix epoch time.+    dashboardLastUpdateDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeDashboardResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dashboardDescription', 'describeDashboardResponse_dashboardDescription' - The dashboard\'s description.+--+-- 'httpStatus', 'describeDashboardResponse_httpStatus' - The response's http status code.+--+-- 'dashboardId', 'describeDashboardResponse_dashboardId' - The ID of the dashboard.+--+-- 'dashboardArn', 'describeDashboardResponse_dashboardArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the dashboard, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:dashboard\/${DashboardId}@+--+-- 'dashboardName', 'describeDashboardResponse_dashboardName' - The name of the dashboard.+--+-- 'projectId', 'describeDashboardResponse_projectId' - The ID of the project that the dashboard is in.+--+-- 'dashboardDefinition', 'describeDashboardResponse_dashboardDefinition' - The dashboard\'s definition JSON literal. For detailed information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html Creating dashboards (CLI)>+-- in the /IoT SiteWise User Guide/.+--+-- 'dashboardCreationDate', 'describeDashboardResponse_dashboardCreationDate' - The date the dashboard was created, in Unix epoch time.+--+-- 'dashboardLastUpdateDate', 'describeDashboardResponse_dashboardLastUpdateDate' - The date the dashboard was last updated, in Unix epoch time.+newDescribeDashboardResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'dashboardId'+  Prelude.Text ->+  -- | 'dashboardArn'+  Prelude.Text ->+  -- | 'dashboardName'+  Prelude.Text ->+  -- | 'projectId'+  Prelude.Text ->+  -- | 'dashboardDefinition'+  Prelude.Text ->+  -- | 'dashboardCreationDate'+  Prelude.UTCTime ->+  -- | 'dashboardLastUpdateDate'+  Prelude.UTCTime ->+  DescribeDashboardResponse+newDescribeDashboardResponse+  pHttpStatus_+  pDashboardId_+  pDashboardArn_+  pDashboardName_+  pProjectId_+  pDashboardDefinition_+  pDashboardCreationDate_+  pDashboardLastUpdateDate_ =+    DescribeDashboardResponse'+      { dashboardDescription =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        dashboardId = pDashboardId_,+        dashboardArn = pDashboardArn_,+        dashboardName = pDashboardName_,+        projectId = pProjectId_,+        dashboardDefinition = pDashboardDefinition_,+        dashboardCreationDate =+          Data._Time Lens.# pDashboardCreationDate_,+        dashboardLastUpdateDate =+          Data._Time Lens.# pDashboardLastUpdateDate_+      }++-- | The dashboard\'s description.+describeDashboardResponse_dashboardDescription :: Lens.Lens' DescribeDashboardResponse (Prelude.Maybe Prelude.Text)+describeDashboardResponse_dashboardDescription = Lens.lens (\DescribeDashboardResponse' {dashboardDescription} -> dashboardDescription) (\s@DescribeDashboardResponse' {} a -> s {dashboardDescription = a} :: DescribeDashboardResponse)++-- | The response's http status code.+describeDashboardResponse_httpStatus :: Lens.Lens' DescribeDashboardResponse Prelude.Int+describeDashboardResponse_httpStatus = Lens.lens (\DescribeDashboardResponse' {httpStatus} -> httpStatus) (\s@DescribeDashboardResponse' {} a -> s {httpStatus = a} :: DescribeDashboardResponse)++-- | The ID of the dashboard.+describeDashboardResponse_dashboardId :: Lens.Lens' DescribeDashboardResponse Prelude.Text+describeDashboardResponse_dashboardId = Lens.lens (\DescribeDashboardResponse' {dashboardId} -> dashboardId) (\s@DescribeDashboardResponse' {} a -> s {dashboardId = a} :: DescribeDashboardResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the dashboard, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:dashboard\/${DashboardId}@+describeDashboardResponse_dashboardArn :: Lens.Lens' DescribeDashboardResponse Prelude.Text+describeDashboardResponse_dashboardArn = Lens.lens (\DescribeDashboardResponse' {dashboardArn} -> dashboardArn) (\s@DescribeDashboardResponse' {} a -> s {dashboardArn = a} :: DescribeDashboardResponse)++-- | The name of the dashboard.+describeDashboardResponse_dashboardName :: Lens.Lens' DescribeDashboardResponse Prelude.Text+describeDashboardResponse_dashboardName = Lens.lens (\DescribeDashboardResponse' {dashboardName} -> dashboardName) (\s@DescribeDashboardResponse' {} a -> s {dashboardName = a} :: DescribeDashboardResponse)++-- | The ID of the project that the dashboard is in.+describeDashboardResponse_projectId :: Lens.Lens' DescribeDashboardResponse Prelude.Text+describeDashboardResponse_projectId = Lens.lens (\DescribeDashboardResponse' {projectId} -> projectId) (\s@DescribeDashboardResponse' {} a -> s {projectId = a} :: DescribeDashboardResponse)++-- | The dashboard\'s definition JSON literal. For detailed information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html Creating dashboards (CLI)>+-- in the /IoT SiteWise User Guide/.+describeDashboardResponse_dashboardDefinition :: Lens.Lens' DescribeDashboardResponse Prelude.Text+describeDashboardResponse_dashboardDefinition = Lens.lens (\DescribeDashboardResponse' {dashboardDefinition} -> dashboardDefinition) (\s@DescribeDashboardResponse' {} a -> s {dashboardDefinition = a} :: DescribeDashboardResponse)++-- | The date the dashboard was created, in Unix epoch time.+describeDashboardResponse_dashboardCreationDate :: Lens.Lens' DescribeDashboardResponse Prelude.UTCTime+describeDashboardResponse_dashboardCreationDate = Lens.lens (\DescribeDashboardResponse' {dashboardCreationDate} -> dashboardCreationDate) (\s@DescribeDashboardResponse' {} a -> s {dashboardCreationDate = a} :: DescribeDashboardResponse) Prelude.. Data._Time++-- | The date the dashboard was last updated, in Unix epoch time.+describeDashboardResponse_dashboardLastUpdateDate :: Lens.Lens' DescribeDashboardResponse Prelude.UTCTime+describeDashboardResponse_dashboardLastUpdateDate = Lens.lens (\DescribeDashboardResponse' {dashboardLastUpdateDate} -> dashboardLastUpdateDate) (\s@DescribeDashboardResponse' {} a -> s {dashboardLastUpdateDate = a} :: DescribeDashboardResponse) Prelude.. Data._Time++instance Prelude.NFData DescribeDashboardResponse where+  rnf DescribeDashboardResponse' {..} =+    Prelude.rnf dashboardDescription+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf dashboardId+      `Prelude.seq` Prelude.rnf dashboardArn+      `Prelude.seq` Prelude.rnf dashboardName+      `Prelude.seq` Prelude.rnf projectId+      `Prelude.seq` Prelude.rnf dashboardDefinition+      `Prelude.seq` Prelude.rnf dashboardCreationDate+      `Prelude.seq` Prelude.rnf dashboardLastUpdateDate
+ gen/Amazonka/IoTSiteWise/DescribeDefaultEncryptionConfiguration.hs view
@@ -0,0 +1,212 @@+{-# 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.IoTSiteWise.DescribeDefaultEncryptionConfiguration+-- 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 information about the default encryption configuration for the+-- Amazon Web Services account in the default or specified Region. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/key-management.html Key management>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.DescribeDefaultEncryptionConfiguration+  ( -- * Creating a Request+    DescribeDefaultEncryptionConfiguration (..),+    newDescribeDefaultEncryptionConfiguration,++    -- * Destructuring the Response+    DescribeDefaultEncryptionConfigurationResponse (..),+    newDescribeDefaultEncryptionConfigurationResponse,++    -- * Response Lenses+    describeDefaultEncryptionConfigurationResponse_kmsKeyArn,+    describeDefaultEncryptionConfigurationResponse_httpStatus,+    describeDefaultEncryptionConfigurationResponse_encryptionType,+    describeDefaultEncryptionConfigurationResponse_configurationStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeDefaultEncryptionConfiguration' smart constructor.+data DescribeDefaultEncryptionConfiguration = DescribeDefaultEncryptionConfiguration'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeDefaultEncryptionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDescribeDefaultEncryptionConfiguration ::+  DescribeDefaultEncryptionConfiguration+newDescribeDefaultEncryptionConfiguration =+  DescribeDefaultEncryptionConfiguration'++instance+  Core.AWSRequest+    DescribeDefaultEncryptionConfiguration+  where+  type+    AWSResponse+      DescribeDefaultEncryptionConfiguration =+      DescribeDefaultEncryptionConfigurationResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeDefaultEncryptionConfigurationResponse'+            Prelude.<$> (x Data..?> "kmsKeyArn")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "encryptionType")+            Prelude.<*> (x Data..:> "configurationStatus")+      )++instance+  Prelude.Hashable+    DescribeDefaultEncryptionConfiguration+  where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance+  Prelude.NFData+    DescribeDefaultEncryptionConfiguration+  where+  rnf _ = ()++instance+  Data.ToHeaders+    DescribeDefaultEncryptionConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToPath+    DescribeDefaultEncryptionConfiguration+  where+  toPath =+    Prelude.const "/configuration/account/encryption"++instance+  Data.ToQuery+    DescribeDefaultEncryptionConfiguration+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeDefaultEncryptionConfigurationResponse' smart constructor.+data DescribeDefaultEncryptionConfigurationResponse = DescribeDefaultEncryptionConfigurationResponse'+  { -- | The key ARN of the customer managed key used for KMS encryption if you+    -- use @KMS_BASED_ENCRYPTION@.+    kmsKeyArn :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The type of encryption used for the encryption configuration.+    encryptionType :: EncryptionType,+    -- | The status of the account configuration. This contains the+    -- @ConfigurationState@. If there\'s an error, it also contains the+    -- @ErrorDetails@.+    configurationStatus :: ConfigurationStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeDefaultEncryptionConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'kmsKeyArn', 'describeDefaultEncryptionConfigurationResponse_kmsKeyArn' - The key ARN of the customer managed key used for KMS encryption if you+-- use @KMS_BASED_ENCRYPTION@.+--+-- 'httpStatus', 'describeDefaultEncryptionConfigurationResponse_httpStatus' - The response's http status code.+--+-- 'encryptionType', 'describeDefaultEncryptionConfigurationResponse_encryptionType' - The type of encryption used for the encryption configuration.+--+-- 'configurationStatus', 'describeDefaultEncryptionConfigurationResponse_configurationStatus' - The status of the account configuration. This contains the+-- @ConfigurationState@. If there\'s an error, it also contains the+-- @ErrorDetails@.+newDescribeDefaultEncryptionConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'encryptionType'+  EncryptionType ->+  -- | 'configurationStatus'+  ConfigurationStatus ->+  DescribeDefaultEncryptionConfigurationResponse+newDescribeDefaultEncryptionConfigurationResponse+  pHttpStatus_+  pEncryptionType_+  pConfigurationStatus_ =+    DescribeDefaultEncryptionConfigurationResponse'+      { kmsKeyArn =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        encryptionType =+          pEncryptionType_,+        configurationStatus =+          pConfigurationStatus_+      }++-- | The key ARN of the customer managed key used for KMS encryption if you+-- use @KMS_BASED_ENCRYPTION@.+describeDefaultEncryptionConfigurationResponse_kmsKeyArn :: Lens.Lens' DescribeDefaultEncryptionConfigurationResponse (Prelude.Maybe Prelude.Text)+describeDefaultEncryptionConfigurationResponse_kmsKeyArn = Lens.lens (\DescribeDefaultEncryptionConfigurationResponse' {kmsKeyArn} -> kmsKeyArn) (\s@DescribeDefaultEncryptionConfigurationResponse' {} a -> s {kmsKeyArn = a} :: DescribeDefaultEncryptionConfigurationResponse)++-- | The response's http status code.+describeDefaultEncryptionConfigurationResponse_httpStatus :: Lens.Lens' DescribeDefaultEncryptionConfigurationResponse Prelude.Int+describeDefaultEncryptionConfigurationResponse_httpStatus = Lens.lens (\DescribeDefaultEncryptionConfigurationResponse' {httpStatus} -> httpStatus) (\s@DescribeDefaultEncryptionConfigurationResponse' {} a -> s {httpStatus = a} :: DescribeDefaultEncryptionConfigurationResponse)++-- | The type of encryption used for the encryption configuration.+describeDefaultEncryptionConfigurationResponse_encryptionType :: Lens.Lens' DescribeDefaultEncryptionConfigurationResponse EncryptionType+describeDefaultEncryptionConfigurationResponse_encryptionType = Lens.lens (\DescribeDefaultEncryptionConfigurationResponse' {encryptionType} -> encryptionType) (\s@DescribeDefaultEncryptionConfigurationResponse' {} a -> s {encryptionType = a} :: DescribeDefaultEncryptionConfigurationResponse)++-- | The status of the account configuration. This contains the+-- @ConfigurationState@. If there\'s an error, it also contains the+-- @ErrorDetails@.+describeDefaultEncryptionConfigurationResponse_configurationStatus :: Lens.Lens' DescribeDefaultEncryptionConfigurationResponse ConfigurationStatus+describeDefaultEncryptionConfigurationResponse_configurationStatus = Lens.lens (\DescribeDefaultEncryptionConfigurationResponse' {configurationStatus} -> configurationStatus) (\s@DescribeDefaultEncryptionConfigurationResponse' {} a -> s {configurationStatus = a} :: DescribeDefaultEncryptionConfigurationResponse)++instance+  Prelude.NFData+    DescribeDefaultEncryptionConfigurationResponse+  where+  rnf+    DescribeDefaultEncryptionConfigurationResponse' {..} =+      Prelude.rnf kmsKeyArn+        `Prelude.seq` Prelude.rnf httpStatus+        `Prelude.seq` Prelude.rnf encryptionType+        `Prelude.seq` Prelude.rnf configurationStatus
+ gen/Amazonka/IoTSiteWise/DescribeGateway.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.IoTSiteWise.DescribeGateway+-- 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 information about a gateway.+module Amazonka.IoTSiteWise.DescribeGateway+  ( -- * Creating a Request+    DescribeGateway (..),+    newDescribeGateway,++    -- * Request Lenses+    describeGateway_gatewayId,++    -- * Destructuring the Response+    DescribeGatewayResponse (..),+    newDescribeGatewayResponse,++    -- * Response Lenses+    describeGatewayResponse_gatewayPlatform,+    describeGatewayResponse_httpStatus,+    describeGatewayResponse_gatewayId,+    describeGatewayResponse_gatewayName,+    describeGatewayResponse_gatewayArn,+    describeGatewayResponse_gatewayCapabilitySummaries,+    describeGatewayResponse_creationDate,+    describeGatewayResponse_lastUpdateDate,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeGateway' smart constructor.+data DescribeGateway = DescribeGateway'+  { -- | The ID of the gateway device.+    gatewayId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeGateway' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'gatewayId', 'describeGateway_gatewayId' - The ID of the gateway device.+newDescribeGateway ::+  -- | 'gatewayId'+  Prelude.Text ->+  DescribeGateway+newDescribeGateway pGatewayId_ =+  DescribeGateway' {gatewayId = pGatewayId_}++-- | The ID of the gateway device.+describeGateway_gatewayId :: Lens.Lens' DescribeGateway Prelude.Text+describeGateway_gatewayId = Lens.lens (\DescribeGateway' {gatewayId} -> gatewayId) (\s@DescribeGateway' {} a -> s {gatewayId = a} :: DescribeGateway)++instance Core.AWSRequest DescribeGateway where+  type+    AWSResponse DescribeGateway =+      DescribeGatewayResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeGatewayResponse'+            Prelude.<$> (x Data..?> "gatewayPlatform")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "gatewayId")+            Prelude.<*> (x Data..:> "gatewayName")+            Prelude.<*> (x Data..:> "gatewayArn")+            Prelude.<*> ( x+                            Data..?> "gatewayCapabilitySummaries"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..:> "creationDate")+            Prelude.<*> (x Data..:> "lastUpdateDate")+      )++instance Prelude.Hashable DescribeGateway where+  hashWithSalt _salt DescribeGateway' {..} =+    _salt `Prelude.hashWithSalt` gatewayId++instance Prelude.NFData DescribeGateway where+  rnf DescribeGateway' {..} = Prelude.rnf gatewayId++instance Data.ToHeaders DescribeGateway where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeGateway where+  toPath DescribeGateway' {..} =+    Prelude.mconcat+      ["/20200301/gateways/", Data.toBS gatewayId]++instance Data.ToQuery DescribeGateway where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeGatewayResponse' smart constructor.+data DescribeGatewayResponse = DescribeGatewayResponse'+  { -- | The gateway\'s platform.+    gatewayPlatform :: Prelude.Maybe GatewayPlatform,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the gateway device.+    gatewayId :: Prelude.Text,+    -- | The name of the gateway.+    gatewayName :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the gateway, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:gateway\/${GatewayId}@+    gatewayArn :: Prelude.Text,+    -- | A list of gateway capability summaries that each contain a namespace and+    -- status. Each gateway capability defines data sources for the gateway. To+    -- retrieve a capability configuration\'s definition, use+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeGatewayCapabilityConfiguration.html DescribeGatewayCapabilityConfiguration>.+    gatewayCapabilitySummaries :: [GatewayCapabilitySummary],+    -- | The date the gateway was created, in Unix epoch time.+    creationDate :: Data.POSIX,+    -- | The date the gateway was last updated, in Unix epoch time.+    lastUpdateDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeGatewayResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'gatewayPlatform', 'describeGatewayResponse_gatewayPlatform' - The gateway\'s platform.+--+-- 'httpStatus', 'describeGatewayResponse_httpStatus' - The response's http status code.+--+-- 'gatewayId', 'describeGatewayResponse_gatewayId' - The ID of the gateway device.+--+-- 'gatewayName', 'describeGatewayResponse_gatewayName' - The name of the gateway.+--+-- 'gatewayArn', 'describeGatewayResponse_gatewayArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the gateway, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:gateway\/${GatewayId}@+--+-- 'gatewayCapabilitySummaries', 'describeGatewayResponse_gatewayCapabilitySummaries' - A list of gateway capability summaries that each contain a namespace and+-- status. Each gateway capability defines data sources for the gateway. To+-- retrieve a capability configuration\'s definition, use+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeGatewayCapabilityConfiguration.html DescribeGatewayCapabilityConfiguration>.+--+-- 'creationDate', 'describeGatewayResponse_creationDate' - The date the gateway was created, in Unix epoch time.+--+-- 'lastUpdateDate', 'describeGatewayResponse_lastUpdateDate' - The date the gateway was last updated, in Unix epoch time.+newDescribeGatewayResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'gatewayId'+  Prelude.Text ->+  -- | 'gatewayName'+  Prelude.Text ->+  -- | 'gatewayArn'+  Prelude.Text ->+  -- | 'creationDate'+  Prelude.UTCTime ->+  -- | 'lastUpdateDate'+  Prelude.UTCTime ->+  DescribeGatewayResponse+newDescribeGatewayResponse+  pHttpStatus_+  pGatewayId_+  pGatewayName_+  pGatewayArn_+  pCreationDate_+  pLastUpdateDate_ =+    DescribeGatewayResponse'+      { gatewayPlatform =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        gatewayId = pGatewayId_,+        gatewayName = pGatewayName_,+        gatewayArn = pGatewayArn_,+        gatewayCapabilitySummaries = Prelude.mempty,+        creationDate = Data._Time Lens.# pCreationDate_,+        lastUpdateDate =+          Data._Time Lens.# pLastUpdateDate_+      }++-- | The gateway\'s platform.+describeGatewayResponse_gatewayPlatform :: Lens.Lens' DescribeGatewayResponse (Prelude.Maybe GatewayPlatform)+describeGatewayResponse_gatewayPlatform = Lens.lens (\DescribeGatewayResponse' {gatewayPlatform} -> gatewayPlatform) (\s@DescribeGatewayResponse' {} a -> s {gatewayPlatform = a} :: DescribeGatewayResponse)++-- | The response's http status code.+describeGatewayResponse_httpStatus :: Lens.Lens' DescribeGatewayResponse Prelude.Int+describeGatewayResponse_httpStatus = Lens.lens (\DescribeGatewayResponse' {httpStatus} -> httpStatus) (\s@DescribeGatewayResponse' {} a -> s {httpStatus = a} :: DescribeGatewayResponse)++-- | The ID of the gateway device.+describeGatewayResponse_gatewayId :: Lens.Lens' DescribeGatewayResponse Prelude.Text+describeGatewayResponse_gatewayId = Lens.lens (\DescribeGatewayResponse' {gatewayId} -> gatewayId) (\s@DescribeGatewayResponse' {} a -> s {gatewayId = a} :: DescribeGatewayResponse)++-- | The name of the gateway.+describeGatewayResponse_gatewayName :: Lens.Lens' DescribeGatewayResponse Prelude.Text+describeGatewayResponse_gatewayName = Lens.lens (\DescribeGatewayResponse' {gatewayName} -> gatewayName) (\s@DescribeGatewayResponse' {} a -> s {gatewayName = a} :: DescribeGatewayResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the gateway, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:gateway\/${GatewayId}@+describeGatewayResponse_gatewayArn :: Lens.Lens' DescribeGatewayResponse Prelude.Text+describeGatewayResponse_gatewayArn = Lens.lens (\DescribeGatewayResponse' {gatewayArn} -> gatewayArn) (\s@DescribeGatewayResponse' {} a -> s {gatewayArn = a} :: DescribeGatewayResponse)++-- | A list of gateway capability summaries that each contain a namespace and+-- status. Each gateway capability defines data sources for the gateway. To+-- retrieve a capability configuration\'s definition, use+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeGatewayCapabilityConfiguration.html DescribeGatewayCapabilityConfiguration>.+describeGatewayResponse_gatewayCapabilitySummaries :: Lens.Lens' DescribeGatewayResponse [GatewayCapabilitySummary]+describeGatewayResponse_gatewayCapabilitySummaries = Lens.lens (\DescribeGatewayResponse' {gatewayCapabilitySummaries} -> gatewayCapabilitySummaries) (\s@DescribeGatewayResponse' {} a -> s {gatewayCapabilitySummaries = a} :: DescribeGatewayResponse) Prelude.. Lens.coerced++-- | The date the gateway was created, in Unix epoch time.+describeGatewayResponse_creationDate :: Lens.Lens' DescribeGatewayResponse Prelude.UTCTime+describeGatewayResponse_creationDate = Lens.lens (\DescribeGatewayResponse' {creationDate} -> creationDate) (\s@DescribeGatewayResponse' {} a -> s {creationDate = a} :: DescribeGatewayResponse) Prelude.. Data._Time++-- | The date the gateway was last updated, in Unix epoch time.+describeGatewayResponse_lastUpdateDate :: Lens.Lens' DescribeGatewayResponse Prelude.UTCTime+describeGatewayResponse_lastUpdateDate = Lens.lens (\DescribeGatewayResponse' {lastUpdateDate} -> lastUpdateDate) (\s@DescribeGatewayResponse' {} a -> s {lastUpdateDate = a} :: DescribeGatewayResponse) Prelude.. Data._Time++instance Prelude.NFData DescribeGatewayResponse where+  rnf DescribeGatewayResponse' {..} =+    Prelude.rnf gatewayPlatform+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf gatewayId+      `Prelude.seq` Prelude.rnf gatewayName+      `Prelude.seq` Prelude.rnf gatewayArn+      `Prelude.seq` Prelude.rnf gatewayCapabilitySummaries+      `Prelude.seq` Prelude.rnf creationDate+      `Prelude.seq` Prelude.rnf lastUpdateDate
+ gen/Amazonka/IoTSiteWise/DescribeGatewayCapabilityConfiguration.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.IoTSiteWise.DescribeGatewayCapabilityConfiguration+-- 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 information about a gateway capability configuration. Each+-- gateway capability defines data sources for a gateway. A capability+-- configuration can contain multiple data source configurations. If you+-- define OPC-UA sources for a gateway in the IoT SiteWise console, all of+-- your OPC-UA sources are stored in one capability configuration. To list+-- all capability configurations for a gateway, use+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeGateway.html DescribeGateway>.+module Amazonka.IoTSiteWise.DescribeGatewayCapabilityConfiguration+  ( -- * Creating a Request+    DescribeGatewayCapabilityConfiguration (..),+    newDescribeGatewayCapabilityConfiguration,++    -- * Request Lenses+    describeGatewayCapabilityConfiguration_gatewayId,+    describeGatewayCapabilityConfiguration_capabilityNamespace,++    -- * Destructuring the Response+    DescribeGatewayCapabilityConfigurationResponse (..),+    newDescribeGatewayCapabilityConfigurationResponse,++    -- * Response Lenses+    describeGatewayCapabilityConfigurationResponse_httpStatus,+    describeGatewayCapabilityConfigurationResponse_gatewayId,+    describeGatewayCapabilityConfigurationResponse_capabilityNamespace,+    describeGatewayCapabilityConfigurationResponse_capabilityConfiguration,+    describeGatewayCapabilityConfigurationResponse_capabilitySyncStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeGatewayCapabilityConfiguration' smart constructor.+data DescribeGatewayCapabilityConfiguration = DescribeGatewayCapabilityConfiguration'+  { -- | The ID of the gateway that defines the capability configuration.+    gatewayId :: Prelude.Text,+    -- | The namespace of the capability configuration. For example, if you+    -- configure OPC-UA sources from the IoT SiteWise console, your OPC-UA+    -- capability configuration has the namespace+    -- @iotsitewise:opcuacollector:version@, where @version@ is a number such+    -- as @1@.+    capabilityNamespace :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeGatewayCapabilityConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'gatewayId', 'describeGatewayCapabilityConfiguration_gatewayId' - The ID of the gateway that defines the capability configuration.+--+-- 'capabilityNamespace', 'describeGatewayCapabilityConfiguration_capabilityNamespace' - The namespace of the capability configuration. For example, if you+-- configure OPC-UA sources from the IoT SiteWise console, your OPC-UA+-- capability configuration has the namespace+-- @iotsitewise:opcuacollector:version@, where @version@ is a number such+-- as @1@.+newDescribeGatewayCapabilityConfiguration ::+  -- | 'gatewayId'+  Prelude.Text ->+  -- | 'capabilityNamespace'+  Prelude.Text ->+  DescribeGatewayCapabilityConfiguration+newDescribeGatewayCapabilityConfiguration+  pGatewayId_+  pCapabilityNamespace_ =+    DescribeGatewayCapabilityConfiguration'+      { gatewayId =+          pGatewayId_,+        capabilityNamespace =+          pCapabilityNamespace_+      }++-- | The ID of the gateway that defines the capability configuration.+describeGatewayCapabilityConfiguration_gatewayId :: Lens.Lens' DescribeGatewayCapabilityConfiguration Prelude.Text+describeGatewayCapabilityConfiguration_gatewayId = Lens.lens (\DescribeGatewayCapabilityConfiguration' {gatewayId} -> gatewayId) (\s@DescribeGatewayCapabilityConfiguration' {} a -> s {gatewayId = a} :: DescribeGatewayCapabilityConfiguration)++-- | The namespace of the capability configuration. For example, if you+-- configure OPC-UA sources from the IoT SiteWise console, your OPC-UA+-- capability configuration has the namespace+-- @iotsitewise:opcuacollector:version@, where @version@ is a number such+-- as @1@.+describeGatewayCapabilityConfiguration_capabilityNamespace :: Lens.Lens' DescribeGatewayCapabilityConfiguration Prelude.Text+describeGatewayCapabilityConfiguration_capabilityNamespace = Lens.lens (\DescribeGatewayCapabilityConfiguration' {capabilityNamespace} -> capabilityNamespace) (\s@DescribeGatewayCapabilityConfiguration' {} a -> s {capabilityNamespace = a} :: DescribeGatewayCapabilityConfiguration)++instance+  Core.AWSRequest+    DescribeGatewayCapabilityConfiguration+  where+  type+    AWSResponse+      DescribeGatewayCapabilityConfiguration =+      DescribeGatewayCapabilityConfigurationResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeGatewayCapabilityConfigurationResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "gatewayId")+            Prelude.<*> (x Data..:> "capabilityNamespace")+            Prelude.<*> (x Data..:> "capabilityConfiguration")+            Prelude.<*> (x Data..:> "capabilitySyncStatus")+      )++instance+  Prelude.Hashable+    DescribeGatewayCapabilityConfiguration+  where+  hashWithSalt+    _salt+    DescribeGatewayCapabilityConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` gatewayId+        `Prelude.hashWithSalt` capabilityNamespace++instance+  Prelude.NFData+    DescribeGatewayCapabilityConfiguration+  where+  rnf DescribeGatewayCapabilityConfiguration' {..} =+    Prelude.rnf gatewayId+      `Prelude.seq` Prelude.rnf capabilityNamespace++instance+  Data.ToHeaders+    DescribeGatewayCapabilityConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToPath+    DescribeGatewayCapabilityConfiguration+  where+  toPath DescribeGatewayCapabilityConfiguration' {..} =+    Prelude.mconcat+      [ "/20200301/gateways/",+        Data.toBS gatewayId,+        "/capability/",+        Data.toBS capabilityNamespace+      ]++instance+  Data.ToQuery+    DescribeGatewayCapabilityConfiguration+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeGatewayCapabilityConfigurationResponse' smart constructor.+data DescribeGatewayCapabilityConfigurationResponse = DescribeGatewayCapabilityConfigurationResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the gateway that defines the capability configuration.+    gatewayId :: Prelude.Text,+    -- | The namespace of the gateway capability.+    capabilityNamespace :: Prelude.Text,+    -- | The JSON document that defines the gateway capability\'s configuration.+    -- For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-sources.html#configure-source-cli Configuring data sources (CLI)>+    -- in the /IoT SiteWise User Guide/.+    capabilityConfiguration :: Prelude.Text,+    -- | The synchronization status of the capability configuration. The sync+    -- status can be one of the following:+    --+    -- -   @IN_SYNC@ – The gateway is running the capability configuration.+    --+    -- -   @OUT_OF_SYNC@ – The gateway hasn\'t received the capability+    --     configuration.+    --+    -- -   @SYNC_FAILED@ – The gateway rejected the capability configuration.+    capabilitySyncStatus :: CapabilitySyncStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeGatewayCapabilityConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeGatewayCapabilityConfigurationResponse_httpStatus' - The response's http status code.+--+-- 'gatewayId', 'describeGatewayCapabilityConfigurationResponse_gatewayId' - The ID of the gateway that defines the capability configuration.+--+-- 'capabilityNamespace', 'describeGatewayCapabilityConfigurationResponse_capabilityNamespace' - The namespace of the gateway capability.+--+-- 'capabilityConfiguration', 'describeGatewayCapabilityConfigurationResponse_capabilityConfiguration' - The JSON document that defines the gateway capability\'s configuration.+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-sources.html#configure-source-cli Configuring data sources (CLI)>+-- in the /IoT SiteWise User Guide/.+--+-- 'capabilitySyncStatus', 'describeGatewayCapabilityConfigurationResponse_capabilitySyncStatus' - The synchronization status of the capability configuration. The sync+-- status can be one of the following:+--+-- -   @IN_SYNC@ – The gateway is running the capability configuration.+--+-- -   @OUT_OF_SYNC@ – The gateway hasn\'t received the capability+--     configuration.+--+-- -   @SYNC_FAILED@ – The gateway rejected the capability configuration.+newDescribeGatewayCapabilityConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'gatewayId'+  Prelude.Text ->+  -- | 'capabilityNamespace'+  Prelude.Text ->+  -- | 'capabilityConfiguration'+  Prelude.Text ->+  -- | 'capabilitySyncStatus'+  CapabilitySyncStatus ->+  DescribeGatewayCapabilityConfigurationResponse+newDescribeGatewayCapabilityConfigurationResponse+  pHttpStatus_+  pGatewayId_+  pCapabilityNamespace_+  pCapabilityConfiguration_+  pCapabilitySyncStatus_ =+    DescribeGatewayCapabilityConfigurationResponse'+      { httpStatus =+          pHttpStatus_,+        gatewayId = pGatewayId_,+        capabilityNamespace =+          pCapabilityNamespace_,+        capabilityConfiguration =+          pCapabilityConfiguration_,+        capabilitySyncStatus =+          pCapabilitySyncStatus_+      }++-- | The response's http status code.+describeGatewayCapabilityConfigurationResponse_httpStatus :: Lens.Lens' DescribeGatewayCapabilityConfigurationResponse Prelude.Int+describeGatewayCapabilityConfigurationResponse_httpStatus = Lens.lens (\DescribeGatewayCapabilityConfigurationResponse' {httpStatus} -> httpStatus) (\s@DescribeGatewayCapabilityConfigurationResponse' {} a -> s {httpStatus = a} :: DescribeGatewayCapabilityConfigurationResponse)++-- | The ID of the gateway that defines the capability configuration.+describeGatewayCapabilityConfigurationResponse_gatewayId :: Lens.Lens' DescribeGatewayCapabilityConfigurationResponse Prelude.Text+describeGatewayCapabilityConfigurationResponse_gatewayId = Lens.lens (\DescribeGatewayCapabilityConfigurationResponse' {gatewayId} -> gatewayId) (\s@DescribeGatewayCapabilityConfigurationResponse' {} a -> s {gatewayId = a} :: DescribeGatewayCapabilityConfigurationResponse)++-- | The namespace of the gateway capability.+describeGatewayCapabilityConfigurationResponse_capabilityNamespace :: Lens.Lens' DescribeGatewayCapabilityConfigurationResponse Prelude.Text+describeGatewayCapabilityConfigurationResponse_capabilityNamespace = Lens.lens (\DescribeGatewayCapabilityConfigurationResponse' {capabilityNamespace} -> capabilityNamespace) (\s@DescribeGatewayCapabilityConfigurationResponse' {} a -> s {capabilityNamespace = a} :: DescribeGatewayCapabilityConfigurationResponse)++-- | The JSON document that defines the gateway capability\'s configuration.+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-sources.html#configure-source-cli Configuring data sources (CLI)>+-- in the /IoT SiteWise User Guide/.+describeGatewayCapabilityConfigurationResponse_capabilityConfiguration :: Lens.Lens' DescribeGatewayCapabilityConfigurationResponse Prelude.Text+describeGatewayCapabilityConfigurationResponse_capabilityConfiguration = Lens.lens (\DescribeGatewayCapabilityConfigurationResponse' {capabilityConfiguration} -> capabilityConfiguration) (\s@DescribeGatewayCapabilityConfigurationResponse' {} a -> s {capabilityConfiguration = a} :: DescribeGatewayCapabilityConfigurationResponse)++-- | The synchronization status of the capability configuration. The sync+-- status can be one of the following:+--+-- -   @IN_SYNC@ – The gateway is running the capability configuration.+--+-- -   @OUT_OF_SYNC@ – The gateway hasn\'t received the capability+--     configuration.+--+-- -   @SYNC_FAILED@ – The gateway rejected the capability configuration.+describeGatewayCapabilityConfigurationResponse_capabilitySyncStatus :: Lens.Lens' DescribeGatewayCapabilityConfigurationResponse CapabilitySyncStatus+describeGatewayCapabilityConfigurationResponse_capabilitySyncStatus = Lens.lens (\DescribeGatewayCapabilityConfigurationResponse' {capabilitySyncStatus} -> capabilitySyncStatus) (\s@DescribeGatewayCapabilityConfigurationResponse' {} a -> s {capabilitySyncStatus = a} :: DescribeGatewayCapabilityConfigurationResponse)++instance+  Prelude.NFData+    DescribeGatewayCapabilityConfigurationResponse+  where+  rnf+    DescribeGatewayCapabilityConfigurationResponse' {..} =+      Prelude.rnf httpStatus+        `Prelude.seq` Prelude.rnf gatewayId+        `Prelude.seq` Prelude.rnf capabilityNamespace+        `Prelude.seq` Prelude.rnf capabilityConfiguration+        `Prelude.seq` Prelude.rnf capabilitySyncStatus
+ gen/Amazonka/IoTSiteWise/DescribeLoggingOptions.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.IoTSiteWise.DescribeLoggingOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the current IoT SiteWise logging options.+module Amazonka.IoTSiteWise.DescribeLoggingOptions+  ( -- * Creating a Request+    DescribeLoggingOptions (..),+    newDescribeLoggingOptions,++    -- * Destructuring the Response+    DescribeLoggingOptionsResponse (..),+    newDescribeLoggingOptionsResponse,++    -- * Response Lenses+    describeLoggingOptionsResponse_httpStatus,+    describeLoggingOptionsResponse_loggingOptions,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeLoggingOptions' smart constructor.+data DescribeLoggingOptions = DescribeLoggingOptions'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeLoggingOptions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDescribeLoggingOptions ::+  DescribeLoggingOptions+newDescribeLoggingOptions = DescribeLoggingOptions'++instance Core.AWSRequest DescribeLoggingOptions where+  type+    AWSResponse DescribeLoggingOptions =+      DescribeLoggingOptionsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeLoggingOptionsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "loggingOptions")+      )++instance Prelude.Hashable DescribeLoggingOptions where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData DescribeLoggingOptions where+  rnf _ = ()++instance Data.ToHeaders DescribeLoggingOptions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeLoggingOptions where+  toPath = Prelude.const "/logging"++instance Data.ToQuery DescribeLoggingOptions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeLoggingOptionsResponse' smart constructor.+data DescribeLoggingOptionsResponse = DescribeLoggingOptionsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The current logging options.+    loggingOptions :: LoggingOptions+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeLoggingOptionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeLoggingOptionsResponse_httpStatus' - The response's http status code.+--+-- 'loggingOptions', 'describeLoggingOptionsResponse_loggingOptions' - The current logging options.+newDescribeLoggingOptionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'loggingOptions'+  LoggingOptions ->+  DescribeLoggingOptionsResponse+newDescribeLoggingOptionsResponse+  pHttpStatus_+  pLoggingOptions_ =+    DescribeLoggingOptionsResponse'+      { httpStatus =+          pHttpStatus_,+        loggingOptions = pLoggingOptions_+      }++-- | The response's http status code.+describeLoggingOptionsResponse_httpStatus :: Lens.Lens' DescribeLoggingOptionsResponse Prelude.Int+describeLoggingOptionsResponse_httpStatus = Lens.lens (\DescribeLoggingOptionsResponse' {httpStatus} -> httpStatus) (\s@DescribeLoggingOptionsResponse' {} a -> s {httpStatus = a} :: DescribeLoggingOptionsResponse)++-- | The current logging options.+describeLoggingOptionsResponse_loggingOptions :: Lens.Lens' DescribeLoggingOptionsResponse LoggingOptions+describeLoggingOptionsResponse_loggingOptions = Lens.lens (\DescribeLoggingOptionsResponse' {loggingOptions} -> loggingOptions) (\s@DescribeLoggingOptionsResponse' {} a -> s {loggingOptions = a} :: DescribeLoggingOptionsResponse)++instance+  Prelude.NFData+    DescribeLoggingOptionsResponse+  where+  rnf DescribeLoggingOptionsResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf loggingOptions
+ gen/Amazonka/IoTSiteWise/DescribePortal.hs view
@@ -0,0 +1,403 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.DescribePortal+-- 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 information about a portal.+module Amazonka.IoTSiteWise.DescribePortal+  ( -- * Creating a Request+    DescribePortal (..),+    newDescribePortal,++    -- * Request Lenses+    describePortal_portalId,++    -- * Destructuring the Response+    DescribePortalResponse (..),+    newDescribePortalResponse,++    -- * Response Lenses+    describePortalResponse_alarms,+    describePortalResponse_notificationSenderEmail,+    describePortalResponse_portalAuthMode,+    describePortalResponse_portalDescription,+    describePortalResponse_portalLogoImageLocation,+    describePortalResponse_roleArn,+    describePortalResponse_httpStatus,+    describePortalResponse_portalId,+    describePortalResponse_portalArn,+    describePortalResponse_portalName,+    describePortalResponse_portalClientId,+    describePortalResponse_portalStartUrl,+    describePortalResponse_portalContactEmail,+    describePortalResponse_portalStatus,+    describePortalResponse_portalCreationDate,+    describePortalResponse_portalLastUpdateDate,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribePortal' smart constructor.+data DescribePortal = DescribePortal'+  { -- | The ID of the portal.+    portalId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribePortal' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'portalId', 'describePortal_portalId' - The ID of the portal.+newDescribePortal ::+  -- | 'portalId'+  Prelude.Text ->+  DescribePortal+newDescribePortal pPortalId_ =+  DescribePortal' {portalId = pPortalId_}++-- | The ID of the portal.+describePortal_portalId :: Lens.Lens' DescribePortal Prelude.Text+describePortal_portalId = Lens.lens (\DescribePortal' {portalId} -> portalId) (\s@DescribePortal' {} a -> s {portalId = a} :: DescribePortal)++instance Core.AWSRequest DescribePortal where+  type+    AWSResponse DescribePortal =+      DescribePortalResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribePortalResponse'+            Prelude.<$> (x Data..?> "alarms")+            Prelude.<*> (x Data..?> "notificationSenderEmail")+            Prelude.<*> (x Data..?> "portalAuthMode")+            Prelude.<*> (x Data..?> "portalDescription")+            Prelude.<*> (x Data..?> "portalLogoImageLocation")+            Prelude.<*> (x Data..?> "roleArn")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "portalId")+            Prelude.<*> (x Data..:> "portalArn")+            Prelude.<*> (x Data..:> "portalName")+            Prelude.<*> (x Data..:> "portalClientId")+            Prelude.<*> (x Data..:> "portalStartUrl")+            Prelude.<*> (x Data..:> "portalContactEmail")+            Prelude.<*> (x Data..:> "portalStatus")+            Prelude.<*> (x Data..:> "portalCreationDate")+            Prelude.<*> (x Data..:> "portalLastUpdateDate")+      )++instance Prelude.Hashable DescribePortal where+  hashWithSalt _salt DescribePortal' {..} =+    _salt `Prelude.hashWithSalt` portalId++instance Prelude.NFData DescribePortal where+  rnf DescribePortal' {..} = Prelude.rnf portalId++instance Data.ToHeaders DescribePortal where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribePortal where+  toPath DescribePortal' {..} =+    Prelude.mconcat ["/portals/", Data.toBS portalId]++instance Data.ToQuery DescribePortal where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribePortalResponse' smart constructor.+data DescribePortalResponse = DescribePortalResponse'+  { -- | Contains the configuration information of an alarm created in an IoT+    -- SiteWise Monitor portal.+    alarms :: Prelude.Maybe Alarms,+    -- | The email address that sends alarm notifications.+    notificationSenderEmail :: Prelude.Maybe Prelude.Text,+    -- | The service to use to authenticate users to the portal.+    portalAuthMode :: Prelude.Maybe AuthMode,+    -- | The portal\'s description.+    portalDescription :: Prelude.Maybe Prelude.Text,+    -- | The portal\'s logo image, which is available at a URL.+    portalLogoImageLocation :: Prelude.Maybe ImageLocation,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the service role that allows the portal\'s users to access your IoT+    -- SiteWise resources on your behalf. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+    -- in the /IoT SiteWise User Guide/.+    roleArn :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the portal.+    portalId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the portal, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:portal\/${PortalId}@+    portalArn :: Prelude.Text,+    -- | The name of the portal.+    portalName :: Prelude.Text,+    -- | The IAM Identity Center application generated client ID (used with IAM+    -- Identity Center APIs). IoT SiteWise includes @portalClientId@ for only+    -- portals that use IAM Identity Center to authenticate users.+    portalClientId :: Prelude.Text,+    -- | The URL for the IoT SiteWise Monitor portal. You can use this URL to+    -- access portals that use IAM Identity Center for authentication. For+    -- portals that use IAM for authentication, you must use the IoT SiteWise+    -- console to get a URL that you can use to access the portal.+    portalStartUrl :: Prelude.Text,+    -- | The Amazon Web Services administrator\'s contact email address.+    portalContactEmail :: Prelude.Text,+    -- | The current status of the portal, which contains a state and any error+    -- message.+    portalStatus :: PortalStatus,+    -- | The date the portal was created, in Unix epoch time.+    portalCreationDate :: Data.POSIX,+    -- | The date the portal was last updated, in Unix epoch time.+    portalLastUpdateDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribePortalResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'alarms', 'describePortalResponse_alarms' - Contains the configuration information of an alarm created in an IoT+-- SiteWise Monitor portal.+--+-- 'notificationSenderEmail', 'describePortalResponse_notificationSenderEmail' - The email address that sends alarm notifications.+--+-- 'portalAuthMode', 'describePortalResponse_portalAuthMode' - The service to use to authenticate users to the portal.+--+-- 'portalDescription', 'describePortalResponse_portalDescription' - The portal\'s description.+--+-- 'portalLogoImageLocation', 'describePortalResponse_portalLogoImageLocation' - The portal\'s logo image, which is available at a URL.+--+-- 'roleArn', 'describePortalResponse_roleArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the service role that allows the portal\'s users to access your IoT+-- SiteWise resources on your behalf. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+-- in the /IoT SiteWise User Guide/.+--+-- 'httpStatus', 'describePortalResponse_httpStatus' - The response's http status code.+--+-- 'portalId', 'describePortalResponse_portalId' - The ID of the portal.+--+-- 'portalArn', 'describePortalResponse_portalArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the portal, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:portal\/${PortalId}@+--+-- 'portalName', 'describePortalResponse_portalName' - The name of the portal.+--+-- 'portalClientId', 'describePortalResponse_portalClientId' - The IAM Identity Center application generated client ID (used with IAM+-- Identity Center APIs). IoT SiteWise includes @portalClientId@ for only+-- portals that use IAM Identity Center to authenticate users.+--+-- 'portalStartUrl', 'describePortalResponse_portalStartUrl' - The URL for the IoT SiteWise Monitor portal. You can use this URL to+-- access portals that use IAM Identity Center for authentication. For+-- portals that use IAM for authentication, you must use the IoT SiteWise+-- console to get a URL that you can use to access the portal.+--+-- 'portalContactEmail', 'describePortalResponse_portalContactEmail' - The Amazon Web Services administrator\'s contact email address.+--+-- 'portalStatus', 'describePortalResponse_portalStatus' - The current status of the portal, which contains a state and any error+-- message.+--+-- 'portalCreationDate', 'describePortalResponse_portalCreationDate' - The date the portal was created, in Unix epoch time.+--+-- 'portalLastUpdateDate', 'describePortalResponse_portalLastUpdateDate' - The date the portal was last updated, in Unix epoch time.+newDescribePortalResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'portalId'+  Prelude.Text ->+  -- | 'portalArn'+  Prelude.Text ->+  -- | 'portalName'+  Prelude.Text ->+  -- | 'portalClientId'+  Prelude.Text ->+  -- | 'portalStartUrl'+  Prelude.Text ->+  -- | 'portalContactEmail'+  Prelude.Text ->+  -- | 'portalStatus'+  PortalStatus ->+  -- | 'portalCreationDate'+  Prelude.UTCTime ->+  -- | 'portalLastUpdateDate'+  Prelude.UTCTime ->+  DescribePortalResponse+newDescribePortalResponse+  pHttpStatus_+  pPortalId_+  pPortalArn_+  pPortalName_+  pPortalClientId_+  pPortalStartUrl_+  pPortalContactEmail_+  pPortalStatus_+  pPortalCreationDate_+  pPortalLastUpdateDate_ =+    DescribePortalResponse'+      { alarms = Prelude.Nothing,+        notificationSenderEmail = Prelude.Nothing,+        portalAuthMode = Prelude.Nothing,+        portalDescription = Prelude.Nothing,+        portalLogoImageLocation = Prelude.Nothing,+        roleArn = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        portalId = pPortalId_,+        portalArn = pPortalArn_,+        portalName = pPortalName_,+        portalClientId = pPortalClientId_,+        portalStartUrl = pPortalStartUrl_,+        portalContactEmail = pPortalContactEmail_,+        portalStatus = pPortalStatus_,+        portalCreationDate =+          Data._Time Lens.# pPortalCreationDate_,+        portalLastUpdateDate =+          Data._Time Lens.# pPortalLastUpdateDate_+      }++-- | Contains the configuration information of an alarm created in an IoT+-- SiteWise Monitor portal.+describePortalResponse_alarms :: Lens.Lens' DescribePortalResponse (Prelude.Maybe Alarms)+describePortalResponse_alarms = Lens.lens (\DescribePortalResponse' {alarms} -> alarms) (\s@DescribePortalResponse' {} a -> s {alarms = a} :: DescribePortalResponse)++-- | The email address that sends alarm notifications.+describePortalResponse_notificationSenderEmail :: Lens.Lens' DescribePortalResponse (Prelude.Maybe Prelude.Text)+describePortalResponse_notificationSenderEmail = Lens.lens (\DescribePortalResponse' {notificationSenderEmail} -> notificationSenderEmail) (\s@DescribePortalResponse' {} a -> s {notificationSenderEmail = a} :: DescribePortalResponse)++-- | The service to use to authenticate users to the portal.+describePortalResponse_portalAuthMode :: Lens.Lens' DescribePortalResponse (Prelude.Maybe AuthMode)+describePortalResponse_portalAuthMode = Lens.lens (\DescribePortalResponse' {portalAuthMode} -> portalAuthMode) (\s@DescribePortalResponse' {} a -> s {portalAuthMode = a} :: DescribePortalResponse)++-- | The portal\'s description.+describePortalResponse_portalDescription :: Lens.Lens' DescribePortalResponse (Prelude.Maybe Prelude.Text)+describePortalResponse_portalDescription = Lens.lens (\DescribePortalResponse' {portalDescription} -> portalDescription) (\s@DescribePortalResponse' {} a -> s {portalDescription = a} :: DescribePortalResponse)++-- | The portal\'s logo image, which is available at a URL.+describePortalResponse_portalLogoImageLocation :: Lens.Lens' DescribePortalResponse (Prelude.Maybe ImageLocation)+describePortalResponse_portalLogoImageLocation = Lens.lens (\DescribePortalResponse' {portalLogoImageLocation} -> portalLogoImageLocation) (\s@DescribePortalResponse' {} a -> s {portalLogoImageLocation = a} :: DescribePortalResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the service role that allows the portal\'s users to access your IoT+-- SiteWise resources on your behalf. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+-- in the /IoT SiteWise User Guide/.+describePortalResponse_roleArn :: Lens.Lens' DescribePortalResponse (Prelude.Maybe Prelude.Text)+describePortalResponse_roleArn = Lens.lens (\DescribePortalResponse' {roleArn} -> roleArn) (\s@DescribePortalResponse' {} a -> s {roleArn = a} :: DescribePortalResponse)++-- | The response's http status code.+describePortalResponse_httpStatus :: Lens.Lens' DescribePortalResponse Prelude.Int+describePortalResponse_httpStatus = Lens.lens (\DescribePortalResponse' {httpStatus} -> httpStatus) (\s@DescribePortalResponse' {} a -> s {httpStatus = a} :: DescribePortalResponse)++-- | The ID of the portal.+describePortalResponse_portalId :: Lens.Lens' DescribePortalResponse Prelude.Text+describePortalResponse_portalId = Lens.lens (\DescribePortalResponse' {portalId} -> portalId) (\s@DescribePortalResponse' {} a -> s {portalId = a} :: DescribePortalResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the portal, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:portal\/${PortalId}@+describePortalResponse_portalArn :: Lens.Lens' DescribePortalResponse Prelude.Text+describePortalResponse_portalArn = Lens.lens (\DescribePortalResponse' {portalArn} -> portalArn) (\s@DescribePortalResponse' {} a -> s {portalArn = a} :: DescribePortalResponse)++-- | The name of the portal.+describePortalResponse_portalName :: Lens.Lens' DescribePortalResponse Prelude.Text+describePortalResponse_portalName = Lens.lens (\DescribePortalResponse' {portalName} -> portalName) (\s@DescribePortalResponse' {} a -> s {portalName = a} :: DescribePortalResponse)++-- | The IAM Identity Center application generated client ID (used with IAM+-- Identity Center APIs). IoT SiteWise includes @portalClientId@ for only+-- portals that use IAM Identity Center to authenticate users.+describePortalResponse_portalClientId :: Lens.Lens' DescribePortalResponse Prelude.Text+describePortalResponse_portalClientId = Lens.lens (\DescribePortalResponse' {portalClientId} -> portalClientId) (\s@DescribePortalResponse' {} a -> s {portalClientId = a} :: DescribePortalResponse)++-- | The URL for the IoT SiteWise Monitor portal. You can use this URL to+-- access portals that use IAM Identity Center for authentication. For+-- portals that use IAM for authentication, you must use the IoT SiteWise+-- console to get a URL that you can use to access the portal.+describePortalResponse_portalStartUrl :: Lens.Lens' DescribePortalResponse Prelude.Text+describePortalResponse_portalStartUrl = Lens.lens (\DescribePortalResponse' {portalStartUrl} -> portalStartUrl) (\s@DescribePortalResponse' {} a -> s {portalStartUrl = a} :: DescribePortalResponse)++-- | The Amazon Web Services administrator\'s contact email address.+describePortalResponse_portalContactEmail :: Lens.Lens' DescribePortalResponse Prelude.Text+describePortalResponse_portalContactEmail = Lens.lens (\DescribePortalResponse' {portalContactEmail} -> portalContactEmail) (\s@DescribePortalResponse' {} a -> s {portalContactEmail = a} :: DescribePortalResponse)++-- | The current status of the portal, which contains a state and any error+-- message.+describePortalResponse_portalStatus :: Lens.Lens' DescribePortalResponse PortalStatus+describePortalResponse_portalStatus = Lens.lens (\DescribePortalResponse' {portalStatus} -> portalStatus) (\s@DescribePortalResponse' {} a -> s {portalStatus = a} :: DescribePortalResponse)++-- | The date the portal was created, in Unix epoch time.+describePortalResponse_portalCreationDate :: Lens.Lens' DescribePortalResponse Prelude.UTCTime+describePortalResponse_portalCreationDate = Lens.lens (\DescribePortalResponse' {portalCreationDate} -> portalCreationDate) (\s@DescribePortalResponse' {} a -> s {portalCreationDate = a} :: DescribePortalResponse) Prelude.. Data._Time++-- | The date the portal was last updated, in Unix epoch time.+describePortalResponse_portalLastUpdateDate :: Lens.Lens' DescribePortalResponse Prelude.UTCTime+describePortalResponse_portalLastUpdateDate = Lens.lens (\DescribePortalResponse' {portalLastUpdateDate} -> portalLastUpdateDate) (\s@DescribePortalResponse' {} a -> s {portalLastUpdateDate = a} :: DescribePortalResponse) Prelude.. Data._Time++instance Prelude.NFData DescribePortalResponse where+  rnf DescribePortalResponse' {..} =+    Prelude.rnf alarms+      `Prelude.seq` Prelude.rnf notificationSenderEmail+      `Prelude.seq` Prelude.rnf portalAuthMode+      `Prelude.seq` Prelude.rnf portalDescription+      `Prelude.seq` Prelude.rnf portalLogoImageLocation+      `Prelude.seq` Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf portalId+      `Prelude.seq` Prelude.rnf portalArn+      `Prelude.seq` Prelude.rnf portalName+      `Prelude.seq` Prelude.rnf portalClientId+      `Prelude.seq` Prelude.rnf portalStartUrl+      `Prelude.seq` Prelude.rnf portalContactEmail+      `Prelude.seq` Prelude.rnf portalStatus+      `Prelude.seq` Prelude.rnf portalCreationDate+      `Prelude.seq` Prelude.rnf portalLastUpdateDate
+ gen/Amazonka/IoTSiteWise/DescribeProject.hs view
@@ -0,0 +1,263 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.DescribeProject+-- 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 information about a project.+module Amazonka.IoTSiteWise.DescribeProject+  ( -- * Creating a Request+    DescribeProject (..),+    newDescribeProject,++    -- * Request Lenses+    describeProject_projectId,++    -- * Destructuring the Response+    DescribeProjectResponse (..),+    newDescribeProjectResponse,++    -- * Response Lenses+    describeProjectResponse_projectDescription,+    describeProjectResponse_httpStatus,+    describeProjectResponse_projectId,+    describeProjectResponse_projectArn,+    describeProjectResponse_projectName,+    describeProjectResponse_portalId,+    describeProjectResponse_projectCreationDate,+    describeProjectResponse_projectLastUpdateDate,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeProject' smart constructor.+data DescribeProject = DescribeProject'+  { -- | The ID of the project.+    projectId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeProject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'projectId', 'describeProject_projectId' - The ID of the project.+newDescribeProject ::+  -- | 'projectId'+  Prelude.Text ->+  DescribeProject+newDescribeProject pProjectId_ =+  DescribeProject' {projectId = pProjectId_}++-- | The ID of the project.+describeProject_projectId :: Lens.Lens' DescribeProject Prelude.Text+describeProject_projectId = Lens.lens (\DescribeProject' {projectId} -> projectId) (\s@DescribeProject' {} a -> s {projectId = a} :: DescribeProject)++instance Core.AWSRequest DescribeProject where+  type+    AWSResponse DescribeProject =+      DescribeProjectResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeProjectResponse'+            Prelude.<$> (x Data..?> "projectDescription")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "projectId")+            Prelude.<*> (x Data..:> "projectArn")+            Prelude.<*> (x Data..:> "projectName")+            Prelude.<*> (x Data..:> "portalId")+            Prelude.<*> (x Data..:> "projectCreationDate")+            Prelude.<*> (x Data..:> "projectLastUpdateDate")+      )++instance Prelude.Hashable DescribeProject where+  hashWithSalt _salt DescribeProject' {..} =+    _salt `Prelude.hashWithSalt` projectId++instance Prelude.NFData DescribeProject where+  rnf DescribeProject' {..} = Prelude.rnf projectId++instance Data.ToHeaders DescribeProject where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeProject where+  toPath DescribeProject' {..} =+    Prelude.mconcat ["/projects/", Data.toBS projectId]++instance Data.ToQuery DescribeProject where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeProjectResponse' smart constructor.+data DescribeProjectResponse = DescribeProjectResponse'+  { -- | The project\'s description.+    projectDescription :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the project.+    projectId :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the project, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:project\/${ProjectId}@+    projectArn :: Prelude.Text,+    -- | The name of the project.+    projectName :: Prelude.Text,+    -- | The ID of the portal that the project is in.+    portalId :: Prelude.Text,+    -- | The date the project was created, in Unix epoch time.+    projectCreationDate :: Data.POSIX,+    -- | The date the project was last updated, in Unix epoch time.+    projectLastUpdateDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeProjectResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'projectDescription', 'describeProjectResponse_projectDescription' - The project\'s description.+--+-- 'httpStatus', 'describeProjectResponse_httpStatus' - The response's http status code.+--+-- 'projectId', 'describeProjectResponse_projectId' - The ID of the project.+--+-- 'projectArn', 'describeProjectResponse_projectArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the project, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:project\/${ProjectId}@+--+-- 'projectName', 'describeProjectResponse_projectName' - The name of the project.+--+-- 'portalId', 'describeProjectResponse_portalId' - The ID of the portal that the project is in.+--+-- 'projectCreationDate', 'describeProjectResponse_projectCreationDate' - The date the project was created, in Unix epoch time.+--+-- 'projectLastUpdateDate', 'describeProjectResponse_projectLastUpdateDate' - The date the project was last updated, in Unix epoch time.+newDescribeProjectResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'projectId'+  Prelude.Text ->+  -- | 'projectArn'+  Prelude.Text ->+  -- | 'projectName'+  Prelude.Text ->+  -- | 'portalId'+  Prelude.Text ->+  -- | 'projectCreationDate'+  Prelude.UTCTime ->+  -- | 'projectLastUpdateDate'+  Prelude.UTCTime ->+  DescribeProjectResponse+newDescribeProjectResponse+  pHttpStatus_+  pProjectId_+  pProjectArn_+  pProjectName_+  pPortalId_+  pProjectCreationDate_+  pProjectLastUpdateDate_ =+    DescribeProjectResponse'+      { projectDescription =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        projectId = pProjectId_,+        projectArn = pProjectArn_,+        projectName = pProjectName_,+        portalId = pPortalId_,+        projectCreationDate =+          Data._Time Lens.# pProjectCreationDate_,+        projectLastUpdateDate =+          Data._Time Lens.# pProjectLastUpdateDate_+      }++-- | The project\'s description.+describeProjectResponse_projectDescription :: Lens.Lens' DescribeProjectResponse (Prelude.Maybe Prelude.Text)+describeProjectResponse_projectDescription = Lens.lens (\DescribeProjectResponse' {projectDescription} -> projectDescription) (\s@DescribeProjectResponse' {} a -> s {projectDescription = a} :: DescribeProjectResponse)++-- | The response's http status code.+describeProjectResponse_httpStatus :: Lens.Lens' DescribeProjectResponse Prelude.Int+describeProjectResponse_httpStatus = Lens.lens (\DescribeProjectResponse' {httpStatus} -> httpStatus) (\s@DescribeProjectResponse' {} a -> s {httpStatus = a} :: DescribeProjectResponse)++-- | The ID of the project.+describeProjectResponse_projectId :: Lens.Lens' DescribeProjectResponse Prelude.Text+describeProjectResponse_projectId = Lens.lens (\DescribeProjectResponse' {projectId} -> projectId) (\s@DescribeProjectResponse' {} a -> s {projectId = a} :: DescribeProjectResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the project, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:project\/${ProjectId}@+describeProjectResponse_projectArn :: Lens.Lens' DescribeProjectResponse Prelude.Text+describeProjectResponse_projectArn = Lens.lens (\DescribeProjectResponse' {projectArn} -> projectArn) (\s@DescribeProjectResponse' {} a -> s {projectArn = a} :: DescribeProjectResponse)++-- | The name of the project.+describeProjectResponse_projectName :: Lens.Lens' DescribeProjectResponse Prelude.Text+describeProjectResponse_projectName = Lens.lens (\DescribeProjectResponse' {projectName} -> projectName) (\s@DescribeProjectResponse' {} a -> s {projectName = a} :: DescribeProjectResponse)++-- | The ID of the portal that the project is in.+describeProjectResponse_portalId :: Lens.Lens' DescribeProjectResponse Prelude.Text+describeProjectResponse_portalId = Lens.lens (\DescribeProjectResponse' {portalId} -> portalId) (\s@DescribeProjectResponse' {} a -> s {portalId = a} :: DescribeProjectResponse)++-- | The date the project was created, in Unix epoch time.+describeProjectResponse_projectCreationDate :: Lens.Lens' DescribeProjectResponse Prelude.UTCTime+describeProjectResponse_projectCreationDate = Lens.lens (\DescribeProjectResponse' {projectCreationDate} -> projectCreationDate) (\s@DescribeProjectResponse' {} a -> s {projectCreationDate = a} :: DescribeProjectResponse) Prelude.. Data._Time++-- | The date the project was last updated, in Unix epoch time.+describeProjectResponse_projectLastUpdateDate :: Lens.Lens' DescribeProjectResponse Prelude.UTCTime+describeProjectResponse_projectLastUpdateDate = Lens.lens (\DescribeProjectResponse' {projectLastUpdateDate} -> projectLastUpdateDate) (\s@DescribeProjectResponse' {} a -> s {projectLastUpdateDate = a} :: DescribeProjectResponse) Prelude.. Data._Time++instance Prelude.NFData DescribeProjectResponse where+  rnf DescribeProjectResponse' {..} =+    Prelude.rnf projectDescription+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf projectId+      `Prelude.seq` Prelude.rnf projectArn+      `Prelude.seq` Prelude.rnf projectName+      `Prelude.seq` Prelude.rnf portalId+      `Prelude.seq` Prelude.rnf projectCreationDate+      `Prelude.seq` Prelude.rnf projectLastUpdateDate
+ gen/Amazonka/IoTSiteWise/DescribeStorageConfiguration.hs view
@@ -0,0 +1,288 @@+{-# 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.IoTSiteWise.DescribeStorageConfiguration+-- 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 information about the storage configuration for IoT SiteWise.+module Amazonka.IoTSiteWise.DescribeStorageConfiguration+  ( -- * Creating a Request+    DescribeStorageConfiguration (..),+    newDescribeStorageConfiguration,++    -- * Destructuring the Response+    DescribeStorageConfigurationResponse (..),+    newDescribeStorageConfigurationResponse,++    -- * Response Lenses+    describeStorageConfigurationResponse_disassociatedDataStorage,+    describeStorageConfigurationResponse_lastUpdateDate,+    describeStorageConfigurationResponse_multiLayerStorage,+    describeStorageConfigurationResponse_retentionPeriod,+    describeStorageConfigurationResponse_httpStatus,+    describeStorageConfigurationResponse_storageType,+    describeStorageConfigurationResponse_configurationStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeStorageConfiguration' smart constructor.+data DescribeStorageConfiguration = DescribeStorageConfiguration'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeStorageConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDescribeStorageConfiguration ::+  DescribeStorageConfiguration+newDescribeStorageConfiguration =+  DescribeStorageConfiguration'++instance Core.AWSRequest DescribeStorageConfiguration where+  type+    AWSResponse DescribeStorageConfiguration =+      DescribeStorageConfigurationResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeStorageConfigurationResponse'+            Prelude.<$> (x Data..?> "disassociatedDataStorage")+            Prelude.<*> (x Data..?> "lastUpdateDate")+            Prelude.<*> (x Data..?> "multiLayerStorage")+            Prelude.<*> (x Data..?> "retentionPeriod")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "storageType")+            Prelude.<*> (x Data..:> "configurationStatus")+      )++instance+  Prelude.Hashable+    DescribeStorageConfiguration+  where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData DescribeStorageConfiguration where+  rnf _ = ()++instance Data.ToHeaders DescribeStorageConfiguration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeStorageConfiguration where+  toPath =+    Prelude.const "/configuration/account/storage"++instance Data.ToQuery DescribeStorageConfiguration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeStorageConfigurationResponse' smart constructor.+data DescribeStorageConfigurationResponse = DescribeStorageConfigurationResponse'+  { -- | Contains the storage configuration for time series (data streams) that+    -- aren\'t associated with asset properties. The @disassociatedDataStorage@+    -- can be one of the following values:+    --+    -- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated+    --     with asset properties.+    --+    --     After the @disassociatedDataStorage@ is enabled, you can\'t disable+    --     it.+    --+    -- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)+    --     that aren\'t associated with asset properties.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>+    -- in the /IoT SiteWise User Guide/.+    disassociatedDataStorage :: Prelude.Maybe DisassociatedDataStorageState,+    -- | The date the storage configuration was last updated, in Unix epoch time.+    lastUpdateDate :: Prelude.Maybe Data.POSIX,+    -- | Contains information about the storage destination.+    multiLayerStorage :: Prelude.Maybe MultiLayerStorage,+    -- | How many days your data is kept in the hot tier. By default, your data+    -- is kept indefinitely in the hot tier.+    retentionPeriod :: Prelude.Maybe RetentionPeriod,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The storage tier that you specified for your data. The @storageType@+    -- parameter can be one of the following values:+    --+    -- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the+    --     hot tier. The hot tier is a service-managed database.+    --+    -- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the+    --     cold tier and the hot tier. The cold tier is a customer-managed+    --     Amazon S3 bucket.+    storageType :: StorageType,+    configurationStatus :: ConfigurationStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeStorageConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'disassociatedDataStorage', 'describeStorageConfigurationResponse_disassociatedDataStorage' - Contains the storage configuration for time series (data streams) that+-- aren\'t associated with asset properties. The @disassociatedDataStorage@+-- can be one of the following values:+--+-- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated+--     with asset properties.+--+--     After the @disassociatedDataStorage@ is enabled, you can\'t disable+--     it.+--+-- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)+--     that aren\'t associated with asset properties.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>+-- in the /IoT SiteWise User Guide/.+--+-- 'lastUpdateDate', 'describeStorageConfigurationResponse_lastUpdateDate' - The date the storage configuration was last updated, in Unix epoch time.+--+-- 'multiLayerStorage', 'describeStorageConfigurationResponse_multiLayerStorage' - Contains information about the storage destination.+--+-- 'retentionPeriod', 'describeStorageConfigurationResponse_retentionPeriod' - How many days your data is kept in the hot tier. By default, your data+-- is kept indefinitely in the hot tier.+--+-- 'httpStatus', 'describeStorageConfigurationResponse_httpStatus' - The response's http status code.+--+-- 'storageType', 'describeStorageConfigurationResponse_storageType' - The storage tier that you specified for your data. The @storageType@+-- parameter can be one of the following values:+--+-- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the+--     hot tier. The hot tier is a service-managed database.+--+-- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the+--     cold tier and the hot tier. The cold tier is a customer-managed+--     Amazon S3 bucket.+--+-- 'configurationStatus', 'describeStorageConfigurationResponse_configurationStatus' - Undocumented member.+newDescribeStorageConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'storageType'+  StorageType ->+  -- | 'configurationStatus'+  ConfigurationStatus ->+  DescribeStorageConfigurationResponse+newDescribeStorageConfigurationResponse+  pHttpStatus_+  pStorageType_+  pConfigurationStatus_ =+    DescribeStorageConfigurationResponse'+      { disassociatedDataStorage =+          Prelude.Nothing,+        lastUpdateDate = Prelude.Nothing,+        multiLayerStorage = Prelude.Nothing,+        retentionPeriod = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        storageType = pStorageType_,+        configurationStatus =+          pConfigurationStatus_+      }++-- | Contains the storage configuration for time series (data streams) that+-- aren\'t associated with asset properties. The @disassociatedDataStorage@+-- can be one of the following values:+--+-- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated+--     with asset properties.+--+--     After the @disassociatedDataStorage@ is enabled, you can\'t disable+--     it.+--+-- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)+--     that aren\'t associated with asset properties.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>+-- in the /IoT SiteWise User Guide/.+describeStorageConfigurationResponse_disassociatedDataStorage :: Lens.Lens' DescribeStorageConfigurationResponse (Prelude.Maybe DisassociatedDataStorageState)+describeStorageConfigurationResponse_disassociatedDataStorage = Lens.lens (\DescribeStorageConfigurationResponse' {disassociatedDataStorage} -> disassociatedDataStorage) (\s@DescribeStorageConfigurationResponse' {} a -> s {disassociatedDataStorage = a} :: DescribeStorageConfigurationResponse)++-- | The date the storage configuration was last updated, in Unix epoch time.+describeStorageConfigurationResponse_lastUpdateDate :: Lens.Lens' DescribeStorageConfigurationResponse (Prelude.Maybe Prelude.UTCTime)+describeStorageConfigurationResponse_lastUpdateDate = Lens.lens (\DescribeStorageConfigurationResponse' {lastUpdateDate} -> lastUpdateDate) (\s@DescribeStorageConfigurationResponse' {} a -> s {lastUpdateDate = a} :: DescribeStorageConfigurationResponse) Prelude.. Lens.mapping Data._Time++-- | Contains information about the storage destination.+describeStorageConfigurationResponse_multiLayerStorage :: Lens.Lens' DescribeStorageConfigurationResponse (Prelude.Maybe MultiLayerStorage)+describeStorageConfigurationResponse_multiLayerStorage = Lens.lens (\DescribeStorageConfigurationResponse' {multiLayerStorage} -> multiLayerStorage) (\s@DescribeStorageConfigurationResponse' {} a -> s {multiLayerStorage = a} :: DescribeStorageConfigurationResponse)++-- | How many days your data is kept in the hot tier. By default, your data+-- is kept indefinitely in the hot tier.+describeStorageConfigurationResponse_retentionPeriod :: Lens.Lens' DescribeStorageConfigurationResponse (Prelude.Maybe RetentionPeriod)+describeStorageConfigurationResponse_retentionPeriod = Lens.lens (\DescribeStorageConfigurationResponse' {retentionPeriod} -> retentionPeriod) (\s@DescribeStorageConfigurationResponse' {} a -> s {retentionPeriod = a} :: DescribeStorageConfigurationResponse)++-- | The response's http status code.+describeStorageConfigurationResponse_httpStatus :: Lens.Lens' DescribeStorageConfigurationResponse Prelude.Int+describeStorageConfigurationResponse_httpStatus = Lens.lens (\DescribeStorageConfigurationResponse' {httpStatus} -> httpStatus) (\s@DescribeStorageConfigurationResponse' {} a -> s {httpStatus = a} :: DescribeStorageConfigurationResponse)++-- | The storage tier that you specified for your data. The @storageType@+-- parameter can be one of the following values:+--+-- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the+--     hot tier. The hot tier is a service-managed database.+--+-- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the+--     cold tier and the hot tier. The cold tier is a customer-managed+--     Amazon S3 bucket.+describeStorageConfigurationResponse_storageType :: Lens.Lens' DescribeStorageConfigurationResponse StorageType+describeStorageConfigurationResponse_storageType = Lens.lens (\DescribeStorageConfigurationResponse' {storageType} -> storageType) (\s@DescribeStorageConfigurationResponse' {} a -> s {storageType = a} :: DescribeStorageConfigurationResponse)++-- | Undocumented member.+describeStorageConfigurationResponse_configurationStatus :: Lens.Lens' DescribeStorageConfigurationResponse ConfigurationStatus+describeStorageConfigurationResponse_configurationStatus = Lens.lens (\DescribeStorageConfigurationResponse' {configurationStatus} -> configurationStatus) (\s@DescribeStorageConfigurationResponse' {} a -> s {configurationStatus = a} :: DescribeStorageConfigurationResponse)++instance+  Prelude.NFData+    DescribeStorageConfigurationResponse+  where+  rnf DescribeStorageConfigurationResponse' {..} =+    Prelude.rnf disassociatedDataStorage+      `Prelude.seq` Prelude.rnf lastUpdateDate+      `Prelude.seq` Prelude.rnf multiLayerStorage+      `Prelude.seq` Prelude.rnf retentionPeriod+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf storageType+      `Prelude.seq` Prelude.rnf configurationStatus
+ gen/Amazonka/IoTSiteWise/DescribeTimeSeries.hs view
@@ -0,0 +1,327 @@+{-# 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.IoTSiteWise.DescribeTimeSeries+-- 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 information about a time series (data stream).+--+-- To identify a time series, do one of the following:+--+-- -   If the time series isn\'t associated with an asset property, specify+--     the @alias@ of the time series.+--+-- -   If the time series is associated with an asset property, specify one+--     of the following:+--+--     -   The @alias@ of the time series.+--+--     -   The @assetId@ and @propertyId@ that identifies the asset+--         property.+module Amazonka.IoTSiteWise.DescribeTimeSeries+  ( -- * Creating a Request+    DescribeTimeSeries (..),+    newDescribeTimeSeries,++    -- * Request Lenses+    describeTimeSeries_alias,+    describeTimeSeries_assetId,+    describeTimeSeries_propertyId,++    -- * Destructuring the Response+    DescribeTimeSeriesResponse (..),+    newDescribeTimeSeriesResponse,++    -- * Response Lenses+    describeTimeSeriesResponse_alias,+    describeTimeSeriesResponse_assetId,+    describeTimeSeriesResponse_dataTypeSpec,+    describeTimeSeriesResponse_propertyId,+    describeTimeSeriesResponse_httpStatus,+    describeTimeSeriesResponse_timeSeriesId,+    describeTimeSeriesResponse_dataType,+    describeTimeSeriesResponse_timeSeriesCreationDate,+    describeTimeSeriesResponse_timeSeriesLastUpdateDate,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeTimeSeries' smart constructor.+data DescribeTimeSeries = DescribeTimeSeries'+  { -- | The alias that identifies the time series.+    alias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset in which the asset property was created.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeTimeSeries' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'alias', 'describeTimeSeries_alias' - The alias that identifies the time series.+--+-- 'assetId', 'describeTimeSeries_assetId' - The ID of the asset in which the asset property was created.+--+-- 'propertyId', 'describeTimeSeries_propertyId' - The ID of the asset property.+newDescribeTimeSeries ::+  DescribeTimeSeries+newDescribeTimeSeries =+  DescribeTimeSeries'+    { alias = Prelude.Nothing,+      assetId = Prelude.Nothing,+      propertyId = Prelude.Nothing+    }++-- | The alias that identifies the time series.+describeTimeSeries_alias :: Lens.Lens' DescribeTimeSeries (Prelude.Maybe Prelude.Text)+describeTimeSeries_alias = Lens.lens (\DescribeTimeSeries' {alias} -> alias) (\s@DescribeTimeSeries' {} a -> s {alias = a} :: DescribeTimeSeries)++-- | The ID of the asset in which the asset property was created.+describeTimeSeries_assetId :: Lens.Lens' DescribeTimeSeries (Prelude.Maybe Prelude.Text)+describeTimeSeries_assetId = Lens.lens (\DescribeTimeSeries' {assetId} -> assetId) (\s@DescribeTimeSeries' {} a -> s {assetId = a} :: DescribeTimeSeries)++-- | The ID of the asset property.+describeTimeSeries_propertyId :: Lens.Lens' DescribeTimeSeries (Prelude.Maybe Prelude.Text)+describeTimeSeries_propertyId = Lens.lens (\DescribeTimeSeries' {propertyId} -> propertyId) (\s@DescribeTimeSeries' {} a -> s {propertyId = a} :: DescribeTimeSeries)++instance Core.AWSRequest DescribeTimeSeries where+  type+    AWSResponse DescribeTimeSeries =+      DescribeTimeSeriesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeTimeSeriesResponse'+            Prelude.<$> (x Data..?> "alias")+            Prelude.<*> (x Data..?> "assetId")+            Prelude.<*> (x Data..?> "dataTypeSpec")+            Prelude.<*> (x Data..?> "propertyId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "timeSeriesId")+            Prelude.<*> (x Data..:> "dataType")+            Prelude.<*> (x Data..:> "timeSeriesCreationDate")+            Prelude.<*> (x Data..:> "timeSeriesLastUpdateDate")+      )++instance Prelude.Hashable DescribeTimeSeries where+  hashWithSalt _salt DescribeTimeSeries' {..} =+    _salt+      `Prelude.hashWithSalt` alias+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` propertyId++instance Prelude.NFData DescribeTimeSeries where+  rnf DescribeTimeSeries' {..} =+    Prelude.rnf alias+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf propertyId++instance Data.ToHeaders DescribeTimeSeries where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DescribeTimeSeries where+  toPath = Prelude.const "/timeseries/describe/"++instance Data.ToQuery DescribeTimeSeries where+  toQuery DescribeTimeSeries' {..} =+    Prelude.mconcat+      [ "alias" Data.=: alias,+        "assetId" Data.=: assetId,+        "propertyId" Data.=: propertyId+      ]++-- | /See:/ 'newDescribeTimeSeriesResponse' smart constructor.+data DescribeTimeSeriesResponse = DescribeTimeSeriesResponse'+  { -- | The alias that identifies the time series.+    alias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset in which the asset property was created.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The data type of the structure for this time series. This parameter is+    -- required for time series that have the @STRUCT@ data type.+    --+    -- The options for this parameter depend on the type of the composite model+    -- in which you created the asset property that is associated with your+    -- time series. Use @AWS\/ALARM_STATE@ for alarm state in alarm composite+    -- models.+    dataTypeSpec :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The ID of the time series.+    timeSeriesId :: Prelude.Text,+    -- | The data type of the time series.+    --+    -- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to+    -- identify the type of the structure for this time series.+    dataType :: PropertyDataType,+    -- | The date that the time series was created, in Unix epoch time.+    timeSeriesCreationDate :: Data.POSIX,+    -- | The date that the time series was last updated, in Unix epoch time.+    timeSeriesLastUpdateDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeTimeSeriesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'alias', 'describeTimeSeriesResponse_alias' - The alias that identifies the time series.+--+-- 'assetId', 'describeTimeSeriesResponse_assetId' - The ID of the asset in which the asset property was created.+--+-- 'dataTypeSpec', 'describeTimeSeriesResponse_dataTypeSpec' - The data type of the structure for this time series. This parameter is+-- required for time series that have the @STRUCT@ data type.+--+-- The options for this parameter depend on the type of the composite model+-- in which you created the asset property that is associated with your+-- time series. Use @AWS\/ALARM_STATE@ for alarm state in alarm composite+-- models.+--+-- 'propertyId', 'describeTimeSeriesResponse_propertyId' - The ID of the asset property.+--+-- 'httpStatus', 'describeTimeSeriesResponse_httpStatus' - The response's http status code.+--+-- 'timeSeriesId', 'describeTimeSeriesResponse_timeSeriesId' - The ID of the time series.+--+-- 'dataType', 'describeTimeSeriesResponse_dataType' - The data type of the time series.+--+-- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to+-- identify the type of the structure for this time series.+--+-- 'timeSeriesCreationDate', 'describeTimeSeriesResponse_timeSeriesCreationDate' - The date that the time series was created, in Unix epoch time.+--+-- 'timeSeriesLastUpdateDate', 'describeTimeSeriesResponse_timeSeriesLastUpdateDate' - The date that the time series was last updated, in Unix epoch time.+newDescribeTimeSeriesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'timeSeriesId'+  Prelude.Text ->+  -- | 'dataType'+  PropertyDataType ->+  -- | 'timeSeriesCreationDate'+  Prelude.UTCTime ->+  -- | 'timeSeriesLastUpdateDate'+  Prelude.UTCTime ->+  DescribeTimeSeriesResponse+newDescribeTimeSeriesResponse+  pHttpStatus_+  pTimeSeriesId_+  pDataType_+  pTimeSeriesCreationDate_+  pTimeSeriesLastUpdateDate_ =+    DescribeTimeSeriesResponse'+      { alias =+          Prelude.Nothing,+        assetId = Prelude.Nothing,+        dataTypeSpec = Prelude.Nothing,+        propertyId = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        timeSeriesId = pTimeSeriesId_,+        dataType = pDataType_,+        timeSeriesCreationDate =+          Data._Time Lens.# pTimeSeriesCreationDate_,+        timeSeriesLastUpdateDate =+          Data._Time Lens.# pTimeSeriesLastUpdateDate_+      }++-- | The alias that identifies the time series.+describeTimeSeriesResponse_alias :: Lens.Lens' DescribeTimeSeriesResponse (Prelude.Maybe Prelude.Text)+describeTimeSeriesResponse_alias = Lens.lens (\DescribeTimeSeriesResponse' {alias} -> alias) (\s@DescribeTimeSeriesResponse' {} a -> s {alias = a} :: DescribeTimeSeriesResponse)++-- | The ID of the asset in which the asset property was created.+describeTimeSeriesResponse_assetId :: Lens.Lens' DescribeTimeSeriesResponse (Prelude.Maybe Prelude.Text)+describeTimeSeriesResponse_assetId = Lens.lens (\DescribeTimeSeriesResponse' {assetId} -> assetId) (\s@DescribeTimeSeriesResponse' {} a -> s {assetId = a} :: DescribeTimeSeriesResponse)++-- | The data type of the structure for this time series. This parameter is+-- required for time series that have the @STRUCT@ data type.+--+-- The options for this parameter depend on the type of the composite model+-- in which you created the asset property that is associated with your+-- time series. Use @AWS\/ALARM_STATE@ for alarm state in alarm composite+-- models.+describeTimeSeriesResponse_dataTypeSpec :: Lens.Lens' DescribeTimeSeriesResponse (Prelude.Maybe Prelude.Text)+describeTimeSeriesResponse_dataTypeSpec = Lens.lens (\DescribeTimeSeriesResponse' {dataTypeSpec} -> dataTypeSpec) (\s@DescribeTimeSeriesResponse' {} a -> s {dataTypeSpec = a} :: DescribeTimeSeriesResponse)++-- | The ID of the asset property.+describeTimeSeriesResponse_propertyId :: Lens.Lens' DescribeTimeSeriesResponse (Prelude.Maybe Prelude.Text)+describeTimeSeriesResponse_propertyId = Lens.lens (\DescribeTimeSeriesResponse' {propertyId} -> propertyId) (\s@DescribeTimeSeriesResponse' {} a -> s {propertyId = a} :: DescribeTimeSeriesResponse)++-- | The response's http status code.+describeTimeSeriesResponse_httpStatus :: Lens.Lens' DescribeTimeSeriesResponse Prelude.Int+describeTimeSeriesResponse_httpStatus = Lens.lens (\DescribeTimeSeriesResponse' {httpStatus} -> httpStatus) (\s@DescribeTimeSeriesResponse' {} a -> s {httpStatus = a} :: DescribeTimeSeriesResponse)++-- | The ID of the time series.+describeTimeSeriesResponse_timeSeriesId :: Lens.Lens' DescribeTimeSeriesResponse Prelude.Text+describeTimeSeriesResponse_timeSeriesId = Lens.lens (\DescribeTimeSeriesResponse' {timeSeriesId} -> timeSeriesId) (\s@DescribeTimeSeriesResponse' {} a -> s {timeSeriesId = a} :: DescribeTimeSeriesResponse)++-- | The data type of the time series.+--+-- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to+-- identify the type of the structure for this time series.+describeTimeSeriesResponse_dataType :: Lens.Lens' DescribeTimeSeriesResponse PropertyDataType+describeTimeSeriesResponse_dataType = Lens.lens (\DescribeTimeSeriesResponse' {dataType} -> dataType) (\s@DescribeTimeSeriesResponse' {} a -> s {dataType = a} :: DescribeTimeSeriesResponse)++-- | The date that the time series was created, in Unix epoch time.+describeTimeSeriesResponse_timeSeriesCreationDate :: Lens.Lens' DescribeTimeSeriesResponse Prelude.UTCTime+describeTimeSeriesResponse_timeSeriesCreationDate = Lens.lens (\DescribeTimeSeriesResponse' {timeSeriesCreationDate} -> timeSeriesCreationDate) (\s@DescribeTimeSeriesResponse' {} a -> s {timeSeriesCreationDate = a} :: DescribeTimeSeriesResponse) Prelude.. Data._Time++-- | The date that the time series was last updated, in Unix epoch time.+describeTimeSeriesResponse_timeSeriesLastUpdateDate :: Lens.Lens' DescribeTimeSeriesResponse Prelude.UTCTime+describeTimeSeriesResponse_timeSeriesLastUpdateDate = Lens.lens (\DescribeTimeSeriesResponse' {timeSeriesLastUpdateDate} -> timeSeriesLastUpdateDate) (\s@DescribeTimeSeriesResponse' {} a -> s {timeSeriesLastUpdateDate = a} :: DescribeTimeSeriesResponse) Prelude.. Data._Time++instance Prelude.NFData DescribeTimeSeriesResponse where+  rnf DescribeTimeSeriesResponse' {..} =+    Prelude.rnf alias+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf dataTypeSpec+      `Prelude.seq` Prelude.rnf propertyId+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf timeSeriesId+      `Prelude.seq` Prelude.rnf dataType+      `Prelude.seq` Prelude.rnf timeSeriesCreationDate+      `Prelude.seq` Prelude.rnf timeSeriesLastUpdateDate
+ gen/Amazonka/IoTSiteWise/DisassociateAssets.hs view
@@ -0,0 +1,203 @@+{-# 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.IoTSiteWise.DisassociateAssets+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Disassociates a child asset from the given parent asset through a+-- hierarchy defined in the parent asset\'s model.+module Amazonka.IoTSiteWise.DisassociateAssets+  ( -- * Creating a Request+    DisassociateAssets (..),+    newDisassociateAssets,++    -- * Request Lenses+    disassociateAssets_clientToken,+    disassociateAssets_assetId,+    disassociateAssets_hierarchyId,+    disassociateAssets_childAssetId,++    -- * Destructuring the Response+    DisassociateAssetsResponse (..),+    newDisassociateAssetsResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDisassociateAssets' smart constructor.+data DisassociateAssets = DisassociateAssets'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the parent asset from which to disassociate the child asset.+    assetId :: Prelude.Text,+    -- | The ID of a hierarchy in the parent asset\'s model. Hierarchies allow+    -- different groupings of assets to be formed that all come from the same+    -- asset model. You can use the hierarchy ID to identify the correct asset+    -- to disassociate. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+    -- in the /IoT SiteWise User Guide/.+    hierarchyId :: Prelude.Text,+    -- | The ID of the child asset to disassociate.+    childAssetId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateAssets' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'disassociateAssets_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'assetId', 'disassociateAssets_assetId' - The ID of the parent asset from which to disassociate the child asset.+--+-- 'hierarchyId', 'disassociateAssets_hierarchyId' - The ID of a hierarchy in the parent asset\'s model. Hierarchies allow+-- different groupings of assets to be formed that all come from the same+-- asset model. You can use the hierarchy ID to identify the correct asset+-- to disassociate. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+--+-- 'childAssetId', 'disassociateAssets_childAssetId' - The ID of the child asset to disassociate.+newDisassociateAssets ::+  -- | 'assetId'+  Prelude.Text ->+  -- | 'hierarchyId'+  Prelude.Text ->+  -- | 'childAssetId'+  Prelude.Text ->+  DisassociateAssets+newDisassociateAssets+  pAssetId_+  pHierarchyId_+  pChildAssetId_ =+    DisassociateAssets'+      { clientToken = Prelude.Nothing,+        assetId = pAssetId_,+        hierarchyId = pHierarchyId_,+        childAssetId = pChildAssetId_+      }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+disassociateAssets_clientToken :: Lens.Lens' DisassociateAssets (Prelude.Maybe Prelude.Text)+disassociateAssets_clientToken = Lens.lens (\DisassociateAssets' {clientToken} -> clientToken) (\s@DisassociateAssets' {} a -> s {clientToken = a} :: DisassociateAssets)++-- | The ID of the parent asset from which to disassociate the child asset.+disassociateAssets_assetId :: Lens.Lens' DisassociateAssets Prelude.Text+disassociateAssets_assetId = Lens.lens (\DisassociateAssets' {assetId} -> assetId) (\s@DisassociateAssets' {} a -> s {assetId = a} :: DisassociateAssets)++-- | The ID of a hierarchy in the parent asset\'s model. Hierarchies allow+-- different groupings of assets to be formed that all come from the same+-- asset model. You can use the hierarchy ID to identify the correct asset+-- to disassociate. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+disassociateAssets_hierarchyId :: Lens.Lens' DisassociateAssets Prelude.Text+disassociateAssets_hierarchyId = Lens.lens (\DisassociateAssets' {hierarchyId} -> hierarchyId) (\s@DisassociateAssets' {} a -> s {hierarchyId = a} :: DisassociateAssets)++-- | The ID of the child asset to disassociate.+disassociateAssets_childAssetId :: Lens.Lens' DisassociateAssets Prelude.Text+disassociateAssets_childAssetId = Lens.lens (\DisassociateAssets' {childAssetId} -> childAssetId) (\s@DisassociateAssets' {} a -> s {childAssetId = a} :: DisassociateAssets)++instance Core.AWSRequest DisassociateAssets where+  type+    AWSResponse DisassociateAssets =+      DisassociateAssetsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull DisassociateAssetsResponse'++instance Prelude.Hashable DisassociateAssets where+  hashWithSalt _salt DisassociateAssets' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` hierarchyId+      `Prelude.hashWithSalt` childAssetId++instance Prelude.NFData DisassociateAssets where+  rnf DisassociateAssets' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf hierarchyId+      `Prelude.seq` Prelude.rnf childAssetId++instance Data.ToHeaders DisassociateAssets where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DisassociateAssets where+  toJSON DisassociateAssets' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just ("hierarchyId" Data..= hierarchyId),+            Prelude.Just ("childAssetId" Data..= childAssetId)+          ]+      )++instance Data.ToPath DisassociateAssets where+  toPath DisassociateAssets' {..} =+    Prelude.mconcat+      ["/assets/", Data.toBS assetId, "/disassociate"]++instance Data.ToQuery DisassociateAssets where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDisassociateAssetsResponse' smart constructor.+data DisassociateAssetsResponse = DisassociateAssetsResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateAssetsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDisassociateAssetsResponse ::+  DisassociateAssetsResponse+newDisassociateAssetsResponse =+  DisassociateAssetsResponse'++instance Prelude.NFData DisassociateAssetsResponse where+  rnf _ = ()
+ gen/Amazonka/IoTSiteWise/DisassociateTimeSeriesFromAssetProperty.hs view
@@ -0,0 +1,216 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.DisassociateTimeSeriesFromAssetProperty+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Disassociates a time series (data stream) from an asset property.+module Amazonka.IoTSiteWise.DisassociateTimeSeriesFromAssetProperty+  ( -- * Creating a Request+    DisassociateTimeSeriesFromAssetProperty (..),+    newDisassociateTimeSeriesFromAssetProperty,++    -- * Request Lenses+    disassociateTimeSeriesFromAssetProperty_clientToken,+    disassociateTimeSeriesFromAssetProperty_alias,+    disassociateTimeSeriesFromAssetProperty_assetId,+    disassociateTimeSeriesFromAssetProperty_propertyId,++    -- * Destructuring the Response+    DisassociateTimeSeriesFromAssetPropertyResponse (..),+    newDisassociateTimeSeriesFromAssetPropertyResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDisassociateTimeSeriesFromAssetProperty' smart constructor.+data DisassociateTimeSeriesFromAssetProperty = DisassociateTimeSeriesFromAssetProperty'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The alias that identifies the time series.+    alias :: Prelude.Text,+    -- | The ID of the asset in which the asset property was created.+    assetId :: Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateTimeSeriesFromAssetProperty' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'disassociateTimeSeriesFromAssetProperty_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'alias', 'disassociateTimeSeriesFromAssetProperty_alias' - The alias that identifies the time series.+--+-- 'assetId', 'disassociateTimeSeriesFromAssetProperty_assetId' - The ID of the asset in which the asset property was created.+--+-- 'propertyId', 'disassociateTimeSeriesFromAssetProperty_propertyId' - The ID of the asset property.+newDisassociateTimeSeriesFromAssetProperty ::+  -- | 'alias'+  Prelude.Text ->+  -- | 'assetId'+  Prelude.Text ->+  -- | 'propertyId'+  Prelude.Text ->+  DisassociateTimeSeriesFromAssetProperty+newDisassociateTimeSeriesFromAssetProperty+  pAlias_+  pAssetId_+  pPropertyId_ =+    DisassociateTimeSeriesFromAssetProperty'+      { clientToken =+          Prelude.Nothing,+        alias = pAlias_,+        assetId = pAssetId_,+        propertyId = pPropertyId_+      }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+disassociateTimeSeriesFromAssetProperty_clientToken :: Lens.Lens' DisassociateTimeSeriesFromAssetProperty (Prelude.Maybe Prelude.Text)+disassociateTimeSeriesFromAssetProperty_clientToken = Lens.lens (\DisassociateTimeSeriesFromAssetProperty' {clientToken} -> clientToken) (\s@DisassociateTimeSeriesFromAssetProperty' {} a -> s {clientToken = a} :: DisassociateTimeSeriesFromAssetProperty)++-- | The alias that identifies the time series.+disassociateTimeSeriesFromAssetProperty_alias :: Lens.Lens' DisassociateTimeSeriesFromAssetProperty Prelude.Text+disassociateTimeSeriesFromAssetProperty_alias = Lens.lens (\DisassociateTimeSeriesFromAssetProperty' {alias} -> alias) (\s@DisassociateTimeSeriesFromAssetProperty' {} a -> s {alias = a} :: DisassociateTimeSeriesFromAssetProperty)++-- | The ID of the asset in which the asset property was created.+disassociateTimeSeriesFromAssetProperty_assetId :: Lens.Lens' DisassociateTimeSeriesFromAssetProperty Prelude.Text+disassociateTimeSeriesFromAssetProperty_assetId = Lens.lens (\DisassociateTimeSeriesFromAssetProperty' {assetId} -> assetId) (\s@DisassociateTimeSeriesFromAssetProperty' {} a -> s {assetId = a} :: DisassociateTimeSeriesFromAssetProperty)++-- | The ID of the asset property.+disassociateTimeSeriesFromAssetProperty_propertyId :: Lens.Lens' DisassociateTimeSeriesFromAssetProperty Prelude.Text+disassociateTimeSeriesFromAssetProperty_propertyId = Lens.lens (\DisassociateTimeSeriesFromAssetProperty' {propertyId} -> propertyId) (\s@DisassociateTimeSeriesFromAssetProperty' {} a -> s {propertyId = a} :: DisassociateTimeSeriesFromAssetProperty)++instance+  Core.AWSRequest+    DisassociateTimeSeriesFromAssetProperty+  where+  type+    AWSResponse+      DisassociateTimeSeriesFromAssetProperty =+      DisassociateTimeSeriesFromAssetPropertyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      DisassociateTimeSeriesFromAssetPropertyResponse'++instance+  Prelude.Hashable+    DisassociateTimeSeriesFromAssetProperty+  where+  hashWithSalt+    _salt+    DisassociateTimeSeriesFromAssetProperty' {..} =+      _salt+        `Prelude.hashWithSalt` clientToken+        `Prelude.hashWithSalt` alias+        `Prelude.hashWithSalt` assetId+        `Prelude.hashWithSalt` propertyId++instance+  Prelude.NFData+    DisassociateTimeSeriesFromAssetProperty+  where+  rnf DisassociateTimeSeriesFromAssetProperty' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf alias+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf propertyId++instance+  Data.ToHeaders+    DisassociateTimeSeriesFromAssetProperty+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    DisassociateTimeSeriesFromAssetProperty+  where+  toJSON DisassociateTimeSeriesFromAssetProperty' {..} =+    Data.object+      ( Prelude.catMaybes+          [("clientToken" Data..=) Prelude.<$> clientToken]+      )++instance+  Data.ToPath+    DisassociateTimeSeriesFromAssetProperty+  where+  toPath = Prelude.const "/timeseries/disassociate/"++instance+  Data.ToQuery+    DisassociateTimeSeriesFromAssetProperty+  where+  toQuery DisassociateTimeSeriesFromAssetProperty' {..} =+    Prelude.mconcat+      [ "alias" Data.=: alias,+        "assetId" Data.=: assetId,+        "propertyId" Data.=: propertyId+      ]++-- | /See:/ 'newDisassociateTimeSeriesFromAssetPropertyResponse' smart constructor.+data DisassociateTimeSeriesFromAssetPropertyResponse = DisassociateTimeSeriesFromAssetPropertyResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateTimeSeriesFromAssetPropertyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDisassociateTimeSeriesFromAssetPropertyResponse ::+  DisassociateTimeSeriesFromAssetPropertyResponse+newDisassociateTimeSeriesFromAssetPropertyResponse =+  DisassociateTimeSeriesFromAssetPropertyResponse'++instance+  Prelude.NFData+    DisassociateTimeSeriesFromAssetPropertyResponse+  where+  rnf _ = ()
+ gen/Amazonka/IoTSiteWise/GetAssetPropertyAggregates.hs view
@@ -0,0 +1,397 @@+{-# 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.IoTSiteWise.GetAssetPropertyAggregates+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets aggregated values for an asset property. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#aggregates Querying aggregates>+-- in the /IoT SiteWise User Guide/.+--+-- To identify an asset property, you must specify one of the following:+--+-- -   The @assetId@ and @propertyId@ of an asset property.+--+-- -   A @propertyAlias@, which is a data stream alias (for example,+--     @\/company\/windfarm\/3\/turbine\/7\/temperature@). To define an+--     asset property\'s alias, see+--     <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.GetAssetPropertyAggregates+  ( -- * Creating a Request+    GetAssetPropertyAggregates (..),+    newGetAssetPropertyAggregates,++    -- * Request Lenses+    getAssetPropertyAggregates_assetId,+    getAssetPropertyAggregates_maxResults,+    getAssetPropertyAggregates_nextToken,+    getAssetPropertyAggregates_propertyAlias,+    getAssetPropertyAggregates_propertyId,+    getAssetPropertyAggregates_qualities,+    getAssetPropertyAggregates_timeOrdering,+    getAssetPropertyAggregates_aggregateTypes,+    getAssetPropertyAggregates_resolution,+    getAssetPropertyAggregates_startDate,+    getAssetPropertyAggregates_endDate,++    -- * Destructuring the Response+    GetAssetPropertyAggregatesResponse (..),+    newGetAssetPropertyAggregatesResponse,++    -- * Response Lenses+    getAssetPropertyAggregatesResponse_nextToken,+    getAssetPropertyAggregatesResponse_httpStatus,+    getAssetPropertyAggregatesResponse_aggregatedValues,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetAssetPropertyAggregates' smart constructor.+data GetAssetPropertyAggregates = GetAssetPropertyAggregates'+  { -- | The ID of the asset.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of results to return for each paginated request.+    --+    -- Default: 100+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    propertyAlias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Maybe Prelude.Text,+    -- | The quality by which to filter asset data.+    qualities :: Prelude.Maybe (Prelude.NonEmpty Quality),+    -- | The chronological sorting order of the requested information.+    --+    -- Default: @ASCENDING@+    timeOrdering :: Prelude.Maybe TimeOrdering,+    -- | The data aggregating function.+    aggregateTypes :: Prelude.NonEmpty AggregateType,+    -- | The time interval over which to aggregate data.+    resolution :: Prelude.Text,+    -- | The exclusive start of the range from which to query historical data,+    -- expressed in seconds in Unix epoch time.+    startDate :: Data.POSIX,+    -- | The inclusive end of the range from which to query historical data,+    -- expressed in seconds in Unix epoch time.+    endDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAssetPropertyAggregates' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetId', 'getAssetPropertyAggregates_assetId' - The ID of the asset.+--+-- 'maxResults', 'getAssetPropertyAggregates_maxResults' - The maximum number of results to return for each paginated request.+--+-- Default: 100+--+-- 'nextToken', 'getAssetPropertyAggregates_nextToken' - The token to be used for the next set of paginated results.+--+-- 'propertyAlias', 'getAssetPropertyAggregates_propertyAlias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- 'propertyId', 'getAssetPropertyAggregates_propertyId' - The ID of the asset property.+--+-- 'qualities', 'getAssetPropertyAggregates_qualities' - The quality by which to filter asset data.+--+-- 'timeOrdering', 'getAssetPropertyAggregates_timeOrdering' - The chronological sorting order of the requested information.+--+-- Default: @ASCENDING@+--+-- 'aggregateTypes', 'getAssetPropertyAggregates_aggregateTypes' - The data aggregating function.+--+-- 'resolution', 'getAssetPropertyAggregates_resolution' - The time interval over which to aggregate data.+--+-- 'startDate', 'getAssetPropertyAggregates_startDate' - The exclusive start of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+--+-- 'endDate', 'getAssetPropertyAggregates_endDate' - The inclusive end of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+newGetAssetPropertyAggregates ::+  -- | 'aggregateTypes'+  Prelude.NonEmpty AggregateType ->+  -- | 'resolution'+  Prelude.Text ->+  -- | 'startDate'+  Prelude.UTCTime ->+  -- | 'endDate'+  Prelude.UTCTime ->+  GetAssetPropertyAggregates+newGetAssetPropertyAggregates+  pAggregateTypes_+  pResolution_+  pStartDate_+  pEndDate_ =+    GetAssetPropertyAggregates'+      { assetId =+          Prelude.Nothing,+        maxResults = Prelude.Nothing,+        nextToken = Prelude.Nothing,+        propertyAlias = Prelude.Nothing,+        propertyId = Prelude.Nothing,+        qualities = Prelude.Nothing,+        timeOrdering = Prelude.Nothing,+        aggregateTypes =+          Lens.coerced Lens.# pAggregateTypes_,+        resolution = pResolution_,+        startDate = Data._Time Lens.# pStartDate_,+        endDate = Data._Time Lens.# pEndDate_+      }++-- | The ID of the asset.+getAssetPropertyAggregates_assetId :: Lens.Lens' GetAssetPropertyAggregates (Prelude.Maybe Prelude.Text)+getAssetPropertyAggregates_assetId = Lens.lens (\GetAssetPropertyAggregates' {assetId} -> assetId) (\s@GetAssetPropertyAggregates' {} a -> s {assetId = a} :: GetAssetPropertyAggregates)++-- | The maximum number of results to return for each paginated request.+--+-- Default: 100+getAssetPropertyAggregates_maxResults :: Lens.Lens' GetAssetPropertyAggregates (Prelude.Maybe Prelude.Natural)+getAssetPropertyAggregates_maxResults = Lens.lens (\GetAssetPropertyAggregates' {maxResults} -> maxResults) (\s@GetAssetPropertyAggregates' {} a -> s {maxResults = a} :: GetAssetPropertyAggregates)++-- | The token to be used for the next set of paginated results.+getAssetPropertyAggregates_nextToken :: Lens.Lens' GetAssetPropertyAggregates (Prelude.Maybe Prelude.Text)+getAssetPropertyAggregates_nextToken = Lens.lens (\GetAssetPropertyAggregates' {nextToken} -> nextToken) (\s@GetAssetPropertyAggregates' {} a -> s {nextToken = a} :: GetAssetPropertyAggregates)++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+getAssetPropertyAggregates_propertyAlias :: Lens.Lens' GetAssetPropertyAggregates (Prelude.Maybe Prelude.Text)+getAssetPropertyAggregates_propertyAlias = Lens.lens (\GetAssetPropertyAggregates' {propertyAlias} -> propertyAlias) (\s@GetAssetPropertyAggregates' {} a -> s {propertyAlias = a} :: GetAssetPropertyAggregates)++-- | The ID of the asset property.+getAssetPropertyAggregates_propertyId :: Lens.Lens' GetAssetPropertyAggregates (Prelude.Maybe Prelude.Text)+getAssetPropertyAggregates_propertyId = Lens.lens (\GetAssetPropertyAggregates' {propertyId} -> propertyId) (\s@GetAssetPropertyAggregates' {} a -> s {propertyId = a} :: GetAssetPropertyAggregates)++-- | The quality by which to filter asset data.+getAssetPropertyAggregates_qualities :: Lens.Lens' GetAssetPropertyAggregates (Prelude.Maybe (Prelude.NonEmpty Quality))+getAssetPropertyAggregates_qualities = Lens.lens (\GetAssetPropertyAggregates' {qualities} -> qualities) (\s@GetAssetPropertyAggregates' {} a -> s {qualities = a} :: GetAssetPropertyAggregates) Prelude.. Lens.mapping Lens.coerced++-- | The chronological sorting order of the requested information.+--+-- Default: @ASCENDING@+getAssetPropertyAggregates_timeOrdering :: Lens.Lens' GetAssetPropertyAggregates (Prelude.Maybe TimeOrdering)+getAssetPropertyAggregates_timeOrdering = Lens.lens (\GetAssetPropertyAggregates' {timeOrdering} -> timeOrdering) (\s@GetAssetPropertyAggregates' {} a -> s {timeOrdering = a} :: GetAssetPropertyAggregates)++-- | The data aggregating function.+getAssetPropertyAggregates_aggregateTypes :: Lens.Lens' GetAssetPropertyAggregates (Prelude.NonEmpty AggregateType)+getAssetPropertyAggregates_aggregateTypes = Lens.lens (\GetAssetPropertyAggregates' {aggregateTypes} -> aggregateTypes) (\s@GetAssetPropertyAggregates' {} a -> s {aggregateTypes = a} :: GetAssetPropertyAggregates) Prelude.. Lens.coerced++-- | The time interval over which to aggregate data.+getAssetPropertyAggregates_resolution :: Lens.Lens' GetAssetPropertyAggregates Prelude.Text+getAssetPropertyAggregates_resolution = Lens.lens (\GetAssetPropertyAggregates' {resolution} -> resolution) (\s@GetAssetPropertyAggregates' {} a -> s {resolution = a} :: GetAssetPropertyAggregates)++-- | The exclusive start of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+getAssetPropertyAggregates_startDate :: Lens.Lens' GetAssetPropertyAggregates Prelude.UTCTime+getAssetPropertyAggregates_startDate = Lens.lens (\GetAssetPropertyAggregates' {startDate} -> startDate) (\s@GetAssetPropertyAggregates' {} a -> s {startDate = a} :: GetAssetPropertyAggregates) Prelude.. Data._Time++-- | The inclusive end of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+getAssetPropertyAggregates_endDate :: Lens.Lens' GetAssetPropertyAggregates Prelude.UTCTime+getAssetPropertyAggregates_endDate = Lens.lens (\GetAssetPropertyAggregates' {endDate} -> endDate) (\s@GetAssetPropertyAggregates' {} a -> s {endDate = a} :: GetAssetPropertyAggregates) Prelude.. Data._Time++instance Core.AWSPager GetAssetPropertyAggregates where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? getAssetPropertyAggregatesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. getAssetPropertyAggregatesResponse_aggregatedValues+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& getAssetPropertyAggregates_nextToken+          Lens..~ rs+          Lens.^? getAssetPropertyAggregatesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest GetAssetPropertyAggregates where+  type+    AWSResponse GetAssetPropertyAggregates =+      GetAssetPropertyAggregatesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetAssetPropertyAggregatesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "aggregatedValues"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable GetAssetPropertyAggregates where+  hashWithSalt _salt GetAssetPropertyAggregates' {..} =+    _salt+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` propertyAlias+      `Prelude.hashWithSalt` propertyId+      `Prelude.hashWithSalt` qualities+      `Prelude.hashWithSalt` timeOrdering+      `Prelude.hashWithSalt` aggregateTypes+      `Prelude.hashWithSalt` resolution+      `Prelude.hashWithSalt` startDate+      `Prelude.hashWithSalt` endDate++instance Prelude.NFData GetAssetPropertyAggregates where+  rnf GetAssetPropertyAggregates' {..} =+    Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf propertyAlias+      `Prelude.seq` Prelude.rnf propertyId+      `Prelude.seq` Prelude.rnf qualities+      `Prelude.seq` Prelude.rnf timeOrdering+      `Prelude.seq` Prelude.rnf aggregateTypes+      `Prelude.seq` Prelude.rnf resolution+      `Prelude.seq` Prelude.rnf startDate+      `Prelude.seq` Prelude.rnf endDate++instance Data.ToHeaders GetAssetPropertyAggregates where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetAssetPropertyAggregates where+  toPath = Prelude.const "/properties/aggregates"++instance Data.ToQuery GetAssetPropertyAggregates where+  toQuery GetAssetPropertyAggregates' {..} =+    Prelude.mconcat+      [ "assetId" Data.=: assetId,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "propertyAlias" Data.=: propertyAlias,+        "propertyId" Data.=: propertyId,+        "qualities"+          Data.=: Data.toQuery+            (Data.toQueryList "member" Prelude.<$> qualities),+        "timeOrdering" Data.=: timeOrdering,+        "aggregateTypes"+          Data.=: Data.toQueryList "member" aggregateTypes,+        "resolution" Data.=: resolution,+        "startDate" Data.=: startDate,+        "endDate" Data.=: endDate+      ]++-- | /See:/ 'newGetAssetPropertyAggregatesResponse' smart constructor.+data GetAssetPropertyAggregatesResponse = GetAssetPropertyAggregatesResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The requested aggregated values.+    aggregatedValues :: [AggregatedValue]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAssetPropertyAggregatesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getAssetPropertyAggregatesResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'getAssetPropertyAggregatesResponse_httpStatus' - The response's http status code.+--+-- 'aggregatedValues', 'getAssetPropertyAggregatesResponse_aggregatedValues' - The requested aggregated values.+newGetAssetPropertyAggregatesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetAssetPropertyAggregatesResponse+newGetAssetPropertyAggregatesResponse pHttpStatus_ =+  GetAssetPropertyAggregatesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      aggregatedValues = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+getAssetPropertyAggregatesResponse_nextToken :: Lens.Lens' GetAssetPropertyAggregatesResponse (Prelude.Maybe Prelude.Text)+getAssetPropertyAggregatesResponse_nextToken = Lens.lens (\GetAssetPropertyAggregatesResponse' {nextToken} -> nextToken) (\s@GetAssetPropertyAggregatesResponse' {} a -> s {nextToken = a} :: GetAssetPropertyAggregatesResponse)++-- | The response's http status code.+getAssetPropertyAggregatesResponse_httpStatus :: Lens.Lens' GetAssetPropertyAggregatesResponse Prelude.Int+getAssetPropertyAggregatesResponse_httpStatus = Lens.lens (\GetAssetPropertyAggregatesResponse' {httpStatus} -> httpStatus) (\s@GetAssetPropertyAggregatesResponse' {} a -> s {httpStatus = a} :: GetAssetPropertyAggregatesResponse)++-- | The requested aggregated values.+getAssetPropertyAggregatesResponse_aggregatedValues :: Lens.Lens' GetAssetPropertyAggregatesResponse [AggregatedValue]+getAssetPropertyAggregatesResponse_aggregatedValues = Lens.lens (\GetAssetPropertyAggregatesResponse' {aggregatedValues} -> aggregatedValues) (\s@GetAssetPropertyAggregatesResponse' {} a -> s {aggregatedValues = a} :: GetAssetPropertyAggregatesResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    GetAssetPropertyAggregatesResponse+  where+  rnf GetAssetPropertyAggregatesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf aggregatedValues
+ gen/Amazonka/IoTSiteWise/GetAssetPropertyValue.hs view
@@ -0,0 +1,214 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.GetAssetPropertyValue+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets an asset property\'s current value. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#current-values Querying current values>+-- in the /IoT SiteWise User Guide/.+--+-- To identify an asset property, you must specify one of the following:+--+-- -   The @assetId@ and @propertyId@ of an asset property.+--+-- -   A @propertyAlias@, which is a data stream alias (for example,+--     @\/company\/windfarm\/3\/turbine\/7\/temperature@). To define an+--     asset property\'s alias, see+--     <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+module Amazonka.IoTSiteWise.GetAssetPropertyValue+  ( -- * Creating a Request+    GetAssetPropertyValue (..),+    newGetAssetPropertyValue,++    -- * Request Lenses+    getAssetPropertyValue_assetId,+    getAssetPropertyValue_propertyAlias,+    getAssetPropertyValue_propertyId,++    -- * Destructuring the Response+    GetAssetPropertyValueResponse (..),+    newGetAssetPropertyValueResponse,++    -- * Response Lenses+    getAssetPropertyValueResponse_propertyValue,+    getAssetPropertyValueResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetAssetPropertyValue' smart constructor.+data GetAssetPropertyValue = GetAssetPropertyValue'+  { -- | The ID of the asset.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    propertyAlias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAssetPropertyValue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetId', 'getAssetPropertyValue_assetId' - The ID of the asset.+--+-- 'propertyAlias', 'getAssetPropertyValue_propertyAlias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- 'propertyId', 'getAssetPropertyValue_propertyId' - The ID of the asset property.+newGetAssetPropertyValue ::+  GetAssetPropertyValue+newGetAssetPropertyValue =+  GetAssetPropertyValue'+    { assetId = Prelude.Nothing,+      propertyAlias = Prelude.Nothing,+      propertyId = Prelude.Nothing+    }++-- | The ID of the asset.+getAssetPropertyValue_assetId :: Lens.Lens' GetAssetPropertyValue (Prelude.Maybe Prelude.Text)+getAssetPropertyValue_assetId = Lens.lens (\GetAssetPropertyValue' {assetId} -> assetId) (\s@GetAssetPropertyValue' {} a -> s {assetId = a} :: GetAssetPropertyValue)++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+getAssetPropertyValue_propertyAlias :: Lens.Lens' GetAssetPropertyValue (Prelude.Maybe Prelude.Text)+getAssetPropertyValue_propertyAlias = Lens.lens (\GetAssetPropertyValue' {propertyAlias} -> propertyAlias) (\s@GetAssetPropertyValue' {} a -> s {propertyAlias = a} :: GetAssetPropertyValue)++-- | The ID of the asset property.+getAssetPropertyValue_propertyId :: Lens.Lens' GetAssetPropertyValue (Prelude.Maybe Prelude.Text)+getAssetPropertyValue_propertyId = Lens.lens (\GetAssetPropertyValue' {propertyId} -> propertyId) (\s@GetAssetPropertyValue' {} a -> s {propertyId = a} :: GetAssetPropertyValue)++instance Core.AWSRequest GetAssetPropertyValue where+  type+    AWSResponse GetAssetPropertyValue =+      GetAssetPropertyValueResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetAssetPropertyValueResponse'+            Prelude.<$> (x Data..?> "propertyValue")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetAssetPropertyValue where+  hashWithSalt _salt GetAssetPropertyValue' {..} =+    _salt+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` propertyAlias+      `Prelude.hashWithSalt` propertyId++instance Prelude.NFData GetAssetPropertyValue where+  rnf GetAssetPropertyValue' {..} =+    Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf propertyAlias+      `Prelude.seq` Prelude.rnf propertyId++instance Data.ToHeaders GetAssetPropertyValue where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetAssetPropertyValue where+  toPath = Prelude.const "/properties/latest"++instance Data.ToQuery GetAssetPropertyValue where+  toQuery GetAssetPropertyValue' {..} =+    Prelude.mconcat+      [ "assetId" Data.=: assetId,+        "propertyAlias" Data.=: propertyAlias,+        "propertyId" Data.=: propertyId+      ]++-- | /See:/ 'newGetAssetPropertyValueResponse' smart constructor.+data GetAssetPropertyValueResponse = GetAssetPropertyValueResponse'+  { -- | The current asset property value.+    propertyValue :: Prelude.Maybe AssetPropertyValue,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAssetPropertyValueResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'propertyValue', 'getAssetPropertyValueResponse_propertyValue' - The current asset property value.+--+-- 'httpStatus', 'getAssetPropertyValueResponse_httpStatus' - The response's http status code.+newGetAssetPropertyValueResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetAssetPropertyValueResponse+newGetAssetPropertyValueResponse pHttpStatus_ =+  GetAssetPropertyValueResponse'+    { propertyValue =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The current asset property value.+getAssetPropertyValueResponse_propertyValue :: Lens.Lens' GetAssetPropertyValueResponse (Prelude.Maybe AssetPropertyValue)+getAssetPropertyValueResponse_propertyValue = Lens.lens (\GetAssetPropertyValueResponse' {propertyValue} -> propertyValue) (\s@GetAssetPropertyValueResponse' {} a -> s {propertyValue = a} :: GetAssetPropertyValueResponse)++-- | The response's http status code.+getAssetPropertyValueResponse_httpStatus :: Lens.Lens' GetAssetPropertyValueResponse Prelude.Int+getAssetPropertyValueResponse_httpStatus = Lens.lens (\GetAssetPropertyValueResponse' {httpStatus} -> httpStatus) (\s@GetAssetPropertyValueResponse' {} a -> s {httpStatus = a} :: GetAssetPropertyValueResponse)++instance Prelude.NFData GetAssetPropertyValueResponse where+  rnf GetAssetPropertyValueResponse' {..} =+    Prelude.rnf propertyValue+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/GetAssetPropertyValueHistory.hs view
@@ -0,0 +1,362 @@+{-# 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.IoTSiteWise.GetAssetPropertyValueHistory+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Gets the history of an asset property\'s values. For more information,+-- see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#historical-values Querying historical values>+-- in the /IoT SiteWise User Guide/.+--+-- To identify an asset property, you must specify one of the following:+--+-- -   The @assetId@ and @propertyId@ of an asset property.+--+-- -   A @propertyAlias@, which is a data stream alias (for example,+--     @\/company\/windfarm\/3\/turbine\/7\/temperature@). To define an+--     asset property\'s alias, see+--     <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.GetAssetPropertyValueHistory+  ( -- * Creating a Request+    GetAssetPropertyValueHistory (..),+    newGetAssetPropertyValueHistory,++    -- * Request Lenses+    getAssetPropertyValueHistory_assetId,+    getAssetPropertyValueHistory_endDate,+    getAssetPropertyValueHistory_maxResults,+    getAssetPropertyValueHistory_nextToken,+    getAssetPropertyValueHistory_propertyAlias,+    getAssetPropertyValueHistory_propertyId,+    getAssetPropertyValueHistory_qualities,+    getAssetPropertyValueHistory_startDate,+    getAssetPropertyValueHistory_timeOrdering,++    -- * Destructuring the Response+    GetAssetPropertyValueHistoryResponse (..),+    newGetAssetPropertyValueHistoryResponse,++    -- * Response Lenses+    getAssetPropertyValueHistoryResponse_nextToken,+    getAssetPropertyValueHistoryResponse_httpStatus,+    getAssetPropertyValueHistoryResponse_assetPropertyValueHistory,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetAssetPropertyValueHistory' smart constructor.+data GetAssetPropertyValueHistory = GetAssetPropertyValueHistory'+  { -- | The ID of the asset.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The inclusive end of the range from which to query historical data,+    -- expressed in seconds in Unix epoch time.+    endDate :: Prelude.Maybe Data.POSIX,+    -- | The maximum number of results to return for each paginated request.+    --+    -- Default: 100+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    propertyAlias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Maybe Prelude.Text,+    -- | The quality by which to filter asset data.+    qualities :: Prelude.Maybe (Prelude.NonEmpty Quality),+    -- | The exclusive start of the range from which to query historical data,+    -- expressed in seconds in Unix epoch time.+    startDate :: Prelude.Maybe Data.POSIX,+    -- | The chronological sorting order of the requested information.+    --+    -- Default: @ASCENDING@+    timeOrdering :: Prelude.Maybe TimeOrdering+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAssetPropertyValueHistory' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetId', 'getAssetPropertyValueHistory_assetId' - The ID of the asset.+--+-- 'endDate', 'getAssetPropertyValueHistory_endDate' - The inclusive end of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+--+-- 'maxResults', 'getAssetPropertyValueHistory_maxResults' - The maximum number of results to return for each paginated request.+--+-- Default: 100+--+-- 'nextToken', 'getAssetPropertyValueHistory_nextToken' - The token to be used for the next set of paginated results.+--+-- 'propertyAlias', 'getAssetPropertyValueHistory_propertyAlias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- 'propertyId', 'getAssetPropertyValueHistory_propertyId' - The ID of the asset property.+--+-- 'qualities', 'getAssetPropertyValueHistory_qualities' - The quality by which to filter asset data.+--+-- 'startDate', 'getAssetPropertyValueHistory_startDate' - The exclusive start of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+--+-- 'timeOrdering', 'getAssetPropertyValueHistory_timeOrdering' - The chronological sorting order of the requested information.+--+-- Default: @ASCENDING@+newGetAssetPropertyValueHistory ::+  GetAssetPropertyValueHistory+newGetAssetPropertyValueHistory =+  GetAssetPropertyValueHistory'+    { assetId =+        Prelude.Nothing,+      endDate = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      propertyAlias = Prelude.Nothing,+      propertyId = Prelude.Nothing,+      qualities = Prelude.Nothing,+      startDate = Prelude.Nothing,+      timeOrdering = Prelude.Nothing+    }++-- | The ID of the asset.+getAssetPropertyValueHistory_assetId :: Lens.Lens' GetAssetPropertyValueHistory (Prelude.Maybe Prelude.Text)+getAssetPropertyValueHistory_assetId = Lens.lens (\GetAssetPropertyValueHistory' {assetId} -> assetId) (\s@GetAssetPropertyValueHistory' {} a -> s {assetId = a} :: GetAssetPropertyValueHistory)++-- | The inclusive end of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+getAssetPropertyValueHistory_endDate :: Lens.Lens' GetAssetPropertyValueHistory (Prelude.Maybe Prelude.UTCTime)+getAssetPropertyValueHistory_endDate = Lens.lens (\GetAssetPropertyValueHistory' {endDate} -> endDate) (\s@GetAssetPropertyValueHistory' {} a -> s {endDate = a} :: GetAssetPropertyValueHistory) Prelude.. Lens.mapping Data._Time++-- | The maximum number of results to return for each paginated request.+--+-- Default: 100+getAssetPropertyValueHistory_maxResults :: Lens.Lens' GetAssetPropertyValueHistory (Prelude.Maybe Prelude.Natural)+getAssetPropertyValueHistory_maxResults = Lens.lens (\GetAssetPropertyValueHistory' {maxResults} -> maxResults) (\s@GetAssetPropertyValueHistory' {} a -> s {maxResults = a} :: GetAssetPropertyValueHistory)++-- | The token to be used for the next set of paginated results.+getAssetPropertyValueHistory_nextToken :: Lens.Lens' GetAssetPropertyValueHistory (Prelude.Maybe Prelude.Text)+getAssetPropertyValueHistory_nextToken = Lens.lens (\GetAssetPropertyValueHistory' {nextToken} -> nextToken) (\s@GetAssetPropertyValueHistory' {} a -> s {nextToken = a} :: GetAssetPropertyValueHistory)++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+getAssetPropertyValueHistory_propertyAlias :: Lens.Lens' GetAssetPropertyValueHistory (Prelude.Maybe Prelude.Text)+getAssetPropertyValueHistory_propertyAlias = Lens.lens (\GetAssetPropertyValueHistory' {propertyAlias} -> propertyAlias) (\s@GetAssetPropertyValueHistory' {} a -> s {propertyAlias = a} :: GetAssetPropertyValueHistory)++-- | The ID of the asset property.+getAssetPropertyValueHistory_propertyId :: Lens.Lens' GetAssetPropertyValueHistory (Prelude.Maybe Prelude.Text)+getAssetPropertyValueHistory_propertyId = Lens.lens (\GetAssetPropertyValueHistory' {propertyId} -> propertyId) (\s@GetAssetPropertyValueHistory' {} a -> s {propertyId = a} :: GetAssetPropertyValueHistory)++-- | The quality by which to filter asset data.+getAssetPropertyValueHistory_qualities :: Lens.Lens' GetAssetPropertyValueHistory (Prelude.Maybe (Prelude.NonEmpty Quality))+getAssetPropertyValueHistory_qualities = Lens.lens (\GetAssetPropertyValueHistory' {qualities} -> qualities) (\s@GetAssetPropertyValueHistory' {} a -> s {qualities = a} :: GetAssetPropertyValueHistory) Prelude.. Lens.mapping Lens.coerced++-- | The exclusive start of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+getAssetPropertyValueHistory_startDate :: Lens.Lens' GetAssetPropertyValueHistory (Prelude.Maybe Prelude.UTCTime)+getAssetPropertyValueHistory_startDate = Lens.lens (\GetAssetPropertyValueHistory' {startDate} -> startDate) (\s@GetAssetPropertyValueHistory' {} a -> s {startDate = a} :: GetAssetPropertyValueHistory) Prelude.. Lens.mapping Data._Time++-- | The chronological sorting order of the requested information.+--+-- Default: @ASCENDING@+getAssetPropertyValueHistory_timeOrdering :: Lens.Lens' GetAssetPropertyValueHistory (Prelude.Maybe TimeOrdering)+getAssetPropertyValueHistory_timeOrdering = Lens.lens (\GetAssetPropertyValueHistory' {timeOrdering} -> timeOrdering) (\s@GetAssetPropertyValueHistory' {} a -> s {timeOrdering = a} :: GetAssetPropertyValueHistory)++instance Core.AWSPager GetAssetPropertyValueHistory where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? getAssetPropertyValueHistoryResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. getAssetPropertyValueHistoryResponse_assetPropertyValueHistory+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& getAssetPropertyValueHistory_nextToken+          Lens..~ rs+          Lens.^? getAssetPropertyValueHistoryResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest GetAssetPropertyValueHistory where+  type+    AWSResponse GetAssetPropertyValueHistory =+      GetAssetPropertyValueHistoryResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetAssetPropertyValueHistoryResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "assetPropertyValueHistory"+                            Core..!@ Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    GetAssetPropertyValueHistory+  where+  hashWithSalt _salt GetAssetPropertyValueHistory' {..} =+    _salt+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` endDate+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` propertyAlias+      `Prelude.hashWithSalt` propertyId+      `Prelude.hashWithSalt` qualities+      `Prelude.hashWithSalt` startDate+      `Prelude.hashWithSalt` timeOrdering++instance Prelude.NFData GetAssetPropertyValueHistory where+  rnf GetAssetPropertyValueHistory' {..} =+    Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf endDate+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf propertyAlias+      `Prelude.seq` Prelude.rnf propertyId+      `Prelude.seq` Prelude.rnf qualities+      `Prelude.seq` Prelude.rnf startDate+      `Prelude.seq` Prelude.rnf timeOrdering++instance Data.ToHeaders GetAssetPropertyValueHistory where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetAssetPropertyValueHistory where+  toPath = Prelude.const "/properties/history"++instance Data.ToQuery GetAssetPropertyValueHistory where+  toQuery GetAssetPropertyValueHistory' {..} =+    Prelude.mconcat+      [ "assetId" Data.=: assetId,+        "endDate" Data.=: endDate,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "propertyAlias" Data.=: propertyAlias,+        "propertyId" Data.=: propertyId,+        "qualities"+          Data.=: Data.toQuery+            (Data.toQueryList "member" Prelude.<$> qualities),+        "startDate" Data.=: startDate,+        "timeOrdering" Data.=: timeOrdering+      ]++-- | /See:/ 'newGetAssetPropertyValueHistoryResponse' smart constructor.+data GetAssetPropertyValueHistoryResponse = GetAssetPropertyValueHistoryResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The asset property\'s value history.+    assetPropertyValueHistory :: [AssetPropertyValue]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAssetPropertyValueHistoryResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getAssetPropertyValueHistoryResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'getAssetPropertyValueHistoryResponse_httpStatus' - The response's http status code.+--+-- 'assetPropertyValueHistory', 'getAssetPropertyValueHistoryResponse_assetPropertyValueHistory' - The asset property\'s value history.+newGetAssetPropertyValueHistoryResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetAssetPropertyValueHistoryResponse+newGetAssetPropertyValueHistoryResponse pHttpStatus_ =+  GetAssetPropertyValueHistoryResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      assetPropertyValueHistory =+        Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+getAssetPropertyValueHistoryResponse_nextToken :: Lens.Lens' GetAssetPropertyValueHistoryResponse (Prelude.Maybe Prelude.Text)+getAssetPropertyValueHistoryResponse_nextToken = Lens.lens (\GetAssetPropertyValueHistoryResponse' {nextToken} -> nextToken) (\s@GetAssetPropertyValueHistoryResponse' {} a -> s {nextToken = a} :: GetAssetPropertyValueHistoryResponse)++-- | The response's http status code.+getAssetPropertyValueHistoryResponse_httpStatus :: Lens.Lens' GetAssetPropertyValueHistoryResponse Prelude.Int+getAssetPropertyValueHistoryResponse_httpStatus = Lens.lens (\GetAssetPropertyValueHistoryResponse' {httpStatus} -> httpStatus) (\s@GetAssetPropertyValueHistoryResponse' {} a -> s {httpStatus = a} :: GetAssetPropertyValueHistoryResponse)++-- | The asset property\'s value history.+getAssetPropertyValueHistoryResponse_assetPropertyValueHistory :: Lens.Lens' GetAssetPropertyValueHistoryResponse [AssetPropertyValue]+getAssetPropertyValueHistoryResponse_assetPropertyValueHistory = Lens.lens (\GetAssetPropertyValueHistoryResponse' {assetPropertyValueHistory} -> assetPropertyValueHistory) (\s@GetAssetPropertyValueHistoryResponse' {} a -> s {assetPropertyValueHistory = a} :: GetAssetPropertyValueHistoryResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    GetAssetPropertyValueHistoryResponse+  where+  rnf GetAssetPropertyValueHistoryResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetPropertyValueHistory
+ gen/Amazonka/IoTSiteWise/GetInterpolatedAssetPropertyValues.hs view
@@ -0,0 +1,598 @@+{-# 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.IoTSiteWise.GetInterpolatedAssetPropertyValues+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Get interpolated values for an asset property for a specified time+-- interval, during a period of time. If your time series is missing data+-- points during the specified time interval, you can use interpolation to+-- estimate the missing data.+--+-- For example, you can use this operation to return the interpolated+-- temperature values for a wind turbine every 24 hours over a duration of+-- 7 days.+--+-- To identify an asset property, you must specify one of the following:+--+-- -   The @assetId@ and @propertyId@ of an asset property.+--+-- -   A @propertyAlias@, which is a data stream alias (for example,+--     @\/company\/windfarm\/3\/turbine\/7\/temperature@). To define an+--     asset property\'s alias, see+--     <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.GetInterpolatedAssetPropertyValues+  ( -- * Creating a Request+    GetInterpolatedAssetPropertyValues (..),+    newGetInterpolatedAssetPropertyValues,++    -- * Request Lenses+    getInterpolatedAssetPropertyValues_assetId,+    getInterpolatedAssetPropertyValues_endTimeOffsetInNanos,+    getInterpolatedAssetPropertyValues_intervalWindowInSeconds,+    getInterpolatedAssetPropertyValues_maxResults,+    getInterpolatedAssetPropertyValues_nextToken,+    getInterpolatedAssetPropertyValues_propertyAlias,+    getInterpolatedAssetPropertyValues_propertyId,+    getInterpolatedAssetPropertyValues_startTimeOffsetInNanos,+    getInterpolatedAssetPropertyValues_startTimeInSeconds,+    getInterpolatedAssetPropertyValues_endTimeInSeconds,+    getInterpolatedAssetPropertyValues_quality,+    getInterpolatedAssetPropertyValues_intervalInSeconds,+    getInterpolatedAssetPropertyValues_type,++    -- * Destructuring the Response+    GetInterpolatedAssetPropertyValuesResponse (..),+    newGetInterpolatedAssetPropertyValuesResponse,++    -- * Response Lenses+    getInterpolatedAssetPropertyValuesResponse_nextToken,+    getInterpolatedAssetPropertyValuesResponse_httpStatus,+    getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetInterpolatedAssetPropertyValues' smart constructor.+data GetInterpolatedAssetPropertyValues = GetInterpolatedAssetPropertyValues'+  { -- | The ID of the asset.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The nanosecond offset converted from @endTimeInSeconds@.+    endTimeOffsetInNanos :: Prelude.Maybe Prelude.Natural,+    -- | The query interval for the window, in seconds. IoT SiteWise computes+    -- each interpolated value by using data points from the timestamp of each+    -- interval, minus the window to the timestamp of each interval plus the+    -- window. If not specified, the window ranges between the start time minus+    -- the interval and the end time plus the interval.+    --+    -- -   If you specify a value for the @intervalWindowInSeconds@ parameter,+    --     the value for the @type@ parameter must be @LINEAR_INTERPOLATION@.+    --+    -- -   If a data point isn\'t found during the specified query window, IoT+    --     SiteWise won\'t return an interpolated value for the interval. This+    --     indicates that there\'s a gap in the ingested data points.+    --+    -- For example, you can get the interpolated temperature values for a wind+    -- turbine every 24 hours over a duration of 7 days. If the interpolation+    -- starts on July 1, 2021, at 9 AM with a window of 2 hours, IoT SiteWise+    -- uses the data points from 7 AM (9 AM minus 2 hours) to 11 AM (9 AM plus+    -- 2 hours) on July 2, 2021 to compute the first interpolated value. Next,+    -- IoT SiteWise uses the data points from 7 AM (9 AM minus 2 hours) to 11+    -- AM (9 AM plus 2 hours) on July 3, 2021 to compute the second+    -- interpolated value, and so on.+    intervalWindowInSeconds :: Prelude.Maybe Prelude.Natural,+    -- | The maximum number of results to return for each paginated request. If+    -- not specified, the default value is 10.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    propertyAlias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Maybe Prelude.Text,+    -- | The nanosecond offset converted from @startTimeInSeconds@.+    startTimeOffsetInNanos :: Prelude.Maybe Prelude.Natural,+    -- | The exclusive start of the range from which to interpolate data,+    -- expressed in seconds in Unix epoch time.+    startTimeInSeconds :: Prelude.Natural,+    -- | The inclusive end of the range from which to interpolate data, expressed+    -- in seconds in Unix epoch time.+    endTimeInSeconds :: Prelude.Natural,+    -- | The quality of the asset property value. You can use this parameter as a+    -- filter to choose only the asset property values that have a specific+    -- quality.+    quality :: Quality,+    -- | The time interval in seconds over which to interpolate data. Each+    -- interval starts when the previous one ends.+    intervalInSeconds :: Prelude.Natural,+    -- | The interpolation type.+    --+    -- Valid values: @LINEAR_INTERPOLATION | LOCF_INTERPOLATION@+    --+    -- -   @LINEAR_INTERPOLATION@ – Estimates missing data using+    --     <https://en.wikipedia.org/wiki/Linear_interpolation linear interpolation>.+    --+    --     For example, you can use this operation to return the interpolated+    --     temperature values for a wind turbine every 24 hours over a duration+    --     of 7 days. If the interpolation starts July 1, 2021, at 9 AM, IoT+    --     SiteWise returns the first interpolated value on July 2, 2021, at 9+    --     AM, the second interpolated value on July 3, 2021, at 9 AM, and so+    --     on.+    --+    -- -   @LOCF_INTERPOLATION@ – Estimates missing data using last observation+    --     carried forward interpolation+    --+    --     If no data point is found for an interval, IoT SiteWise returns the+    --     last observed data point for the previous interval and carries+    --     forward this interpolated value until a new data point is found.+    --+    --     For example, you can get the state of an on-off valve every 24 hours+    --     over a duration of 7 days. If the interpolation starts July 1, 2021,+    --     at 9 AM, IoT SiteWise returns the last observed data point between+    --     July 1, 2021, at 9 AM and July 2, 2021, at 9 AM as the first+    --     interpolated value. If a data point isn\'t found after 9 AM on July+    --     2, 2021, IoT SiteWise uses the same interpolated value for the rest+    --     of the days.+    type' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetInterpolatedAssetPropertyValues' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetId', 'getInterpolatedAssetPropertyValues_assetId' - The ID of the asset.+--+-- 'endTimeOffsetInNanos', 'getInterpolatedAssetPropertyValues_endTimeOffsetInNanos' - The nanosecond offset converted from @endTimeInSeconds@.+--+-- 'intervalWindowInSeconds', 'getInterpolatedAssetPropertyValues_intervalWindowInSeconds' - The query interval for the window, in seconds. IoT SiteWise computes+-- each interpolated value by using data points from the timestamp of each+-- interval, minus the window to the timestamp of each interval plus the+-- window. If not specified, the window ranges between the start time minus+-- the interval and the end time plus the interval.+--+-- -   If you specify a value for the @intervalWindowInSeconds@ parameter,+--     the value for the @type@ parameter must be @LINEAR_INTERPOLATION@.+--+-- -   If a data point isn\'t found during the specified query window, IoT+--     SiteWise won\'t return an interpolated value for the interval. This+--     indicates that there\'s a gap in the ingested data points.+--+-- For example, you can get the interpolated temperature values for a wind+-- turbine every 24 hours over a duration of 7 days. If the interpolation+-- starts on July 1, 2021, at 9 AM with a window of 2 hours, IoT SiteWise+-- uses the data points from 7 AM (9 AM minus 2 hours) to 11 AM (9 AM plus+-- 2 hours) on July 2, 2021 to compute the first interpolated value. Next,+-- IoT SiteWise uses the data points from 7 AM (9 AM minus 2 hours) to 11+-- AM (9 AM plus 2 hours) on July 3, 2021 to compute the second+-- interpolated value, and so on.+--+-- 'maxResults', 'getInterpolatedAssetPropertyValues_maxResults' - The maximum number of results to return for each paginated request. If+-- not specified, the default value is 10.+--+-- 'nextToken', 'getInterpolatedAssetPropertyValues_nextToken' - The token to be used for the next set of paginated results.+--+-- 'propertyAlias', 'getInterpolatedAssetPropertyValues_propertyAlias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- 'propertyId', 'getInterpolatedAssetPropertyValues_propertyId' - The ID of the asset property.+--+-- 'startTimeOffsetInNanos', 'getInterpolatedAssetPropertyValues_startTimeOffsetInNanos' - The nanosecond offset converted from @startTimeInSeconds@.+--+-- 'startTimeInSeconds', 'getInterpolatedAssetPropertyValues_startTimeInSeconds' - The exclusive start of the range from which to interpolate data,+-- expressed in seconds in Unix epoch time.+--+-- 'endTimeInSeconds', 'getInterpolatedAssetPropertyValues_endTimeInSeconds' - The inclusive end of the range from which to interpolate data, expressed+-- in seconds in Unix epoch time.+--+-- 'quality', 'getInterpolatedAssetPropertyValues_quality' - The quality of the asset property value. You can use this parameter as a+-- filter to choose only the asset property values that have a specific+-- quality.+--+-- 'intervalInSeconds', 'getInterpolatedAssetPropertyValues_intervalInSeconds' - The time interval in seconds over which to interpolate data. Each+-- interval starts when the previous one ends.+--+-- 'type'', 'getInterpolatedAssetPropertyValues_type' - The interpolation type.+--+-- Valid values: @LINEAR_INTERPOLATION | LOCF_INTERPOLATION@+--+-- -   @LINEAR_INTERPOLATION@ – Estimates missing data using+--     <https://en.wikipedia.org/wiki/Linear_interpolation linear interpolation>.+--+--     For example, you can use this operation to return the interpolated+--     temperature values for a wind turbine every 24 hours over a duration+--     of 7 days. If the interpolation starts July 1, 2021, at 9 AM, IoT+--     SiteWise returns the first interpolated value on July 2, 2021, at 9+--     AM, the second interpolated value on July 3, 2021, at 9 AM, and so+--     on.+--+-- -   @LOCF_INTERPOLATION@ – Estimates missing data using last observation+--     carried forward interpolation+--+--     If no data point is found for an interval, IoT SiteWise returns the+--     last observed data point for the previous interval and carries+--     forward this interpolated value until a new data point is found.+--+--     For example, you can get the state of an on-off valve every 24 hours+--     over a duration of 7 days. If the interpolation starts July 1, 2021,+--     at 9 AM, IoT SiteWise returns the last observed data point between+--     July 1, 2021, at 9 AM and July 2, 2021, at 9 AM as the first+--     interpolated value. If a data point isn\'t found after 9 AM on July+--     2, 2021, IoT SiteWise uses the same interpolated value for the rest+--     of the days.+newGetInterpolatedAssetPropertyValues ::+  -- | 'startTimeInSeconds'+  Prelude.Natural ->+  -- | 'endTimeInSeconds'+  Prelude.Natural ->+  -- | 'quality'+  Quality ->+  -- | 'intervalInSeconds'+  Prelude.Natural ->+  -- | 'type''+  Prelude.Text ->+  GetInterpolatedAssetPropertyValues+newGetInterpolatedAssetPropertyValues+  pStartTimeInSeconds_+  pEndTimeInSeconds_+  pQuality_+  pIntervalInSeconds_+  pType_ =+    GetInterpolatedAssetPropertyValues'+      { assetId =+          Prelude.Nothing,+        endTimeOffsetInNanos = Prelude.Nothing,+        intervalWindowInSeconds =+          Prelude.Nothing,+        maxResults = Prelude.Nothing,+        nextToken = Prelude.Nothing,+        propertyAlias = Prelude.Nothing,+        propertyId = Prelude.Nothing,+        startTimeOffsetInNanos =+          Prelude.Nothing,+        startTimeInSeconds =+          pStartTimeInSeconds_,+        endTimeInSeconds = pEndTimeInSeconds_,+        quality = pQuality_,+        intervalInSeconds = pIntervalInSeconds_,+        type' = pType_+      }++-- | The ID of the asset.+getInterpolatedAssetPropertyValues_assetId :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Text)+getInterpolatedAssetPropertyValues_assetId = Lens.lens (\GetInterpolatedAssetPropertyValues' {assetId} -> assetId) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {assetId = a} :: GetInterpolatedAssetPropertyValues)++-- | The nanosecond offset converted from @endTimeInSeconds@.+getInterpolatedAssetPropertyValues_endTimeOffsetInNanos :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Natural)+getInterpolatedAssetPropertyValues_endTimeOffsetInNanos = Lens.lens (\GetInterpolatedAssetPropertyValues' {endTimeOffsetInNanos} -> endTimeOffsetInNanos) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {endTimeOffsetInNanos = a} :: GetInterpolatedAssetPropertyValues)++-- | The query interval for the window, in seconds. IoT SiteWise computes+-- each interpolated value by using data points from the timestamp of each+-- interval, minus the window to the timestamp of each interval plus the+-- window. If not specified, the window ranges between the start time minus+-- the interval and the end time plus the interval.+--+-- -   If you specify a value for the @intervalWindowInSeconds@ parameter,+--     the value for the @type@ parameter must be @LINEAR_INTERPOLATION@.+--+-- -   If a data point isn\'t found during the specified query window, IoT+--     SiteWise won\'t return an interpolated value for the interval. This+--     indicates that there\'s a gap in the ingested data points.+--+-- For example, you can get the interpolated temperature values for a wind+-- turbine every 24 hours over a duration of 7 days. If the interpolation+-- starts on July 1, 2021, at 9 AM with a window of 2 hours, IoT SiteWise+-- uses the data points from 7 AM (9 AM minus 2 hours) to 11 AM (9 AM plus+-- 2 hours) on July 2, 2021 to compute the first interpolated value. Next,+-- IoT SiteWise uses the data points from 7 AM (9 AM minus 2 hours) to 11+-- AM (9 AM plus 2 hours) on July 3, 2021 to compute the second+-- interpolated value, and so on.+getInterpolatedAssetPropertyValues_intervalWindowInSeconds :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Natural)+getInterpolatedAssetPropertyValues_intervalWindowInSeconds = Lens.lens (\GetInterpolatedAssetPropertyValues' {intervalWindowInSeconds} -> intervalWindowInSeconds) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {intervalWindowInSeconds = a} :: GetInterpolatedAssetPropertyValues)++-- | The maximum number of results to return for each paginated request. If+-- not specified, the default value is 10.+getInterpolatedAssetPropertyValues_maxResults :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Natural)+getInterpolatedAssetPropertyValues_maxResults = Lens.lens (\GetInterpolatedAssetPropertyValues' {maxResults} -> maxResults) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {maxResults = a} :: GetInterpolatedAssetPropertyValues)++-- | The token to be used for the next set of paginated results.+getInterpolatedAssetPropertyValues_nextToken :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Text)+getInterpolatedAssetPropertyValues_nextToken = Lens.lens (\GetInterpolatedAssetPropertyValues' {nextToken} -> nextToken) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {nextToken = a} :: GetInterpolatedAssetPropertyValues)++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+getInterpolatedAssetPropertyValues_propertyAlias :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Text)+getInterpolatedAssetPropertyValues_propertyAlias = Lens.lens (\GetInterpolatedAssetPropertyValues' {propertyAlias} -> propertyAlias) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {propertyAlias = a} :: GetInterpolatedAssetPropertyValues)++-- | The ID of the asset property.+getInterpolatedAssetPropertyValues_propertyId :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Text)+getInterpolatedAssetPropertyValues_propertyId = Lens.lens (\GetInterpolatedAssetPropertyValues' {propertyId} -> propertyId) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {propertyId = a} :: GetInterpolatedAssetPropertyValues)++-- | The nanosecond offset converted from @startTimeInSeconds@.+getInterpolatedAssetPropertyValues_startTimeOffsetInNanos :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Natural)+getInterpolatedAssetPropertyValues_startTimeOffsetInNanos = Lens.lens (\GetInterpolatedAssetPropertyValues' {startTimeOffsetInNanos} -> startTimeOffsetInNanos) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {startTimeOffsetInNanos = a} :: GetInterpolatedAssetPropertyValues)++-- | The exclusive start of the range from which to interpolate data,+-- expressed in seconds in Unix epoch time.+getInterpolatedAssetPropertyValues_startTimeInSeconds :: Lens.Lens' GetInterpolatedAssetPropertyValues Prelude.Natural+getInterpolatedAssetPropertyValues_startTimeInSeconds = Lens.lens (\GetInterpolatedAssetPropertyValues' {startTimeInSeconds} -> startTimeInSeconds) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {startTimeInSeconds = a} :: GetInterpolatedAssetPropertyValues)++-- | The inclusive end of the range from which to interpolate data, expressed+-- in seconds in Unix epoch time.+getInterpolatedAssetPropertyValues_endTimeInSeconds :: Lens.Lens' GetInterpolatedAssetPropertyValues Prelude.Natural+getInterpolatedAssetPropertyValues_endTimeInSeconds = Lens.lens (\GetInterpolatedAssetPropertyValues' {endTimeInSeconds} -> endTimeInSeconds) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {endTimeInSeconds = a} :: GetInterpolatedAssetPropertyValues)++-- | The quality of the asset property value. You can use this parameter as a+-- filter to choose only the asset property values that have a specific+-- quality.+getInterpolatedAssetPropertyValues_quality :: Lens.Lens' GetInterpolatedAssetPropertyValues Quality+getInterpolatedAssetPropertyValues_quality = Lens.lens (\GetInterpolatedAssetPropertyValues' {quality} -> quality) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {quality = a} :: GetInterpolatedAssetPropertyValues)++-- | The time interval in seconds over which to interpolate data. Each+-- interval starts when the previous one ends.+getInterpolatedAssetPropertyValues_intervalInSeconds :: Lens.Lens' GetInterpolatedAssetPropertyValues Prelude.Natural+getInterpolatedAssetPropertyValues_intervalInSeconds = Lens.lens (\GetInterpolatedAssetPropertyValues' {intervalInSeconds} -> intervalInSeconds) (\s@GetInterpolatedAssetPropertyValues' {} a -> s {intervalInSeconds = a} :: GetInterpolatedAssetPropertyValues)++-- | The interpolation type.+--+-- Valid values: @LINEAR_INTERPOLATION | LOCF_INTERPOLATION@+--+-- -   @LINEAR_INTERPOLATION@ – Estimates missing data using+--     <https://en.wikipedia.org/wiki/Linear_interpolation linear interpolation>.+--+--     For example, you can use this operation to return the interpolated+--     temperature values for a wind turbine every 24 hours over a duration+--     of 7 days. If the interpolation starts July 1, 2021, at 9 AM, IoT+--     SiteWise returns the first interpolated value on July 2, 2021, at 9+--     AM, the second interpolated value on July 3, 2021, at 9 AM, and so+--     on.+--+-- -   @LOCF_INTERPOLATION@ – Estimates missing data using last observation+--     carried forward interpolation+--+--     If no data point is found for an interval, IoT SiteWise returns the+--     last observed data point for the previous interval and carries+--     forward this interpolated value until a new data point is found.+--+--     For example, you can get the state of an on-off valve every 24 hours+--     over a duration of 7 days. If the interpolation starts July 1, 2021,+--     at 9 AM, IoT SiteWise returns the last observed data point between+--     July 1, 2021, at 9 AM and July 2, 2021, at 9 AM as the first+--     interpolated value. If a data point isn\'t found after 9 AM on July+--     2, 2021, IoT SiteWise uses the same interpolated value for the rest+--     of the days.+getInterpolatedAssetPropertyValues_type :: Lens.Lens' GetInterpolatedAssetPropertyValues Prelude.Text+getInterpolatedAssetPropertyValues_type = Lens.lens (\GetInterpolatedAssetPropertyValues' {type'} -> type') (\s@GetInterpolatedAssetPropertyValues' {} a -> s {type' = a} :: GetInterpolatedAssetPropertyValues)++instance+  Core.AWSPager+    GetInterpolatedAssetPropertyValues+  where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? getInterpolatedAssetPropertyValuesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& getInterpolatedAssetPropertyValues_nextToken+          Lens..~ rs+          Lens.^? getInterpolatedAssetPropertyValuesResponse_nextToken+          Prelude.. Lens._Just++instance+  Core.AWSRequest+    GetInterpolatedAssetPropertyValues+  where+  type+    AWSResponse GetInterpolatedAssetPropertyValues =+      GetInterpolatedAssetPropertyValuesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetInterpolatedAssetPropertyValuesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "interpolatedAssetPropertyValues"+                            Core..!@ Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    GetInterpolatedAssetPropertyValues+  where+  hashWithSalt+    _salt+    GetInterpolatedAssetPropertyValues' {..} =+      _salt+        `Prelude.hashWithSalt` assetId+        `Prelude.hashWithSalt` endTimeOffsetInNanos+        `Prelude.hashWithSalt` intervalWindowInSeconds+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` propertyAlias+        `Prelude.hashWithSalt` propertyId+        `Prelude.hashWithSalt` startTimeOffsetInNanos+        `Prelude.hashWithSalt` startTimeInSeconds+        `Prelude.hashWithSalt` endTimeInSeconds+        `Prelude.hashWithSalt` quality+        `Prelude.hashWithSalt` intervalInSeconds+        `Prelude.hashWithSalt` type'++instance+  Prelude.NFData+    GetInterpolatedAssetPropertyValues+  where+  rnf GetInterpolatedAssetPropertyValues' {..} =+    Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf endTimeOffsetInNanos+      `Prelude.seq` Prelude.rnf intervalWindowInSeconds+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf propertyAlias+      `Prelude.seq` Prelude.rnf propertyId+      `Prelude.seq` Prelude.rnf startTimeOffsetInNanos+      `Prelude.seq` Prelude.rnf startTimeInSeconds+      `Prelude.seq` Prelude.rnf endTimeInSeconds+      `Prelude.seq` Prelude.rnf quality+      `Prelude.seq` Prelude.rnf intervalInSeconds+      `Prelude.seq` Prelude.rnf type'++instance+  Data.ToHeaders+    GetInterpolatedAssetPropertyValues+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToPath+    GetInterpolatedAssetPropertyValues+  where+  toPath = Prelude.const "/properties/interpolated"++instance+  Data.ToQuery+    GetInterpolatedAssetPropertyValues+  where+  toQuery GetInterpolatedAssetPropertyValues' {..} =+    Prelude.mconcat+      [ "assetId" Data.=: assetId,+        "endTimeOffsetInNanos" Data.=: endTimeOffsetInNanos,+        "intervalWindowInSeconds"+          Data.=: intervalWindowInSeconds,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "propertyAlias" Data.=: propertyAlias,+        "propertyId" Data.=: propertyId,+        "startTimeOffsetInNanos"+          Data.=: startTimeOffsetInNanos,+        "startTimeInSeconds" Data.=: startTimeInSeconds,+        "endTimeInSeconds" Data.=: endTimeInSeconds,+        "quality" Data.=: quality,+        "intervalInSeconds" Data.=: intervalInSeconds,+        "type" Data.=: type'+      ]++-- | /See:/ 'newGetInterpolatedAssetPropertyValuesResponse' smart constructor.+data GetInterpolatedAssetPropertyValuesResponse = GetInterpolatedAssetPropertyValuesResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The requested interpolated values.+    interpolatedAssetPropertyValues :: [InterpolatedAssetPropertyValue]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetInterpolatedAssetPropertyValuesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getInterpolatedAssetPropertyValuesResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'getInterpolatedAssetPropertyValuesResponse_httpStatus' - The response's http status code.+--+-- 'interpolatedAssetPropertyValues', 'getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues' - The requested interpolated values.+newGetInterpolatedAssetPropertyValuesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetInterpolatedAssetPropertyValuesResponse+newGetInterpolatedAssetPropertyValuesResponse+  pHttpStatus_ =+    GetInterpolatedAssetPropertyValuesResponse'+      { nextToken =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        interpolatedAssetPropertyValues =+          Prelude.mempty+      }++-- | The token for the next set of results, or null if there are no+-- additional results.+getInterpolatedAssetPropertyValuesResponse_nextToken :: Lens.Lens' GetInterpolatedAssetPropertyValuesResponse (Prelude.Maybe Prelude.Text)+getInterpolatedAssetPropertyValuesResponse_nextToken = Lens.lens (\GetInterpolatedAssetPropertyValuesResponse' {nextToken} -> nextToken) (\s@GetInterpolatedAssetPropertyValuesResponse' {} a -> s {nextToken = a} :: GetInterpolatedAssetPropertyValuesResponse)++-- | The response's http status code.+getInterpolatedAssetPropertyValuesResponse_httpStatus :: Lens.Lens' GetInterpolatedAssetPropertyValuesResponse Prelude.Int+getInterpolatedAssetPropertyValuesResponse_httpStatus = Lens.lens (\GetInterpolatedAssetPropertyValuesResponse' {httpStatus} -> httpStatus) (\s@GetInterpolatedAssetPropertyValuesResponse' {} a -> s {httpStatus = a} :: GetInterpolatedAssetPropertyValuesResponse)++-- | The requested interpolated values.+getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues :: Lens.Lens' GetInterpolatedAssetPropertyValuesResponse [InterpolatedAssetPropertyValue]+getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues = Lens.lens (\GetInterpolatedAssetPropertyValuesResponse' {interpolatedAssetPropertyValues} -> interpolatedAssetPropertyValues) (\s@GetInterpolatedAssetPropertyValuesResponse' {} a -> s {interpolatedAssetPropertyValues = a} :: GetInterpolatedAssetPropertyValuesResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    GetInterpolatedAssetPropertyValuesResponse+  where+  rnf GetInterpolatedAssetPropertyValuesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf interpolatedAssetPropertyValues
+ gen/Amazonka/IoTSiteWise/Lens.hs view
@@ -0,0 +1,1341 @@+{-# 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.IoTSiteWise.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.IoTSiteWise.Lens+  ( -- * Operations++    -- ** AssociateAssets+    associateAssets_clientToken,+    associateAssets_assetId,+    associateAssets_hierarchyId,+    associateAssets_childAssetId,++    -- ** AssociateTimeSeriesToAssetProperty+    associateTimeSeriesToAssetProperty_clientToken,+    associateTimeSeriesToAssetProperty_alias,+    associateTimeSeriesToAssetProperty_assetId,+    associateTimeSeriesToAssetProperty_propertyId,++    -- ** BatchAssociateProjectAssets+    batchAssociateProjectAssets_clientToken,+    batchAssociateProjectAssets_projectId,+    batchAssociateProjectAssets_assetIds,+    batchAssociateProjectAssetsResponse_errors,+    batchAssociateProjectAssetsResponse_httpStatus,++    -- ** BatchDisassociateProjectAssets+    batchDisassociateProjectAssets_clientToken,+    batchDisassociateProjectAssets_projectId,+    batchDisassociateProjectAssets_assetIds,+    batchDisassociateProjectAssetsResponse_errors,+    batchDisassociateProjectAssetsResponse_httpStatus,++    -- ** BatchGetAssetPropertyAggregates+    batchGetAssetPropertyAggregates_maxResults,+    batchGetAssetPropertyAggregates_nextToken,+    batchGetAssetPropertyAggregates_entries,+    batchGetAssetPropertyAggregatesResponse_nextToken,+    batchGetAssetPropertyAggregatesResponse_httpStatus,+    batchGetAssetPropertyAggregatesResponse_errorEntries,+    batchGetAssetPropertyAggregatesResponse_successEntries,+    batchGetAssetPropertyAggregatesResponse_skippedEntries,++    -- ** BatchGetAssetPropertyValue+    batchGetAssetPropertyValue_nextToken,+    batchGetAssetPropertyValue_entries,+    batchGetAssetPropertyValueResponse_nextToken,+    batchGetAssetPropertyValueResponse_httpStatus,+    batchGetAssetPropertyValueResponse_errorEntries,+    batchGetAssetPropertyValueResponse_successEntries,+    batchGetAssetPropertyValueResponse_skippedEntries,++    -- ** BatchGetAssetPropertyValueHistory+    batchGetAssetPropertyValueHistory_maxResults,+    batchGetAssetPropertyValueHistory_nextToken,+    batchGetAssetPropertyValueHistory_entries,+    batchGetAssetPropertyValueHistoryResponse_nextToken,+    batchGetAssetPropertyValueHistoryResponse_httpStatus,+    batchGetAssetPropertyValueHistoryResponse_errorEntries,+    batchGetAssetPropertyValueHistoryResponse_successEntries,+    batchGetAssetPropertyValueHistoryResponse_skippedEntries,++    -- ** BatchPutAssetPropertyValue+    batchPutAssetPropertyValue_entries,+    batchPutAssetPropertyValueResponse_httpStatus,+    batchPutAssetPropertyValueResponse_errorEntries,++    -- ** CreateAccessPolicy+    createAccessPolicy_clientToken,+    createAccessPolicy_tags,+    createAccessPolicy_accessPolicyIdentity,+    createAccessPolicy_accessPolicyResource,+    createAccessPolicy_accessPolicyPermission,+    createAccessPolicyResponse_httpStatus,+    createAccessPolicyResponse_accessPolicyId,+    createAccessPolicyResponse_accessPolicyArn,++    -- ** CreateAsset+    createAsset_assetDescription,+    createAsset_clientToken,+    createAsset_tags,+    createAsset_assetName,+    createAsset_assetModelId,+    createAssetResponse_httpStatus,+    createAssetResponse_assetId,+    createAssetResponse_assetArn,+    createAssetResponse_assetStatus,++    -- ** CreateAssetModel+    createAssetModel_assetModelCompositeModels,+    createAssetModel_assetModelDescription,+    createAssetModel_assetModelHierarchies,+    createAssetModel_assetModelProperties,+    createAssetModel_clientToken,+    createAssetModel_tags,+    createAssetModel_assetModelName,+    createAssetModelResponse_httpStatus,+    createAssetModelResponse_assetModelId,+    createAssetModelResponse_assetModelArn,+    createAssetModelResponse_assetModelStatus,++    -- ** CreateBulkImportJob+    createBulkImportJob_jobName,+    createBulkImportJob_jobRoleArn,+    createBulkImportJob_files,+    createBulkImportJob_errorReportLocation,+    createBulkImportJob_jobConfiguration,+    createBulkImportJobResponse_httpStatus,+    createBulkImportJobResponse_jobId,+    createBulkImportJobResponse_jobName,+    createBulkImportJobResponse_jobStatus,++    -- ** CreateDashboard+    createDashboard_clientToken,+    createDashboard_dashboardDescription,+    createDashboard_tags,+    createDashboard_projectId,+    createDashboard_dashboardName,+    createDashboard_dashboardDefinition,+    createDashboardResponse_httpStatus,+    createDashboardResponse_dashboardId,+    createDashboardResponse_dashboardArn,++    -- ** CreateGateway+    createGateway_tags,+    createGateway_gatewayName,+    createGateway_gatewayPlatform,+    createGatewayResponse_httpStatus,+    createGatewayResponse_gatewayId,+    createGatewayResponse_gatewayArn,++    -- ** CreatePortal+    createPortal_alarms,+    createPortal_clientToken,+    createPortal_notificationSenderEmail,+    createPortal_portalAuthMode,+    createPortal_portalDescription,+    createPortal_portalLogoImageFile,+    createPortal_tags,+    createPortal_portalName,+    createPortal_portalContactEmail,+    createPortal_roleArn,+    createPortalResponse_httpStatus,+    createPortalResponse_portalId,+    createPortalResponse_portalArn,+    createPortalResponse_portalStartUrl,+    createPortalResponse_portalStatus,+    createPortalResponse_ssoApplicationId,++    -- ** CreateProject+    createProject_clientToken,+    createProject_projectDescription,+    createProject_tags,+    createProject_portalId,+    createProject_projectName,+    createProjectResponse_httpStatus,+    createProjectResponse_projectId,+    createProjectResponse_projectArn,++    -- ** DeleteAccessPolicy+    deleteAccessPolicy_clientToken,+    deleteAccessPolicy_accessPolicyId,+    deleteAccessPolicyResponse_httpStatus,++    -- ** DeleteAsset+    deleteAsset_clientToken,+    deleteAsset_assetId,+    deleteAssetResponse_httpStatus,+    deleteAssetResponse_assetStatus,++    -- ** DeleteAssetModel+    deleteAssetModel_clientToken,+    deleteAssetModel_assetModelId,+    deleteAssetModelResponse_httpStatus,+    deleteAssetModelResponse_assetModelStatus,++    -- ** DeleteDashboard+    deleteDashboard_clientToken,+    deleteDashboard_dashboardId,+    deleteDashboardResponse_httpStatus,++    -- ** DeleteGateway+    deleteGateway_gatewayId,++    -- ** DeletePortal+    deletePortal_clientToken,+    deletePortal_portalId,+    deletePortalResponse_httpStatus,+    deletePortalResponse_portalStatus,++    -- ** DeleteProject+    deleteProject_clientToken,+    deleteProject_projectId,+    deleteProjectResponse_httpStatus,++    -- ** DeleteTimeSeries+    deleteTimeSeries_alias,+    deleteTimeSeries_assetId,+    deleteTimeSeries_clientToken,+    deleteTimeSeries_propertyId,++    -- ** DescribeAccessPolicy+    describeAccessPolicy_accessPolicyId,+    describeAccessPolicyResponse_httpStatus,+    describeAccessPolicyResponse_accessPolicyId,+    describeAccessPolicyResponse_accessPolicyArn,+    describeAccessPolicyResponse_accessPolicyIdentity,+    describeAccessPolicyResponse_accessPolicyResource,+    describeAccessPolicyResponse_accessPolicyPermission,+    describeAccessPolicyResponse_accessPolicyCreationDate,+    describeAccessPolicyResponse_accessPolicyLastUpdateDate,++    -- ** DescribeAsset+    describeAsset_excludeProperties,+    describeAsset_assetId,+    describeAssetResponse_assetCompositeModels,+    describeAssetResponse_assetDescription,+    describeAssetResponse_httpStatus,+    describeAssetResponse_assetId,+    describeAssetResponse_assetArn,+    describeAssetResponse_assetName,+    describeAssetResponse_assetModelId,+    describeAssetResponse_assetProperties,+    describeAssetResponse_assetHierarchies,+    describeAssetResponse_assetCreationDate,+    describeAssetResponse_assetLastUpdateDate,+    describeAssetResponse_assetStatus,++    -- ** DescribeAssetModel+    describeAssetModel_excludeProperties,+    describeAssetModel_assetModelId,+    describeAssetModelResponse_assetModelCompositeModels,+    describeAssetModelResponse_httpStatus,+    describeAssetModelResponse_assetModelId,+    describeAssetModelResponse_assetModelArn,+    describeAssetModelResponse_assetModelName,+    describeAssetModelResponse_assetModelDescription,+    describeAssetModelResponse_assetModelProperties,+    describeAssetModelResponse_assetModelHierarchies,+    describeAssetModelResponse_assetModelCreationDate,+    describeAssetModelResponse_assetModelLastUpdateDate,+    describeAssetModelResponse_assetModelStatus,++    -- ** DescribeAssetProperty+    describeAssetProperty_assetId,+    describeAssetProperty_propertyId,+    describeAssetPropertyResponse_assetProperty,+    describeAssetPropertyResponse_compositeModel,+    describeAssetPropertyResponse_httpStatus,+    describeAssetPropertyResponse_assetId,+    describeAssetPropertyResponse_assetName,+    describeAssetPropertyResponse_assetModelId,++    -- ** DescribeBulkImportJob+    describeBulkImportJob_jobId,+    describeBulkImportJobResponse_httpStatus,+    describeBulkImportJobResponse_jobId,+    describeBulkImportJobResponse_jobName,+    describeBulkImportJobResponse_jobStatus,+    describeBulkImportJobResponse_jobRoleArn,+    describeBulkImportJobResponse_files,+    describeBulkImportJobResponse_errorReportLocation,+    describeBulkImportJobResponse_jobConfiguration,+    describeBulkImportJobResponse_jobCreationDate,+    describeBulkImportJobResponse_jobLastUpdateDate,++    -- ** DescribeDashboard+    describeDashboard_dashboardId,+    describeDashboardResponse_dashboardDescription,+    describeDashboardResponse_httpStatus,+    describeDashboardResponse_dashboardId,+    describeDashboardResponse_dashboardArn,+    describeDashboardResponse_dashboardName,+    describeDashboardResponse_projectId,+    describeDashboardResponse_dashboardDefinition,+    describeDashboardResponse_dashboardCreationDate,+    describeDashboardResponse_dashboardLastUpdateDate,++    -- ** DescribeDefaultEncryptionConfiguration+    describeDefaultEncryptionConfigurationResponse_kmsKeyArn,+    describeDefaultEncryptionConfigurationResponse_httpStatus,+    describeDefaultEncryptionConfigurationResponse_encryptionType,+    describeDefaultEncryptionConfigurationResponse_configurationStatus,++    -- ** DescribeGateway+    describeGateway_gatewayId,+    describeGatewayResponse_gatewayPlatform,+    describeGatewayResponse_httpStatus,+    describeGatewayResponse_gatewayId,+    describeGatewayResponse_gatewayName,+    describeGatewayResponse_gatewayArn,+    describeGatewayResponse_gatewayCapabilitySummaries,+    describeGatewayResponse_creationDate,+    describeGatewayResponse_lastUpdateDate,++    -- ** DescribeGatewayCapabilityConfiguration+    describeGatewayCapabilityConfiguration_gatewayId,+    describeGatewayCapabilityConfiguration_capabilityNamespace,+    describeGatewayCapabilityConfigurationResponse_httpStatus,+    describeGatewayCapabilityConfigurationResponse_gatewayId,+    describeGatewayCapabilityConfigurationResponse_capabilityNamespace,+    describeGatewayCapabilityConfigurationResponse_capabilityConfiguration,+    describeGatewayCapabilityConfigurationResponse_capabilitySyncStatus,++    -- ** DescribeLoggingOptions+    describeLoggingOptionsResponse_httpStatus,+    describeLoggingOptionsResponse_loggingOptions,++    -- ** DescribePortal+    describePortal_portalId,+    describePortalResponse_alarms,+    describePortalResponse_notificationSenderEmail,+    describePortalResponse_portalAuthMode,+    describePortalResponse_portalDescription,+    describePortalResponse_portalLogoImageLocation,+    describePortalResponse_roleArn,+    describePortalResponse_httpStatus,+    describePortalResponse_portalId,+    describePortalResponse_portalArn,+    describePortalResponse_portalName,+    describePortalResponse_portalClientId,+    describePortalResponse_portalStartUrl,+    describePortalResponse_portalContactEmail,+    describePortalResponse_portalStatus,+    describePortalResponse_portalCreationDate,+    describePortalResponse_portalLastUpdateDate,++    -- ** DescribeProject+    describeProject_projectId,+    describeProjectResponse_projectDescription,+    describeProjectResponse_httpStatus,+    describeProjectResponse_projectId,+    describeProjectResponse_projectArn,+    describeProjectResponse_projectName,+    describeProjectResponse_portalId,+    describeProjectResponse_projectCreationDate,+    describeProjectResponse_projectLastUpdateDate,++    -- ** DescribeStorageConfiguration+    describeStorageConfigurationResponse_disassociatedDataStorage,+    describeStorageConfigurationResponse_lastUpdateDate,+    describeStorageConfigurationResponse_multiLayerStorage,+    describeStorageConfigurationResponse_retentionPeriod,+    describeStorageConfigurationResponse_httpStatus,+    describeStorageConfigurationResponse_storageType,+    describeStorageConfigurationResponse_configurationStatus,++    -- ** DescribeTimeSeries+    describeTimeSeries_alias,+    describeTimeSeries_assetId,+    describeTimeSeries_propertyId,+    describeTimeSeriesResponse_alias,+    describeTimeSeriesResponse_assetId,+    describeTimeSeriesResponse_dataTypeSpec,+    describeTimeSeriesResponse_propertyId,+    describeTimeSeriesResponse_httpStatus,+    describeTimeSeriesResponse_timeSeriesId,+    describeTimeSeriesResponse_dataType,+    describeTimeSeriesResponse_timeSeriesCreationDate,+    describeTimeSeriesResponse_timeSeriesLastUpdateDate,++    -- ** DisassociateAssets+    disassociateAssets_clientToken,+    disassociateAssets_assetId,+    disassociateAssets_hierarchyId,+    disassociateAssets_childAssetId,++    -- ** DisassociateTimeSeriesFromAssetProperty+    disassociateTimeSeriesFromAssetProperty_clientToken,+    disassociateTimeSeriesFromAssetProperty_alias,+    disassociateTimeSeriesFromAssetProperty_assetId,+    disassociateTimeSeriesFromAssetProperty_propertyId,++    -- ** GetAssetPropertyAggregates+    getAssetPropertyAggregates_assetId,+    getAssetPropertyAggregates_maxResults,+    getAssetPropertyAggregates_nextToken,+    getAssetPropertyAggregates_propertyAlias,+    getAssetPropertyAggregates_propertyId,+    getAssetPropertyAggregates_qualities,+    getAssetPropertyAggregates_timeOrdering,+    getAssetPropertyAggregates_aggregateTypes,+    getAssetPropertyAggregates_resolution,+    getAssetPropertyAggregates_startDate,+    getAssetPropertyAggregates_endDate,+    getAssetPropertyAggregatesResponse_nextToken,+    getAssetPropertyAggregatesResponse_httpStatus,+    getAssetPropertyAggregatesResponse_aggregatedValues,++    -- ** GetAssetPropertyValue+    getAssetPropertyValue_assetId,+    getAssetPropertyValue_propertyAlias,+    getAssetPropertyValue_propertyId,+    getAssetPropertyValueResponse_propertyValue,+    getAssetPropertyValueResponse_httpStatus,++    -- ** GetAssetPropertyValueHistory+    getAssetPropertyValueHistory_assetId,+    getAssetPropertyValueHistory_endDate,+    getAssetPropertyValueHistory_maxResults,+    getAssetPropertyValueHistory_nextToken,+    getAssetPropertyValueHistory_propertyAlias,+    getAssetPropertyValueHistory_propertyId,+    getAssetPropertyValueHistory_qualities,+    getAssetPropertyValueHistory_startDate,+    getAssetPropertyValueHistory_timeOrdering,+    getAssetPropertyValueHistoryResponse_nextToken,+    getAssetPropertyValueHistoryResponse_httpStatus,+    getAssetPropertyValueHistoryResponse_assetPropertyValueHistory,++    -- ** GetInterpolatedAssetPropertyValues+    getInterpolatedAssetPropertyValues_assetId,+    getInterpolatedAssetPropertyValues_endTimeOffsetInNanos,+    getInterpolatedAssetPropertyValues_intervalWindowInSeconds,+    getInterpolatedAssetPropertyValues_maxResults,+    getInterpolatedAssetPropertyValues_nextToken,+    getInterpolatedAssetPropertyValues_propertyAlias,+    getInterpolatedAssetPropertyValues_propertyId,+    getInterpolatedAssetPropertyValues_startTimeOffsetInNanos,+    getInterpolatedAssetPropertyValues_startTimeInSeconds,+    getInterpolatedAssetPropertyValues_endTimeInSeconds,+    getInterpolatedAssetPropertyValues_quality,+    getInterpolatedAssetPropertyValues_intervalInSeconds,+    getInterpolatedAssetPropertyValues_type,+    getInterpolatedAssetPropertyValuesResponse_nextToken,+    getInterpolatedAssetPropertyValuesResponse_httpStatus,+    getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues,++    -- ** ListAccessPolicies+    listAccessPolicies_iamArn,+    listAccessPolicies_identityId,+    listAccessPolicies_identityType,+    listAccessPolicies_maxResults,+    listAccessPolicies_nextToken,+    listAccessPolicies_resourceId,+    listAccessPolicies_resourceType,+    listAccessPoliciesResponse_nextToken,+    listAccessPoliciesResponse_httpStatus,+    listAccessPoliciesResponse_accessPolicySummaries,++    -- ** ListAssetModelProperties+    listAssetModelProperties_filter,+    listAssetModelProperties_maxResults,+    listAssetModelProperties_nextToken,+    listAssetModelProperties_assetModelId,+    listAssetModelPropertiesResponse_nextToken,+    listAssetModelPropertiesResponse_httpStatus,+    listAssetModelPropertiesResponse_assetModelPropertySummaries,++    -- ** ListAssetModels+    listAssetModels_maxResults,+    listAssetModels_nextToken,+    listAssetModelsResponse_nextToken,+    listAssetModelsResponse_httpStatus,+    listAssetModelsResponse_assetModelSummaries,++    -- ** ListAssetProperties+    listAssetProperties_filter,+    listAssetProperties_maxResults,+    listAssetProperties_nextToken,+    listAssetProperties_assetId,+    listAssetPropertiesResponse_nextToken,+    listAssetPropertiesResponse_httpStatus,+    listAssetPropertiesResponse_assetPropertySummaries,++    -- ** ListAssetRelationships+    listAssetRelationships_maxResults,+    listAssetRelationships_nextToken,+    listAssetRelationships_assetId,+    listAssetRelationships_traversalType,+    listAssetRelationshipsResponse_nextToken,+    listAssetRelationshipsResponse_httpStatus,+    listAssetRelationshipsResponse_assetRelationshipSummaries,++    -- ** ListAssets+    listAssets_assetModelId,+    listAssets_filter,+    listAssets_maxResults,+    listAssets_nextToken,+    listAssetsResponse_nextToken,+    listAssetsResponse_httpStatus,+    listAssetsResponse_assetSummaries,++    -- ** ListAssociatedAssets+    listAssociatedAssets_hierarchyId,+    listAssociatedAssets_maxResults,+    listAssociatedAssets_nextToken,+    listAssociatedAssets_traversalDirection,+    listAssociatedAssets_assetId,+    listAssociatedAssetsResponse_nextToken,+    listAssociatedAssetsResponse_httpStatus,+    listAssociatedAssetsResponse_assetSummaries,++    -- ** ListBulkImportJobs+    listBulkImportJobs_filter,+    listBulkImportJobs_maxResults,+    listBulkImportJobs_nextToken,+    listBulkImportJobsResponse_nextToken,+    listBulkImportJobsResponse_httpStatus,+    listBulkImportJobsResponse_jobSummaries,++    -- ** ListDashboards+    listDashboards_maxResults,+    listDashboards_nextToken,+    listDashboards_projectId,+    listDashboardsResponse_nextToken,+    listDashboardsResponse_httpStatus,+    listDashboardsResponse_dashboardSummaries,++    -- ** ListGateways+    listGateways_maxResults,+    listGateways_nextToken,+    listGatewaysResponse_nextToken,+    listGatewaysResponse_httpStatus,+    listGatewaysResponse_gatewaySummaries,++    -- ** ListPortals+    listPortals_maxResults,+    listPortals_nextToken,+    listPortalsResponse_nextToken,+    listPortalsResponse_portalSummaries,+    listPortalsResponse_httpStatus,++    -- ** ListProjectAssets+    listProjectAssets_maxResults,+    listProjectAssets_nextToken,+    listProjectAssets_projectId,+    listProjectAssetsResponse_nextToken,+    listProjectAssetsResponse_httpStatus,+    listProjectAssetsResponse_assetIds,++    -- ** ListProjects+    listProjects_maxResults,+    listProjects_nextToken,+    listProjects_portalId,+    listProjectsResponse_nextToken,+    listProjectsResponse_httpStatus,+    listProjectsResponse_projectSummaries,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** ListTimeSeries+    listTimeSeries_aliasPrefix,+    listTimeSeries_assetId,+    listTimeSeries_maxResults,+    listTimeSeries_nextToken,+    listTimeSeries_timeSeriesType,+    listTimeSeriesResponse_nextToken,+    listTimeSeriesResponse_httpStatus,+    listTimeSeriesResponse_timeSeriesSummaries,++    -- ** PutDefaultEncryptionConfiguration+    putDefaultEncryptionConfiguration_kmsKeyId,+    putDefaultEncryptionConfiguration_encryptionType,+    putDefaultEncryptionConfigurationResponse_kmsKeyArn,+    putDefaultEncryptionConfigurationResponse_httpStatus,+    putDefaultEncryptionConfigurationResponse_encryptionType,+    putDefaultEncryptionConfigurationResponse_configurationStatus,++    -- ** PutLoggingOptions+    putLoggingOptions_loggingOptions,+    putLoggingOptionsResponse_httpStatus,++    -- ** PutStorageConfiguration+    putStorageConfiguration_disassociatedDataStorage,+    putStorageConfiguration_multiLayerStorage,+    putStorageConfiguration_retentionPeriod,+    putStorageConfiguration_storageType,+    putStorageConfigurationResponse_disassociatedDataStorage,+    putStorageConfigurationResponse_multiLayerStorage,+    putStorageConfigurationResponse_retentionPeriod,+    putStorageConfigurationResponse_httpStatus,+    putStorageConfigurationResponse_storageType,+    putStorageConfigurationResponse_configurationStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateAccessPolicy+    updateAccessPolicy_clientToken,+    updateAccessPolicy_accessPolicyId,+    updateAccessPolicy_accessPolicyIdentity,+    updateAccessPolicy_accessPolicyResource,+    updateAccessPolicy_accessPolicyPermission,+    updateAccessPolicyResponse_httpStatus,++    -- ** UpdateAsset+    updateAsset_assetDescription,+    updateAsset_clientToken,+    updateAsset_assetId,+    updateAsset_assetName,+    updateAssetResponse_httpStatus,+    updateAssetResponse_assetStatus,++    -- ** UpdateAssetModel+    updateAssetModel_assetModelCompositeModels,+    updateAssetModel_assetModelDescription,+    updateAssetModel_assetModelHierarchies,+    updateAssetModel_assetModelProperties,+    updateAssetModel_clientToken,+    updateAssetModel_assetModelId,+    updateAssetModel_assetModelName,+    updateAssetModelResponse_httpStatus,+    updateAssetModelResponse_assetModelStatus,++    -- ** UpdateAssetProperty+    updateAssetProperty_clientToken,+    updateAssetProperty_propertyAlias,+    updateAssetProperty_propertyNotificationState,+    updateAssetProperty_propertyUnit,+    updateAssetProperty_assetId,+    updateAssetProperty_propertyId,++    -- ** UpdateDashboard+    updateDashboard_clientToken,+    updateDashboard_dashboardDescription,+    updateDashboard_dashboardId,+    updateDashboard_dashboardName,+    updateDashboard_dashboardDefinition,+    updateDashboardResponse_httpStatus,++    -- ** UpdateGateway+    updateGateway_gatewayId,+    updateGateway_gatewayName,++    -- ** UpdateGatewayCapabilityConfiguration+    updateGatewayCapabilityConfiguration_gatewayId,+    updateGatewayCapabilityConfiguration_capabilityNamespace,+    updateGatewayCapabilityConfiguration_capabilityConfiguration,+    updateGatewayCapabilityConfigurationResponse_httpStatus,+    updateGatewayCapabilityConfigurationResponse_capabilityNamespace,+    updateGatewayCapabilityConfigurationResponse_capabilitySyncStatus,++    -- ** UpdatePortal+    updatePortal_alarms,+    updatePortal_clientToken,+    updatePortal_notificationSenderEmail,+    updatePortal_portalDescription,+    updatePortal_portalLogoImage,+    updatePortal_portalId,+    updatePortal_portalName,+    updatePortal_portalContactEmail,+    updatePortal_roleArn,+    updatePortalResponse_httpStatus,+    updatePortalResponse_portalStatus,++    -- ** UpdateProject+    updateProject_clientToken,+    updateProject_projectDescription,+    updateProject_projectId,+    updateProject_projectName,+    updateProjectResponse_httpStatus,++    -- * Types++    -- ** AccessPolicySummary+    accessPolicySummary_creationDate,+    accessPolicySummary_lastUpdateDate,+    accessPolicySummary_id,+    accessPolicySummary_identity,+    accessPolicySummary_resource,+    accessPolicySummary_permission,++    -- ** AggregatedValue+    aggregatedValue_quality,+    aggregatedValue_timestamp,+    aggregatedValue_value,++    -- ** Aggregates+    aggregates_average,+    aggregates_count,+    aggregates_maximum,+    aggregates_minimum,+    aggregates_standardDeviation,+    aggregates_sum,++    -- ** Alarms+    alarms_notificationLambdaArn,+    alarms_alarmRoleArn,++    -- ** AssetCompositeModel+    assetCompositeModel_description,+    assetCompositeModel_id,+    assetCompositeModel_name,+    assetCompositeModel_type,+    assetCompositeModel_properties,++    -- ** AssetErrorDetails+    assetErrorDetails_assetId,+    assetErrorDetails_code,+    assetErrorDetails_message,++    -- ** AssetHierarchy+    assetHierarchy_id,+    assetHierarchy_name,++    -- ** AssetHierarchyInfo+    assetHierarchyInfo_childAssetId,+    assetHierarchyInfo_parentAssetId,++    -- ** AssetModelCompositeModel+    assetModelCompositeModel_description,+    assetModelCompositeModel_id,+    assetModelCompositeModel_properties,+    assetModelCompositeModel_name,+    assetModelCompositeModel_type,++    -- ** AssetModelCompositeModelDefinition+    assetModelCompositeModelDefinition_description,+    assetModelCompositeModelDefinition_properties,+    assetModelCompositeModelDefinition_name,+    assetModelCompositeModelDefinition_type,++    -- ** AssetModelHierarchy+    assetModelHierarchy_id,+    assetModelHierarchy_name,+    assetModelHierarchy_childAssetModelId,++    -- ** AssetModelHierarchyDefinition+    assetModelHierarchyDefinition_name,+    assetModelHierarchyDefinition_childAssetModelId,++    -- ** AssetModelProperty+    assetModelProperty_dataTypeSpec,+    assetModelProperty_id,+    assetModelProperty_unit,+    assetModelProperty_name,+    assetModelProperty_dataType,+    assetModelProperty_type,++    -- ** AssetModelPropertyDefinition+    assetModelPropertyDefinition_dataTypeSpec,+    assetModelPropertyDefinition_unit,+    assetModelPropertyDefinition_name,+    assetModelPropertyDefinition_dataType,+    assetModelPropertyDefinition_type,++    -- ** AssetModelPropertySummary+    assetModelPropertySummary_assetModelCompositeModelId,+    assetModelPropertySummary_dataTypeSpec,+    assetModelPropertySummary_id,+    assetModelPropertySummary_unit,+    assetModelPropertySummary_name,+    assetModelPropertySummary_dataType,+    assetModelPropertySummary_type,++    -- ** AssetModelStatus+    assetModelStatus_error,+    assetModelStatus_state,++    -- ** AssetModelSummary+    assetModelSummary_id,+    assetModelSummary_arn,+    assetModelSummary_name,+    assetModelSummary_description,+    assetModelSummary_creationDate,+    assetModelSummary_lastUpdateDate,+    assetModelSummary_status,++    -- ** AssetProperty+    assetProperty_alias,+    assetProperty_dataTypeSpec,+    assetProperty_notification,+    assetProperty_unit,+    assetProperty_id,+    assetProperty_name,+    assetProperty_dataType,++    -- ** AssetPropertySummary+    assetPropertySummary_alias,+    assetPropertySummary_assetCompositeModelId,+    assetPropertySummary_id,+    assetPropertySummary_notification,+    assetPropertySummary_unit,++    -- ** AssetPropertyValue+    assetPropertyValue_quality,+    assetPropertyValue_value,+    assetPropertyValue_timestamp,++    -- ** AssetRelationshipSummary+    assetRelationshipSummary_hierarchyInfo,+    assetRelationshipSummary_relationshipType,++    -- ** AssetStatus+    assetStatus_error,+    assetStatus_state,++    -- ** AssetSummary+    assetSummary_description,+    assetSummary_id,+    assetSummary_arn,+    assetSummary_name,+    assetSummary_assetModelId,+    assetSummary_creationDate,+    assetSummary_lastUpdateDate,+    assetSummary_status,+    assetSummary_hierarchies,++    -- ** AssociatedAssetsSummary+    associatedAssetsSummary_description,+    associatedAssetsSummary_id,+    associatedAssetsSummary_arn,+    associatedAssetsSummary_name,+    associatedAssetsSummary_assetModelId,+    associatedAssetsSummary_creationDate,+    associatedAssetsSummary_lastUpdateDate,+    associatedAssetsSummary_status,+    associatedAssetsSummary_hierarchies,++    -- ** Attribute+    attribute_defaultValue,++    -- ** BatchGetAssetPropertyAggregatesEntry+    batchGetAssetPropertyAggregatesEntry_assetId,+    batchGetAssetPropertyAggregatesEntry_propertyAlias,+    batchGetAssetPropertyAggregatesEntry_propertyId,+    batchGetAssetPropertyAggregatesEntry_qualities,+    batchGetAssetPropertyAggregatesEntry_timeOrdering,+    batchGetAssetPropertyAggregatesEntry_entryId,+    batchGetAssetPropertyAggregatesEntry_aggregateTypes,+    batchGetAssetPropertyAggregatesEntry_resolution,+    batchGetAssetPropertyAggregatesEntry_startDate,+    batchGetAssetPropertyAggregatesEntry_endDate,++    -- ** BatchGetAssetPropertyAggregatesErrorEntry+    batchGetAssetPropertyAggregatesErrorEntry_errorCode,+    batchGetAssetPropertyAggregatesErrorEntry_errorMessage,+    batchGetAssetPropertyAggregatesErrorEntry_entryId,++    -- ** BatchGetAssetPropertyAggregatesErrorInfo+    batchGetAssetPropertyAggregatesErrorInfo_errorCode,+    batchGetAssetPropertyAggregatesErrorInfo_errorTimestamp,++    -- ** BatchGetAssetPropertyAggregatesSkippedEntry+    batchGetAssetPropertyAggregatesSkippedEntry_errorInfo,+    batchGetAssetPropertyAggregatesSkippedEntry_entryId,+    batchGetAssetPropertyAggregatesSkippedEntry_completionStatus,++    -- ** BatchGetAssetPropertyAggregatesSuccessEntry+    batchGetAssetPropertyAggregatesSuccessEntry_entryId,+    batchGetAssetPropertyAggregatesSuccessEntry_aggregatedValues,++    -- ** BatchGetAssetPropertyValueEntry+    batchGetAssetPropertyValueEntry_assetId,+    batchGetAssetPropertyValueEntry_propertyAlias,+    batchGetAssetPropertyValueEntry_propertyId,+    batchGetAssetPropertyValueEntry_entryId,++    -- ** BatchGetAssetPropertyValueErrorEntry+    batchGetAssetPropertyValueErrorEntry_errorCode,+    batchGetAssetPropertyValueErrorEntry_errorMessage,+    batchGetAssetPropertyValueErrorEntry_entryId,++    -- ** BatchGetAssetPropertyValueErrorInfo+    batchGetAssetPropertyValueErrorInfo_errorCode,+    batchGetAssetPropertyValueErrorInfo_errorTimestamp,++    -- ** BatchGetAssetPropertyValueHistoryEntry+    batchGetAssetPropertyValueHistoryEntry_assetId,+    batchGetAssetPropertyValueHistoryEntry_endDate,+    batchGetAssetPropertyValueHistoryEntry_propertyAlias,+    batchGetAssetPropertyValueHistoryEntry_propertyId,+    batchGetAssetPropertyValueHistoryEntry_qualities,+    batchGetAssetPropertyValueHistoryEntry_startDate,+    batchGetAssetPropertyValueHistoryEntry_timeOrdering,+    batchGetAssetPropertyValueHistoryEntry_entryId,++    -- ** BatchGetAssetPropertyValueHistoryErrorEntry+    batchGetAssetPropertyValueHistoryErrorEntry_errorCode,+    batchGetAssetPropertyValueHistoryErrorEntry_errorMessage,+    batchGetAssetPropertyValueHistoryErrorEntry_entryId,++    -- ** BatchGetAssetPropertyValueHistoryErrorInfo+    batchGetAssetPropertyValueHistoryErrorInfo_errorCode,+    batchGetAssetPropertyValueHistoryErrorInfo_errorTimestamp,++    -- ** BatchGetAssetPropertyValueHistorySkippedEntry+    batchGetAssetPropertyValueHistorySkippedEntry_errorInfo,+    batchGetAssetPropertyValueHistorySkippedEntry_entryId,+    batchGetAssetPropertyValueHistorySkippedEntry_completionStatus,++    -- ** BatchGetAssetPropertyValueHistorySuccessEntry+    batchGetAssetPropertyValueHistorySuccessEntry_entryId,+    batchGetAssetPropertyValueHistorySuccessEntry_assetPropertyValueHistory,++    -- ** BatchGetAssetPropertyValueSkippedEntry+    batchGetAssetPropertyValueSkippedEntry_errorInfo,+    batchGetAssetPropertyValueSkippedEntry_entryId,+    batchGetAssetPropertyValueSkippedEntry_completionStatus,++    -- ** BatchGetAssetPropertyValueSuccessEntry+    batchGetAssetPropertyValueSuccessEntry_assetPropertyValue,+    batchGetAssetPropertyValueSuccessEntry_entryId,++    -- ** BatchPutAssetPropertyError+    batchPutAssetPropertyError_errorCode,+    batchPutAssetPropertyError_errorMessage,+    batchPutAssetPropertyError_timestamps,++    -- ** BatchPutAssetPropertyErrorEntry+    batchPutAssetPropertyErrorEntry_entryId,+    batchPutAssetPropertyErrorEntry_errors,++    -- ** CompositeModelProperty+    compositeModelProperty_id,+    compositeModelProperty_name,+    compositeModelProperty_type,+    compositeModelProperty_assetProperty,++    -- ** ConfigurationErrorDetails+    configurationErrorDetails_code,+    configurationErrorDetails_message,++    -- ** ConfigurationStatus+    configurationStatus_error,+    configurationStatus_state,++    -- ** Csv+    csv_columnNames,++    -- ** CustomerManagedS3Storage+    customerManagedS3Storage_s3ResourceArn,+    customerManagedS3Storage_roleArn,++    -- ** DashboardSummary+    dashboardSummary_creationDate,+    dashboardSummary_description,+    dashboardSummary_lastUpdateDate,+    dashboardSummary_id,+    dashboardSummary_name,++    -- ** DetailedError+    detailedError_code,+    detailedError_message,++    -- ** ErrorDetails+    errorDetails_details,+    errorDetails_code,+    errorDetails_message,++    -- ** ErrorReportLocation+    errorReportLocation_bucket,+    errorReportLocation_prefix,++    -- ** ExpressionVariable+    expressionVariable_name,+    expressionVariable_value,++    -- ** File+    file_versionId,+    file_bucket,+    file_key,++    -- ** FileFormat+    fileFormat_csv,++    -- ** ForwardingConfig+    forwardingConfig_state,++    -- ** GatewayCapabilitySummary+    gatewayCapabilitySummary_capabilityNamespace,+    gatewayCapabilitySummary_capabilitySyncStatus,++    -- ** GatewayPlatform+    gatewayPlatform_greengrass,+    gatewayPlatform_greengrassV2,++    -- ** GatewaySummary+    gatewaySummary_gatewayCapabilitySummaries,+    gatewaySummary_gatewayPlatform,+    gatewaySummary_gatewayId,+    gatewaySummary_gatewayName,+    gatewaySummary_creationDate,+    gatewaySummary_lastUpdateDate,++    -- ** Greengrass+    greengrass_groupArn,++    -- ** GreengrassV2+    greengrassV2_coreDeviceThingName,++    -- ** GroupIdentity+    groupIdentity_id,++    -- ** IAMRoleIdentity+    iAMRoleIdentity_arn,++    -- ** IAMUserIdentity+    iAMUserIdentity_arn,++    -- ** Identity+    identity_group,+    identity_iamRole,+    identity_iamUser,+    identity_user,++    -- ** Image+    image_file,+    image_id,++    -- ** ImageFile+    imageFile_data,+    imageFile_type,++    -- ** ImageLocation+    imageLocation_id,+    imageLocation_url,++    -- ** InterpolatedAssetPropertyValue+    interpolatedAssetPropertyValue_timestamp,+    interpolatedAssetPropertyValue_value,++    -- ** JobConfiguration+    jobConfiguration_fileFormat,++    -- ** JobSummary+    jobSummary_id,+    jobSummary_name,+    jobSummary_status,++    -- ** LoggingOptions+    loggingOptions_level,++    -- ** Measurement+    measurement_processingConfig,++    -- ** MeasurementProcessingConfig+    measurementProcessingConfig_forwardingConfig,++    -- ** Metric+    metric_processingConfig,+    metric_expression,+    metric_variables,+    metric_window,++    -- ** MetricProcessingConfig+    metricProcessingConfig_computeLocation,++    -- ** MetricWindow+    metricWindow_tumbling,++    -- ** MonitorErrorDetails+    monitorErrorDetails_code,+    monitorErrorDetails_message,++    -- ** MultiLayerStorage+    multiLayerStorage_customerManagedS3Storage,++    -- ** PortalResource+    portalResource_id,++    -- ** PortalStatus+    portalStatus_error,+    portalStatus_state,++    -- ** PortalSummary+    portalSummary_creationDate,+    portalSummary_description,+    portalSummary_lastUpdateDate,+    portalSummary_roleArn,+    portalSummary_id,+    portalSummary_name,+    portalSummary_startUrl,+    portalSummary_status,++    -- ** ProjectResource+    projectResource_id,++    -- ** ProjectSummary+    projectSummary_creationDate,+    projectSummary_description,+    projectSummary_lastUpdateDate,+    projectSummary_id,+    projectSummary_name,++    -- ** Property+    property_alias,+    property_notification,+    property_type,+    property_unit,+    property_id,+    property_name,+    property_dataType,++    -- ** PropertyNotification+    propertyNotification_topic,+    propertyNotification_state,++    -- ** PropertyType+    propertyType_attribute,+    propertyType_measurement,+    propertyType_metric,+    propertyType_transform,++    -- ** PutAssetPropertyValueEntry+    putAssetPropertyValueEntry_assetId,+    putAssetPropertyValueEntry_propertyAlias,+    putAssetPropertyValueEntry_propertyId,+    putAssetPropertyValueEntry_entryId,+    putAssetPropertyValueEntry_propertyValues,++    -- ** Resource+    resource_portal,+    resource_project,++    -- ** RetentionPeriod+    retentionPeriod_numberOfDays,+    retentionPeriod_unlimited,++    -- ** TimeInNanos+    timeInNanos_offsetInNanos,+    timeInNanos_timeInSeconds,++    -- ** TimeSeriesSummary+    timeSeriesSummary_alias,+    timeSeriesSummary_assetId,+    timeSeriesSummary_dataTypeSpec,+    timeSeriesSummary_propertyId,+    timeSeriesSummary_timeSeriesId,+    timeSeriesSummary_dataType,+    timeSeriesSummary_timeSeriesCreationDate,+    timeSeriesSummary_timeSeriesLastUpdateDate,++    -- ** Transform+    transform_processingConfig,+    transform_expression,+    transform_variables,++    -- ** TransformProcessingConfig+    transformProcessingConfig_forwardingConfig,+    transformProcessingConfig_computeLocation,++    -- ** TumblingWindow+    tumblingWindow_offset,+    tumblingWindow_interval,++    -- ** UserIdentity+    userIdentity_id,++    -- ** VariableValue+    variableValue_hierarchyId,+    variableValue_propertyId,++    -- ** Variant+    variant_booleanValue,+    variant_doubleValue,+    variant_integerValue,+    variant_stringValue,+  )+where++import Amazonka.IoTSiteWise.AssociateAssets+import Amazonka.IoTSiteWise.AssociateTimeSeriesToAssetProperty+import Amazonka.IoTSiteWise.BatchAssociateProjectAssets+import Amazonka.IoTSiteWise.BatchDisassociateProjectAssets+import Amazonka.IoTSiteWise.BatchGetAssetPropertyAggregates+import Amazonka.IoTSiteWise.BatchGetAssetPropertyValue+import Amazonka.IoTSiteWise.BatchGetAssetPropertyValueHistory+import Amazonka.IoTSiteWise.BatchPutAssetPropertyValue+import Amazonka.IoTSiteWise.CreateAccessPolicy+import Amazonka.IoTSiteWise.CreateAsset+import Amazonka.IoTSiteWise.CreateAssetModel+import Amazonka.IoTSiteWise.CreateBulkImportJob+import Amazonka.IoTSiteWise.CreateDashboard+import Amazonka.IoTSiteWise.CreateGateway+import Amazonka.IoTSiteWise.CreatePortal+import Amazonka.IoTSiteWise.CreateProject+import Amazonka.IoTSiteWise.DeleteAccessPolicy+import Amazonka.IoTSiteWise.DeleteAsset+import Amazonka.IoTSiteWise.DeleteAssetModel+import Amazonka.IoTSiteWise.DeleteDashboard+import Amazonka.IoTSiteWise.DeleteGateway+import Amazonka.IoTSiteWise.DeletePortal+import Amazonka.IoTSiteWise.DeleteProject+import Amazonka.IoTSiteWise.DeleteTimeSeries+import Amazonka.IoTSiteWise.DescribeAccessPolicy+import Amazonka.IoTSiteWise.DescribeAsset+import Amazonka.IoTSiteWise.DescribeAssetModel+import Amazonka.IoTSiteWise.DescribeAssetProperty+import Amazonka.IoTSiteWise.DescribeBulkImportJob+import Amazonka.IoTSiteWise.DescribeDashboard+import Amazonka.IoTSiteWise.DescribeDefaultEncryptionConfiguration+import Amazonka.IoTSiteWise.DescribeGateway+import Amazonka.IoTSiteWise.DescribeGatewayCapabilityConfiguration+import Amazonka.IoTSiteWise.DescribeLoggingOptions+import Amazonka.IoTSiteWise.DescribePortal+import Amazonka.IoTSiteWise.DescribeProject+import Amazonka.IoTSiteWise.DescribeStorageConfiguration+import Amazonka.IoTSiteWise.DescribeTimeSeries+import Amazonka.IoTSiteWise.DisassociateAssets+import Amazonka.IoTSiteWise.DisassociateTimeSeriesFromAssetProperty+import Amazonka.IoTSiteWise.GetAssetPropertyAggregates+import Amazonka.IoTSiteWise.GetAssetPropertyValue+import Amazonka.IoTSiteWise.GetAssetPropertyValueHistory+import Amazonka.IoTSiteWise.GetInterpolatedAssetPropertyValues+import Amazonka.IoTSiteWise.ListAccessPolicies+import Amazonka.IoTSiteWise.ListAssetModelProperties+import Amazonka.IoTSiteWise.ListAssetModels+import Amazonka.IoTSiteWise.ListAssetProperties+import Amazonka.IoTSiteWise.ListAssetRelationships+import Amazonka.IoTSiteWise.ListAssets+import Amazonka.IoTSiteWise.ListAssociatedAssets+import Amazonka.IoTSiteWise.ListBulkImportJobs+import Amazonka.IoTSiteWise.ListDashboards+import Amazonka.IoTSiteWise.ListGateways+import Amazonka.IoTSiteWise.ListPortals+import Amazonka.IoTSiteWise.ListProjectAssets+import Amazonka.IoTSiteWise.ListProjects+import Amazonka.IoTSiteWise.ListTagsForResource+import Amazonka.IoTSiteWise.ListTimeSeries+import Amazonka.IoTSiteWise.PutDefaultEncryptionConfiguration+import Amazonka.IoTSiteWise.PutLoggingOptions+import Amazonka.IoTSiteWise.PutStorageConfiguration+import Amazonka.IoTSiteWise.TagResource+import Amazonka.IoTSiteWise.Types.AccessPolicySummary+import Amazonka.IoTSiteWise.Types.AggregatedValue+import Amazonka.IoTSiteWise.Types.Aggregates+import Amazonka.IoTSiteWise.Types.Alarms+import Amazonka.IoTSiteWise.Types.AssetCompositeModel+import Amazonka.IoTSiteWise.Types.AssetErrorDetails+import Amazonka.IoTSiteWise.Types.AssetHierarchy+import Amazonka.IoTSiteWise.Types.AssetHierarchyInfo+import Amazonka.IoTSiteWise.Types.AssetModelCompositeModel+import Amazonka.IoTSiteWise.Types.AssetModelCompositeModelDefinition+import Amazonka.IoTSiteWise.Types.AssetModelHierarchy+import Amazonka.IoTSiteWise.Types.AssetModelHierarchyDefinition+import Amazonka.IoTSiteWise.Types.AssetModelProperty+import Amazonka.IoTSiteWise.Types.AssetModelPropertyDefinition+import Amazonka.IoTSiteWise.Types.AssetModelPropertySummary+import Amazonka.IoTSiteWise.Types.AssetModelStatus+import Amazonka.IoTSiteWise.Types.AssetModelSummary+import Amazonka.IoTSiteWise.Types.AssetProperty+import Amazonka.IoTSiteWise.Types.AssetPropertySummary+import Amazonka.IoTSiteWise.Types.AssetPropertyValue+import Amazonka.IoTSiteWise.Types.AssetRelationshipSummary+import Amazonka.IoTSiteWise.Types.AssetStatus+import Amazonka.IoTSiteWise.Types.AssetSummary+import Amazonka.IoTSiteWise.Types.AssociatedAssetsSummary+import Amazonka.IoTSiteWise.Types.Attribute+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorInfo+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesSkippedEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesSuccessEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorInfo+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorInfo+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistorySkippedEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistorySuccessEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueSkippedEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueSuccessEntry+import Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyError+import Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyErrorEntry+import Amazonka.IoTSiteWise.Types.CompositeModelProperty+import Amazonka.IoTSiteWise.Types.ConfigurationErrorDetails+import Amazonka.IoTSiteWise.Types.ConfigurationStatus+import Amazonka.IoTSiteWise.Types.Csv+import Amazonka.IoTSiteWise.Types.CustomerManagedS3Storage+import Amazonka.IoTSiteWise.Types.DashboardSummary+import Amazonka.IoTSiteWise.Types.DetailedError+import Amazonka.IoTSiteWise.Types.ErrorDetails+import Amazonka.IoTSiteWise.Types.ErrorReportLocation+import Amazonka.IoTSiteWise.Types.ExpressionVariable+import Amazonka.IoTSiteWise.Types.File+import Amazonka.IoTSiteWise.Types.FileFormat+import Amazonka.IoTSiteWise.Types.ForwardingConfig+import Amazonka.IoTSiteWise.Types.GatewayCapabilitySummary+import Amazonka.IoTSiteWise.Types.GatewayPlatform+import Amazonka.IoTSiteWise.Types.GatewaySummary+import Amazonka.IoTSiteWise.Types.Greengrass+import Amazonka.IoTSiteWise.Types.GreengrassV2+import Amazonka.IoTSiteWise.Types.GroupIdentity+import Amazonka.IoTSiteWise.Types.IAMRoleIdentity+import Amazonka.IoTSiteWise.Types.IAMUserIdentity+import Amazonka.IoTSiteWise.Types.Identity+import Amazonka.IoTSiteWise.Types.Image+import Amazonka.IoTSiteWise.Types.ImageFile+import Amazonka.IoTSiteWise.Types.ImageLocation+import Amazonka.IoTSiteWise.Types.InterpolatedAssetPropertyValue+import Amazonka.IoTSiteWise.Types.JobConfiguration+import Amazonka.IoTSiteWise.Types.JobSummary+import Amazonka.IoTSiteWise.Types.LoggingOptions+import Amazonka.IoTSiteWise.Types.Measurement+import Amazonka.IoTSiteWise.Types.MeasurementProcessingConfig+import Amazonka.IoTSiteWise.Types.Metric+import Amazonka.IoTSiteWise.Types.MetricProcessingConfig+import Amazonka.IoTSiteWise.Types.MetricWindow+import Amazonka.IoTSiteWise.Types.MonitorErrorDetails+import Amazonka.IoTSiteWise.Types.MultiLayerStorage+import Amazonka.IoTSiteWise.Types.PortalResource+import Amazonka.IoTSiteWise.Types.PortalStatus+import Amazonka.IoTSiteWise.Types.PortalSummary+import Amazonka.IoTSiteWise.Types.ProjectResource+import Amazonka.IoTSiteWise.Types.ProjectSummary+import Amazonka.IoTSiteWise.Types.Property+import Amazonka.IoTSiteWise.Types.PropertyNotification+import Amazonka.IoTSiteWise.Types.PropertyType+import Amazonka.IoTSiteWise.Types.PutAssetPropertyValueEntry+import Amazonka.IoTSiteWise.Types.Resource+import Amazonka.IoTSiteWise.Types.RetentionPeriod+import Amazonka.IoTSiteWise.Types.TimeInNanos+import Amazonka.IoTSiteWise.Types.TimeSeriesSummary+import Amazonka.IoTSiteWise.Types.Transform+import Amazonka.IoTSiteWise.Types.TransformProcessingConfig+import Amazonka.IoTSiteWise.Types.TumblingWindow+import Amazonka.IoTSiteWise.Types.UserIdentity+import Amazonka.IoTSiteWise.Types.VariableValue+import Amazonka.IoTSiteWise.Types.Variant+import Amazonka.IoTSiteWise.UntagResource+import Amazonka.IoTSiteWise.UpdateAccessPolicy+import Amazonka.IoTSiteWise.UpdateAsset+import Amazonka.IoTSiteWise.UpdateAssetModel+import Amazonka.IoTSiteWise.UpdateAssetProperty+import Amazonka.IoTSiteWise.UpdateDashboard+import Amazonka.IoTSiteWise.UpdateGateway+import Amazonka.IoTSiteWise.UpdateGatewayCapabilityConfiguration+import Amazonka.IoTSiteWise.UpdatePortal+import Amazonka.IoTSiteWise.UpdateProject
+ gen/Amazonka/IoTSiteWise/ListAccessPolicies.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.IoTSiteWise.ListAccessPolicies+-- 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 paginated list of access policies for an identity (an IAM+-- Identity Center user, an IAM Identity Center group, or an IAM user) or+-- an IoT SiteWise Monitor resource (a portal or project).+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListAccessPolicies+  ( -- * Creating a Request+    ListAccessPolicies (..),+    newListAccessPolicies,++    -- * Request Lenses+    listAccessPolicies_iamArn,+    listAccessPolicies_identityId,+    listAccessPolicies_identityType,+    listAccessPolicies_maxResults,+    listAccessPolicies_nextToken,+    listAccessPolicies_resourceId,+    listAccessPolicies_resourceType,++    -- * Destructuring the Response+    ListAccessPoliciesResponse (..),+    newListAccessPoliciesResponse,++    -- * Response Lenses+    listAccessPoliciesResponse_nextToken,+    listAccessPoliciesResponse_httpStatus,+    listAccessPoliciesResponse_accessPolicySummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAccessPolicies' smart constructor.+data ListAccessPolicies = ListAccessPolicies'+  { -- | The ARN of the IAM user. For more information, see+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html IAM ARNs>+    -- in the /IAM User Guide/. This parameter is required if you specify @IAM@+    -- for @identityType@.+    iamArn :: Prelude.Maybe Prelude.Text,+    -- | The ID of the identity. This parameter is required if you specify @USER@+    -- or @GROUP@ for @identityType@.+    identityId :: Prelude.Maybe Prelude.Text,+    -- | The type of identity (IAM Identity Center user, IAM Identity Center+    -- group, or IAM user). This parameter is required if you specify+    -- @identityId@.+    identityType :: Prelude.Maybe IdentityType,+    -- | The maximum number of results to return for each paginated request.+    --+    -- Default: 50+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the resource. This parameter is required if you specify+    -- @resourceType@.+    resourceId :: Prelude.Maybe Prelude.Text,+    -- | The type of resource (portal or project). This parameter is required if+    -- you specify @resourceId@.+    resourceType :: Prelude.Maybe ResourceType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAccessPolicies' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'iamArn', 'listAccessPolicies_iamArn' - The ARN of the IAM user. For more information, see+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html IAM ARNs>+-- in the /IAM User Guide/. This parameter is required if you specify @IAM@+-- for @identityType@.+--+-- 'identityId', 'listAccessPolicies_identityId' - The ID of the identity. This parameter is required if you specify @USER@+-- or @GROUP@ for @identityType@.+--+-- 'identityType', 'listAccessPolicies_identityType' - The type of identity (IAM Identity Center user, IAM Identity Center+-- group, or IAM user). This parameter is required if you specify+-- @identityId@.+--+-- 'maxResults', 'listAccessPolicies_maxResults' - The maximum number of results to return for each paginated request.+--+-- Default: 50+--+-- 'nextToken', 'listAccessPolicies_nextToken' - The token to be used for the next set of paginated results.+--+-- 'resourceId', 'listAccessPolicies_resourceId' - The ID of the resource. This parameter is required if you specify+-- @resourceType@.+--+-- 'resourceType', 'listAccessPolicies_resourceType' - The type of resource (portal or project). This parameter is required if+-- you specify @resourceId@.+newListAccessPolicies ::+  ListAccessPolicies+newListAccessPolicies =+  ListAccessPolicies'+    { iamArn = Prelude.Nothing,+      identityId = Prelude.Nothing,+      identityType = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      resourceId = Prelude.Nothing,+      resourceType = Prelude.Nothing+    }++-- | The ARN of the IAM user. For more information, see+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html IAM ARNs>+-- in the /IAM User Guide/. This parameter is required if you specify @IAM@+-- for @identityType@.+listAccessPolicies_iamArn :: Lens.Lens' ListAccessPolicies (Prelude.Maybe Prelude.Text)+listAccessPolicies_iamArn = Lens.lens (\ListAccessPolicies' {iamArn} -> iamArn) (\s@ListAccessPolicies' {} a -> s {iamArn = a} :: ListAccessPolicies)++-- | The ID of the identity. This parameter is required if you specify @USER@+-- or @GROUP@ for @identityType@.+listAccessPolicies_identityId :: Lens.Lens' ListAccessPolicies (Prelude.Maybe Prelude.Text)+listAccessPolicies_identityId = Lens.lens (\ListAccessPolicies' {identityId} -> identityId) (\s@ListAccessPolicies' {} a -> s {identityId = a} :: ListAccessPolicies)++-- | The type of identity (IAM Identity Center user, IAM Identity Center+-- group, or IAM user). This parameter is required if you specify+-- @identityId@.+listAccessPolicies_identityType :: Lens.Lens' ListAccessPolicies (Prelude.Maybe IdentityType)+listAccessPolicies_identityType = Lens.lens (\ListAccessPolicies' {identityType} -> identityType) (\s@ListAccessPolicies' {} a -> s {identityType = a} :: ListAccessPolicies)++-- | The maximum number of results to return for each paginated request.+--+-- Default: 50+listAccessPolicies_maxResults :: Lens.Lens' ListAccessPolicies (Prelude.Maybe Prelude.Natural)+listAccessPolicies_maxResults = Lens.lens (\ListAccessPolicies' {maxResults} -> maxResults) (\s@ListAccessPolicies' {} a -> s {maxResults = a} :: ListAccessPolicies)++-- | The token to be used for the next set of paginated results.+listAccessPolicies_nextToken :: Lens.Lens' ListAccessPolicies (Prelude.Maybe Prelude.Text)+listAccessPolicies_nextToken = Lens.lens (\ListAccessPolicies' {nextToken} -> nextToken) (\s@ListAccessPolicies' {} a -> s {nextToken = a} :: ListAccessPolicies)++-- | The ID of the resource. This parameter is required if you specify+-- @resourceType@.+listAccessPolicies_resourceId :: Lens.Lens' ListAccessPolicies (Prelude.Maybe Prelude.Text)+listAccessPolicies_resourceId = Lens.lens (\ListAccessPolicies' {resourceId} -> resourceId) (\s@ListAccessPolicies' {} a -> s {resourceId = a} :: ListAccessPolicies)++-- | The type of resource (portal or project). This parameter is required if+-- you specify @resourceId@.+listAccessPolicies_resourceType :: Lens.Lens' ListAccessPolicies (Prelude.Maybe ResourceType)+listAccessPolicies_resourceType = Lens.lens (\ListAccessPolicies' {resourceType} -> resourceType) (\s@ListAccessPolicies' {} a -> s {resourceType = a} :: ListAccessPolicies)++instance Core.AWSPager ListAccessPolicies where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listAccessPoliciesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listAccessPoliciesResponse_accessPolicySummaries+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listAccessPolicies_nextToken+          Lens..~ rs+          Lens.^? listAccessPoliciesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListAccessPolicies where+  type+    AWSResponse ListAccessPolicies =+      ListAccessPoliciesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAccessPoliciesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "accessPolicySummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListAccessPolicies where+  hashWithSalt _salt ListAccessPolicies' {..} =+    _salt+      `Prelude.hashWithSalt` iamArn+      `Prelude.hashWithSalt` identityId+      `Prelude.hashWithSalt` identityType+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` resourceId+      `Prelude.hashWithSalt` resourceType++instance Prelude.NFData ListAccessPolicies where+  rnf ListAccessPolicies' {..} =+    Prelude.rnf iamArn+      `Prelude.seq` Prelude.rnf identityId+      `Prelude.seq` Prelude.rnf identityType+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf resourceId+      `Prelude.seq` Prelude.rnf resourceType++instance Data.ToHeaders ListAccessPolicies where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListAccessPolicies where+  toPath = Prelude.const "/access-policies"++instance Data.ToQuery ListAccessPolicies where+  toQuery ListAccessPolicies' {..} =+    Prelude.mconcat+      [ "iamArn" Data.=: iamArn,+        "identityId" Data.=: identityId,+        "identityType" Data.=: identityType,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "resourceId" Data.=: resourceId,+        "resourceType" Data.=: resourceType+      ]++-- | /See:/ 'newListAccessPoliciesResponse' smart constructor.+data ListAccessPoliciesResponse = ListAccessPoliciesResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list that summarizes each access policy.+    accessPolicySummaries :: [AccessPolicySummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAccessPoliciesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAccessPoliciesResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listAccessPoliciesResponse_httpStatus' - The response's http status code.+--+-- 'accessPolicySummaries', 'listAccessPoliciesResponse_accessPolicySummaries' - A list that summarizes each access policy.+newListAccessPoliciesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAccessPoliciesResponse+newListAccessPoliciesResponse pHttpStatus_ =+  ListAccessPoliciesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      accessPolicySummaries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listAccessPoliciesResponse_nextToken :: Lens.Lens' ListAccessPoliciesResponse (Prelude.Maybe Prelude.Text)+listAccessPoliciesResponse_nextToken = Lens.lens (\ListAccessPoliciesResponse' {nextToken} -> nextToken) (\s@ListAccessPoliciesResponse' {} a -> s {nextToken = a} :: ListAccessPoliciesResponse)++-- | The response's http status code.+listAccessPoliciesResponse_httpStatus :: Lens.Lens' ListAccessPoliciesResponse Prelude.Int+listAccessPoliciesResponse_httpStatus = Lens.lens (\ListAccessPoliciesResponse' {httpStatus} -> httpStatus) (\s@ListAccessPoliciesResponse' {} a -> s {httpStatus = a} :: ListAccessPoliciesResponse)++-- | A list that summarizes each access policy.+listAccessPoliciesResponse_accessPolicySummaries :: Lens.Lens' ListAccessPoliciesResponse [AccessPolicySummary]+listAccessPoliciesResponse_accessPolicySummaries = Lens.lens (\ListAccessPoliciesResponse' {accessPolicySummaries} -> accessPolicySummaries) (\s@ListAccessPoliciesResponse' {} a -> s {accessPolicySummaries = a} :: ListAccessPoliciesResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListAccessPoliciesResponse where+  rnf ListAccessPoliciesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf accessPolicySummaries
+ gen/Amazonka/IoTSiteWise/ListAssetModelProperties.hs view
@@ -0,0 +1,288 @@+{-# 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.IoTSiteWise.ListAssetModelProperties+-- 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 paginated list of properties associated with an asset model.+-- If you update properties associated with the model before you finish+-- listing all the properties, you need to start all over again.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListAssetModelProperties+  ( -- * Creating a Request+    ListAssetModelProperties (..),+    newListAssetModelProperties,++    -- * Request Lenses+    listAssetModelProperties_filter,+    listAssetModelProperties_maxResults,+    listAssetModelProperties_nextToken,+    listAssetModelProperties_assetModelId,++    -- * Destructuring the Response+    ListAssetModelPropertiesResponse (..),+    newListAssetModelPropertiesResponse,++    -- * Response Lenses+    listAssetModelPropertiesResponse_nextToken,+    listAssetModelPropertiesResponse_httpStatus,+    listAssetModelPropertiesResponse_assetModelPropertySummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAssetModelProperties' smart constructor.+data ListAssetModelProperties = ListAssetModelProperties'+  { -- | Filters the requested list of asset model properties. You can choose one+    -- of the following options:+    --+    -- -   @ALL@ – The list includes all asset model properties for a given+    --     asset model ID.+    --+    -- -   @BASE@ – The list includes only base asset model properties for a+    --     given asset model ID.+    --+    -- Default: @BASE@+    filter' :: Prelude.Maybe ListAssetModelPropertiesFilter,+    -- | The maximum number of results to return for each paginated request. If+    -- not specified, the default value is 50.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset model.+    assetModelId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssetModelProperties' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filter'', 'listAssetModelProperties_filter' - Filters the requested list of asset model properties. You can choose one+-- of the following options:+--+-- -   @ALL@ – The list includes all asset model properties for a given+--     asset model ID.+--+-- -   @BASE@ – The list includes only base asset model properties for a+--     given asset model ID.+--+-- Default: @BASE@+--+-- 'maxResults', 'listAssetModelProperties_maxResults' - The maximum number of results to return for each paginated request. If+-- not specified, the default value is 50.+--+-- 'nextToken', 'listAssetModelProperties_nextToken' - The token to be used for the next set of paginated results.+--+-- 'assetModelId', 'listAssetModelProperties_assetModelId' - The ID of the asset model.+newListAssetModelProperties ::+  -- | 'assetModelId'+  Prelude.Text ->+  ListAssetModelProperties+newListAssetModelProperties pAssetModelId_ =+  ListAssetModelProperties'+    { filter' =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      assetModelId = pAssetModelId_+    }++-- | Filters the requested list of asset model properties. You can choose one+-- of the following options:+--+-- -   @ALL@ – The list includes all asset model properties for a given+--     asset model ID.+--+-- -   @BASE@ – The list includes only base asset model properties for a+--     given asset model ID.+--+-- Default: @BASE@+listAssetModelProperties_filter :: Lens.Lens' ListAssetModelProperties (Prelude.Maybe ListAssetModelPropertiesFilter)+listAssetModelProperties_filter = Lens.lens (\ListAssetModelProperties' {filter'} -> filter') (\s@ListAssetModelProperties' {} a -> s {filter' = a} :: ListAssetModelProperties)++-- | The maximum number of results to return for each paginated request. If+-- not specified, the default value is 50.+listAssetModelProperties_maxResults :: Lens.Lens' ListAssetModelProperties (Prelude.Maybe Prelude.Natural)+listAssetModelProperties_maxResults = Lens.lens (\ListAssetModelProperties' {maxResults} -> maxResults) (\s@ListAssetModelProperties' {} a -> s {maxResults = a} :: ListAssetModelProperties)++-- | The token to be used for the next set of paginated results.+listAssetModelProperties_nextToken :: Lens.Lens' ListAssetModelProperties (Prelude.Maybe Prelude.Text)+listAssetModelProperties_nextToken = Lens.lens (\ListAssetModelProperties' {nextToken} -> nextToken) (\s@ListAssetModelProperties' {} a -> s {nextToken = a} :: ListAssetModelProperties)++-- | The ID of the asset model.+listAssetModelProperties_assetModelId :: Lens.Lens' ListAssetModelProperties Prelude.Text+listAssetModelProperties_assetModelId = Lens.lens (\ListAssetModelProperties' {assetModelId} -> assetModelId) (\s@ListAssetModelProperties' {} a -> s {assetModelId = a} :: ListAssetModelProperties)++instance Core.AWSPager ListAssetModelProperties where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listAssetModelPropertiesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listAssetModelPropertiesResponse_assetModelPropertySummaries+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listAssetModelProperties_nextToken+          Lens..~ rs+          Lens.^? listAssetModelPropertiesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListAssetModelProperties where+  type+    AWSResponse ListAssetModelProperties =+      ListAssetModelPropertiesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAssetModelPropertiesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "assetModelPropertySummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListAssetModelProperties where+  hashWithSalt _salt ListAssetModelProperties' {..} =+    _salt+      `Prelude.hashWithSalt` filter'+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` assetModelId++instance Prelude.NFData ListAssetModelProperties where+  rnf ListAssetModelProperties' {..} =+    Prelude.rnf filter'+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf assetModelId++instance Data.ToHeaders ListAssetModelProperties where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListAssetModelProperties where+  toPath ListAssetModelProperties' {..} =+    Prelude.mconcat+      [ "/asset-models/",+        Data.toBS assetModelId,+        "/properties"+      ]++instance Data.ToQuery ListAssetModelProperties where+  toQuery ListAssetModelProperties' {..} =+    Prelude.mconcat+      [ "filter" Data.=: filter',+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListAssetModelPropertiesResponse' smart constructor.+data ListAssetModelPropertiesResponse = ListAssetModelPropertiesResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list that summarizes the properties associated with the specified+    -- asset model.+    assetModelPropertySummaries :: [AssetModelPropertySummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssetModelPropertiesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAssetModelPropertiesResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listAssetModelPropertiesResponse_httpStatus' - The response's http status code.+--+-- 'assetModelPropertySummaries', 'listAssetModelPropertiesResponse_assetModelPropertySummaries' - A list that summarizes the properties associated with the specified+-- asset model.+newListAssetModelPropertiesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAssetModelPropertiesResponse+newListAssetModelPropertiesResponse pHttpStatus_ =+  ListAssetModelPropertiesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      assetModelPropertySummaries =+        Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listAssetModelPropertiesResponse_nextToken :: Lens.Lens' ListAssetModelPropertiesResponse (Prelude.Maybe Prelude.Text)+listAssetModelPropertiesResponse_nextToken = Lens.lens (\ListAssetModelPropertiesResponse' {nextToken} -> nextToken) (\s@ListAssetModelPropertiesResponse' {} a -> s {nextToken = a} :: ListAssetModelPropertiesResponse)++-- | The response's http status code.+listAssetModelPropertiesResponse_httpStatus :: Lens.Lens' ListAssetModelPropertiesResponse Prelude.Int+listAssetModelPropertiesResponse_httpStatus = Lens.lens (\ListAssetModelPropertiesResponse' {httpStatus} -> httpStatus) (\s@ListAssetModelPropertiesResponse' {} a -> s {httpStatus = a} :: ListAssetModelPropertiesResponse)++-- | A list that summarizes the properties associated with the specified+-- asset model.+listAssetModelPropertiesResponse_assetModelPropertySummaries :: Lens.Lens' ListAssetModelPropertiesResponse [AssetModelPropertySummary]+listAssetModelPropertiesResponse_assetModelPropertySummaries = Lens.lens (\ListAssetModelPropertiesResponse' {assetModelPropertySummaries} -> assetModelPropertySummaries) (\s@ListAssetModelPropertiesResponse' {} a -> s {assetModelPropertySummaries = a} :: ListAssetModelPropertiesResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    ListAssetModelPropertiesResponse+  where+  rnf ListAssetModelPropertiesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetModelPropertySummaries
+ gen/Amazonka/IoTSiteWise/ListAssetModels.hs view
@@ -0,0 +1,222 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.ListAssetModels+-- 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 paginated list of summaries of all asset models.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListAssetModels+  ( -- * Creating a Request+    ListAssetModels (..),+    newListAssetModels,++    -- * Request Lenses+    listAssetModels_maxResults,+    listAssetModels_nextToken,++    -- * Destructuring the Response+    ListAssetModelsResponse (..),+    newListAssetModelsResponse,++    -- * Response Lenses+    listAssetModelsResponse_nextToken,+    listAssetModelsResponse_httpStatus,+    listAssetModelsResponse_assetModelSummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAssetModels' smart constructor.+data ListAssetModels = ListAssetModels'+  { -- | The maximum number of results to return for each paginated request.+    --+    -- Default: 50+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssetModels' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAssetModels_maxResults' - The maximum number of results to return for each paginated request.+--+-- Default: 50+--+-- 'nextToken', 'listAssetModels_nextToken' - The token to be used for the next set of paginated results.+newListAssetModels ::+  ListAssetModels+newListAssetModels =+  ListAssetModels'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of results to return for each paginated request.+--+-- Default: 50+listAssetModels_maxResults :: Lens.Lens' ListAssetModels (Prelude.Maybe Prelude.Natural)+listAssetModels_maxResults = Lens.lens (\ListAssetModels' {maxResults} -> maxResults) (\s@ListAssetModels' {} a -> s {maxResults = a} :: ListAssetModels)++-- | The token to be used for the next set of paginated results.+listAssetModels_nextToken :: Lens.Lens' ListAssetModels (Prelude.Maybe Prelude.Text)+listAssetModels_nextToken = Lens.lens (\ListAssetModels' {nextToken} -> nextToken) (\s@ListAssetModels' {} a -> s {nextToken = a} :: ListAssetModels)++instance Core.AWSPager ListAssetModels where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listAssetModelsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listAssetModelsResponse_assetModelSummaries+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listAssetModels_nextToken+          Lens..~ rs+          Lens.^? listAssetModelsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListAssetModels where+  type+    AWSResponse ListAssetModels =+      ListAssetModelsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAssetModelsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "assetModelSummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListAssetModels where+  hashWithSalt _salt ListAssetModels' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListAssetModels where+  rnf ListAssetModels' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListAssetModels where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListAssetModels where+  toPath = Prelude.const "/asset-models"++instance Data.ToQuery ListAssetModels where+  toQuery ListAssetModels' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListAssetModelsResponse' smart constructor.+data ListAssetModelsResponse = ListAssetModelsResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list that summarizes each asset model.+    assetModelSummaries :: [AssetModelSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssetModelsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAssetModelsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listAssetModelsResponse_httpStatus' - The response's http status code.+--+-- 'assetModelSummaries', 'listAssetModelsResponse_assetModelSummaries' - A list that summarizes each asset model.+newListAssetModelsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAssetModelsResponse+newListAssetModelsResponse pHttpStatus_ =+  ListAssetModelsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      assetModelSummaries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listAssetModelsResponse_nextToken :: Lens.Lens' ListAssetModelsResponse (Prelude.Maybe Prelude.Text)+listAssetModelsResponse_nextToken = Lens.lens (\ListAssetModelsResponse' {nextToken} -> nextToken) (\s@ListAssetModelsResponse' {} a -> s {nextToken = a} :: ListAssetModelsResponse)++-- | The response's http status code.+listAssetModelsResponse_httpStatus :: Lens.Lens' ListAssetModelsResponse Prelude.Int+listAssetModelsResponse_httpStatus = Lens.lens (\ListAssetModelsResponse' {httpStatus} -> httpStatus) (\s@ListAssetModelsResponse' {} a -> s {httpStatus = a} :: ListAssetModelsResponse)++-- | A list that summarizes each asset model.+listAssetModelsResponse_assetModelSummaries :: Lens.Lens' ListAssetModelsResponse [AssetModelSummary]+listAssetModelsResponse_assetModelSummaries = Lens.lens (\ListAssetModelsResponse' {assetModelSummaries} -> assetModelSummaries) (\s@ListAssetModelsResponse' {} a -> s {assetModelSummaries = a} :: ListAssetModelsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListAssetModelsResponse where+  rnf ListAssetModelsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetModelSummaries
+ gen/Amazonka/IoTSiteWise/ListAssetProperties.hs view
@@ -0,0 +1,280 @@+{-# 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.IoTSiteWise.ListAssetProperties+-- 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 paginated list of properties associated with an asset. If+-- you update properties associated with the model before you finish+-- listing all the properties, you need to start all over again.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListAssetProperties+  ( -- * Creating a Request+    ListAssetProperties (..),+    newListAssetProperties,++    -- * Request Lenses+    listAssetProperties_filter,+    listAssetProperties_maxResults,+    listAssetProperties_nextToken,+    listAssetProperties_assetId,++    -- * Destructuring the Response+    ListAssetPropertiesResponse (..),+    newListAssetPropertiesResponse,++    -- * Response Lenses+    listAssetPropertiesResponse_nextToken,+    listAssetPropertiesResponse_httpStatus,+    listAssetPropertiesResponse_assetPropertySummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAssetProperties' smart constructor.+data ListAssetProperties = ListAssetProperties'+  { -- | Filters the requested list of asset properties. You can choose one of+    -- the following options:+    --+    -- -   @ALL@ – The list includes all asset properties for a given asset+    --     model ID.+    --+    -- -   @BASE@ – The list includes only base asset properties for a given+    --     asset model ID.+    --+    -- Default: @BASE@+    filter' :: Prelude.Maybe ListAssetPropertiesFilter,+    -- | The maximum number of results to return for each paginated request. If+    -- not specified, the default value is 50.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset.+    assetId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssetProperties' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filter'', 'listAssetProperties_filter' - Filters the requested list of asset properties. You can choose one of+-- the following options:+--+-- -   @ALL@ – The list includes all asset properties for a given asset+--     model ID.+--+-- -   @BASE@ – The list includes only base asset properties for a given+--     asset model ID.+--+-- Default: @BASE@+--+-- 'maxResults', 'listAssetProperties_maxResults' - The maximum number of results to return for each paginated request. If+-- not specified, the default value is 50.+--+-- 'nextToken', 'listAssetProperties_nextToken' - The token to be used for the next set of paginated results.+--+-- 'assetId', 'listAssetProperties_assetId' - The ID of the asset.+newListAssetProperties ::+  -- | 'assetId'+  Prelude.Text ->+  ListAssetProperties+newListAssetProperties pAssetId_ =+  ListAssetProperties'+    { filter' = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      assetId = pAssetId_+    }++-- | Filters the requested list of asset properties. You can choose one of+-- the following options:+--+-- -   @ALL@ – The list includes all asset properties for a given asset+--     model ID.+--+-- -   @BASE@ – The list includes only base asset properties for a given+--     asset model ID.+--+-- Default: @BASE@+listAssetProperties_filter :: Lens.Lens' ListAssetProperties (Prelude.Maybe ListAssetPropertiesFilter)+listAssetProperties_filter = Lens.lens (\ListAssetProperties' {filter'} -> filter') (\s@ListAssetProperties' {} a -> s {filter' = a} :: ListAssetProperties)++-- | The maximum number of results to return for each paginated request. If+-- not specified, the default value is 50.+listAssetProperties_maxResults :: Lens.Lens' ListAssetProperties (Prelude.Maybe Prelude.Natural)+listAssetProperties_maxResults = Lens.lens (\ListAssetProperties' {maxResults} -> maxResults) (\s@ListAssetProperties' {} a -> s {maxResults = a} :: ListAssetProperties)++-- | The token to be used for the next set of paginated results.+listAssetProperties_nextToken :: Lens.Lens' ListAssetProperties (Prelude.Maybe Prelude.Text)+listAssetProperties_nextToken = Lens.lens (\ListAssetProperties' {nextToken} -> nextToken) (\s@ListAssetProperties' {} a -> s {nextToken = a} :: ListAssetProperties)++-- | The ID of the asset.+listAssetProperties_assetId :: Lens.Lens' ListAssetProperties Prelude.Text+listAssetProperties_assetId = Lens.lens (\ListAssetProperties' {assetId} -> assetId) (\s@ListAssetProperties' {} a -> s {assetId = a} :: ListAssetProperties)++instance Core.AWSPager ListAssetProperties where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listAssetPropertiesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listAssetPropertiesResponse_assetPropertySummaries+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listAssetProperties_nextToken+          Lens..~ rs+          Lens.^? listAssetPropertiesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListAssetProperties where+  type+    AWSResponse ListAssetProperties =+      ListAssetPropertiesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAssetPropertiesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "assetPropertySummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListAssetProperties where+  hashWithSalt _salt ListAssetProperties' {..} =+    _salt+      `Prelude.hashWithSalt` filter'+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` assetId++instance Prelude.NFData ListAssetProperties where+  rnf ListAssetProperties' {..} =+    Prelude.rnf filter'+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf assetId++instance Data.ToHeaders ListAssetProperties where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListAssetProperties where+  toPath ListAssetProperties' {..} =+    Prelude.mconcat+      ["/assets/", Data.toBS assetId, "/properties"]++instance Data.ToQuery ListAssetProperties where+  toQuery ListAssetProperties' {..} =+    Prelude.mconcat+      [ "filter" Data.=: filter',+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListAssetPropertiesResponse' smart constructor.+data ListAssetPropertiesResponse = ListAssetPropertiesResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list that summarizes the properties associated with the specified+    -- asset.+    assetPropertySummaries :: [AssetPropertySummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssetPropertiesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAssetPropertiesResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listAssetPropertiesResponse_httpStatus' - The response's http status code.+--+-- 'assetPropertySummaries', 'listAssetPropertiesResponse_assetPropertySummaries' - A list that summarizes the properties associated with the specified+-- asset.+newListAssetPropertiesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAssetPropertiesResponse+newListAssetPropertiesResponse pHttpStatus_ =+  ListAssetPropertiesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      assetPropertySummaries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listAssetPropertiesResponse_nextToken :: Lens.Lens' ListAssetPropertiesResponse (Prelude.Maybe Prelude.Text)+listAssetPropertiesResponse_nextToken = Lens.lens (\ListAssetPropertiesResponse' {nextToken} -> nextToken) (\s@ListAssetPropertiesResponse' {} a -> s {nextToken = a} :: ListAssetPropertiesResponse)++-- | The response's http status code.+listAssetPropertiesResponse_httpStatus :: Lens.Lens' ListAssetPropertiesResponse Prelude.Int+listAssetPropertiesResponse_httpStatus = Lens.lens (\ListAssetPropertiesResponse' {httpStatus} -> httpStatus) (\s@ListAssetPropertiesResponse' {} a -> s {httpStatus = a} :: ListAssetPropertiesResponse)++-- | A list that summarizes the properties associated with the specified+-- asset.+listAssetPropertiesResponse_assetPropertySummaries :: Lens.Lens' ListAssetPropertiesResponse [AssetPropertySummary]+listAssetPropertiesResponse_assetPropertySummaries = Lens.lens (\ListAssetPropertiesResponse' {assetPropertySummaries} -> assetPropertySummaries) (\s@ListAssetPropertiesResponse' {} a -> s {assetPropertySummaries = a} :: ListAssetPropertiesResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListAssetPropertiesResponse where+  rnf ListAssetPropertiesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetPropertySummaries
+ gen/Amazonka/IoTSiteWise/ListAssetRelationships.hs view
@@ -0,0 +1,274 @@+{-# 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.IoTSiteWise.ListAssetRelationships+-- 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 paginated list of asset relationships for an asset. You can+-- use this operation to identify an asset\'s root asset and all associated+-- assets between that asset and its root.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListAssetRelationships+  ( -- * Creating a Request+    ListAssetRelationships (..),+    newListAssetRelationships,++    -- * Request Lenses+    listAssetRelationships_maxResults,+    listAssetRelationships_nextToken,+    listAssetRelationships_assetId,+    listAssetRelationships_traversalType,++    -- * Destructuring the Response+    ListAssetRelationshipsResponse (..),+    newListAssetRelationshipsResponse,++    -- * Response Lenses+    listAssetRelationshipsResponse_nextToken,+    listAssetRelationshipsResponse_httpStatus,+    listAssetRelationshipsResponse_assetRelationshipSummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAssetRelationships' smart constructor.+data ListAssetRelationships = ListAssetRelationships'+  { -- | The maximum number of results to return for each paginated request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset.+    assetId :: Prelude.Text,+    -- | The type of traversal to use to identify asset relationships. Choose the+    -- following option:+    --+    -- -   @PATH_TO_ROOT@ – Identify the asset\'s parent assets up to the root+    --     asset. The asset that you specify in @assetId@ is the first result+    --     in the list of @assetRelationshipSummaries@, and the root asset is+    --     the last result.+    traversalType :: TraversalType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssetRelationships' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAssetRelationships_maxResults' - The maximum number of results to return for each paginated request.+--+-- 'nextToken', 'listAssetRelationships_nextToken' - The token to be used for the next set of paginated results.+--+-- 'assetId', 'listAssetRelationships_assetId' - The ID of the asset.+--+-- 'traversalType', 'listAssetRelationships_traversalType' - The type of traversal to use to identify asset relationships. Choose the+-- following option:+--+-- -   @PATH_TO_ROOT@ – Identify the asset\'s parent assets up to the root+--     asset. The asset that you specify in @assetId@ is the first result+--     in the list of @assetRelationshipSummaries@, and the root asset is+--     the last result.+newListAssetRelationships ::+  -- | 'assetId'+  Prelude.Text ->+  -- | 'traversalType'+  TraversalType ->+  ListAssetRelationships+newListAssetRelationships pAssetId_ pTraversalType_ =+  ListAssetRelationships'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      assetId = pAssetId_,+      traversalType = pTraversalType_+    }++-- | The maximum number of results to return for each paginated request.+listAssetRelationships_maxResults :: Lens.Lens' ListAssetRelationships (Prelude.Maybe Prelude.Natural)+listAssetRelationships_maxResults = Lens.lens (\ListAssetRelationships' {maxResults} -> maxResults) (\s@ListAssetRelationships' {} a -> s {maxResults = a} :: ListAssetRelationships)++-- | The token to be used for the next set of paginated results.+listAssetRelationships_nextToken :: Lens.Lens' ListAssetRelationships (Prelude.Maybe Prelude.Text)+listAssetRelationships_nextToken = Lens.lens (\ListAssetRelationships' {nextToken} -> nextToken) (\s@ListAssetRelationships' {} a -> s {nextToken = a} :: ListAssetRelationships)++-- | The ID of the asset.+listAssetRelationships_assetId :: Lens.Lens' ListAssetRelationships Prelude.Text+listAssetRelationships_assetId = Lens.lens (\ListAssetRelationships' {assetId} -> assetId) (\s@ListAssetRelationships' {} a -> s {assetId = a} :: ListAssetRelationships)++-- | The type of traversal to use to identify asset relationships. Choose the+-- following option:+--+-- -   @PATH_TO_ROOT@ – Identify the asset\'s parent assets up to the root+--     asset. The asset that you specify in @assetId@ is the first result+--     in the list of @assetRelationshipSummaries@, and the root asset is+--     the last result.+listAssetRelationships_traversalType :: Lens.Lens' ListAssetRelationships TraversalType+listAssetRelationships_traversalType = Lens.lens (\ListAssetRelationships' {traversalType} -> traversalType) (\s@ListAssetRelationships' {} a -> s {traversalType = a} :: ListAssetRelationships)++instance Core.AWSPager ListAssetRelationships where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listAssetRelationshipsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listAssetRelationshipsResponse_assetRelationshipSummaries+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listAssetRelationships_nextToken+          Lens..~ rs+          Lens.^? listAssetRelationshipsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListAssetRelationships where+  type+    AWSResponse ListAssetRelationships =+      ListAssetRelationshipsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAssetRelationshipsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "assetRelationshipSummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListAssetRelationships where+  hashWithSalt _salt ListAssetRelationships' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` traversalType++instance Prelude.NFData ListAssetRelationships where+  rnf ListAssetRelationships' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf traversalType++instance Data.ToHeaders ListAssetRelationships where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListAssetRelationships where+  toPath ListAssetRelationships' {..} =+    Prelude.mconcat+      [ "/assets/",+        Data.toBS assetId,+        "/assetRelationships"+      ]++instance Data.ToQuery ListAssetRelationships where+  toQuery ListAssetRelationships' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "traversalType" Data.=: traversalType+      ]++-- | /See:/ 'newListAssetRelationshipsResponse' smart constructor.+data ListAssetRelationshipsResponse = ListAssetRelationshipsResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list that summarizes each asset relationship.+    assetRelationshipSummaries :: [AssetRelationshipSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssetRelationshipsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAssetRelationshipsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listAssetRelationshipsResponse_httpStatus' - The response's http status code.+--+-- 'assetRelationshipSummaries', 'listAssetRelationshipsResponse_assetRelationshipSummaries' - A list that summarizes each asset relationship.+newListAssetRelationshipsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAssetRelationshipsResponse+newListAssetRelationshipsResponse pHttpStatus_ =+  ListAssetRelationshipsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      assetRelationshipSummaries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listAssetRelationshipsResponse_nextToken :: Lens.Lens' ListAssetRelationshipsResponse (Prelude.Maybe Prelude.Text)+listAssetRelationshipsResponse_nextToken = Lens.lens (\ListAssetRelationshipsResponse' {nextToken} -> nextToken) (\s@ListAssetRelationshipsResponse' {} a -> s {nextToken = a} :: ListAssetRelationshipsResponse)++-- | The response's http status code.+listAssetRelationshipsResponse_httpStatus :: Lens.Lens' ListAssetRelationshipsResponse Prelude.Int+listAssetRelationshipsResponse_httpStatus = Lens.lens (\ListAssetRelationshipsResponse' {httpStatus} -> httpStatus) (\s@ListAssetRelationshipsResponse' {} a -> s {httpStatus = a} :: ListAssetRelationshipsResponse)++-- | A list that summarizes each asset relationship.+listAssetRelationshipsResponse_assetRelationshipSummaries :: Lens.Lens' ListAssetRelationshipsResponse [AssetRelationshipSummary]+listAssetRelationshipsResponse_assetRelationshipSummaries = Lens.lens (\ListAssetRelationshipsResponse' {assetRelationshipSummaries} -> assetRelationshipSummaries) (\s@ListAssetRelationshipsResponse' {} a -> s {assetRelationshipSummaries = a} :: ListAssetRelationshipsResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    ListAssetRelationshipsResponse+  where+  rnf ListAssetRelationshipsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetRelationshipSummaries
+ gen/Amazonka/IoTSiteWise/ListAssets.hs view
@@ -0,0 +1,285 @@+{-# 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.IoTSiteWise.ListAssets+-- 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 paginated list of asset summaries.+--+-- You can use this operation to do the following:+--+-- -   List assets based on a specific asset model.+--+-- -   List top-level assets.+--+-- You can\'t use this operation to list all assets. To retrieve summaries+-- for all of your assets, use+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html ListAssetModels>+-- to get all of your asset model IDs. Then, use ListAssets to get all+-- assets for each asset model.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListAssets+  ( -- * Creating a Request+    ListAssets (..),+    newListAssets,++    -- * Request Lenses+    listAssets_assetModelId,+    listAssets_filter,+    listAssets_maxResults,+    listAssets_nextToken,++    -- * Destructuring the Response+    ListAssetsResponse (..),+    newListAssetsResponse,++    -- * Response Lenses+    listAssetsResponse_nextToken,+    listAssetsResponse_httpStatus,+    listAssetsResponse_assetSummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAssets' smart constructor.+data ListAssets = ListAssets'+  { -- | The ID of the asset model by which to filter the list of assets. This+    -- parameter is required if you choose @ALL@ for @filter@.+    assetModelId :: Prelude.Maybe Prelude.Text,+    -- | The filter for the requested list of assets. Choose one of the following+    -- options:+    --+    -- -   @ALL@ – The list includes all assets for a given asset model ID. The+    --     @assetModelId@ parameter is required if you filter by @ALL@.+    --+    -- -   @TOP_LEVEL@ – The list includes only top-level assets in the asset+    --     hierarchy tree.+    --+    -- Default: @ALL@+    filter' :: Prelude.Maybe ListAssetsFilter,+    -- | The maximum number of results to return for each paginated request.+    --+    -- Default: 50+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssets' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetModelId', 'listAssets_assetModelId' - The ID of the asset model by which to filter the list of assets. This+-- parameter is required if you choose @ALL@ for @filter@.+--+-- 'filter'', 'listAssets_filter' - The filter for the requested list of assets. Choose one of the following+-- options:+--+-- -   @ALL@ – The list includes all assets for a given asset model ID. The+--     @assetModelId@ parameter is required if you filter by @ALL@.+--+-- -   @TOP_LEVEL@ – The list includes only top-level assets in the asset+--     hierarchy tree.+--+-- Default: @ALL@+--+-- 'maxResults', 'listAssets_maxResults' - The maximum number of results to return for each paginated request.+--+-- Default: 50+--+-- 'nextToken', 'listAssets_nextToken' - The token to be used for the next set of paginated results.+newListAssets ::+  ListAssets+newListAssets =+  ListAssets'+    { assetModelId = Prelude.Nothing,+      filter' = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The ID of the asset model by which to filter the list of assets. This+-- parameter is required if you choose @ALL@ for @filter@.+listAssets_assetModelId :: Lens.Lens' ListAssets (Prelude.Maybe Prelude.Text)+listAssets_assetModelId = Lens.lens (\ListAssets' {assetModelId} -> assetModelId) (\s@ListAssets' {} a -> s {assetModelId = a} :: ListAssets)++-- | The filter for the requested list of assets. Choose one of the following+-- options:+--+-- -   @ALL@ – The list includes all assets for a given asset model ID. The+--     @assetModelId@ parameter is required if you filter by @ALL@.+--+-- -   @TOP_LEVEL@ – The list includes only top-level assets in the asset+--     hierarchy tree.+--+-- Default: @ALL@+listAssets_filter :: Lens.Lens' ListAssets (Prelude.Maybe ListAssetsFilter)+listAssets_filter = Lens.lens (\ListAssets' {filter'} -> filter') (\s@ListAssets' {} a -> s {filter' = a} :: ListAssets)++-- | The maximum number of results to return for each paginated request.+--+-- Default: 50+listAssets_maxResults :: Lens.Lens' ListAssets (Prelude.Maybe Prelude.Natural)+listAssets_maxResults = Lens.lens (\ListAssets' {maxResults} -> maxResults) (\s@ListAssets' {} a -> s {maxResults = a} :: ListAssets)++-- | The token to be used for the next set of paginated results.+listAssets_nextToken :: Lens.Lens' ListAssets (Prelude.Maybe Prelude.Text)+listAssets_nextToken = Lens.lens (\ListAssets' {nextToken} -> nextToken) (\s@ListAssets' {} a -> s {nextToken = a} :: ListAssets)++instance Core.AWSPager ListAssets where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listAssetsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listAssetsResponse_assetSummaries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listAssets_nextToken+          Lens..~ rs+          Lens.^? listAssetsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListAssets where+  type AWSResponse ListAssets = ListAssetsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAssetsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "assetSummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListAssets where+  hashWithSalt _salt ListAssets' {..} =+    _salt+      `Prelude.hashWithSalt` assetModelId+      `Prelude.hashWithSalt` filter'+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListAssets where+  rnf ListAssets' {..} =+    Prelude.rnf assetModelId+      `Prelude.seq` Prelude.rnf filter'+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListAssets where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListAssets where+  toPath = Prelude.const "/assets"++instance Data.ToQuery ListAssets where+  toQuery ListAssets' {..} =+    Prelude.mconcat+      [ "assetModelId" Data.=: assetModelId,+        "filter" Data.=: filter',+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListAssetsResponse' smart constructor.+data ListAssetsResponse = ListAssetsResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list that summarizes each asset.+    assetSummaries :: [AssetSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssetsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAssetsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listAssetsResponse_httpStatus' - The response's http status code.+--+-- 'assetSummaries', 'listAssetsResponse_assetSummaries' - A list that summarizes each asset.+newListAssetsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAssetsResponse+newListAssetsResponse pHttpStatus_ =+  ListAssetsResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      assetSummaries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listAssetsResponse_nextToken :: Lens.Lens' ListAssetsResponse (Prelude.Maybe Prelude.Text)+listAssetsResponse_nextToken = Lens.lens (\ListAssetsResponse' {nextToken} -> nextToken) (\s@ListAssetsResponse' {} a -> s {nextToken = a} :: ListAssetsResponse)++-- | The response's http status code.+listAssetsResponse_httpStatus :: Lens.Lens' ListAssetsResponse Prelude.Int+listAssetsResponse_httpStatus = Lens.lens (\ListAssetsResponse' {httpStatus} -> httpStatus) (\s@ListAssetsResponse' {} a -> s {httpStatus = a} :: ListAssetsResponse)++-- | A list that summarizes each asset.+listAssetsResponse_assetSummaries :: Lens.Lens' ListAssetsResponse [AssetSummary]+listAssetsResponse_assetSummaries = Lens.lens (\ListAssetsResponse' {assetSummaries} -> assetSummaries) (\s@ListAssetsResponse' {} a -> s {assetSummaries = a} :: ListAssetsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListAssetsResponse where+  rnf ListAssetsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetSummaries
+ gen/Amazonka/IoTSiteWise/ListAssociatedAssets.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.IoTSiteWise.ListAssociatedAssets+-- 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 paginated list of associated assets.+--+-- You can use this operation to do the following:+--+-- -   List child assets associated to a parent asset by a hierarchy that+--     you specify.+--+-- -   List an asset\'s parent asset.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListAssociatedAssets+  ( -- * Creating a Request+    ListAssociatedAssets (..),+    newListAssociatedAssets,++    -- * Request Lenses+    listAssociatedAssets_hierarchyId,+    listAssociatedAssets_maxResults,+    listAssociatedAssets_nextToken,+    listAssociatedAssets_traversalDirection,+    listAssociatedAssets_assetId,++    -- * Destructuring the Response+    ListAssociatedAssetsResponse (..),+    newListAssociatedAssetsResponse,++    -- * Response Lenses+    listAssociatedAssetsResponse_nextToken,+    listAssociatedAssetsResponse_httpStatus,+    listAssociatedAssetsResponse_assetSummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListAssociatedAssets' smart constructor.+data ListAssociatedAssets = ListAssociatedAssets'+  { -- | The ID of the hierarchy by which child assets are associated to the+    -- asset. To find a hierarchy ID, use the+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html DescribeAsset>+    -- or+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html DescribeAssetModel>+    -- operations. This parameter is required if you choose @CHILD@ for+    -- @traversalDirection@.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+    -- in the /IoT SiteWise User Guide/.+    hierarchyId :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of results to return for each paginated request.+    --+    -- Default: 50+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The direction to list associated assets. Choose one of the following+    -- options:+    --+    -- -   @CHILD@ – The list includes all child assets associated to the+    --     asset. The @hierarchyId@ parameter is required if you choose+    --     @CHILD@.+    --+    -- -   @PARENT@ – The list includes the asset\'s parent asset.+    --+    -- Default: @CHILD@+    traversalDirection :: Prelude.Maybe TraversalDirection,+    -- | The ID of the asset to query.+    assetId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssociatedAssets' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'hierarchyId', 'listAssociatedAssets_hierarchyId' - The ID of the hierarchy by which child assets are associated to the+-- asset. To find a hierarchy ID, use the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html DescribeAsset>+-- or+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html DescribeAssetModel>+-- operations. This parameter is required if you choose @CHILD@ for+-- @traversalDirection@.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+--+-- 'maxResults', 'listAssociatedAssets_maxResults' - The maximum number of results to return for each paginated request.+--+-- Default: 50+--+-- 'nextToken', 'listAssociatedAssets_nextToken' - The token to be used for the next set of paginated results.+--+-- 'traversalDirection', 'listAssociatedAssets_traversalDirection' - The direction to list associated assets. Choose one of the following+-- options:+--+-- -   @CHILD@ – The list includes all child assets associated to the+--     asset. The @hierarchyId@ parameter is required if you choose+--     @CHILD@.+--+-- -   @PARENT@ – The list includes the asset\'s parent asset.+--+-- Default: @CHILD@+--+-- 'assetId', 'listAssociatedAssets_assetId' - The ID of the asset to query.+newListAssociatedAssets ::+  -- | 'assetId'+  Prelude.Text ->+  ListAssociatedAssets+newListAssociatedAssets pAssetId_ =+  ListAssociatedAssets'+    { hierarchyId =+        Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      traversalDirection = Prelude.Nothing,+      assetId = pAssetId_+    }++-- | The ID of the hierarchy by which child assets are associated to the+-- asset. To find a hierarchy ID, use the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html DescribeAsset>+-- or+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html DescribeAssetModel>+-- operations. This parameter is required if you choose @CHILD@ for+-- @traversalDirection@.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+listAssociatedAssets_hierarchyId :: Lens.Lens' ListAssociatedAssets (Prelude.Maybe Prelude.Text)+listAssociatedAssets_hierarchyId = Lens.lens (\ListAssociatedAssets' {hierarchyId} -> hierarchyId) (\s@ListAssociatedAssets' {} a -> s {hierarchyId = a} :: ListAssociatedAssets)++-- | The maximum number of results to return for each paginated request.+--+-- Default: 50+listAssociatedAssets_maxResults :: Lens.Lens' ListAssociatedAssets (Prelude.Maybe Prelude.Natural)+listAssociatedAssets_maxResults = Lens.lens (\ListAssociatedAssets' {maxResults} -> maxResults) (\s@ListAssociatedAssets' {} a -> s {maxResults = a} :: ListAssociatedAssets)++-- | The token to be used for the next set of paginated results.+listAssociatedAssets_nextToken :: Lens.Lens' ListAssociatedAssets (Prelude.Maybe Prelude.Text)+listAssociatedAssets_nextToken = Lens.lens (\ListAssociatedAssets' {nextToken} -> nextToken) (\s@ListAssociatedAssets' {} a -> s {nextToken = a} :: ListAssociatedAssets)++-- | The direction to list associated assets. Choose one of the following+-- options:+--+-- -   @CHILD@ – The list includes all child assets associated to the+--     asset. The @hierarchyId@ parameter is required if you choose+--     @CHILD@.+--+-- -   @PARENT@ – The list includes the asset\'s parent asset.+--+-- Default: @CHILD@+listAssociatedAssets_traversalDirection :: Lens.Lens' ListAssociatedAssets (Prelude.Maybe TraversalDirection)+listAssociatedAssets_traversalDirection = Lens.lens (\ListAssociatedAssets' {traversalDirection} -> traversalDirection) (\s@ListAssociatedAssets' {} a -> s {traversalDirection = a} :: ListAssociatedAssets)++-- | The ID of the asset to query.+listAssociatedAssets_assetId :: Lens.Lens' ListAssociatedAssets Prelude.Text+listAssociatedAssets_assetId = Lens.lens (\ListAssociatedAssets' {assetId} -> assetId) (\s@ListAssociatedAssets' {} a -> s {assetId = a} :: ListAssociatedAssets)++instance Core.AWSPager ListAssociatedAssets where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listAssociatedAssetsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listAssociatedAssetsResponse_assetSummaries+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listAssociatedAssets_nextToken+          Lens..~ rs+          Lens.^? listAssociatedAssetsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListAssociatedAssets where+  type+    AWSResponse ListAssociatedAssets =+      ListAssociatedAssetsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListAssociatedAssetsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "assetSummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListAssociatedAssets where+  hashWithSalt _salt ListAssociatedAssets' {..} =+    _salt+      `Prelude.hashWithSalt` hierarchyId+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` traversalDirection+      `Prelude.hashWithSalt` assetId++instance Prelude.NFData ListAssociatedAssets where+  rnf ListAssociatedAssets' {..} =+    Prelude.rnf hierarchyId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf traversalDirection+      `Prelude.seq` Prelude.rnf assetId++instance Data.ToHeaders ListAssociatedAssets where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListAssociatedAssets where+  toPath ListAssociatedAssets' {..} =+    Prelude.mconcat+      ["/assets/", Data.toBS assetId, "/hierarchies"]++instance Data.ToQuery ListAssociatedAssets where+  toQuery ListAssociatedAssets' {..} =+    Prelude.mconcat+      [ "hierarchyId" Data.=: hierarchyId,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "traversalDirection" Data.=: traversalDirection+      ]++-- | /See:/ 'newListAssociatedAssetsResponse' smart constructor.+data ListAssociatedAssetsResponse = ListAssociatedAssetsResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list that summarizes the associated assets.+    assetSummaries :: [AssociatedAssetsSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListAssociatedAssetsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listAssociatedAssetsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listAssociatedAssetsResponse_httpStatus' - The response's http status code.+--+-- 'assetSummaries', 'listAssociatedAssetsResponse_assetSummaries' - A list that summarizes the associated assets.+newListAssociatedAssetsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListAssociatedAssetsResponse+newListAssociatedAssetsResponse pHttpStatus_ =+  ListAssociatedAssetsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      assetSummaries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listAssociatedAssetsResponse_nextToken :: Lens.Lens' ListAssociatedAssetsResponse (Prelude.Maybe Prelude.Text)+listAssociatedAssetsResponse_nextToken = Lens.lens (\ListAssociatedAssetsResponse' {nextToken} -> nextToken) (\s@ListAssociatedAssetsResponse' {} a -> s {nextToken = a} :: ListAssociatedAssetsResponse)++-- | The response's http status code.+listAssociatedAssetsResponse_httpStatus :: Lens.Lens' ListAssociatedAssetsResponse Prelude.Int+listAssociatedAssetsResponse_httpStatus = Lens.lens (\ListAssociatedAssetsResponse' {httpStatus} -> httpStatus) (\s@ListAssociatedAssetsResponse' {} a -> s {httpStatus = a} :: ListAssociatedAssetsResponse)++-- | A list that summarizes the associated assets.+listAssociatedAssetsResponse_assetSummaries :: Lens.Lens' ListAssociatedAssetsResponse [AssociatedAssetsSummary]+listAssociatedAssetsResponse_assetSummaries = Lens.lens (\ListAssociatedAssetsResponse' {assetSummaries} -> assetSummaries) (\s@ListAssociatedAssetsResponse' {} a -> s {assetSummaries = a} :: ListAssociatedAssetsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListAssociatedAssetsResponse where+  rnf ListAssociatedAssetsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetSummaries
+ gen/Amazonka/IoTSiteWise/ListBulkImportJobs.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.IoTSiteWise.ListBulkImportJobs+-- 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 paginated list of bulk import job requests. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/ListBulkImportJobs.html List bulk import jobs (CLI)>+-- in the /IoT SiteWise User Guide/.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListBulkImportJobs+  ( -- * Creating a Request+    ListBulkImportJobs (..),+    newListBulkImportJobs,++    -- * Request Lenses+    listBulkImportJobs_filter,+    listBulkImportJobs_maxResults,+    listBulkImportJobs_nextToken,++    -- * Destructuring the Response+    ListBulkImportJobsResponse (..),+    newListBulkImportJobsResponse,++    -- * Response Lenses+    listBulkImportJobsResponse_nextToken,+    listBulkImportJobsResponse_httpStatus,+    listBulkImportJobsResponse_jobSummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListBulkImportJobs' smart constructor.+data ListBulkImportJobs = ListBulkImportJobs'+  { -- | You can use a filter to select the bulk import jobs that you want to+    -- retrieve.+    filter' :: Prelude.Maybe ListBulkImportJobsFilter,+    -- | The maximum number of results to return for each paginated request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListBulkImportJobs' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filter'', 'listBulkImportJobs_filter' - You can use a filter to select the bulk import jobs that you want to+-- retrieve.+--+-- 'maxResults', 'listBulkImportJobs_maxResults' - The maximum number of results to return for each paginated request.+--+-- 'nextToken', 'listBulkImportJobs_nextToken' - The token to be used for the next set of paginated results.+newListBulkImportJobs ::+  ListBulkImportJobs+newListBulkImportJobs =+  ListBulkImportJobs'+    { filter' = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | You can use a filter to select the bulk import jobs that you want to+-- retrieve.+listBulkImportJobs_filter :: Lens.Lens' ListBulkImportJobs (Prelude.Maybe ListBulkImportJobsFilter)+listBulkImportJobs_filter = Lens.lens (\ListBulkImportJobs' {filter'} -> filter') (\s@ListBulkImportJobs' {} a -> s {filter' = a} :: ListBulkImportJobs)++-- | The maximum number of results to return for each paginated request.+listBulkImportJobs_maxResults :: Lens.Lens' ListBulkImportJobs (Prelude.Maybe Prelude.Natural)+listBulkImportJobs_maxResults = Lens.lens (\ListBulkImportJobs' {maxResults} -> maxResults) (\s@ListBulkImportJobs' {} a -> s {maxResults = a} :: ListBulkImportJobs)++-- | The token to be used for the next set of paginated results.+listBulkImportJobs_nextToken :: Lens.Lens' ListBulkImportJobs (Prelude.Maybe Prelude.Text)+listBulkImportJobs_nextToken = Lens.lens (\ListBulkImportJobs' {nextToken} -> nextToken) (\s@ListBulkImportJobs' {} a -> s {nextToken = a} :: ListBulkImportJobs)++instance Core.AWSPager ListBulkImportJobs where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listBulkImportJobsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listBulkImportJobsResponse_jobSummaries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listBulkImportJobs_nextToken+          Lens..~ rs+          Lens.^? listBulkImportJobsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListBulkImportJobs where+  type+    AWSResponse ListBulkImportJobs =+      ListBulkImportJobsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListBulkImportJobsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "jobSummaries" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListBulkImportJobs where+  hashWithSalt _salt ListBulkImportJobs' {..} =+    _salt+      `Prelude.hashWithSalt` filter'+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListBulkImportJobs where+  rnf ListBulkImportJobs' {..} =+    Prelude.rnf filter'+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListBulkImportJobs where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListBulkImportJobs where+  toPath = Prelude.const "/jobs"++instance Data.ToQuery ListBulkImportJobs where+  toQuery ListBulkImportJobs' {..} =+    Prelude.mconcat+      [ "filter" Data.=: filter',+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListBulkImportJobsResponse' smart constructor.+data ListBulkImportJobsResponse = ListBulkImportJobsResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | One or more job summaries to list.+    jobSummaries :: [JobSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListBulkImportJobsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listBulkImportJobsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listBulkImportJobsResponse_httpStatus' - The response's http status code.+--+-- 'jobSummaries', 'listBulkImportJobsResponse_jobSummaries' - One or more job summaries to list.+newListBulkImportJobsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListBulkImportJobsResponse+newListBulkImportJobsResponse pHttpStatus_ =+  ListBulkImportJobsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      jobSummaries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listBulkImportJobsResponse_nextToken :: Lens.Lens' ListBulkImportJobsResponse (Prelude.Maybe Prelude.Text)+listBulkImportJobsResponse_nextToken = Lens.lens (\ListBulkImportJobsResponse' {nextToken} -> nextToken) (\s@ListBulkImportJobsResponse' {} a -> s {nextToken = a} :: ListBulkImportJobsResponse)++-- | The response's http status code.+listBulkImportJobsResponse_httpStatus :: Lens.Lens' ListBulkImportJobsResponse Prelude.Int+listBulkImportJobsResponse_httpStatus = Lens.lens (\ListBulkImportJobsResponse' {httpStatus} -> httpStatus) (\s@ListBulkImportJobsResponse' {} a -> s {httpStatus = a} :: ListBulkImportJobsResponse)++-- | One or more job summaries to list.+listBulkImportJobsResponse_jobSummaries :: Lens.Lens' ListBulkImportJobsResponse [JobSummary]+listBulkImportJobsResponse_jobSummaries = Lens.lens (\ListBulkImportJobsResponse' {jobSummaries} -> jobSummaries) (\s@ListBulkImportJobsResponse' {} a -> s {jobSummaries = a} :: ListBulkImportJobsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListBulkImportJobsResponse where+  rnf ListBulkImportJobsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf jobSummaries
+ gen/Amazonka/IoTSiteWise/ListDashboards.hs view
@@ -0,0 +1,238 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.ListDashboards+-- 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 paginated list of dashboards for an IoT SiteWise Monitor+-- project.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListDashboards+  ( -- * Creating a Request+    ListDashboards (..),+    newListDashboards,++    -- * Request Lenses+    listDashboards_maxResults,+    listDashboards_nextToken,+    listDashboards_projectId,++    -- * Destructuring the Response+    ListDashboardsResponse (..),+    newListDashboardsResponse,++    -- * Response Lenses+    listDashboardsResponse_nextToken,+    listDashboardsResponse_httpStatus,+    listDashboardsResponse_dashboardSummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListDashboards' smart constructor.+data ListDashboards = ListDashboards'+  { -- | The maximum number of results to return for each paginated request.+    --+    -- Default: 50+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the project.+    projectId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDashboards' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listDashboards_maxResults' - The maximum number of results to return for each paginated request.+--+-- Default: 50+--+-- 'nextToken', 'listDashboards_nextToken' - The token to be used for the next set of paginated results.+--+-- 'projectId', 'listDashboards_projectId' - The ID of the project.+newListDashboards ::+  -- | 'projectId'+  Prelude.Text ->+  ListDashboards+newListDashboards pProjectId_ =+  ListDashboards'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      projectId = pProjectId_+    }++-- | The maximum number of results to return for each paginated request.+--+-- Default: 50+listDashboards_maxResults :: Lens.Lens' ListDashboards (Prelude.Maybe Prelude.Natural)+listDashboards_maxResults = Lens.lens (\ListDashboards' {maxResults} -> maxResults) (\s@ListDashboards' {} a -> s {maxResults = a} :: ListDashboards)++-- | The token to be used for the next set of paginated results.+listDashboards_nextToken :: Lens.Lens' ListDashboards (Prelude.Maybe Prelude.Text)+listDashboards_nextToken = Lens.lens (\ListDashboards' {nextToken} -> nextToken) (\s@ListDashboards' {} a -> s {nextToken = a} :: ListDashboards)++-- | The ID of the project.+listDashboards_projectId :: Lens.Lens' ListDashboards Prelude.Text+listDashboards_projectId = Lens.lens (\ListDashboards' {projectId} -> projectId) (\s@ListDashboards' {} a -> s {projectId = a} :: ListDashboards)++instance Core.AWSPager ListDashboards where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listDashboardsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listDashboardsResponse_dashboardSummaries+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listDashboards_nextToken+          Lens..~ rs+          Lens.^? listDashboardsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListDashboards where+  type+    AWSResponse ListDashboards =+      ListDashboardsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListDashboardsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "dashboardSummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListDashboards where+  hashWithSalt _salt ListDashboards' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` projectId++instance Prelude.NFData ListDashboards where+  rnf ListDashboards' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf projectId++instance Data.ToHeaders ListDashboards where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListDashboards where+  toPath = Prelude.const "/dashboards"++instance Data.ToQuery ListDashboards where+  toQuery ListDashboards' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "projectId" Data.=: projectId+      ]++-- | /See:/ 'newListDashboardsResponse' smart constructor.+data ListDashboardsResponse = ListDashboardsResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list that summarizes each dashboard in the project.+    dashboardSummaries :: [DashboardSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDashboardsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listDashboardsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listDashboardsResponse_httpStatus' - The response's http status code.+--+-- 'dashboardSummaries', 'listDashboardsResponse_dashboardSummaries' - A list that summarizes each dashboard in the project.+newListDashboardsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListDashboardsResponse+newListDashboardsResponse pHttpStatus_ =+  ListDashboardsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      dashboardSummaries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listDashboardsResponse_nextToken :: Lens.Lens' ListDashboardsResponse (Prelude.Maybe Prelude.Text)+listDashboardsResponse_nextToken = Lens.lens (\ListDashboardsResponse' {nextToken} -> nextToken) (\s@ListDashboardsResponse' {} a -> s {nextToken = a} :: ListDashboardsResponse)++-- | The response's http status code.+listDashboardsResponse_httpStatus :: Lens.Lens' ListDashboardsResponse Prelude.Int+listDashboardsResponse_httpStatus = Lens.lens (\ListDashboardsResponse' {httpStatus} -> httpStatus) (\s@ListDashboardsResponse' {} a -> s {httpStatus = a} :: ListDashboardsResponse)++-- | A list that summarizes each dashboard in the project.+listDashboardsResponse_dashboardSummaries :: Lens.Lens' ListDashboardsResponse [DashboardSummary]+listDashboardsResponse_dashboardSummaries = Lens.lens (\ListDashboardsResponse' {dashboardSummaries} -> dashboardSummaries) (\s@ListDashboardsResponse' {} a -> s {dashboardSummaries = a} :: ListDashboardsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListDashboardsResponse where+  rnf ListDashboardsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf dashboardSummaries
+ gen/Amazonka/IoTSiteWise/ListGateways.hs view
@@ -0,0 +1,217 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.ListGateways+-- 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 paginated list of gateways.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListGateways+  ( -- * Creating a Request+    ListGateways (..),+    newListGateways,++    -- * Request Lenses+    listGateways_maxResults,+    listGateways_nextToken,++    -- * Destructuring the Response+    ListGatewaysResponse (..),+    newListGatewaysResponse,++    -- * Response Lenses+    listGatewaysResponse_nextToken,+    listGatewaysResponse_httpStatus,+    listGatewaysResponse_gatewaySummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListGateways' smart constructor.+data ListGateways = ListGateways'+  { -- | The maximum number of results to return for each paginated request.+    --+    -- Default: 50+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListGateways' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listGateways_maxResults' - The maximum number of results to return for each paginated request.+--+-- Default: 50+--+-- 'nextToken', 'listGateways_nextToken' - The token to be used for the next set of paginated results.+newListGateways ::+  ListGateways+newListGateways =+  ListGateways'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of results to return for each paginated request.+--+-- Default: 50+listGateways_maxResults :: Lens.Lens' ListGateways (Prelude.Maybe Prelude.Natural)+listGateways_maxResults = Lens.lens (\ListGateways' {maxResults} -> maxResults) (\s@ListGateways' {} a -> s {maxResults = a} :: ListGateways)++-- | The token to be used for the next set of paginated results.+listGateways_nextToken :: Lens.Lens' ListGateways (Prelude.Maybe Prelude.Text)+listGateways_nextToken = Lens.lens (\ListGateways' {nextToken} -> nextToken) (\s@ListGateways' {} a -> s {nextToken = a} :: ListGateways)++instance Core.AWSPager ListGateways where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listGatewaysResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listGatewaysResponse_gatewaySummaries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listGateways_nextToken+          Lens..~ rs+          Lens.^? listGatewaysResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListGateways where+  type AWSResponse ListGateways = ListGatewaysResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListGatewaysResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "gatewaySummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListGateways where+  hashWithSalt _salt ListGateways' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListGateways where+  rnf ListGateways' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListGateways where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListGateways where+  toPath = Prelude.const "/20200301/gateways"++instance Data.ToQuery ListGateways where+  toQuery ListGateways' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListGatewaysResponse' smart constructor.+data ListGatewaysResponse = ListGatewaysResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list that summarizes each gateway.+    gatewaySummaries :: [GatewaySummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListGatewaysResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listGatewaysResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listGatewaysResponse_httpStatus' - The response's http status code.+--+-- 'gatewaySummaries', 'listGatewaysResponse_gatewaySummaries' - A list that summarizes each gateway.+newListGatewaysResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListGatewaysResponse+newListGatewaysResponse pHttpStatus_ =+  ListGatewaysResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      gatewaySummaries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listGatewaysResponse_nextToken :: Lens.Lens' ListGatewaysResponse (Prelude.Maybe Prelude.Text)+listGatewaysResponse_nextToken = Lens.lens (\ListGatewaysResponse' {nextToken} -> nextToken) (\s@ListGatewaysResponse' {} a -> s {nextToken = a} :: ListGatewaysResponse)++-- | The response's http status code.+listGatewaysResponse_httpStatus :: Lens.Lens' ListGatewaysResponse Prelude.Int+listGatewaysResponse_httpStatus = Lens.lens (\ListGatewaysResponse' {httpStatus} -> httpStatus) (\s@ListGatewaysResponse' {} a -> s {httpStatus = a} :: ListGatewaysResponse)++-- | A list that summarizes each gateway.+listGatewaysResponse_gatewaySummaries :: Lens.Lens' ListGatewaysResponse [GatewaySummary]+listGatewaysResponse_gatewaySummaries = Lens.lens (\ListGatewaysResponse' {gatewaySummaries} -> gatewaySummaries) (\s@ListGatewaysResponse' {} a -> s {gatewaySummaries = a} :: ListGatewaysResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListGatewaysResponse where+  rnf ListGatewaysResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf gatewaySummaries
+ gen/Amazonka/IoTSiteWise/ListPortals.hs view
@@ -0,0 +1,220 @@+{-# 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.IoTSiteWise.ListPortals+-- 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 paginated list of IoT SiteWise Monitor portals.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListPortals+  ( -- * Creating a Request+    ListPortals (..),+    newListPortals,++    -- * Request Lenses+    listPortals_maxResults,+    listPortals_nextToken,++    -- * Destructuring the Response+    ListPortalsResponse (..),+    newListPortalsResponse,++    -- * Response Lenses+    listPortalsResponse_nextToken,+    listPortalsResponse_portalSummaries,+    listPortalsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListPortals' smart constructor.+data ListPortals = ListPortals'+  { -- | The maximum number of results to return for each paginated request.+    --+    -- Default: 50+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListPortals' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listPortals_maxResults' - The maximum number of results to return for each paginated request.+--+-- Default: 50+--+-- 'nextToken', 'listPortals_nextToken' - The token to be used for the next set of paginated results.+newListPortals ::+  ListPortals+newListPortals =+  ListPortals'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of results to return for each paginated request.+--+-- Default: 50+listPortals_maxResults :: Lens.Lens' ListPortals (Prelude.Maybe Prelude.Natural)+listPortals_maxResults = Lens.lens (\ListPortals' {maxResults} -> maxResults) (\s@ListPortals' {} a -> s {maxResults = a} :: ListPortals)++-- | The token to be used for the next set of paginated results.+listPortals_nextToken :: Lens.Lens' ListPortals (Prelude.Maybe Prelude.Text)+listPortals_nextToken = Lens.lens (\ListPortals' {nextToken} -> nextToken) (\s@ListPortals' {} a -> s {nextToken = a} :: ListPortals)++instance Core.AWSPager ListPortals where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listPortalsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listPortalsResponse_portalSummaries+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listPortals_nextToken+          Lens..~ rs+          Lens.^? listPortalsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListPortals where+  type AWSResponse ListPortals = ListPortalsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListPortalsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> ( x+                            Data..?> "portalSummaries"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListPortals where+  hashWithSalt _salt ListPortals' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListPortals where+  rnf ListPortals' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListPortals where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListPortals where+  toPath = Prelude.const "/portals"++instance Data.ToQuery ListPortals where+  toQuery ListPortals' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListPortalsResponse' smart constructor.+data ListPortalsResponse = ListPortalsResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list that summarizes each portal.+    portalSummaries :: Prelude.Maybe [PortalSummary],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListPortalsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listPortalsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'portalSummaries', 'listPortalsResponse_portalSummaries' - A list that summarizes each portal.+--+-- 'httpStatus', 'listPortalsResponse_httpStatus' - The response's http status code.+newListPortalsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListPortalsResponse+newListPortalsResponse pHttpStatus_ =+  ListPortalsResponse'+    { nextToken = Prelude.Nothing,+      portalSummaries = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listPortalsResponse_nextToken :: Lens.Lens' ListPortalsResponse (Prelude.Maybe Prelude.Text)+listPortalsResponse_nextToken = Lens.lens (\ListPortalsResponse' {nextToken} -> nextToken) (\s@ListPortalsResponse' {} a -> s {nextToken = a} :: ListPortalsResponse)++-- | A list that summarizes each portal.+listPortalsResponse_portalSummaries :: Lens.Lens' ListPortalsResponse (Prelude.Maybe [PortalSummary])+listPortalsResponse_portalSummaries = Lens.lens (\ListPortalsResponse' {portalSummaries} -> portalSummaries) (\s@ListPortalsResponse' {} a -> s {portalSummaries = a} :: ListPortalsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listPortalsResponse_httpStatus :: Lens.Lens' ListPortalsResponse Prelude.Int+listPortalsResponse_httpStatus = Lens.lens (\ListPortalsResponse' {httpStatus} -> httpStatus) (\s@ListPortalsResponse' {} a -> s {httpStatus = a} :: ListPortalsResponse)++instance Prelude.NFData ListPortalsResponse where+  rnf ListPortalsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf portalSummaries+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/ListProjectAssets.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.IoTSiteWise.ListProjectAssets+-- 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 paginated list of assets associated with an IoT SiteWise+-- Monitor project.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListProjectAssets+  ( -- * Creating a Request+    ListProjectAssets (..),+    newListProjectAssets,++    -- * Request Lenses+    listProjectAssets_maxResults,+    listProjectAssets_nextToken,+    listProjectAssets_projectId,++    -- * Destructuring the Response+    ListProjectAssetsResponse (..),+    newListProjectAssetsResponse,++    -- * Response Lenses+    listProjectAssetsResponse_nextToken,+    listProjectAssetsResponse_httpStatus,+    listProjectAssetsResponse_assetIds,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListProjectAssets' smart constructor.+data ListProjectAssets = ListProjectAssets'+  { -- | The maximum number of results to return for each paginated request.+    --+    -- Default: 50+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the project.+    projectId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProjectAssets' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProjectAssets_maxResults' - The maximum number of results to return for each paginated request.+--+-- Default: 50+--+-- 'nextToken', 'listProjectAssets_nextToken' - The token to be used for the next set of paginated results.+--+-- 'projectId', 'listProjectAssets_projectId' - The ID of the project.+newListProjectAssets ::+  -- | 'projectId'+  Prelude.Text ->+  ListProjectAssets+newListProjectAssets pProjectId_ =+  ListProjectAssets'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      projectId = pProjectId_+    }++-- | The maximum number of results to return for each paginated request.+--+-- Default: 50+listProjectAssets_maxResults :: Lens.Lens' ListProjectAssets (Prelude.Maybe Prelude.Natural)+listProjectAssets_maxResults = Lens.lens (\ListProjectAssets' {maxResults} -> maxResults) (\s@ListProjectAssets' {} a -> s {maxResults = a} :: ListProjectAssets)++-- | The token to be used for the next set of paginated results.+listProjectAssets_nextToken :: Lens.Lens' ListProjectAssets (Prelude.Maybe Prelude.Text)+listProjectAssets_nextToken = Lens.lens (\ListProjectAssets' {nextToken} -> nextToken) (\s@ListProjectAssets' {} a -> s {nextToken = a} :: ListProjectAssets)++-- | The ID of the project.+listProjectAssets_projectId :: Lens.Lens' ListProjectAssets Prelude.Text+listProjectAssets_projectId = Lens.lens (\ListProjectAssets' {projectId} -> projectId) (\s@ListProjectAssets' {} a -> s {projectId = a} :: ListProjectAssets)++instance Core.AWSPager ListProjectAssets where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listProjectAssetsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listProjectAssetsResponse_assetIds) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listProjectAssets_nextToken+          Lens..~ rs+          Lens.^? listProjectAssetsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListProjectAssets where+  type+    AWSResponse ListProjectAssets =+      ListProjectAssetsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListProjectAssetsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "assetIds" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListProjectAssets where+  hashWithSalt _salt ListProjectAssets' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` projectId++instance Prelude.NFData ListProjectAssets where+  rnf ListProjectAssets' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf projectId++instance Data.ToHeaders ListProjectAssets where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListProjectAssets where+  toPath ListProjectAssets' {..} =+    Prelude.mconcat+      ["/projects/", Data.toBS projectId, "/assets"]++instance Data.ToQuery ListProjectAssets where+  toQuery ListProjectAssets' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListProjectAssetsResponse' smart constructor.+data ListProjectAssetsResponse = ListProjectAssetsResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list that contains the IDs of each asset associated with the project.+    assetIds :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProjectAssetsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProjectAssetsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listProjectAssetsResponse_httpStatus' - The response's http status code.+--+-- 'assetIds', 'listProjectAssetsResponse_assetIds' - A list that contains the IDs of each asset associated with the project.+newListProjectAssetsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListProjectAssetsResponse+newListProjectAssetsResponse pHttpStatus_ =+  ListProjectAssetsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      assetIds = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listProjectAssetsResponse_nextToken :: Lens.Lens' ListProjectAssetsResponse (Prelude.Maybe Prelude.Text)+listProjectAssetsResponse_nextToken = Lens.lens (\ListProjectAssetsResponse' {nextToken} -> nextToken) (\s@ListProjectAssetsResponse' {} a -> s {nextToken = a} :: ListProjectAssetsResponse)++-- | The response's http status code.+listProjectAssetsResponse_httpStatus :: Lens.Lens' ListProjectAssetsResponse Prelude.Int+listProjectAssetsResponse_httpStatus = Lens.lens (\ListProjectAssetsResponse' {httpStatus} -> httpStatus) (\s@ListProjectAssetsResponse' {} a -> s {httpStatus = a} :: ListProjectAssetsResponse)++-- | A list that contains the IDs of each asset associated with the project.+listProjectAssetsResponse_assetIds :: Lens.Lens' ListProjectAssetsResponse [Prelude.Text]+listProjectAssetsResponse_assetIds = Lens.lens (\ListProjectAssetsResponse' {assetIds} -> assetIds) (\s@ListProjectAssetsResponse' {} a -> s {assetIds = a} :: ListProjectAssetsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListProjectAssetsResponse where+  rnf ListProjectAssetsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetIds
+ gen/Amazonka/IoTSiteWise/ListProjects.hs view
@@ -0,0 +1,233 @@+{-# 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.IoTSiteWise.ListProjects+-- 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 paginated list of projects for an IoT SiteWise Monitor+-- portal.+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListProjects+  ( -- * Creating a Request+    ListProjects (..),+    newListProjects,++    -- * Request Lenses+    listProjects_maxResults,+    listProjects_nextToken,+    listProjects_portalId,++    -- * Destructuring the Response+    ListProjectsResponse (..),+    newListProjectsResponse,++    -- * Response Lenses+    listProjectsResponse_nextToken,+    listProjectsResponse_httpStatus,+    listProjectsResponse_projectSummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListProjects' smart constructor.+data ListProjects = ListProjects'+  { -- | The maximum number of results to return for each paginated request.+    --+    -- Default: 50+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the portal.+    portalId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProjects' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProjects_maxResults' - The maximum number of results to return for each paginated request.+--+-- Default: 50+--+-- 'nextToken', 'listProjects_nextToken' - The token to be used for the next set of paginated results.+--+-- 'portalId', 'listProjects_portalId' - The ID of the portal.+newListProjects ::+  -- | 'portalId'+  Prelude.Text ->+  ListProjects+newListProjects pPortalId_ =+  ListProjects'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      portalId = pPortalId_+    }++-- | The maximum number of results to return for each paginated request.+--+-- Default: 50+listProjects_maxResults :: Lens.Lens' ListProjects (Prelude.Maybe Prelude.Natural)+listProjects_maxResults = Lens.lens (\ListProjects' {maxResults} -> maxResults) (\s@ListProjects' {} a -> s {maxResults = a} :: ListProjects)++-- | The token to be used for the next set of paginated results.+listProjects_nextToken :: Lens.Lens' ListProjects (Prelude.Maybe Prelude.Text)+listProjects_nextToken = Lens.lens (\ListProjects' {nextToken} -> nextToken) (\s@ListProjects' {} a -> s {nextToken = a} :: ListProjects)++-- | The ID of the portal.+listProjects_portalId :: Lens.Lens' ListProjects Prelude.Text+listProjects_portalId = Lens.lens (\ListProjects' {portalId} -> portalId) (\s@ListProjects' {} a -> s {portalId = a} :: ListProjects)++instance Core.AWSPager ListProjects where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listProjectsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listProjectsResponse_projectSummaries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listProjects_nextToken+          Lens..~ rs+          Lens.^? listProjectsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListProjects where+  type AWSResponse ListProjects = ListProjectsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListProjectsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "projectSummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListProjects where+  hashWithSalt _salt ListProjects' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` portalId++instance Prelude.NFData ListProjects where+  rnf ListProjects' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf portalId++instance Data.ToHeaders ListProjects where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListProjects where+  toPath = Prelude.const "/projects"++instance Data.ToQuery ListProjects where+  toQuery ListProjects' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "portalId" Data.=: portalId+      ]++-- | /See:/ 'newListProjectsResponse' smart constructor.+data ListProjectsResponse = ListProjectsResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A list that summarizes each project in the portal.+    projectSummaries :: [ProjectSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListProjectsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listProjectsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listProjectsResponse_httpStatus' - The response's http status code.+--+-- 'projectSummaries', 'listProjectsResponse_projectSummaries' - A list that summarizes each project in the portal.+newListProjectsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListProjectsResponse+newListProjectsResponse pHttpStatus_ =+  ListProjectsResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      projectSummaries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listProjectsResponse_nextToken :: Lens.Lens' ListProjectsResponse (Prelude.Maybe Prelude.Text)+listProjectsResponse_nextToken = Lens.lens (\ListProjectsResponse' {nextToken} -> nextToken) (\s@ListProjectsResponse' {} a -> s {nextToken = a} :: ListProjectsResponse)++-- | The response's http status code.+listProjectsResponse_httpStatus :: Lens.Lens' ListProjectsResponse Prelude.Int+listProjectsResponse_httpStatus = Lens.lens (\ListProjectsResponse' {httpStatus} -> httpStatus) (\s@ListProjectsResponse' {} a -> s {httpStatus = a} :: ListProjectsResponse)++-- | A list that summarizes each project in the portal.+listProjectsResponse_projectSummaries :: Lens.Lens' ListProjectsResponse [ProjectSummary]+listProjectsResponse_projectSummaries = Lens.lens (\ListProjectsResponse' {projectSummaries} -> projectSummaries) (\s@ListProjectsResponse' {} a -> s {projectSummaries = a} :: ListProjectsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListProjectsResponse where+  rnf ListProjectsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf projectSummaries
+ gen/Amazonka/IoTSiteWise/ListTagsForResource.hs view
@@ -0,0 +1,174 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.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)+--+-- Retrieves the list of tags for an IoT SiteWise resource.+module Amazonka.IoTSiteWise.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.IoTSiteWise.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+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the resource.+    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+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the resource.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the resource.+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 = Prelude.const "/tags"++instance Data.ToQuery ListTagsForResource where+  toQuery ListTagsForResource' {..} =+    Prelude.mconcat ["resourceArn" Data.=: resourceArn]++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | The list of key-value pairs that contain metadata for the resource. For+    -- more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+    -- in the /IoT SiteWise User Guide/.+    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' - The list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+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/IoTSiteWise/ListTimeSeries.hs view
@@ -0,0 +1,273 @@+{-# 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.IoTSiteWise.ListTimeSeries+-- 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 paginated list of time series (data streams).+--+-- This operation returns paginated results.+module Amazonka.IoTSiteWise.ListTimeSeries+  ( -- * Creating a Request+    ListTimeSeries (..),+    newListTimeSeries,++    -- * Request Lenses+    listTimeSeries_aliasPrefix,+    listTimeSeries_assetId,+    listTimeSeries_maxResults,+    listTimeSeries_nextToken,+    listTimeSeries_timeSeriesType,++    -- * Destructuring the Response+    ListTimeSeriesResponse (..),+    newListTimeSeriesResponse,++    -- * Response Lenses+    listTimeSeriesResponse_nextToken,+    listTimeSeriesResponse_httpStatus,+    listTimeSeriesResponse_timeSeriesSummaries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTimeSeries' smart constructor.+data ListTimeSeries = ListTimeSeries'+  { -- | The alias prefix of the time series.+    aliasPrefix :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset in which the asset property was created.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of results to return for each paginated request.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The token to be used for the next set of paginated results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The type of the time series. The time series type can be one of the+    -- following values:+    --+    -- -   @ASSOCIATED@ – The time series is associated with an asset property.+    --+    -- -   @DISASSOCIATED@ – The time series isn\'t associated with any asset+    --     property.+    timeSeriesType :: Prelude.Maybe ListTimeSeriesType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTimeSeries' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'aliasPrefix', 'listTimeSeries_aliasPrefix' - The alias prefix of the time series.+--+-- 'assetId', 'listTimeSeries_assetId' - The ID of the asset in which the asset property was created.+--+-- 'maxResults', 'listTimeSeries_maxResults' - The maximum number of results to return for each paginated request.+--+-- 'nextToken', 'listTimeSeries_nextToken' - The token to be used for the next set of paginated results.+--+-- 'timeSeriesType', 'listTimeSeries_timeSeriesType' - The type of the time series. The time series type can be one of the+-- following values:+--+-- -   @ASSOCIATED@ – The time series is associated with an asset property.+--+-- -   @DISASSOCIATED@ – The time series isn\'t associated with any asset+--     property.+newListTimeSeries ::+  ListTimeSeries+newListTimeSeries =+  ListTimeSeries'+    { aliasPrefix = Prelude.Nothing,+      assetId = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      timeSeriesType = Prelude.Nothing+    }++-- | The alias prefix of the time series.+listTimeSeries_aliasPrefix :: Lens.Lens' ListTimeSeries (Prelude.Maybe Prelude.Text)+listTimeSeries_aliasPrefix = Lens.lens (\ListTimeSeries' {aliasPrefix} -> aliasPrefix) (\s@ListTimeSeries' {} a -> s {aliasPrefix = a} :: ListTimeSeries)++-- | The ID of the asset in which the asset property was created.+listTimeSeries_assetId :: Lens.Lens' ListTimeSeries (Prelude.Maybe Prelude.Text)+listTimeSeries_assetId = Lens.lens (\ListTimeSeries' {assetId} -> assetId) (\s@ListTimeSeries' {} a -> s {assetId = a} :: ListTimeSeries)++-- | The maximum number of results to return for each paginated request.+listTimeSeries_maxResults :: Lens.Lens' ListTimeSeries (Prelude.Maybe Prelude.Natural)+listTimeSeries_maxResults = Lens.lens (\ListTimeSeries' {maxResults} -> maxResults) (\s@ListTimeSeries' {} a -> s {maxResults = a} :: ListTimeSeries)++-- | The token to be used for the next set of paginated results.+listTimeSeries_nextToken :: Lens.Lens' ListTimeSeries (Prelude.Maybe Prelude.Text)+listTimeSeries_nextToken = Lens.lens (\ListTimeSeries' {nextToken} -> nextToken) (\s@ListTimeSeries' {} a -> s {nextToken = a} :: ListTimeSeries)++-- | The type of the time series. The time series type can be one of the+-- following values:+--+-- -   @ASSOCIATED@ – The time series is associated with an asset property.+--+-- -   @DISASSOCIATED@ – The time series isn\'t associated with any asset+--     property.+listTimeSeries_timeSeriesType :: Lens.Lens' ListTimeSeries (Prelude.Maybe ListTimeSeriesType)+listTimeSeries_timeSeriesType = Lens.lens (\ListTimeSeries' {timeSeriesType} -> timeSeriesType) (\s@ListTimeSeries' {} a -> s {timeSeriesType = a} :: ListTimeSeries)++instance Core.AWSPager ListTimeSeries where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listTimeSeriesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listTimeSeriesResponse_timeSeriesSummaries+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listTimeSeries_nextToken+          Lens..~ rs+          Lens.^? listTimeSeriesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListTimeSeries where+  type+    AWSResponse ListTimeSeries =+      ListTimeSeriesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTimeSeriesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "TimeSeriesSummaries"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListTimeSeries where+  hashWithSalt _salt ListTimeSeries' {..} =+    _salt+      `Prelude.hashWithSalt` aliasPrefix+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` timeSeriesType++instance Prelude.NFData ListTimeSeries where+  rnf ListTimeSeries' {..} =+    Prelude.rnf aliasPrefix+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf timeSeriesType++instance Data.ToHeaders ListTimeSeries where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListTimeSeries where+  toPath = Prelude.const "/timeseries/"++instance Data.ToQuery ListTimeSeries where+  toQuery ListTimeSeries' {..} =+    Prelude.mconcat+      [ "aliasPrefix" Data.=: aliasPrefix,+        "assetId" Data.=: assetId,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "timeSeriesType" Data.=: timeSeriesType+      ]++-- | /See:/ 'newListTimeSeriesResponse' smart constructor.+data ListTimeSeriesResponse = ListTimeSeriesResponse'+  { -- | The token for the next set of results, or null if there are no+    -- additional results.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | One or more time series summaries to list.+    timeSeriesSummaries :: [TimeSeriesSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTimeSeriesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listTimeSeriesResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listTimeSeriesResponse_httpStatus' - The response's http status code.+--+-- 'timeSeriesSummaries', 'listTimeSeriesResponse_timeSeriesSummaries' - One or more time series summaries to list.+newListTimeSeriesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTimeSeriesResponse+newListTimeSeriesResponse pHttpStatus_ =+  ListTimeSeriesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      timeSeriesSummaries = Prelude.mempty+    }++-- | The token for the next set of results, or null if there are no+-- additional results.+listTimeSeriesResponse_nextToken :: Lens.Lens' ListTimeSeriesResponse (Prelude.Maybe Prelude.Text)+listTimeSeriesResponse_nextToken = Lens.lens (\ListTimeSeriesResponse' {nextToken} -> nextToken) (\s@ListTimeSeriesResponse' {} a -> s {nextToken = a} :: ListTimeSeriesResponse)++-- | The response's http status code.+listTimeSeriesResponse_httpStatus :: Lens.Lens' ListTimeSeriesResponse Prelude.Int+listTimeSeriesResponse_httpStatus = Lens.lens (\ListTimeSeriesResponse' {httpStatus} -> httpStatus) (\s@ListTimeSeriesResponse' {} a -> s {httpStatus = a} :: ListTimeSeriesResponse)++-- | One or more time series summaries to list.+listTimeSeriesResponse_timeSeriesSummaries :: Lens.Lens' ListTimeSeriesResponse [TimeSeriesSummary]+listTimeSeriesResponse_timeSeriesSummaries = Lens.lens (\ListTimeSeriesResponse' {timeSeriesSummaries} -> timeSeriesSummaries) (\s@ListTimeSeriesResponse' {} a -> s {timeSeriesSummaries = a} :: ListTimeSeriesResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListTimeSeriesResponse where+  rnf ListTimeSeriesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf timeSeriesSummaries
+ gen/Amazonka/IoTSiteWise/PutDefaultEncryptionConfiguration.hs view
@@ -0,0 +1,259 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.PutDefaultEncryptionConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Sets the default encryption configuration for the Amazon Web Services+-- account. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/key-management.html Key management>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.PutDefaultEncryptionConfiguration+  ( -- * Creating a Request+    PutDefaultEncryptionConfiguration (..),+    newPutDefaultEncryptionConfiguration,++    -- * Request Lenses+    putDefaultEncryptionConfiguration_kmsKeyId,+    putDefaultEncryptionConfiguration_encryptionType,++    -- * Destructuring the Response+    PutDefaultEncryptionConfigurationResponse (..),+    newPutDefaultEncryptionConfigurationResponse,++    -- * Response Lenses+    putDefaultEncryptionConfigurationResponse_kmsKeyArn,+    putDefaultEncryptionConfigurationResponse_httpStatus,+    putDefaultEncryptionConfigurationResponse_encryptionType,+    putDefaultEncryptionConfigurationResponse_configurationStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutDefaultEncryptionConfiguration' smart constructor.+data PutDefaultEncryptionConfiguration = PutDefaultEncryptionConfiguration'+  { -- | The Key ID of the customer managed key used for KMS encryption. This is+    -- required if you use @KMS_BASED_ENCRYPTION@.+    kmsKeyId :: Prelude.Maybe Prelude.Text,+    -- | The type of encryption used for the encryption configuration.+    encryptionType :: EncryptionType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutDefaultEncryptionConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'putDefaultEncryptionConfiguration_kmsKeyId' - The Key ID of the customer managed key used for KMS encryption. This is+-- required if you use @KMS_BASED_ENCRYPTION@.+--+-- 'encryptionType', 'putDefaultEncryptionConfiguration_encryptionType' - The type of encryption used for the encryption configuration.+newPutDefaultEncryptionConfiguration ::+  -- | 'encryptionType'+  EncryptionType ->+  PutDefaultEncryptionConfiguration+newPutDefaultEncryptionConfiguration pEncryptionType_ =+  PutDefaultEncryptionConfiguration'+    { kmsKeyId =+        Prelude.Nothing,+      encryptionType = pEncryptionType_+    }++-- | The Key ID of the customer managed key used for KMS encryption. This is+-- required if you use @KMS_BASED_ENCRYPTION@.+putDefaultEncryptionConfiguration_kmsKeyId :: Lens.Lens' PutDefaultEncryptionConfiguration (Prelude.Maybe Prelude.Text)+putDefaultEncryptionConfiguration_kmsKeyId = Lens.lens (\PutDefaultEncryptionConfiguration' {kmsKeyId} -> kmsKeyId) (\s@PutDefaultEncryptionConfiguration' {} a -> s {kmsKeyId = a} :: PutDefaultEncryptionConfiguration)++-- | The type of encryption used for the encryption configuration.+putDefaultEncryptionConfiguration_encryptionType :: Lens.Lens' PutDefaultEncryptionConfiguration EncryptionType+putDefaultEncryptionConfiguration_encryptionType = Lens.lens (\PutDefaultEncryptionConfiguration' {encryptionType} -> encryptionType) (\s@PutDefaultEncryptionConfiguration' {} a -> s {encryptionType = a} :: PutDefaultEncryptionConfiguration)++instance+  Core.AWSRequest+    PutDefaultEncryptionConfiguration+  where+  type+    AWSResponse PutDefaultEncryptionConfiguration =+      PutDefaultEncryptionConfigurationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutDefaultEncryptionConfigurationResponse'+            Prelude.<$> (x Data..?> "kmsKeyArn")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "encryptionType")+            Prelude.<*> (x Data..:> "configurationStatus")+      )++instance+  Prelude.Hashable+    PutDefaultEncryptionConfiguration+  where+  hashWithSalt+    _salt+    PutDefaultEncryptionConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` kmsKeyId+        `Prelude.hashWithSalt` encryptionType++instance+  Prelude.NFData+    PutDefaultEncryptionConfiguration+  where+  rnf PutDefaultEncryptionConfiguration' {..} =+    Prelude.rnf kmsKeyId+      `Prelude.seq` Prelude.rnf encryptionType++instance+  Data.ToHeaders+    PutDefaultEncryptionConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    PutDefaultEncryptionConfiguration+  where+  toJSON PutDefaultEncryptionConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("kmsKeyId" Data..=) Prelude.<$> kmsKeyId,+            Prelude.Just+              ("encryptionType" Data..= encryptionType)+          ]+      )++instance+  Data.ToPath+    PutDefaultEncryptionConfiguration+  where+  toPath =+    Prelude.const "/configuration/account/encryption"++instance+  Data.ToQuery+    PutDefaultEncryptionConfiguration+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutDefaultEncryptionConfigurationResponse' smart constructor.+data PutDefaultEncryptionConfigurationResponse = PutDefaultEncryptionConfigurationResponse'+  { -- | The Key ARN of the KMS key used for KMS encryption if you use+    -- @KMS_BASED_ENCRYPTION@.+    kmsKeyArn :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The type of encryption used for the encryption configuration.+    encryptionType :: EncryptionType,+    -- | The status of the account configuration. This contains the+    -- @ConfigurationState@. If there is an error, it also contains the+    -- @ErrorDetails@.+    configurationStatus :: ConfigurationStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutDefaultEncryptionConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'kmsKeyArn', 'putDefaultEncryptionConfigurationResponse_kmsKeyArn' - The Key ARN of the KMS key used for KMS encryption if you use+-- @KMS_BASED_ENCRYPTION@.+--+-- 'httpStatus', 'putDefaultEncryptionConfigurationResponse_httpStatus' - The response's http status code.+--+-- 'encryptionType', 'putDefaultEncryptionConfigurationResponse_encryptionType' - The type of encryption used for the encryption configuration.+--+-- 'configurationStatus', 'putDefaultEncryptionConfigurationResponse_configurationStatus' - The status of the account configuration. This contains the+-- @ConfigurationState@. If there is an error, it also contains the+-- @ErrorDetails@.+newPutDefaultEncryptionConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'encryptionType'+  EncryptionType ->+  -- | 'configurationStatus'+  ConfigurationStatus ->+  PutDefaultEncryptionConfigurationResponse+newPutDefaultEncryptionConfigurationResponse+  pHttpStatus_+  pEncryptionType_+  pConfigurationStatus_ =+    PutDefaultEncryptionConfigurationResponse'+      { kmsKeyArn =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        encryptionType =+          pEncryptionType_,+        configurationStatus =+          pConfigurationStatus_+      }++-- | The Key ARN of the KMS key used for KMS encryption if you use+-- @KMS_BASED_ENCRYPTION@.+putDefaultEncryptionConfigurationResponse_kmsKeyArn :: Lens.Lens' PutDefaultEncryptionConfigurationResponse (Prelude.Maybe Prelude.Text)+putDefaultEncryptionConfigurationResponse_kmsKeyArn = Lens.lens (\PutDefaultEncryptionConfigurationResponse' {kmsKeyArn} -> kmsKeyArn) (\s@PutDefaultEncryptionConfigurationResponse' {} a -> s {kmsKeyArn = a} :: PutDefaultEncryptionConfigurationResponse)++-- | The response's http status code.+putDefaultEncryptionConfigurationResponse_httpStatus :: Lens.Lens' PutDefaultEncryptionConfigurationResponse Prelude.Int+putDefaultEncryptionConfigurationResponse_httpStatus = Lens.lens (\PutDefaultEncryptionConfigurationResponse' {httpStatus} -> httpStatus) (\s@PutDefaultEncryptionConfigurationResponse' {} a -> s {httpStatus = a} :: PutDefaultEncryptionConfigurationResponse)++-- | The type of encryption used for the encryption configuration.+putDefaultEncryptionConfigurationResponse_encryptionType :: Lens.Lens' PutDefaultEncryptionConfigurationResponse EncryptionType+putDefaultEncryptionConfigurationResponse_encryptionType = Lens.lens (\PutDefaultEncryptionConfigurationResponse' {encryptionType} -> encryptionType) (\s@PutDefaultEncryptionConfigurationResponse' {} a -> s {encryptionType = a} :: PutDefaultEncryptionConfigurationResponse)++-- | The status of the account configuration. This contains the+-- @ConfigurationState@. If there is an error, it also contains the+-- @ErrorDetails@.+putDefaultEncryptionConfigurationResponse_configurationStatus :: Lens.Lens' PutDefaultEncryptionConfigurationResponse ConfigurationStatus+putDefaultEncryptionConfigurationResponse_configurationStatus = Lens.lens (\PutDefaultEncryptionConfigurationResponse' {configurationStatus} -> configurationStatus) (\s@PutDefaultEncryptionConfigurationResponse' {} a -> s {configurationStatus = a} :: PutDefaultEncryptionConfigurationResponse)++instance+  Prelude.NFData+    PutDefaultEncryptionConfigurationResponse+  where+  rnf PutDefaultEncryptionConfigurationResponse' {..} =+    Prelude.rnf kmsKeyArn+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf encryptionType+      `Prelude.seq` Prelude.rnf configurationStatus
+ gen/Amazonka/IoTSiteWise/PutLoggingOptions.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.PutLoggingOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Sets logging options for IoT SiteWise.+module Amazonka.IoTSiteWise.PutLoggingOptions+  ( -- * Creating a Request+    PutLoggingOptions (..),+    newPutLoggingOptions,++    -- * Request Lenses+    putLoggingOptions_loggingOptions,++    -- * Destructuring the Response+    PutLoggingOptionsResponse (..),+    newPutLoggingOptionsResponse,++    -- * Response Lenses+    putLoggingOptionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutLoggingOptions' smart constructor.+data PutLoggingOptions = PutLoggingOptions'+  { -- | The logging options to set.+    loggingOptions :: LoggingOptions+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutLoggingOptions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'loggingOptions', 'putLoggingOptions_loggingOptions' - The logging options to set.+newPutLoggingOptions ::+  -- | 'loggingOptions'+  LoggingOptions ->+  PutLoggingOptions+newPutLoggingOptions pLoggingOptions_ =+  PutLoggingOptions'+    { loggingOptions =+        pLoggingOptions_+    }++-- | The logging options to set.+putLoggingOptions_loggingOptions :: Lens.Lens' PutLoggingOptions LoggingOptions+putLoggingOptions_loggingOptions = Lens.lens (\PutLoggingOptions' {loggingOptions} -> loggingOptions) (\s@PutLoggingOptions' {} a -> s {loggingOptions = a} :: PutLoggingOptions)++instance Core.AWSRequest PutLoggingOptions where+  type+    AWSResponse PutLoggingOptions =+      PutLoggingOptionsResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutLoggingOptionsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutLoggingOptions where+  hashWithSalt _salt PutLoggingOptions' {..} =+    _salt `Prelude.hashWithSalt` loggingOptions++instance Prelude.NFData PutLoggingOptions where+  rnf PutLoggingOptions' {..} =+    Prelude.rnf loggingOptions++instance Data.ToHeaders PutLoggingOptions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutLoggingOptions where+  toJSON PutLoggingOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("loggingOptions" Data..= loggingOptions)+          ]+      )++instance Data.ToPath PutLoggingOptions where+  toPath = Prelude.const "/logging"++instance Data.ToQuery PutLoggingOptions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutLoggingOptionsResponse' smart constructor.+data PutLoggingOptionsResponse = PutLoggingOptionsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutLoggingOptionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'putLoggingOptionsResponse_httpStatus' - The response's http status code.+newPutLoggingOptionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutLoggingOptionsResponse+newPutLoggingOptionsResponse pHttpStatus_ =+  PutLoggingOptionsResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+putLoggingOptionsResponse_httpStatus :: Lens.Lens' PutLoggingOptionsResponse Prelude.Int+putLoggingOptionsResponse_httpStatus = Lens.lens (\PutLoggingOptionsResponse' {httpStatus} -> httpStatus) (\s@PutLoggingOptionsResponse' {} a -> s {httpStatus = a} :: PutLoggingOptionsResponse)++instance Prelude.NFData PutLoggingOptionsResponse where+  rnf PutLoggingOptionsResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/PutStorageConfiguration.hs view
@@ -0,0 +1,410 @@+{-# 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.IoTSiteWise.PutStorageConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Configures storage settings for IoT SiteWise.+module Amazonka.IoTSiteWise.PutStorageConfiguration+  ( -- * Creating a Request+    PutStorageConfiguration (..),+    newPutStorageConfiguration,++    -- * Request Lenses+    putStorageConfiguration_disassociatedDataStorage,+    putStorageConfiguration_multiLayerStorage,+    putStorageConfiguration_retentionPeriod,+    putStorageConfiguration_storageType,++    -- * Destructuring the Response+    PutStorageConfigurationResponse (..),+    newPutStorageConfigurationResponse,++    -- * Response Lenses+    putStorageConfigurationResponse_disassociatedDataStorage,+    putStorageConfigurationResponse_multiLayerStorage,+    putStorageConfigurationResponse_retentionPeriod,+    putStorageConfigurationResponse_httpStatus,+    putStorageConfigurationResponse_storageType,+    putStorageConfigurationResponse_configurationStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutStorageConfiguration' smart constructor.+data PutStorageConfiguration = PutStorageConfiguration'+  { -- | Contains the storage configuration for time series (data streams) that+    -- aren\'t associated with asset properties. The @disassociatedDataStorage@+    -- can be one of the following values:+    --+    -- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated+    --     with asset properties.+    --+    --     After the @disassociatedDataStorage@ is enabled, you can\'t disable+    --     it.+    --+    -- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)+    --     that aren\'t associated with asset properties.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>+    -- in the /IoT SiteWise User Guide/.+    disassociatedDataStorage :: Prelude.Maybe DisassociatedDataStorageState,+    -- | Identifies a storage destination. If you specified @MULTI_LAYER_STORAGE@+    -- for the storage type, you must specify a @MultiLayerStorage@ object.+    multiLayerStorage :: Prelude.Maybe MultiLayerStorage,+    retentionPeriod :: Prelude.Maybe RetentionPeriod,+    -- | The storage tier that you specified for your data. The @storageType@+    -- parameter can be one of the following values:+    --+    -- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the+    --     hot tier. The hot tier is a service-managed database.+    --+    -- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the+    --     cold tier and the hot tier. The cold tier is a customer-managed+    --     Amazon S3 bucket.+    storageType :: StorageType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutStorageConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'disassociatedDataStorage', 'putStorageConfiguration_disassociatedDataStorage' - Contains the storage configuration for time series (data streams) that+-- aren\'t associated with asset properties. The @disassociatedDataStorage@+-- can be one of the following values:+--+-- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated+--     with asset properties.+--+--     After the @disassociatedDataStorage@ is enabled, you can\'t disable+--     it.+--+-- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)+--     that aren\'t associated with asset properties.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>+-- in the /IoT SiteWise User Guide/.+--+-- 'multiLayerStorage', 'putStorageConfiguration_multiLayerStorage' - Identifies a storage destination. If you specified @MULTI_LAYER_STORAGE@+-- for the storage type, you must specify a @MultiLayerStorage@ object.+--+-- 'retentionPeriod', 'putStorageConfiguration_retentionPeriod' - Undocumented member.+--+-- 'storageType', 'putStorageConfiguration_storageType' - The storage tier that you specified for your data. The @storageType@+-- parameter can be one of the following values:+--+-- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the+--     hot tier. The hot tier is a service-managed database.+--+-- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the+--     cold tier and the hot tier. The cold tier is a customer-managed+--     Amazon S3 bucket.+newPutStorageConfiguration ::+  -- | 'storageType'+  StorageType ->+  PutStorageConfiguration+newPutStorageConfiguration pStorageType_ =+  PutStorageConfiguration'+    { disassociatedDataStorage =+        Prelude.Nothing,+      multiLayerStorage = Prelude.Nothing,+      retentionPeriod = Prelude.Nothing,+      storageType = pStorageType_+    }++-- | Contains the storage configuration for time series (data streams) that+-- aren\'t associated with asset properties. The @disassociatedDataStorage@+-- can be one of the following values:+--+-- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated+--     with asset properties.+--+--     After the @disassociatedDataStorage@ is enabled, you can\'t disable+--     it.+--+-- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)+--     that aren\'t associated with asset properties.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>+-- in the /IoT SiteWise User Guide/.+putStorageConfiguration_disassociatedDataStorage :: Lens.Lens' PutStorageConfiguration (Prelude.Maybe DisassociatedDataStorageState)+putStorageConfiguration_disassociatedDataStorage = Lens.lens (\PutStorageConfiguration' {disassociatedDataStorage} -> disassociatedDataStorage) (\s@PutStorageConfiguration' {} a -> s {disassociatedDataStorage = a} :: PutStorageConfiguration)++-- | Identifies a storage destination. If you specified @MULTI_LAYER_STORAGE@+-- for the storage type, you must specify a @MultiLayerStorage@ object.+putStorageConfiguration_multiLayerStorage :: Lens.Lens' PutStorageConfiguration (Prelude.Maybe MultiLayerStorage)+putStorageConfiguration_multiLayerStorage = Lens.lens (\PutStorageConfiguration' {multiLayerStorage} -> multiLayerStorage) (\s@PutStorageConfiguration' {} a -> s {multiLayerStorage = a} :: PutStorageConfiguration)++-- | Undocumented member.+putStorageConfiguration_retentionPeriod :: Lens.Lens' PutStorageConfiguration (Prelude.Maybe RetentionPeriod)+putStorageConfiguration_retentionPeriod = Lens.lens (\PutStorageConfiguration' {retentionPeriod} -> retentionPeriod) (\s@PutStorageConfiguration' {} a -> s {retentionPeriod = a} :: PutStorageConfiguration)++-- | The storage tier that you specified for your data. The @storageType@+-- parameter can be one of the following values:+--+-- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the+--     hot tier. The hot tier is a service-managed database.+--+-- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the+--     cold tier and the hot tier. The cold tier is a customer-managed+--     Amazon S3 bucket.+putStorageConfiguration_storageType :: Lens.Lens' PutStorageConfiguration StorageType+putStorageConfiguration_storageType = Lens.lens (\PutStorageConfiguration' {storageType} -> storageType) (\s@PutStorageConfiguration' {} a -> s {storageType = a} :: PutStorageConfiguration)++instance Core.AWSRequest PutStorageConfiguration where+  type+    AWSResponse PutStorageConfiguration =+      PutStorageConfigurationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutStorageConfigurationResponse'+            Prelude.<$> (x Data..?> "disassociatedDataStorage")+            Prelude.<*> (x Data..?> "multiLayerStorage")+            Prelude.<*> (x Data..?> "retentionPeriod")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "storageType")+            Prelude.<*> (x Data..:> "configurationStatus")+      )++instance Prelude.Hashable PutStorageConfiguration where+  hashWithSalt _salt PutStorageConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` disassociatedDataStorage+      `Prelude.hashWithSalt` multiLayerStorage+      `Prelude.hashWithSalt` retentionPeriod+      `Prelude.hashWithSalt` storageType++instance Prelude.NFData PutStorageConfiguration where+  rnf PutStorageConfiguration' {..} =+    Prelude.rnf disassociatedDataStorage+      `Prelude.seq` Prelude.rnf multiLayerStorage+      `Prelude.seq` Prelude.rnf retentionPeriod+      `Prelude.seq` Prelude.rnf storageType++instance Data.ToHeaders PutStorageConfiguration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutStorageConfiguration where+  toJSON PutStorageConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("disassociatedDataStorage" Data..=)+              Prelude.<$> disassociatedDataStorage,+            ("multiLayerStorage" Data..=)+              Prelude.<$> multiLayerStorage,+            ("retentionPeriod" Data..=)+              Prelude.<$> retentionPeriod,+            Prelude.Just ("storageType" Data..= storageType)+          ]+      )++instance Data.ToPath PutStorageConfiguration where+  toPath =+    Prelude.const "/configuration/account/storage"++instance Data.ToQuery PutStorageConfiguration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutStorageConfigurationResponse' smart constructor.+data PutStorageConfigurationResponse = PutStorageConfigurationResponse'+  { -- | Contains the storage configuration for time series (data streams) that+    -- aren\'t associated with asset properties. The @disassociatedDataStorage@+    -- can be one of the following values:+    --+    -- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated+    --     with asset properties.+    --+    --     After the @disassociatedDataStorage@ is enabled, you can\'t disable+    --     it.+    --+    -- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)+    --     that aren\'t associated with asset properties.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>+    -- in the /IoT SiteWise User Guide/.+    disassociatedDataStorage :: Prelude.Maybe DisassociatedDataStorageState,+    -- | Contains information about the storage destination.+    multiLayerStorage :: Prelude.Maybe MultiLayerStorage,+    retentionPeriod :: Prelude.Maybe RetentionPeriod,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The storage tier that you specified for your data. The @storageType@+    -- parameter can be one of the following values:+    --+    -- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the+    --     hot tier. The hot tier is a service-managed database.+    --+    -- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the+    --     cold tier and the hot tier. The cold tier is a customer-managed+    --     Amazon S3 bucket.+    storageType :: StorageType,+    configurationStatus :: ConfigurationStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutStorageConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'disassociatedDataStorage', 'putStorageConfigurationResponse_disassociatedDataStorage' - Contains the storage configuration for time series (data streams) that+-- aren\'t associated with asset properties. The @disassociatedDataStorage@+-- can be one of the following values:+--+-- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated+--     with asset properties.+--+--     After the @disassociatedDataStorage@ is enabled, you can\'t disable+--     it.+--+-- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)+--     that aren\'t associated with asset properties.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>+-- in the /IoT SiteWise User Guide/.+--+-- 'multiLayerStorage', 'putStorageConfigurationResponse_multiLayerStorage' - Contains information about the storage destination.+--+-- 'retentionPeriod', 'putStorageConfigurationResponse_retentionPeriod' - Undocumented member.+--+-- 'httpStatus', 'putStorageConfigurationResponse_httpStatus' - The response's http status code.+--+-- 'storageType', 'putStorageConfigurationResponse_storageType' - The storage tier that you specified for your data. The @storageType@+-- parameter can be one of the following values:+--+-- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the+--     hot tier. The hot tier is a service-managed database.+--+-- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the+--     cold tier and the hot tier. The cold tier is a customer-managed+--     Amazon S3 bucket.+--+-- 'configurationStatus', 'putStorageConfigurationResponse_configurationStatus' - Undocumented member.+newPutStorageConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'storageType'+  StorageType ->+  -- | 'configurationStatus'+  ConfigurationStatus ->+  PutStorageConfigurationResponse+newPutStorageConfigurationResponse+  pHttpStatus_+  pStorageType_+  pConfigurationStatus_ =+    PutStorageConfigurationResponse'+      { disassociatedDataStorage =+          Prelude.Nothing,+        multiLayerStorage = Prelude.Nothing,+        retentionPeriod = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        storageType = pStorageType_,+        configurationStatus =+          pConfigurationStatus_+      }++-- | Contains the storage configuration for time series (data streams) that+-- aren\'t associated with asset properties. The @disassociatedDataStorage@+-- can be one of the following values:+--+-- -   @ENABLED@ – IoT SiteWise accepts time series that aren\'t associated+--     with asset properties.+--+--     After the @disassociatedDataStorage@ is enabled, you can\'t disable+--     it.+--+-- -   @DISABLED@ – IoT SiteWise doesn\'t accept time series (data streams)+--     that aren\'t associated with asset properties.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/data-streams.html Data streams>+-- in the /IoT SiteWise User Guide/.+putStorageConfigurationResponse_disassociatedDataStorage :: Lens.Lens' PutStorageConfigurationResponse (Prelude.Maybe DisassociatedDataStorageState)+putStorageConfigurationResponse_disassociatedDataStorage = Lens.lens (\PutStorageConfigurationResponse' {disassociatedDataStorage} -> disassociatedDataStorage) (\s@PutStorageConfigurationResponse' {} a -> s {disassociatedDataStorage = a} :: PutStorageConfigurationResponse)++-- | Contains information about the storage destination.+putStorageConfigurationResponse_multiLayerStorage :: Lens.Lens' PutStorageConfigurationResponse (Prelude.Maybe MultiLayerStorage)+putStorageConfigurationResponse_multiLayerStorage = Lens.lens (\PutStorageConfigurationResponse' {multiLayerStorage} -> multiLayerStorage) (\s@PutStorageConfigurationResponse' {} a -> s {multiLayerStorage = a} :: PutStorageConfigurationResponse)++-- | Undocumented member.+putStorageConfigurationResponse_retentionPeriod :: Lens.Lens' PutStorageConfigurationResponse (Prelude.Maybe RetentionPeriod)+putStorageConfigurationResponse_retentionPeriod = Lens.lens (\PutStorageConfigurationResponse' {retentionPeriod} -> retentionPeriod) (\s@PutStorageConfigurationResponse' {} a -> s {retentionPeriod = a} :: PutStorageConfigurationResponse)++-- | The response's http status code.+putStorageConfigurationResponse_httpStatus :: Lens.Lens' PutStorageConfigurationResponse Prelude.Int+putStorageConfigurationResponse_httpStatus = Lens.lens (\PutStorageConfigurationResponse' {httpStatus} -> httpStatus) (\s@PutStorageConfigurationResponse' {} a -> s {httpStatus = a} :: PutStorageConfigurationResponse)++-- | The storage tier that you specified for your data. The @storageType@+-- parameter can be one of the following values:+--+-- -   @SITEWISE_DEFAULT_STORAGE@ – IoT SiteWise saves your data into the+--     hot tier. The hot tier is a service-managed database.+--+-- -   @MULTI_LAYER_STORAGE@ – IoT SiteWise saves your data in both the+--     cold tier and the hot tier. The cold tier is a customer-managed+--     Amazon S3 bucket.+putStorageConfigurationResponse_storageType :: Lens.Lens' PutStorageConfigurationResponse StorageType+putStorageConfigurationResponse_storageType = Lens.lens (\PutStorageConfigurationResponse' {storageType} -> storageType) (\s@PutStorageConfigurationResponse' {} a -> s {storageType = a} :: PutStorageConfigurationResponse)++-- | Undocumented member.+putStorageConfigurationResponse_configurationStatus :: Lens.Lens' PutStorageConfigurationResponse ConfigurationStatus+putStorageConfigurationResponse_configurationStatus = Lens.lens (\PutStorageConfigurationResponse' {configurationStatus} -> configurationStatus) (\s@PutStorageConfigurationResponse' {} a -> s {configurationStatus = a} :: PutStorageConfigurationResponse)++instance+  Prelude.NFData+    PutStorageConfigurationResponse+  where+  rnf PutStorageConfigurationResponse' {..} =+    Prelude.rnf disassociatedDataStorage+      `Prelude.seq` Prelude.rnf multiLayerStorage+      `Prelude.seq` Prelude.rnf retentionPeriod+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf storageType+      `Prelude.seq` Prelude.rnf configurationStatus
+ gen/Amazonka/IoTSiteWise/TagResource.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.IoTSiteWise.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)+--+-- Adds tags to an IoT SiteWise resource. If a tag already exists for the+-- resource, this operation updates the tag\'s value.+module Amazonka.IoTSiteWise.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.IoTSiteWise.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+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the resource to tag.+    resourceArn :: Prelude.Text,+    -- | A list of key-value pairs that contain metadata for the resource. For+    -- more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+    -- in the /IoT SiteWise User Guide/.+    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+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the resource to tag.+--+-- 'tags', 'tagResource_tags' - A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the resource to tag.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/tag-resources.html Tagging your IoT SiteWise resources>+-- in the /IoT SiteWise User Guide/.+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 = Prelude.const "/tags"++instance Data.ToQuery TagResource where+  toQuery TagResource' {..} =+    Prelude.mconcat ["resourceArn" Data.=: resourceArn]++-- | /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.+newTagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TagResourceResponse+newTagResourceResponse pHttpStatus_ =+  TagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)++instance Prelude.NFData TagResourceResponse where+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/Types.hs view
@@ -0,0 +1,1153 @@+{-# 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.IoTSiteWise.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.IoTSiteWise.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _ConflictingOperationException,+    _InternalFailureException,+    _InvalidRequestException,+    _LimitExceededException,+    _ResourceAlreadyExistsException,+    _ResourceNotFoundException,+    _ServiceUnavailableException,+    _ThrottlingException,+    _TooManyTagsException,+    _UnauthorizedException,++    -- * AggregateType+    AggregateType (..),++    -- * AssetErrorCode+    AssetErrorCode (..),++    -- * AssetModelState+    AssetModelState (..),++    -- * AssetRelationshipType+    AssetRelationshipType (..),++    -- * AssetState+    AssetState (..),++    -- * AuthMode+    AuthMode (..),++    -- * BatchEntryCompletionStatus+    BatchEntryCompletionStatus (..),++    -- * BatchGetAssetPropertyAggregatesErrorCode+    BatchGetAssetPropertyAggregatesErrorCode (..),++    -- * BatchGetAssetPropertyValueErrorCode+    BatchGetAssetPropertyValueErrorCode (..),++    -- * BatchGetAssetPropertyValueHistoryErrorCode+    BatchGetAssetPropertyValueHistoryErrorCode (..),++    -- * BatchPutAssetPropertyValueErrorCode+    BatchPutAssetPropertyValueErrorCode (..),++    -- * CapabilitySyncStatus+    CapabilitySyncStatus (..),++    -- * ColumnName+    ColumnName (..),++    -- * ComputeLocation+    ComputeLocation (..),++    -- * ConfigurationState+    ConfigurationState (..),++    -- * DetailedErrorCode+    DetailedErrorCode (..),++    -- * DisassociatedDataStorageState+    DisassociatedDataStorageState (..),++    -- * EncryptionType+    EncryptionType (..),++    -- * ErrorCode+    ErrorCode (..),++    -- * ForwardingConfigState+    ForwardingConfigState (..),++    -- * IdentityType+    IdentityType (..),++    -- * ImageFileType+    ImageFileType (..),++    -- * JobStatus+    JobStatus (..),++    -- * ListAssetModelPropertiesFilter+    ListAssetModelPropertiesFilter (..),++    -- * ListAssetPropertiesFilter+    ListAssetPropertiesFilter (..),++    -- * ListAssetsFilter+    ListAssetsFilter (..),++    -- * ListBulkImportJobsFilter+    ListBulkImportJobsFilter (..),++    -- * ListTimeSeriesType+    ListTimeSeriesType (..),++    -- * LoggingLevel+    LoggingLevel (..),++    -- * MonitorErrorCode+    MonitorErrorCode (..),++    -- * Permission+    Permission (..),++    -- * PortalState+    PortalState (..),++    -- * PropertyDataType+    PropertyDataType (..),++    -- * PropertyNotificationState+    PropertyNotificationState (..),++    -- * Quality+    Quality (..),++    -- * ResourceType+    ResourceType (..),++    -- * StorageType+    StorageType (..),++    -- * TimeOrdering+    TimeOrdering (..),++    -- * TraversalDirection+    TraversalDirection (..),++    -- * TraversalType+    TraversalType (..),++    -- * AccessPolicySummary+    AccessPolicySummary (..),+    newAccessPolicySummary,+    accessPolicySummary_creationDate,+    accessPolicySummary_lastUpdateDate,+    accessPolicySummary_id,+    accessPolicySummary_identity,+    accessPolicySummary_resource,+    accessPolicySummary_permission,++    -- * AggregatedValue+    AggregatedValue (..),+    newAggregatedValue,+    aggregatedValue_quality,+    aggregatedValue_timestamp,+    aggregatedValue_value,++    -- * Aggregates+    Aggregates (..),+    newAggregates,+    aggregates_average,+    aggregates_count,+    aggregates_maximum,+    aggregates_minimum,+    aggregates_standardDeviation,+    aggregates_sum,++    -- * Alarms+    Alarms (..),+    newAlarms,+    alarms_notificationLambdaArn,+    alarms_alarmRoleArn,++    -- * AssetCompositeModel+    AssetCompositeModel (..),+    newAssetCompositeModel,+    assetCompositeModel_description,+    assetCompositeModel_id,+    assetCompositeModel_name,+    assetCompositeModel_type,+    assetCompositeModel_properties,++    -- * AssetErrorDetails+    AssetErrorDetails (..),+    newAssetErrorDetails,+    assetErrorDetails_assetId,+    assetErrorDetails_code,+    assetErrorDetails_message,++    -- * AssetHierarchy+    AssetHierarchy (..),+    newAssetHierarchy,+    assetHierarchy_id,+    assetHierarchy_name,++    -- * AssetHierarchyInfo+    AssetHierarchyInfo (..),+    newAssetHierarchyInfo,+    assetHierarchyInfo_childAssetId,+    assetHierarchyInfo_parentAssetId,++    -- * AssetModelCompositeModel+    AssetModelCompositeModel (..),+    newAssetModelCompositeModel,+    assetModelCompositeModel_description,+    assetModelCompositeModel_id,+    assetModelCompositeModel_properties,+    assetModelCompositeModel_name,+    assetModelCompositeModel_type,++    -- * AssetModelCompositeModelDefinition+    AssetModelCompositeModelDefinition (..),+    newAssetModelCompositeModelDefinition,+    assetModelCompositeModelDefinition_description,+    assetModelCompositeModelDefinition_properties,+    assetModelCompositeModelDefinition_name,+    assetModelCompositeModelDefinition_type,++    -- * AssetModelHierarchy+    AssetModelHierarchy (..),+    newAssetModelHierarchy,+    assetModelHierarchy_id,+    assetModelHierarchy_name,+    assetModelHierarchy_childAssetModelId,++    -- * AssetModelHierarchyDefinition+    AssetModelHierarchyDefinition (..),+    newAssetModelHierarchyDefinition,+    assetModelHierarchyDefinition_name,+    assetModelHierarchyDefinition_childAssetModelId,++    -- * AssetModelProperty+    AssetModelProperty (..),+    newAssetModelProperty,+    assetModelProperty_dataTypeSpec,+    assetModelProperty_id,+    assetModelProperty_unit,+    assetModelProperty_name,+    assetModelProperty_dataType,+    assetModelProperty_type,++    -- * AssetModelPropertyDefinition+    AssetModelPropertyDefinition (..),+    newAssetModelPropertyDefinition,+    assetModelPropertyDefinition_dataTypeSpec,+    assetModelPropertyDefinition_unit,+    assetModelPropertyDefinition_name,+    assetModelPropertyDefinition_dataType,+    assetModelPropertyDefinition_type,++    -- * AssetModelPropertySummary+    AssetModelPropertySummary (..),+    newAssetModelPropertySummary,+    assetModelPropertySummary_assetModelCompositeModelId,+    assetModelPropertySummary_dataTypeSpec,+    assetModelPropertySummary_id,+    assetModelPropertySummary_unit,+    assetModelPropertySummary_name,+    assetModelPropertySummary_dataType,+    assetModelPropertySummary_type,++    -- * AssetModelStatus+    AssetModelStatus (..),+    newAssetModelStatus,+    assetModelStatus_error,+    assetModelStatus_state,++    -- * AssetModelSummary+    AssetModelSummary (..),+    newAssetModelSummary,+    assetModelSummary_id,+    assetModelSummary_arn,+    assetModelSummary_name,+    assetModelSummary_description,+    assetModelSummary_creationDate,+    assetModelSummary_lastUpdateDate,+    assetModelSummary_status,++    -- * AssetProperty+    AssetProperty (..),+    newAssetProperty,+    assetProperty_alias,+    assetProperty_dataTypeSpec,+    assetProperty_notification,+    assetProperty_unit,+    assetProperty_id,+    assetProperty_name,+    assetProperty_dataType,++    -- * AssetPropertySummary+    AssetPropertySummary (..),+    newAssetPropertySummary,+    assetPropertySummary_alias,+    assetPropertySummary_assetCompositeModelId,+    assetPropertySummary_id,+    assetPropertySummary_notification,+    assetPropertySummary_unit,++    -- * AssetPropertyValue+    AssetPropertyValue (..),+    newAssetPropertyValue,+    assetPropertyValue_quality,+    assetPropertyValue_value,+    assetPropertyValue_timestamp,++    -- * AssetRelationshipSummary+    AssetRelationshipSummary (..),+    newAssetRelationshipSummary,+    assetRelationshipSummary_hierarchyInfo,+    assetRelationshipSummary_relationshipType,++    -- * AssetStatus+    AssetStatus (..),+    newAssetStatus,+    assetStatus_error,+    assetStatus_state,++    -- * AssetSummary+    AssetSummary (..),+    newAssetSummary,+    assetSummary_description,+    assetSummary_id,+    assetSummary_arn,+    assetSummary_name,+    assetSummary_assetModelId,+    assetSummary_creationDate,+    assetSummary_lastUpdateDate,+    assetSummary_status,+    assetSummary_hierarchies,++    -- * AssociatedAssetsSummary+    AssociatedAssetsSummary (..),+    newAssociatedAssetsSummary,+    associatedAssetsSummary_description,+    associatedAssetsSummary_id,+    associatedAssetsSummary_arn,+    associatedAssetsSummary_name,+    associatedAssetsSummary_assetModelId,+    associatedAssetsSummary_creationDate,+    associatedAssetsSummary_lastUpdateDate,+    associatedAssetsSummary_status,+    associatedAssetsSummary_hierarchies,++    -- * Attribute+    Attribute (..),+    newAttribute,+    attribute_defaultValue,++    -- * BatchGetAssetPropertyAggregatesEntry+    BatchGetAssetPropertyAggregatesEntry (..),+    newBatchGetAssetPropertyAggregatesEntry,+    batchGetAssetPropertyAggregatesEntry_assetId,+    batchGetAssetPropertyAggregatesEntry_propertyAlias,+    batchGetAssetPropertyAggregatesEntry_propertyId,+    batchGetAssetPropertyAggregatesEntry_qualities,+    batchGetAssetPropertyAggregatesEntry_timeOrdering,+    batchGetAssetPropertyAggregatesEntry_entryId,+    batchGetAssetPropertyAggregatesEntry_aggregateTypes,+    batchGetAssetPropertyAggregatesEntry_resolution,+    batchGetAssetPropertyAggregatesEntry_startDate,+    batchGetAssetPropertyAggregatesEntry_endDate,++    -- * BatchGetAssetPropertyAggregatesErrorEntry+    BatchGetAssetPropertyAggregatesErrorEntry (..),+    newBatchGetAssetPropertyAggregatesErrorEntry,+    batchGetAssetPropertyAggregatesErrorEntry_errorCode,+    batchGetAssetPropertyAggregatesErrorEntry_errorMessage,+    batchGetAssetPropertyAggregatesErrorEntry_entryId,++    -- * BatchGetAssetPropertyAggregatesErrorInfo+    BatchGetAssetPropertyAggregatesErrorInfo (..),+    newBatchGetAssetPropertyAggregatesErrorInfo,+    batchGetAssetPropertyAggregatesErrorInfo_errorCode,+    batchGetAssetPropertyAggregatesErrorInfo_errorTimestamp,++    -- * BatchGetAssetPropertyAggregatesSkippedEntry+    BatchGetAssetPropertyAggregatesSkippedEntry (..),+    newBatchGetAssetPropertyAggregatesSkippedEntry,+    batchGetAssetPropertyAggregatesSkippedEntry_errorInfo,+    batchGetAssetPropertyAggregatesSkippedEntry_entryId,+    batchGetAssetPropertyAggregatesSkippedEntry_completionStatus,++    -- * BatchGetAssetPropertyAggregatesSuccessEntry+    BatchGetAssetPropertyAggregatesSuccessEntry (..),+    newBatchGetAssetPropertyAggregatesSuccessEntry,+    batchGetAssetPropertyAggregatesSuccessEntry_entryId,+    batchGetAssetPropertyAggregatesSuccessEntry_aggregatedValues,++    -- * BatchGetAssetPropertyValueEntry+    BatchGetAssetPropertyValueEntry (..),+    newBatchGetAssetPropertyValueEntry,+    batchGetAssetPropertyValueEntry_assetId,+    batchGetAssetPropertyValueEntry_propertyAlias,+    batchGetAssetPropertyValueEntry_propertyId,+    batchGetAssetPropertyValueEntry_entryId,++    -- * BatchGetAssetPropertyValueErrorEntry+    BatchGetAssetPropertyValueErrorEntry (..),+    newBatchGetAssetPropertyValueErrorEntry,+    batchGetAssetPropertyValueErrorEntry_errorCode,+    batchGetAssetPropertyValueErrorEntry_errorMessage,+    batchGetAssetPropertyValueErrorEntry_entryId,++    -- * BatchGetAssetPropertyValueErrorInfo+    BatchGetAssetPropertyValueErrorInfo (..),+    newBatchGetAssetPropertyValueErrorInfo,+    batchGetAssetPropertyValueErrorInfo_errorCode,+    batchGetAssetPropertyValueErrorInfo_errorTimestamp,++    -- * BatchGetAssetPropertyValueHistoryEntry+    BatchGetAssetPropertyValueHistoryEntry (..),+    newBatchGetAssetPropertyValueHistoryEntry,+    batchGetAssetPropertyValueHistoryEntry_assetId,+    batchGetAssetPropertyValueHistoryEntry_endDate,+    batchGetAssetPropertyValueHistoryEntry_propertyAlias,+    batchGetAssetPropertyValueHistoryEntry_propertyId,+    batchGetAssetPropertyValueHistoryEntry_qualities,+    batchGetAssetPropertyValueHistoryEntry_startDate,+    batchGetAssetPropertyValueHistoryEntry_timeOrdering,+    batchGetAssetPropertyValueHistoryEntry_entryId,++    -- * BatchGetAssetPropertyValueHistoryErrorEntry+    BatchGetAssetPropertyValueHistoryErrorEntry (..),+    newBatchGetAssetPropertyValueHistoryErrorEntry,+    batchGetAssetPropertyValueHistoryErrorEntry_errorCode,+    batchGetAssetPropertyValueHistoryErrorEntry_errorMessage,+    batchGetAssetPropertyValueHistoryErrorEntry_entryId,++    -- * BatchGetAssetPropertyValueHistoryErrorInfo+    BatchGetAssetPropertyValueHistoryErrorInfo (..),+    newBatchGetAssetPropertyValueHistoryErrorInfo,+    batchGetAssetPropertyValueHistoryErrorInfo_errorCode,+    batchGetAssetPropertyValueHistoryErrorInfo_errorTimestamp,++    -- * BatchGetAssetPropertyValueHistorySkippedEntry+    BatchGetAssetPropertyValueHistorySkippedEntry (..),+    newBatchGetAssetPropertyValueHistorySkippedEntry,+    batchGetAssetPropertyValueHistorySkippedEntry_errorInfo,+    batchGetAssetPropertyValueHistorySkippedEntry_entryId,+    batchGetAssetPropertyValueHistorySkippedEntry_completionStatus,++    -- * BatchGetAssetPropertyValueHistorySuccessEntry+    BatchGetAssetPropertyValueHistorySuccessEntry (..),+    newBatchGetAssetPropertyValueHistorySuccessEntry,+    batchGetAssetPropertyValueHistorySuccessEntry_entryId,+    batchGetAssetPropertyValueHistorySuccessEntry_assetPropertyValueHistory,++    -- * BatchGetAssetPropertyValueSkippedEntry+    BatchGetAssetPropertyValueSkippedEntry (..),+    newBatchGetAssetPropertyValueSkippedEntry,+    batchGetAssetPropertyValueSkippedEntry_errorInfo,+    batchGetAssetPropertyValueSkippedEntry_entryId,+    batchGetAssetPropertyValueSkippedEntry_completionStatus,++    -- * BatchGetAssetPropertyValueSuccessEntry+    BatchGetAssetPropertyValueSuccessEntry (..),+    newBatchGetAssetPropertyValueSuccessEntry,+    batchGetAssetPropertyValueSuccessEntry_assetPropertyValue,+    batchGetAssetPropertyValueSuccessEntry_entryId,++    -- * BatchPutAssetPropertyError+    BatchPutAssetPropertyError (..),+    newBatchPutAssetPropertyError,+    batchPutAssetPropertyError_errorCode,+    batchPutAssetPropertyError_errorMessage,+    batchPutAssetPropertyError_timestamps,++    -- * BatchPutAssetPropertyErrorEntry+    BatchPutAssetPropertyErrorEntry (..),+    newBatchPutAssetPropertyErrorEntry,+    batchPutAssetPropertyErrorEntry_entryId,+    batchPutAssetPropertyErrorEntry_errors,++    -- * CompositeModelProperty+    CompositeModelProperty (..),+    newCompositeModelProperty,+    compositeModelProperty_id,+    compositeModelProperty_name,+    compositeModelProperty_type,+    compositeModelProperty_assetProperty,++    -- * ConfigurationErrorDetails+    ConfigurationErrorDetails (..),+    newConfigurationErrorDetails,+    configurationErrorDetails_code,+    configurationErrorDetails_message,++    -- * ConfigurationStatus+    ConfigurationStatus (..),+    newConfigurationStatus,+    configurationStatus_error,+    configurationStatus_state,++    -- * Csv+    Csv (..),+    newCsv,+    csv_columnNames,++    -- * CustomerManagedS3Storage+    CustomerManagedS3Storage (..),+    newCustomerManagedS3Storage,+    customerManagedS3Storage_s3ResourceArn,+    customerManagedS3Storage_roleArn,++    -- * DashboardSummary+    DashboardSummary (..),+    newDashboardSummary,+    dashboardSummary_creationDate,+    dashboardSummary_description,+    dashboardSummary_lastUpdateDate,+    dashboardSummary_id,+    dashboardSummary_name,++    -- * DetailedError+    DetailedError (..),+    newDetailedError,+    detailedError_code,+    detailedError_message,++    -- * ErrorDetails+    ErrorDetails (..),+    newErrorDetails,+    errorDetails_details,+    errorDetails_code,+    errorDetails_message,++    -- * ErrorReportLocation+    ErrorReportLocation (..),+    newErrorReportLocation,+    errorReportLocation_bucket,+    errorReportLocation_prefix,++    -- * ExpressionVariable+    ExpressionVariable (..),+    newExpressionVariable,+    expressionVariable_name,+    expressionVariable_value,++    -- * File+    File (..),+    newFile,+    file_versionId,+    file_bucket,+    file_key,++    -- * FileFormat+    FileFormat (..),+    newFileFormat,+    fileFormat_csv,++    -- * ForwardingConfig+    ForwardingConfig (..),+    newForwardingConfig,+    forwardingConfig_state,++    -- * GatewayCapabilitySummary+    GatewayCapabilitySummary (..),+    newGatewayCapabilitySummary,+    gatewayCapabilitySummary_capabilityNamespace,+    gatewayCapabilitySummary_capabilitySyncStatus,++    -- * GatewayPlatform+    GatewayPlatform (..),+    newGatewayPlatform,+    gatewayPlatform_greengrass,+    gatewayPlatform_greengrassV2,++    -- * GatewaySummary+    GatewaySummary (..),+    newGatewaySummary,+    gatewaySummary_gatewayCapabilitySummaries,+    gatewaySummary_gatewayPlatform,+    gatewaySummary_gatewayId,+    gatewaySummary_gatewayName,+    gatewaySummary_creationDate,+    gatewaySummary_lastUpdateDate,++    -- * Greengrass+    Greengrass (..),+    newGreengrass,+    greengrass_groupArn,++    -- * GreengrassV2+    GreengrassV2 (..),+    newGreengrassV2,+    greengrassV2_coreDeviceThingName,++    -- * GroupIdentity+    GroupIdentity (..),+    newGroupIdentity,+    groupIdentity_id,++    -- * IAMRoleIdentity+    IAMRoleIdentity (..),+    newIAMRoleIdentity,+    iAMRoleIdentity_arn,++    -- * IAMUserIdentity+    IAMUserIdentity (..),+    newIAMUserIdentity,+    iAMUserIdentity_arn,++    -- * Identity+    Identity (..),+    newIdentity,+    identity_group,+    identity_iamRole,+    identity_iamUser,+    identity_user,++    -- * Image+    Image (..),+    newImage,+    image_file,+    image_id,++    -- * ImageFile+    ImageFile (..),+    newImageFile,+    imageFile_data,+    imageFile_type,++    -- * ImageLocation+    ImageLocation (..),+    newImageLocation,+    imageLocation_id,+    imageLocation_url,++    -- * InterpolatedAssetPropertyValue+    InterpolatedAssetPropertyValue (..),+    newInterpolatedAssetPropertyValue,+    interpolatedAssetPropertyValue_timestamp,+    interpolatedAssetPropertyValue_value,++    -- * JobConfiguration+    JobConfiguration (..),+    newJobConfiguration,+    jobConfiguration_fileFormat,++    -- * JobSummary+    JobSummary (..),+    newJobSummary,+    jobSummary_id,+    jobSummary_name,+    jobSummary_status,++    -- * LoggingOptions+    LoggingOptions (..),+    newLoggingOptions,+    loggingOptions_level,++    -- * Measurement+    Measurement (..),+    newMeasurement,+    measurement_processingConfig,++    -- * MeasurementProcessingConfig+    MeasurementProcessingConfig (..),+    newMeasurementProcessingConfig,+    measurementProcessingConfig_forwardingConfig,++    -- * Metric+    Metric (..),+    newMetric,+    metric_processingConfig,+    metric_expression,+    metric_variables,+    metric_window,++    -- * MetricProcessingConfig+    MetricProcessingConfig (..),+    newMetricProcessingConfig,+    metricProcessingConfig_computeLocation,++    -- * MetricWindow+    MetricWindow (..),+    newMetricWindow,+    metricWindow_tumbling,++    -- * MonitorErrorDetails+    MonitorErrorDetails (..),+    newMonitorErrorDetails,+    monitorErrorDetails_code,+    monitorErrorDetails_message,++    -- * MultiLayerStorage+    MultiLayerStorage (..),+    newMultiLayerStorage,+    multiLayerStorage_customerManagedS3Storage,++    -- * PortalResource+    PortalResource (..),+    newPortalResource,+    portalResource_id,++    -- * PortalStatus+    PortalStatus (..),+    newPortalStatus,+    portalStatus_error,+    portalStatus_state,++    -- * PortalSummary+    PortalSummary (..),+    newPortalSummary,+    portalSummary_creationDate,+    portalSummary_description,+    portalSummary_lastUpdateDate,+    portalSummary_roleArn,+    portalSummary_id,+    portalSummary_name,+    portalSummary_startUrl,+    portalSummary_status,++    -- * ProjectResource+    ProjectResource (..),+    newProjectResource,+    projectResource_id,++    -- * ProjectSummary+    ProjectSummary (..),+    newProjectSummary,+    projectSummary_creationDate,+    projectSummary_description,+    projectSummary_lastUpdateDate,+    projectSummary_id,+    projectSummary_name,++    -- * Property+    Property (..),+    newProperty,+    property_alias,+    property_notification,+    property_type,+    property_unit,+    property_id,+    property_name,+    property_dataType,++    -- * PropertyNotification+    PropertyNotification (..),+    newPropertyNotification,+    propertyNotification_topic,+    propertyNotification_state,++    -- * PropertyType+    PropertyType (..),+    newPropertyType,+    propertyType_attribute,+    propertyType_measurement,+    propertyType_metric,+    propertyType_transform,++    -- * PutAssetPropertyValueEntry+    PutAssetPropertyValueEntry (..),+    newPutAssetPropertyValueEntry,+    putAssetPropertyValueEntry_assetId,+    putAssetPropertyValueEntry_propertyAlias,+    putAssetPropertyValueEntry_propertyId,+    putAssetPropertyValueEntry_entryId,+    putAssetPropertyValueEntry_propertyValues,++    -- * Resource+    Resource (..),+    newResource,+    resource_portal,+    resource_project,++    -- * RetentionPeriod+    RetentionPeriod (..),+    newRetentionPeriod,+    retentionPeriod_numberOfDays,+    retentionPeriod_unlimited,++    -- * TimeInNanos+    TimeInNanos (..),+    newTimeInNanos,+    timeInNanos_offsetInNanos,+    timeInNanos_timeInSeconds,++    -- * TimeSeriesSummary+    TimeSeriesSummary (..),+    newTimeSeriesSummary,+    timeSeriesSummary_alias,+    timeSeriesSummary_assetId,+    timeSeriesSummary_dataTypeSpec,+    timeSeriesSummary_propertyId,+    timeSeriesSummary_timeSeriesId,+    timeSeriesSummary_dataType,+    timeSeriesSummary_timeSeriesCreationDate,+    timeSeriesSummary_timeSeriesLastUpdateDate,++    -- * Transform+    Transform (..),+    newTransform,+    transform_processingConfig,+    transform_expression,+    transform_variables,++    -- * TransformProcessingConfig+    TransformProcessingConfig (..),+    newTransformProcessingConfig,+    transformProcessingConfig_forwardingConfig,+    transformProcessingConfig_computeLocation,++    -- * TumblingWindow+    TumblingWindow (..),+    newTumblingWindow,+    tumblingWindow_offset,+    tumblingWindow_interval,++    -- * UserIdentity+    UserIdentity (..),+    newUserIdentity,+    userIdentity_id,++    -- * VariableValue+    VariableValue (..),+    newVariableValue,+    variableValue_hierarchyId,+    variableValue_propertyId,++    -- * Variant+    Variant (..),+    newVariant,+    variant_booleanValue,+    variant_doubleValue,+    variant_integerValue,+    variant_stringValue,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.IoTSiteWise.Types.AccessPolicySummary+import Amazonka.IoTSiteWise.Types.AggregateType+import Amazonka.IoTSiteWise.Types.AggregatedValue+import Amazonka.IoTSiteWise.Types.Aggregates+import Amazonka.IoTSiteWise.Types.Alarms+import Amazonka.IoTSiteWise.Types.AssetCompositeModel+import Amazonka.IoTSiteWise.Types.AssetErrorCode+import Amazonka.IoTSiteWise.Types.AssetErrorDetails+import Amazonka.IoTSiteWise.Types.AssetHierarchy+import Amazonka.IoTSiteWise.Types.AssetHierarchyInfo+import Amazonka.IoTSiteWise.Types.AssetModelCompositeModel+import Amazonka.IoTSiteWise.Types.AssetModelCompositeModelDefinition+import Amazonka.IoTSiteWise.Types.AssetModelHierarchy+import Amazonka.IoTSiteWise.Types.AssetModelHierarchyDefinition+import Amazonka.IoTSiteWise.Types.AssetModelProperty+import Amazonka.IoTSiteWise.Types.AssetModelPropertyDefinition+import Amazonka.IoTSiteWise.Types.AssetModelPropertySummary+import Amazonka.IoTSiteWise.Types.AssetModelState+import Amazonka.IoTSiteWise.Types.AssetModelStatus+import Amazonka.IoTSiteWise.Types.AssetModelSummary+import Amazonka.IoTSiteWise.Types.AssetProperty+import Amazonka.IoTSiteWise.Types.AssetPropertySummary+import Amazonka.IoTSiteWise.Types.AssetPropertyValue+import Amazonka.IoTSiteWise.Types.AssetRelationshipSummary+import Amazonka.IoTSiteWise.Types.AssetRelationshipType+import Amazonka.IoTSiteWise.Types.AssetState+import Amazonka.IoTSiteWise.Types.AssetStatus+import Amazonka.IoTSiteWise.Types.AssetSummary+import Amazonka.IoTSiteWise.Types.AssociatedAssetsSummary+import Amazonka.IoTSiteWise.Types.Attribute+import Amazonka.IoTSiteWise.Types.AuthMode+import Amazonka.IoTSiteWise.Types.BatchEntryCompletionStatus+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorCode+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorInfo+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesSkippedEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesSuccessEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorCode+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorInfo+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorCode+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorInfo+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistorySkippedEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistorySuccessEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueSkippedEntry+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueSuccessEntry+import Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyError+import Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyErrorEntry+import Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyValueErrorCode+import Amazonka.IoTSiteWise.Types.CapabilitySyncStatus+import Amazonka.IoTSiteWise.Types.ColumnName+import Amazonka.IoTSiteWise.Types.CompositeModelProperty+import Amazonka.IoTSiteWise.Types.ComputeLocation+import Amazonka.IoTSiteWise.Types.ConfigurationErrorDetails+import Amazonka.IoTSiteWise.Types.ConfigurationState+import Amazonka.IoTSiteWise.Types.ConfigurationStatus+import Amazonka.IoTSiteWise.Types.Csv+import Amazonka.IoTSiteWise.Types.CustomerManagedS3Storage+import Amazonka.IoTSiteWise.Types.DashboardSummary+import Amazonka.IoTSiteWise.Types.DetailedError+import Amazonka.IoTSiteWise.Types.DetailedErrorCode+import Amazonka.IoTSiteWise.Types.DisassociatedDataStorageState+import Amazonka.IoTSiteWise.Types.EncryptionType+import Amazonka.IoTSiteWise.Types.ErrorCode+import Amazonka.IoTSiteWise.Types.ErrorDetails+import Amazonka.IoTSiteWise.Types.ErrorReportLocation+import Amazonka.IoTSiteWise.Types.ExpressionVariable+import Amazonka.IoTSiteWise.Types.File+import Amazonka.IoTSiteWise.Types.FileFormat+import Amazonka.IoTSiteWise.Types.ForwardingConfig+import Amazonka.IoTSiteWise.Types.ForwardingConfigState+import Amazonka.IoTSiteWise.Types.GatewayCapabilitySummary+import Amazonka.IoTSiteWise.Types.GatewayPlatform+import Amazonka.IoTSiteWise.Types.GatewaySummary+import Amazonka.IoTSiteWise.Types.Greengrass+import Amazonka.IoTSiteWise.Types.GreengrassV2+import Amazonka.IoTSiteWise.Types.GroupIdentity+import Amazonka.IoTSiteWise.Types.IAMRoleIdentity+import Amazonka.IoTSiteWise.Types.IAMUserIdentity+import Amazonka.IoTSiteWise.Types.Identity+import Amazonka.IoTSiteWise.Types.IdentityType+import Amazonka.IoTSiteWise.Types.Image+import Amazonka.IoTSiteWise.Types.ImageFile+import Amazonka.IoTSiteWise.Types.ImageFileType+import Amazonka.IoTSiteWise.Types.ImageLocation+import Amazonka.IoTSiteWise.Types.InterpolatedAssetPropertyValue+import Amazonka.IoTSiteWise.Types.JobConfiguration+import Amazonka.IoTSiteWise.Types.JobStatus+import Amazonka.IoTSiteWise.Types.JobSummary+import Amazonka.IoTSiteWise.Types.ListAssetModelPropertiesFilter+import Amazonka.IoTSiteWise.Types.ListAssetPropertiesFilter+import Amazonka.IoTSiteWise.Types.ListAssetsFilter+import Amazonka.IoTSiteWise.Types.ListBulkImportJobsFilter+import Amazonka.IoTSiteWise.Types.ListTimeSeriesType+import Amazonka.IoTSiteWise.Types.LoggingLevel+import Amazonka.IoTSiteWise.Types.LoggingOptions+import Amazonka.IoTSiteWise.Types.Measurement+import Amazonka.IoTSiteWise.Types.MeasurementProcessingConfig+import Amazonka.IoTSiteWise.Types.Metric+import Amazonka.IoTSiteWise.Types.MetricProcessingConfig+import Amazonka.IoTSiteWise.Types.MetricWindow+import Amazonka.IoTSiteWise.Types.MonitorErrorCode+import Amazonka.IoTSiteWise.Types.MonitorErrorDetails+import Amazonka.IoTSiteWise.Types.MultiLayerStorage+import Amazonka.IoTSiteWise.Types.Permission+import Amazonka.IoTSiteWise.Types.PortalResource+import Amazonka.IoTSiteWise.Types.PortalState+import Amazonka.IoTSiteWise.Types.PortalStatus+import Amazonka.IoTSiteWise.Types.PortalSummary+import Amazonka.IoTSiteWise.Types.ProjectResource+import Amazonka.IoTSiteWise.Types.ProjectSummary+import Amazonka.IoTSiteWise.Types.Property+import Amazonka.IoTSiteWise.Types.PropertyDataType+import Amazonka.IoTSiteWise.Types.PropertyNotification+import Amazonka.IoTSiteWise.Types.PropertyNotificationState+import Amazonka.IoTSiteWise.Types.PropertyType+import Amazonka.IoTSiteWise.Types.PutAssetPropertyValueEntry+import Amazonka.IoTSiteWise.Types.Quality+import Amazonka.IoTSiteWise.Types.Resource+import Amazonka.IoTSiteWise.Types.ResourceType+import Amazonka.IoTSiteWise.Types.RetentionPeriod+import Amazonka.IoTSiteWise.Types.StorageType+import Amazonka.IoTSiteWise.Types.TimeInNanos+import Amazonka.IoTSiteWise.Types.TimeOrdering+import Amazonka.IoTSiteWise.Types.TimeSeriesSummary+import Amazonka.IoTSiteWise.Types.Transform+import Amazonka.IoTSiteWise.Types.TransformProcessingConfig+import Amazonka.IoTSiteWise.Types.TraversalDirection+import Amazonka.IoTSiteWise.Types.TraversalType+import Amazonka.IoTSiteWise.Types.TumblingWindow+import Amazonka.IoTSiteWise.Types.UserIdentity+import Amazonka.IoTSiteWise.Types.VariableValue+import Amazonka.IoTSiteWise.Types.Variant+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2019-12-02@ of the Amazon IoT SiteWise SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "IoTSiteWise",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "iotsitewise",+      Core.signingName = "iotsitewise",+      Core.version = "2019-12-02",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "IoTSiteWise",+      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++-- | Your request has conflicting operations. This can occur if you\'re+-- trying to perform more than one operation on the same resource at the+-- same time.+_ConflictingOperationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictingOperationException =+  Core._MatchServiceError+    defaultService+    "ConflictingOperationException"+    Prelude.. Core.hasStatus 409++-- | IoT SiteWise can\'t process your request right now. Try again later.+_InternalFailureException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalFailureException =+  Core._MatchServiceError+    defaultService+    "InternalFailureException"+    Prelude.. Core.hasStatus 500++-- | The request isn\'t valid. This can occur if your request contains+-- malformed JSON or unsupported characters. Check your request and try+-- again.+_InvalidRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidRequestException =+  Core._MatchServiceError+    defaultService+    "InvalidRequestException"+    Prelude.. Core.hasStatus 400++-- | You\'ve reached the limit for a resource. For example, this can occur if+-- you\'re trying to associate more than the allowed number of child assets+-- or attempting to create more than the allowed number of properties for+-- an asset model.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_LimitExceededException =+  Core._MatchServiceError+    defaultService+    "LimitExceededException"+    Prelude.. Core.hasStatus 410++-- | The resource already exists.+_ResourceAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceAlreadyExistsException =+  Core._MatchServiceError+    defaultService+    "ResourceAlreadyExistsException"+    Prelude.. Core.hasStatus 409++-- | The requested resource can\'t be found.+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"+    Prelude.. Core.hasStatus 404++-- | The requested service is unavailable.+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceUnavailableException =+  Core._MatchServiceError+    defaultService+    "ServiceUnavailableException"+    Prelude.. Core.hasStatus 503++-- | Your request exceeded a rate limit. For example, you might have exceeded+-- the number of IoT SiteWise assets that can be created per second, the+-- allowed number of messages per second, and so on.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottlingException =+  Core._MatchServiceError+    defaultService+    "ThrottlingException"+    Prelude.. Core.hasStatus 429++-- | You\'ve reached the limit for the number of tags allowed for a resource.+-- For more information, see+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html#tag-conventions Tag naming limits and requirements>+-- in the /Amazon Web Services General Reference/.+_TooManyTagsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TooManyTagsException =+  Core._MatchServiceError+    defaultService+    "TooManyTagsException"+    Prelude.. Core.hasStatus 400++-- | You are not authorized.+_UnauthorizedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_UnauthorizedException =+  Core._MatchServiceError+    defaultService+    "UnauthorizedException"+    Prelude.. Core.hasStatus 401
+ gen/Amazonka/IoTSiteWise/Types/AccessPolicySummary.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.IoTSiteWise.Types.AccessPolicySummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AccessPolicySummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.Identity+import Amazonka.IoTSiteWise.Types.Permission+import Amazonka.IoTSiteWise.Types.Resource+import qualified Amazonka.Prelude as Prelude++-- | Contains an access policy that defines an identity\'s access to an IoT+-- SiteWise Monitor resource.+--+-- /See:/ 'newAccessPolicySummary' smart constructor.+data AccessPolicySummary = AccessPolicySummary'+  { -- | The date the access policy was created, in Unix epoch time.+    creationDate :: Prelude.Maybe Data.POSIX,+    -- | The date the access policy was last updated, in Unix epoch time.+    lastUpdateDate :: Prelude.Maybe Data.POSIX,+    -- | The ID of the access policy.+    id :: Prelude.Text,+    -- | The identity (an IAM Identity Center user, an IAM Identity Center group,+    -- or an IAM user).+    identity :: Identity,+    -- | The IoT SiteWise Monitor resource (a portal or project).+    resource :: Resource,+    -- | The permissions for the access policy. Note that a project+    -- @ADMINISTRATOR@ is also known as a project owner.+    permission :: Permission+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AccessPolicySummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'creationDate', 'accessPolicySummary_creationDate' - The date the access policy was created, in Unix epoch time.+--+-- 'lastUpdateDate', 'accessPolicySummary_lastUpdateDate' - The date the access policy was last updated, in Unix epoch time.+--+-- 'id', 'accessPolicySummary_id' - The ID of the access policy.+--+-- 'identity', 'accessPolicySummary_identity' - The identity (an IAM Identity Center user, an IAM Identity Center group,+-- or an IAM user).+--+-- 'resource', 'accessPolicySummary_resource' - The IoT SiteWise Monitor resource (a portal or project).+--+-- 'permission', 'accessPolicySummary_permission' - The permissions for the access policy. Note that a project+-- @ADMINISTRATOR@ is also known as a project owner.+newAccessPolicySummary ::+  -- | 'id'+  Prelude.Text ->+  -- | 'identity'+  Identity ->+  -- | 'resource'+  Resource ->+  -- | 'permission'+  Permission ->+  AccessPolicySummary+newAccessPolicySummary+  pId_+  pIdentity_+  pResource_+  pPermission_ =+    AccessPolicySummary'+      { creationDate =+          Prelude.Nothing,+        lastUpdateDate = Prelude.Nothing,+        id = pId_,+        identity = pIdentity_,+        resource = pResource_,+        permission = pPermission_+      }++-- | The date the access policy was created, in Unix epoch time.+accessPolicySummary_creationDate :: Lens.Lens' AccessPolicySummary (Prelude.Maybe Prelude.UTCTime)+accessPolicySummary_creationDate = Lens.lens (\AccessPolicySummary' {creationDate} -> creationDate) (\s@AccessPolicySummary' {} a -> s {creationDate = a} :: AccessPolicySummary) Prelude.. Lens.mapping Data._Time++-- | The date the access policy was last updated, in Unix epoch time.+accessPolicySummary_lastUpdateDate :: Lens.Lens' AccessPolicySummary (Prelude.Maybe Prelude.UTCTime)+accessPolicySummary_lastUpdateDate = Lens.lens (\AccessPolicySummary' {lastUpdateDate} -> lastUpdateDate) (\s@AccessPolicySummary' {} a -> s {lastUpdateDate = a} :: AccessPolicySummary) Prelude.. Lens.mapping Data._Time++-- | The ID of the access policy.+accessPolicySummary_id :: Lens.Lens' AccessPolicySummary Prelude.Text+accessPolicySummary_id = Lens.lens (\AccessPolicySummary' {id} -> id) (\s@AccessPolicySummary' {} a -> s {id = a} :: AccessPolicySummary)++-- | The identity (an IAM Identity Center user, an IAM Identity Center group,+-- or an IAM user).+accessPolicySummary_identity :: Lens.Lens' AccessPolicySummary Identity+accessPolicySummary_identity = Lens.lens (\AccessPolicySummary' {identity} -> identity) (\s@AccessPolicySummary' {} a -> s {identity = a} :: AccessPolicySummary)++-- | The IoT SiteWise Monitor resource (a portal or project).+accessPolicySummary_resource :: Lens.Lens' AccessPolicySummary Resource+accessPolicySummary_resource = Lens.lens (\AccessPolicySummary' {resource} -> resource) (\s@AccessPolicySummary' {} a -> s {resource = a} :: AccessPolicySummary)++-- | The permissions for the access policy. Note that a project+-- @ADMINISTRATOR@ is also known as a project owner.+accessPolicySummary_permission :: Lens.Lens' AccessPolicySummary Permission+accessPolicySummary_permission = Lens.lens (\AccessPolicySummary' {permission} -> permission) (\s@AccessPolicySummary' {} a -> s {permission = a} :: AccessPolicySummary)++instance Data.FromJSON AccessPolicySummary where+  parseJSON =+    Data.withObject+      "AccessPolicySummary"+      ( \x ->+          AccessPolicySummary'+            Prelude.<$> (x Data..:? "creationDate")+            Prelude.<*> (x Data..:? "lastUpdateDate")+            Prelude.<*> (x Data..: "id")+            Prelude.<*> (x Data..: "identity")+            Prelude.<*> (x Data..: "resource")+            Prelude.<*> (x Data..: "permission")+      )++instance Prelude.Hashable AccessPolicySummary where+  hashWithSalt _salt AccessPolicySummary' {..} =+    _salt+      `Prelude.hashWithSalt` creationDate+      `Prelude.hashWithSalt` lastUpdateDate+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` identity+      `Prelude.hashWithSalt` resource+      `Prelude.hashWithSalt` permission++instance Prelude.NFData AccessPolicySummary where+  rnf AccessPolicySummary' {..} =+    Prelude.rnf creationDate+      `Prelude.seq` Prelude.rnf lastUpdateDate+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf identity+      `Prelude.seq` Prelude.rnf resource+      `Prelude.seq` Prelude.rnf permission
+ gen/Amazonka/IoTSiteWise/Types/AggregateType.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.IoTSiteWise.Types.AggregateType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AggregateType+  ( AggregateType+      ( ..,+        AggregateType_AVERAGE,+        AggregateType_COUNT,+        AggregateType_MAXIMUM,+        AggregateType_MINIMUM,+        AggregateType_STANDARD_DEVIATION,+        AggregateType_SUM+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AggregateType = AggregateType'+  { fromAggregateType ::+      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 AggregateType_AVERAGE :: AggregateType+pattern AggregateType_AVERAGE = AggregateType' "AVERAGE"++pattern AggregateType_COUNT :: AggregateType+pattern AggregateType_COUNT = AggregateType' "COUNT"++pattern AggregateType_MAXIMUM :: AggregateType+pattern AggregateType_MAXIMUM = AggregateType' "MAXIMUM"++pattern AggregateType_MINIMUM :: AggregateType+pattern AggregateType_MINIMUM = AggregateType' "MINIMUM"++pattern AggregateType_STANDARD_DEVIATION :: AggregateType+pattern AggregateType_STANDARD_DEVIATION = AggregateType' "STANDARD_DEVIATION"++pattern AggregateType_SUM :: AggregateType+pattern AggregateType_SUM = AggregateType' "SUM"++{-# COMPLETE+  AggregateType_AVERAGE,+  AggregateType_COUNT,+  AggregateType_MAXIMUM,+  AggregateType_MINIMUM,+  AggregateType_STANDARD_DEVIATION,+  AggregateType_SUM,+  AggregateType'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/AggregatedValue.hs view
@@ -0,0 +1,103 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AggregatedValue+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AggregatedValue where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.Aggregates+import Amazonka.IoTSiteWise.Types.Quality+import qualified Amazonka.Prelude as Prelude++-- | Contains aggregated asset property values (for example, average,+-- minimum, and maximum).+--+-- /See:/ 'newAggregatedValue' smart constructor.+data AggregatedValue = AggregatedValue'+  { -- | The quality of the aggregated data.+    quality :: Prelude.Maybe Quality,+    -- | The date the aggregating computations occurred, in Unix epoch time.+    timestamp :: Data.POSIX,+    -- | The value of the aggregates.+    value :: Aggregates+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AggregatedValue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'quality', 'aggregatedValue_quality' - The quality of the aggregated data.+--+-- 'timestamp', 'aggregatedValue_timestamp' - The date the aggregating computations occurred, in Unix epoch time.+--+-- 'value', 'aggregatedValue_value' - The value of the aggregates.+newAggregatedValue ::+  -- | 'timestamp'+  Prelude.UTCTime ->+  -- | 'value'+  Aggregates ->+  AggregatedValue+newAggregatedValue pTimestamp_ pValue_ =+  AggregatedValue'+    { quality = Prelude.Nothing,+      timestamp = Data._Time Lens.# pTimestamp_,+      value = pValue_+    }++-- | The quality of the aggregated data.+aggregatedValue_quality :: Lens.Lens' AggregatedValue (Prelude.Maybe Quality)+aggregatedValue_quality = Lens.lens (\AggregatedValue' {quality} -> quality) (\s@AggregatedValue' {} a -> s {quality = a} :: AggregatedValue)++-- | The date the aggregating computations occurred, in Unix epoch time.+aggregatedValue_timestamp :: Lens.Lens' AggregatedValue Prelude.UTCTime+aggregatedValue_timestamp = Lens.lens (\AggregatedValue' {timestamp} -> timestamp) (\s@AggregatedValue' {} a -> s {timestamp = a} :: AggregatedValue) Prelude.. Data._Time++-- | The value of the aggregates.+aggregatedValue_value :: Lens.Lens' AggregatedValue Aggregates+aggregatedValue_value = Lens.lens (\AggregatedValue' {value} -> value) (\s@AggregatedValue' {} a -> s {value = a} :: AggregatedValue)++instance Data.FromJSON AggregatedValue where+  parseJSON =+    Data.withObject+      "AggregatedValue"+      ( \x ->+          AggregatedValue'+            Prelude.<$> (x Data..:? "quality")+            Prelude.<*> (x Data..: "timestamp")+            Prelude.<*> (x Data..: "value")+      )++instance Prelude.Hashable AggregatedValue where+  hashWithSalt _salt AggregatedValue' {..} =+    _salt+      `Prelude.hashWithSalt` quality+      `Prelude.hashWithSalt` timestamp+      `Prelude.hashWithSalt` value++instance Prelude.NFData AggregatedValue where+  rnf AggregatedValue' {..} =+    Prelude.rnf quality+      `Prelude.seq` Prelude.rnf timestamp+      `Prelude.seq` Prelude.rnf value
+ gen/Amazonka/IoTSiteWise/Types/Aggregates.hs view
@@ -0,0 +1,132 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.Aggregates+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Aggregates 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 (pre-calculated) aggregate values for an asset property.+--+-- /See:/ 'newAggregates' smart constructor.+data Aggregates = Aggregates'+  { -- | The average (mean) value of the time series over a time interval window.+    average :: Prelude.Maybe Prelude.Double,+    -- | The count of data points in the time series over a time interval window.+    count :: Prelude.Maybe Prelude.Double,+    -- | The maximum value of the time series over a time interval window.+    maximum :: Prelude.Maybe Prelude.Double,+    -- | The minimum value of the time series over a time interval window.+    minimum :: Prelude.Maybe Prelude.Double,+    -- | The standard deviation of the time series over a time interval window.+    standardDeviation :: Prelude.Maybe Prelude.Double,+    -- | The sum of the time series over a time interval window.+    sum :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Aggregates' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'average', 'aggregates_average' - The average (mean) value of the time series over a time interval window.+--+-- 'count', 'aggregates_count' - The count of data points in the time series over a time interval window.+--+-- 'maximum', 'aggregates_maximum' - The maximum value of the time series over a time interval window.+--+-- 'minimum', 'aggregates_minimum' - The minimum value of the time series over a time interval window.+--+-- 'standardDeviation', 'aggregates_standardDeviation' - The standard deviation of the time series over a time interval window.+--+-- 'sum', 'aggregates_sum' - The sum of the time series over a time interval window.+newAggregates ::+  Aggregates+newAggregates =+  Aggregates'+    { average = Prelude.Nothing,+      count = Prelude.Nothing,+      maximum = Prelude.Nothing,+      minimum = Prelude.Nothing,+      standardDeviation = Prelude.Nothing,+      sum = Prelude.Nothing+    }++-- | The average (mean) value of the time series over a time interval window.+aggregates_average :: Lens.Lens' Aggregates (Prelude.Maybe Prelude.Double)+aggregates_average = Lens.lens (\Aggregates' {average} -> average) (\s@Aggregates' {} a -> s {average = a} :: Aggregates)++-- | The count of data points in the time series over a time interval window.+aggregates_count :: Lens.Lens' Aggregates (Prelude.Maybe Prelude.Double)+aggregates_count = Lens.lens (\Aggregates' {count} -> count) (\s@Aggregates' {} a -> s {count = a} :: Aggregates)++-- | The maximum value of the time series over a time interval window.+aggregates_maximum :: Lens.Lens' Aggregates (Prelude.Maybe Prelude.Double)+aggregates_maximum = Lens.lens (\Aggregates' {maximum} -> maximum) (\s@Aggregates' {} a -> s {maximum = a} :: Aggregates)++-- | The minimum value of the time series over a time interval window.+aggregates_minimum :: Lens.Lens' Aggregates (Prelude.Maybe Prelude.Double)+aggregates_minimum = Lens.lens (\Aggregates' {minimum} -> minimum) (\s@Aggregates' {} a -> s {minimum = a} :: Aggregates)++-- | The standard deviation of the time series over a time interval window.+aggregates_standardDeviation :: Lens.Lens' Aggregates (Prelude.Maybe Prelude.Double)+aggregates_standardDeviation = Lens.lens (\Aggregates' {standardDeviation} -> standardDeviation) (\s@Aggregates' {} a -> s {standardDeviation = a} :: Aggregates)++-- | The sum of the time series over a time interval window.+aggregates_sum :: Lens.Lens' Aggregates (Prelude.Maybe Prelude.Double)+aggregates_sum = Lens.lens (\Aggregates' {sum} -> sum) (\s@Aggregates' {} a -> s {sum = a} :: Aggregates)++instance Data.FromJSON Aggregates where+  parseJSON =+    Data.withObject+      "Aggregates"+      ( \x ->+          Aggregates'+            Prelude.<$> (x Data..:? "average")+            Prelude.<*> (x Data..:? "count")+            Prelude.<*> (x Data..:? "maximum")+            Prelude.<*> (x Data..:? "minimum")+            Prelude.<*> (x Data..:? "standardDeviation")+            Prelude.<*> (x Data..:? "sum")+      )++instance Prelude.Hashable Aggregates where+  hashWithSalt _salt Aggregates' {..} =+    _salt+      `Prelude.hashWithSalt` average+      `Prelude.hashWithSalt` count+      `Prelude.hashWithSalt` maximum+      `Prelude.hashWithSalt` minimum+      `Prelude.hashWithSalt` standardDeviation+      `Prelude.hashWithSalt` sum++instance Prelude.NFData Aggregates where+  rnf Aggregates' {..} =+    Prelude.rnf average+      `Prelude.seq` Prelude.rnf count+      `Prelude.seq` Prelude.rnf maximum+      `Prelude.seq` Prelude.rnf minimum+      `Prelude.seq` Prelude.rnf standardDeviation+      `Prelude.seq` Prelude.rnf sum
+ gen/Amazonka/IoTSiteWise/Types/Alarms.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.IoTSiteWise.Types.Alarms+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Alarms 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 configuration information of an alarm created in an IoT+-- SiteWise Monitor portal. You can use the alarm to monitor an asset+-- property and get notified when the asset property value is outside a+-- specified range. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html Monitoring with alarms>+-- in the /IoT SiteWise Application Guide/.+--+-- /See:/ 'newAlarms' smart constructor.+data Alarms = Alarms'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the Lambda function that manages alarm notifications. For more+    -- information, see+    -- <https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html Managing alarm notifications>+    -- in the /IoT Events Developer Guide/.+    notificationLambdaArn :: Prelude.Maybe Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the IAM role that allows the alarm to perform actions and access+    -- Amazon Web Services resources and services, such as IoT Events.+    alarmRoleArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Alarms' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'notificationLambdaArn', 'alarms_notificationLambdaArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the Lambda function that manages alarm notifications. For more+-- information, see+-- <https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html Managing alarm notifications>+-- in the /IoT Events Developer Guide/.+--+-- 'alarmRoleArn', 'alarms_alarmRoleArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IAM role that allows the alarm to perform actions and access+-- Amazon Web Services resources and services, such as IoT Events.+newAlarms ::+  -- | 'alarmRoleArn'+  Prelude.Text ->+  Alarms+newAlarms pAlarmRoleArn_ =+  Alarms'+    { notificationLambdaArn = Prelude.Nothing,+      alarmRoleArn = pAlarmRoleArn_+    }++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the Lambda function that manages alarm notifications. For more+-- information, see+-- <https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html Managing alarm notifications>+-- in the /IoT Events Developer Guide/.+alarms_notificationLambdaArn :: Lens.Lens' Alarms (Prelude.Maybe Prelude.Text)+alarms_notificationLambdaArn = Lens.lens (\Alarms' {notificationLambdaArn} -> notificationLambdaArn) (\s@Alarms' {} a -> s {notificationLambdaArn = a} :: Alarms)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IAM role that allows the alarm to perform actions and access+-- Amazon Web Services resources and services, such as IoT Events.+alarms_alarmRoleArn :: Lens.Lens' Alarms Prelude.Text+alarms_alarmRoleArn = Lens.lens (\Alarms' {alarmRoleArn} -> alarmRoleArn) (\s@Alarms' {} a -> s {alarmRoleArn = a} :: Alarms)++instance Data.FromJSON Alarms where+  parseJSON =+    Data.withObject+      "Alarms"+      ( \x ->+          Alarms'+            Prelude.<$> (x Data..:? "notificationLambdaArn")+            Prelude.<*> (x Data..: "alarmRoleArn")+      )++instance Prelude.Hashable Alarms where+  hashWithSalt _salt Alarms' {..} =+    _salt+      `Prelude.hashWithSalt` notificationLambdaArn+      `Prelude.hashWithSalt` alarmRoleArn++instance Prelude.NFData Alarms where+  rnf Alarms' {..} =+    Prelude.rnf notificationLambdaArn+      `Prelude.seq` Prelude.rnf alarmRoleArn++instance Data.ToJSON Alarms where+  toJSON Alarms' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("notificationLambdaArn" Data..=)+              Prelude.<$> notificationLambdaArn,+            Prelude.Just ("alarmRoleArn" Data..= alarmRoleArn)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/AssetCompositeModel.hs view
@@ -0,0 +1,129 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetCompositeModel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetCompositeModel where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetProperty+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a composite model in an asset. This object+-- contains the asset\'s properties that you define in the composite model.+--+-- /See:/ 'newAssetCompositeModel' smart constructor.+data AssetCompositeModel = AssetCompositeModel'+  { -- | The description of the composite model.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset composite model.+    id :: Prelude.Maybe Prelude.Text,+    -- | The name of the composite model.+    name :: Prelude.Text,+    -- | The type of the composite model. For alarm composite models, this type+    -- is @AWS\/ALARM@.+    type' :: Prelude.Text,+    -- | The asset properties that this composite model defines.+    properties :: [AssetProperty]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetCompositeModel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'assetCompositeModel_description' - The description of the composite model.+--+-- 'id', 'assetCompositeModel_id' - The ID of the asset composite model.+--+-- 'name', 'assetCompositeModel_name' - The name of the composite model.+--+-- 'type'', 'assetCompositeModel_type' - The type of the composite model. For alarm composite models, this type+-- is @AWS\/ALARM@.+--+-- 'properties', 'assetCompositeModel_properties' - The asset properties that this composite model defines.+newAssetCompositeModel ::+  -- | 'name'+  Prelude.Text ->+  -- | 'type''+  Prelude.Text ->+  AssetCompositeModel+newAssetCompositeModel pName_ pType_ =+  AssetCompositeModel'+    { description = Prelude.Nothing,+      id = Prelude.Nothing,+      name = pName_,+      type' = pType_,+      properties = Prelude.mempty+    }++-- | The description of the composite model.+assetCompositeModel_description :: Lens.Lens' AssetCompositeModel (Prelude.Maybe Prelude.Text)+assetCompositeModel_description = Lens.lens (\AssetCompositeModel' {description} -> description) (\s@AssetCompositeModel' {} a -> s {description = a} :: AssetCompositeModel)++-- | The ID of the asset composite model.+assetCompositeModel_id :: Lens.Lens' AssetCompositeModel (Prelude.Maybe Prelude.Text)+assetCompositeModel_id = Lens.lens (\AssetCompositeModel' {id} -> id) (\s@AssetCompositeModel' {} a -> s {id = a} :: AssetCompositeModel)++-- | The name of the composite model.+assetCompositeModel_name :: Lens.Lens' AssetCompositeModel Prelude.Text+assetCompositeModel_name = Lens.lens (\AssetCompositeModel' {name} -> name) (\s@AssetCompositeModel' {} a -> s {name = a} :: AssetCompositeModel)++-- | The type of the composite model. For alarm composite models, this type+-- is @AWS\/ALARM@.+assetCompositeModel_type :: Lens.Lens' AssetCompositeModel Prelude.Text+assetCompositeModel_type = Lens.lens (\AssetCompositeModel' {type'} -> type') (\s@AssetCompositeModel' {} a -> s {type' = a} :: AssetCompositeModel)++-- | The asset properties that this composite model defines.+assetCompositeModel_properties :: Lens.Lens' AssetCompositeModel [AssetProperty]+assetCompositeModel_properties = Lens.lens (\AssetCompositeModel' {properties} -> properties) (\s@AssetCompositeModel' {} a -> s {properties = a} :: AssetCompositeModel) Prelude.. Lens.coerced++instance Data.FromJSON AssetCompositeModel where+  parseJSON =+    Data.withObject+      "AssetCompositeModel"+      ( \x ->+          AssetCompositeModel'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "type")+            Prelude.<*> (x Data..:? "properties" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable AssetCompositeModel where+  hashWithSalt _salt AssetCompositeModel' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` properties++instance Prelude.NFData AssetCompositeModel where+  rnf AssetCompositeModel' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf properties
+ gen/Amazonka/IoTSiteWise/Types/AssetErrorCode.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetErrorCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetErrorCode+  ( AssetErrorCode+      ( ..,+        AssetErrorCode_INTERNAL_FAILURE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AssetErrorCode = AssetErrorCode'+  { fromAssetErrorCode ::+      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 AssetErrorCode_INTERNAL_FAILURE :: AssetErrorCode+pattern AssetErrorCode_INTERNAL_FAILURE = AssetErrorCode' "INTERNAL_FAILURE"++{-# COMPLETE+  AssetErrorCode_INTERNAL_FAILURE,+  AssetErrorCode'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/AssetErrorDetails.hs view
@@ -0,0 +1,103 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetErrorDetails+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetErrorDetails where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetErrorCode+import qualified Amazonka.Prelude as Prelude++-- | Contains error details for the requested associate project asset action.+--+-- /See:/ 'newAssetErrorDetails' smart constructor.+data AssetErrorDetails = AssetErrorDetails'+  { -- | The ID of the asset.+    assetId :: Prelude.Text,+    -- | The error code.+    code :: AssetErrorCode,+    -- | The error message.+    message :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetErrorDetails' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetId', 'assetErrorDetails_assetId' - The ID of the asset.+--+-- 'code', 'assetErrorDetails_code' - The error code.+--+-- 'message', 'assetErrorDetails_message' - The error message.+newAssetErrorDetails ::+  -- | 'assetId'+  Prelude.Text ->+  -- | 'code'+  AssetErrorCode ->+  -- | 'message'+  Prelude.Text ->+  AssetErrorDetails+newAssetErrorDetails pAssetId_ pCode_ pMessage_ =+  AssetErrorDetails'+    { assetId = pAssetId_,+      code = pCode_,+      message = pMessage_+    }++-- | The ID of the asset.+assetErrorDetails_assetId :: Lens.Lens' AssetErrorDetails Prelude.Text+assetErrorDetails_assetId = Lens.lens (\AssetErrorDetails' {assetId} -> assetId) (\s@AssetErrorDetails' {} a -> s {assetId = a} :: AssetErrorDetails)++-- | The error code.+assetErrorDetails_code :: Lens.Lens' AssetErrorDetails AssetErrorCode+assetErrorDetails_code = Lens.lens (\AssetErrorDetails' {code} -> code) (\s@AssetErrorDetails' {} a -> s {code = a} :: AssetErrorDetails)++-- | The error message.+assetErrorDetails_message :: Lens.Lens' AssetErrorDetails Prelude.Text+assetErrorDetails_message = Lens.lens (\AssetErrorDetails' {message} -> message) (\s@AssetErrorDetails' {} a -> s {message = a} :: AssetErrorDetails)++instance Data.FromJSON AssetErrorDetails where+  parseJSON =+    Data.withObject+      "AssetErrorDetails"+      ( \x ->+          AssetErrorDetails'+            Prelude.<$> (x Data..: "assetId")+            Prelude.<*> (x Data..: "code")+            Prelude.<*> (x Data..: "message")+      )++instance Prelude.Hashable AssetErrorDetails where+  hashWithSalt _salt AssetErrorDetails' {..} =+    _salt+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` message++instance Prelude.NFData AssetErrorDetails where+  rnf AssetErrorDetails' {..} =+    Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf code+      `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/IoTSiteWise/Types/AssetHierarchy.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.IoTSiteWise.Types.AssetHierarchy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetHierarchy where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes an asset hierarchy that contains a hierarchy\'s name and ID.+--+-- /See:/ 'newAssetHierarchy' smart constructor.+data AssetHierarchy = AssetHierarchy'+  { -- | The ID of the hierarchy. This ID is a @hierarchyId@.+    id :: Prelude.Maybe Prelude.Text,+    -- | The hierarchy name provided in the+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html CreateAssetModel>+    -- or+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html UpdateAssetModel>+    -- API operation.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetHierarchy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'assetHierarchy_id' - The ID of the hierarchy. This ID is a @hierarchyId@.+--+-- 'name', 'assetHierarchy_name' - The hierarchy name provided in the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html CreateAssetModel>+-- or+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html UpdateAssetModel>+-- API operation.+newAssetHierarchy ::+  -- | 'name'+  Prelude.Text ->+  AssetHierarchy+newAssetHierarchy pName_ =+  AssetHierarchy'+    { id = Prelude.Nothing,+      name = pName_+    }++-- | The ID of the hierarchy. This ID is a @hierarchyId@.+assetHierarchy_id :: Lens.Lens' AssetHierarchy (Prelude.Maybe Prelude.Text)+assetHierarchy_id = Lens.lens (\AssetHierarchy' {id} -> id) (\s@AssetHierarchy' {} a -> s {id = a} :: AssetHierarchy)++-- | The hierarchy name provided in the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html CreateAssetModel>+-- or+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html UpdateAssetModel>+-- API operation.+assetHierarchy_name :: Lens.Lens' AssetHierarchy Prelude.Text+assetHierarchy_name = Lens.lens (\AssetHierarchy' {name} -> name) (\s@AssetHierarchy' {} a -> s {name = a} :: AssetHierarchy)++instance Data.FromJSON AssetHierarchy where+  parseJSON =+    Data.withObject+      "AssetHierarchy"+      ( \x ->+          AssetHierarchy'+            Prelude.<$> (x Data..:? "id")+            Prelude.<*> (x Data..: "name")+      )++instance Prelude.Hashable AssetHierarchy where+  hashWithSalt _salt AssetHierarchy' {..} =+    _salt+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name++instance Prelude.NFData AssetHierarchy where+  rnf AssetHierarchy' {..} =+    Prelude.rnf id `Prelude.seq` Prelude.rnf name
+ gen/Amazonka/IoTSiteWise/Types/AssetHierarchyInfo.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.IoTSiteWise.Types.AssetHierarchyInfo+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetHierarchyInfo 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 information about a parent asset and a child asset that are+-- related through an asset hierarchy.+--+-- /See:/ 'newAssetHierarchyInfo' smart constructor.+data AssetHierarchyInfo = AssetHierarchyInfo'+  { -- | The ID of the child asset in this asset relationship.+    childAssetId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the parent asset in this asset relationship.+    parentAssetId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetHierarchyInfo' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'childAssetId', 'assetHierarchyInfo_childAssetId' - The ID of the child asset in this asset relationship.+--+-- 'parentAssetId', 'assetHierarchyInfo_parentAssetId' - The ID of the parent asset in this asset relationship.+newAssetHierarchyInfo ::+  AssetHierarchyInfo+newAssetHierarchyInfo =+  AssetHierarchyInfo'+    { childAssetId = Prelude.Nothing,+      parentAssetId = Prelude.Nothing+    }++-- | The ID of the child asset in this asset relationship.+assetHierarchyInfo_childAssetId :: Lens.Lens' AssetHierarchyInfo (Prelude.Maybe Prelude.Text)+assetHierarchyInfo_childAssetId = Lens.lens (\AssetHierarchyInfo' {childAssetId} -> childAssetId) (\s@AssetHierarchyInfo' {} a -> s {childAssetId = a} :: AssetHierarchyInfo)++-- | The ID of the parent asset in this asset relationship.+assetHierarchyInfo_parentAssetId :: Lens.Lens' AssetHierarchyInfo (Prelude.Maybe Prelude.Text)+assetHierarchyInfo_parentAssetId = Lens.lens (\AssetHierarchyInfo' {parentAssetId} -> parentAssetId) (\s@AssetHierarchyInfo' {} a -> s {parentAssetId = a} :: AssetHierarchyInfo)++instance Data.FromJSON AssetHierarchyInfo where+  parseJSON =+    Data.withObject+      "AssetHierarchyInfo"+      ( \x ->+          AssetHierarchyInfo'+            Prelude.<$> (x Data..:? "childAssetId")+            Prelude.<*> (x Data..:? "parentAssetId")+      )++instance Prelude.Hashable AssetHierarchyInfo where+  hashWithSalt _salt AssetHierarchyInfo' {..} =+    _salt+      `Prelude.hashWithSalt` childAssetId+      `Prelude.hashWithSalt` parentAssetId++instance Prelude.NFData AssetHierarchyInfo where+  rnf AssetHierarchyInfo' {..} =+    Prelude.rnf childAssetId+      `Prelude.seq` Prelude.rnf parentAssetId
+ gen/Amazonka/IoTSiteWise/Types/AssetModelCompositeModel.hs view
@@ -0,0 +1,143 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetModelCompositeModel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetModelCompositeModel where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetModelProperty+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a composite model in an asset model. This+-- object contains the asset property definitions that you define in the+-- composite model.+--+-- /See:/ 'newAssetModelCompositeModel' smart constructor.+data AssetModelCompositeModel = AssetModelCompositeModel'+  { -- | The description of the composite model.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset model composite model.+    id :: Prelude.Maybe Prelude.Text,+    -- | The asset property definitions for this composite model.+    properties :: Prelude.Maybe [AssetModelProperty],+    -- | The name of the composite model.+    name :: Prelude.Text,+    -- | The type of the composite model. For alarm composite models, this type+    -- is @AWS\/ALARM@.+    type' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetModelCompositeModel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'assetModelCompositeModel_description' - The description of the composite model.+--+-- 'id', 'assetModelCompositeModel_id' - The ID of the asset model composite model.+--+-- 'properties', 'assetModelCompositeModel_properties' - The asset property definitions for this composite model.+--+-- 'name', 'assetModelCompositeModel_name' - The name of the composite model.+--+-- 'type'', 'assetModelCompositeModel_type' - The type of the composite model. For alarm composite models, this type+-- is @AWS\/ALARM@.+newAssetModelCompositeModel ::+  -- | 'name'+  Prelude.Text ->+  -- | 'type''+  Prelude.Text ->+  AssetModelCompositeModel+newAssetModelCompositeModel pName_ pType_ =+  AssetModelCompositeModel'+    { description =+        Prelude.Nothing,+      id = Prelude.Nothing,+      properties = Prelude.Nothing,+      name = pName_,+      type' = pType_+    }++-- | The description of the composite model.+assetModelCompositeModel_description :: Lens.Lens' AssetModelCompositeModel (Prelude.Maybe Prelude.Text)+assetModelCompositeModel_description = Lens.lens (\AssetModelCompositeModel' {description} -> description) (\s@AssetModelCompositeModel' {} a -> s {description = a} :: AssetModelCompositeModel)++-- | The ID of the asset model composite model.+assetModelCompositeModel_id :: Lens.Lens' AssetModelCompositeModel (Prelude.Maybe Prelude.Text)+assetModelCompositeModel_id = Lens.lens (\AssetModelCompositeModel' {id} -> id) (\s@AssetModelCompositeModel' {} a -> s {id = a} :: AssetModelCompositeModel)++-- | The asset property definitions for this composite model.+assetModelCompositeModel_properties :: Lens.Lens' AssetModelCompositeModel (Prelude.Maybe [AssetModelProperty])+assetModelCompositeModel_properties = Lens.lens (\AssetModelCompositeModel' {properties} -> properties) (\s@AssetModelCompositeModel' {} a -> s {properties = a} :: AssetModelCompositeModel) Prelude.. Lens.mapping Lens.coerced++-- | The name of the composite model.+assetModelCompositeModel_name :: Lens.Lens' AssetModelCompositeModel Prelude.Text+assetModelCompositeModel_name = Lens.lens (\AssetModelCompositeModel' {name} -> name) (\s@AssetModelCompositeModel' {} a -> s {name = a} :: AssetModelCompositeModel)++-- | The type of the composite model. For alarm composite models, this type+-- is @AWS\/ALARM@.+assetModelCompositeModel_type :: Lens.Lens' AssetModelCompositeModel Prelude.Text+assetModelCompositeModel_type = Lens.lens (\AssetModelCompositeModel' {type'} -> type') (\s@AssetModelCompositeModel' {} a -> s {type' = a} :: AssetModelCompositeModel)++instance Data.FromJSON AssetModelCompositeModel where+  parseJSON =+    Data.withObject+      "AssetModelCompositeModel"+      ( \x ->+          AssetModelCompositeModel'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "properties" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "type")+      )++instance Prelude.Hashable AssetModelCompositeModel where+  hashWithSalt _salt AssetModelCompositeModel' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` properties+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` type'++instance Prelude.NFData AssetModelCompositeModel where+  rnf AssetModelCompositeModel' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf properties+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf type'++instance Data.ToJSON AssetModelCompositeModel where+  toJSON AssetModelCompositeModel' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("id" Data..=) Prelude.<$> id,+            ("properties" Data..=) Prelude.<$> properties,+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("type" Data..= type')+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/AssetModelCompositeModelDefinition.hs view
@@ -0,0 +1,128 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetModelCompositeModelDefinition+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetModelCompositeModelDefinition where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetModelPropertyDefinition+import qualified Amazonka.Prelude as Prelude++-- | Contains a composite model definition in an asset model. This composite+-- model definition is applied to all assets created from the asset model.+--+-- /See:/ 'newAssetModelCompositeModelDefinition' smart constructor.+data AssetModelCompositeModelDefinition = AssetModelCompositeModelDefinition'+  { -- | The description of the composite model.+    description :: Prelude.Maybe Prelude.Text,+    -- | The asset property definitions for this composite model.+    properties :: Prelude.Maybe [AssetModelPropertyDefinition],+    -- | The name of the composite model.+    name :: Prelude.Text,+    -- | The type of the composite model. For alarm composite models, this type+    -- is @AWS\/ALARM@.+    type' :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetModelCompositeModelDefinition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'assetModelCompositeModelDefinition_description' - The description of the composite model.+--+-- 'properties', 'assetModelCompositeModelDefinition_properties' - The asset property definitions for this composite model.+--+-- 'name', 'assetModelCompositeModelDefinition_name' - The name of the composite model.+--+-- 'type'', 'assetModelCompositeModelDefinition_type' - The type of the composite model. For alarm composite models, this type+-- is @AWS\/ALARM@.+newAssetModelCompositeModelDefinition ::+  -- | 'name'+  Prelude.Text ->+  -- | 'type''+  Prelude.Text ->+  AssetModelCompositeModelDefinition+newAssetModelCompositeModelDefinition pName_ pType_ =+  AssetModelCompositeModelDefinition'+    { description =+        Prelude.Nothing,+      properties = Prelude.Nothing,+      name = pName_,+      type' = pType_+    }++-- | The description of the composite model.+assetModelCompositeModelDefinition_description :: Lens.Lens' AssetModelCompositeModelDefinition (Prelude.Maybe Prelude.Text)+assetModelCompositeModelDefinition_description = Lens.lens (\AssetModelCompositeModelDefinition' {description} -> description) (\s@AssetModelCompositeModelDefinition' {} a -> s {description = a} :: AssetModelCompositeModelDefinition)++-- | The asset property definitions for this composite model.+assetModelCompositeModelDefinition_properties :: Lens.Lens' AssetModelCompositeModelDefinition (Prelude.Maybe [AssetModelPropertyDefinition])+assetModelCompositeModelDefinition_properties = Lens.lens (\AssetModelCompositeModelDefinition' {properties} -> properties) (\s@AssetModelCompositeModelDefinition' {} a -> s {properties = a} :: AssetModelCompositeModelDefinition) Prelude.. Lens.mapping Lens.coerced++-- | The name of the composite model.+assetModelCompositeModelDefinition_name :: Lens.Lens' AssetModelCompositeModelDefinition Prelude.Text+assetModelCompositeModelDefinition_name = Lens.lens (\AssetModelCompositeModelDefinition' {name} -> name) (\s@AssetModelCompositeModelDefinition' {} a -> s {name = a} :: AssetModelCompositeModelDefinition)++-- | The type of the composite model. For alarm composite models, this type+-- is @AWS\/ALARM@.+assetModelCompositeModelDefinition_type :: Lens.Lens' AssetModelCompositeModelDefinition Prelude.Text+assetModelCompositeModelDefinition_type = Lens.lens (\AssetModelCompositeModelDefinition' {type'} -> type') (\s@AssetModelCompositeModelDefinition' {} a -> s {type' = a} :: AssetModelCompositeModelDefinition)++instance+  Prelude.Hashable+    AssetModelCompositeModelDefinition+  where+  hashWithSalt+    _salt+    AssetModelCompositeModelDefinition' {..} =+      _salt+        `Prelude.hashWithSalt` description+        `Prelude.hashWithSalt` properties+        `Prelude.hashWithSalt` name+        `Prelude.hashWithSalt` type'++instance+  Prelude.NFData+    AssetModelCompositeModelDefinition+  where+  rnf AssetModelCompositeModelDefinition' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf properties+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf type'++instance+  Data.ToJSON+    AssetModelCompositeModelDefinition+  where+  toJSON AssetModelCompositeModelDefinition' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("description" Data..=) Prelude.<$> description,+            ("properties" Data..=) Prelude.<$> properties,+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("type" Data..= type')+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/AssetModelHierarchy.hs view
@@ -0,0 +1,128 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetModelHierarchy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetModelHierarchy where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | Describes an asset hierarchy that contains a hierarchy\'s name, ID, and+-- child asset model ID that specifies the type of asset that can be in+-- this hierarchy.+--+-- /See:/ 'newAssetModelHierarchy' smart constructor.+data AssetModelHierarchy = AssetModelHierarchy'+  { -- | The ID of the asset model hierarchy. This ID is a @hierarchyId@.+    id :: Prelude.Maybe Prelude.Text,+    -- | The name of the asset model hierarchy that you specify by using the+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html CreateAssetModel>+    -- or+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html UpdateAssetModel>+    -- API operation.+    name :: Prelude.Text,+    -- | The ID of the asset model. All assets in this hierarchy must be+    -- instances of the @childAssetModelId@ asset model.+    childAssetModelId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetModelHierarchy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'assetModelHierarchy_id' - The ID of the asset model hierarchy. This ID is a @hierarchyId@.+--+-- 'name', 'assetModelHierarchy_name' - The name of the asset model hierarchy that you specify by using the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html CreateAssetModel>+-- or+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html UpdateAssetModel>+-- API operation.+--+-- 'childAssetModelId', 'assetModelHierarchy_childAssetModelId' - The ID of the asset model. All assets in this hierarchy must be+-- instances of the @childAssetModelId@ asset model.+newAssetModelHierarchy ::+  -- | 'name'+  Prelude.Text ->+  -- | 'childAssetModelId'+  Prelude.Text ->+  AssetModelHierarchy+newAssetModelHierarchy pName_ pChildAssetModelId_ =+  AssetModelHierarchy'+    { id = Prelude.Nothing,+      name = pName_,+      childAssetModelId = pChildAssetModelId_+    }++-- | The ID of the asset model hierarchy. This ID is a @hierarchyId@.+assetModelHierarchy_id :: Lens.Lens' AssetModelHierarchy (Prelude.Maybe Prelude.Text)+assetModelHierarchy_id = Lens.lens (\AssetModelHierarchy' {id} -> id) (\s@AssetModelHierarchy' {} a -> s {id = a} :: AssetModelHierarchy)++-- | The name of the asset model hierarchy that you specify by using the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html CreateAssetModel>+-- or+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html UpdateAssetModel>+-- API operation.+assetModelHierarchy_name :: Lens.Lens' AssetModelHierarchy Prelude.Text+assetModelHierarchy_name = Lens.lens (\AssetModelHierarchy' {name} -> name) (\s@AssetModelHierarchy' {} a -> s {name = a} :: AssetModelHierarchy)++-- | The ID of the asset model. All assets in this hierarchy must be+-- instances of the @childAssetModelId@ asset model.+assetModelHierarchy_childAssetModelId :: Lens.Lens' AssetModelHierarchy Prelude.Text+assetModelHierarchy_childAssetModelId = Lens.lens (\AssetModelHierarchy' {childAssetModelId} -> childAssetModelId) (\s@AssetModelHierarchy' {} a -> s {childAssetModelId = a} :: AssetModelHierarchy)++instance Data.FromJSON AssetModelHierarchy where+  parseJSON =+    Data.withObject+      "AssetModelHierarchy"+      ( \x ->+          AssetModelHierarchy'+            Prelude.<$> (x Data..:? "id")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "childAssetModelId")+      )++instance Prelude.Hashable AssetModelHierarchy where+  hashWithSalt _salt AssetModelHierarchy' {..} =+    _salt+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` childAssetModelId++instance Prelude.NFData AssetModelHierarchy where+  rnf AssetModelHierarchy' {..} =+    Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf childAssetModelId++instance Data.ToJSON AssetModelHierarchy where+  toJSON AssetModelHierarchy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("id" Data..=) Prelude.<$> id,+            Prelude.Just ("name" Data..= name),+            Prelude.Just+              ("childAssetModelId" Data..= childAssetModelId)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/AssetModelHierarchyDefinition.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.IoTSiteWise.Types.AssetModelHierarchyDefinition+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetModelHierarchyDefinition 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 an asset model hierarchy used in asset model creation. An asset+-- model hierarchy determines the kind (or type) of asset that can belong+-- to a hierarchy.+--+-- /See:/ 'newAssetModelHierarchyDefinition' smart constructor.+data AssetModelHierarchyDefinition = AssetModelHierarchyDefinition'+  { -- | The name of the asset model hierarchy definition (as specified in the+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html CreateAssetModel>+    -- or+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html UpdateAssetModel>+    -- API operation).+    name :: Prelude.Text,+    -- | The ID of an asset model for this hierarchy.+    childAssetModelId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetModelHierarchyDefinition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'assetModelHierarchyDefinition_name' - The name of the asset model hierarchy definition (as specified in the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html CreateAssetModel>+-- or+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html UpdateAssetModel>+-- API operation).+--+-- 'childAssetModelId', 'assetModelHierarchyDefinition_childAssetModelId' - The ID of an asset model for this hierarchy.+newAssetModelHierarchyDefinition ::+  -- | 'name'+  Prelude.Text ->+  -- | 'childAssetModelId'+  Prelude.Text ->+  AssetModelHierarchyDefinition+newAssetModelHierarchyDefinition+  pName_+  pChildAssetModelId_ =+    AssetModelHierarchyDefinition'+      { name = pName_,+        childAssetModelId = pChildAssetModelId_+      }++-- | The name of the asset model hierarchy definition (as specified in the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html CreateAssetModel>+-- or+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetModel.html UpdateAssetModel>+-- API operation).+assetModelHierarchyDefinition_name :: Lens.Lens' AssetModelHierarchyDefinition Prelude.Text+assetModelHierarchyDefinition_name = Lens.lens (\AssetModelHierarchyDefinition' {name} -> name) (\s@AssetModelHierarchyDefinition' {} a -> s {name = a} :: AssetModelHierarchyDefinition)++-- | The ID of an asset model for this hierarchy.+assetModelHierarchyDefinition_childAssetModelId :: Lens.Lens' AssetModelHierarchyDefinition Prelude.Text+assetModelHierarchyDefinition_childAssetModelId = Lens.lens (\AssetModelHierarchyDefinition' {childAssetModelId} -> childAssetModelId) (\s@AssetModelHierarchyDefinition' {} a -> s {childAssetModelId = a} :: AssetModelHierarchyDefinition)++instance+  Prelude.Hashable+    AssetModelHierarchyDefinition+  where+  hashWithSalt _salt AssetModelHierarchyDefinition' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` childAssetModelId++instance Prelude.NFData AssetModelHierarchyDefinition where+  rnf AssetModelHierarchyDefinition' {..} =+    Prelude.rnf name+      `Prelude.seq` Prelude.rnf childAssetModelId++instance Data.ToJSON AssetModelHierarchyDefinition where+  toJSON AssetModelHierarchyDefinition' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("name" Data..= name),+            Prelude.Just+              ("childAssetModelId" Data..= childAssetModelId)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/AssetModelProperty.hs view
@@ -0,0 +1,156 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetModelProperty+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetModelProperty where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.PropertyDataType+import Amazonka.IoTSiteWise.Types.PropertyType+import qualified Amazonka.Prelude as Prelude++-- | Contains information about an asset model property.+--+-- /See:/ 'newAssetModelProperty' smart constructor.+data AssetModelProperty = AssetModelProperty'+  { -- | The data type of the structure for this property. This parameter exists+    -- on properties that have the @STRUCT@ data type.+    dataTypeSpec :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset model property.+    id :: Prelude.Maybe Prelude.Text,+    -- | The unit of the asset model property, such as @Newtons@ or @RPM@.+    unit :: Prelude.Maybe Prelude.Text,+    -- | The name of the asset model property.+    name :: Prelude.Text,+    -- | The data type of the asset model property.+    dataType :: PropertyDataType,+    -- | The property type (see @PropertyType@).+    type' :: PropertyType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetModelProperty' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataTypeSpec', 'assetModelProperty_dataTypeSpec' - The data type of the structure for this property. This parameter exists+-- on properties that have the @STRUCT@ data type.+--+-- 'id', 'assetModelProperty_id' - The ID of the asset model property.+--+-- 'unit', 'assetModelProperty_unit' - The unit of the asset model property, such as @Newtons@ or @RPM@.+--+-- 'name', 'assetModelProperty_name' - The name of the asset model property.+--+-- 'dataType', 'assetModelProperty_dataType' - The data type of the asset model property.+--+-- 'type'', 'assetModelProperty_type' - The property type (see @PropertyType@).+newAssetModelProperty ::+  -- | 'name'+  Prelude.Text ->+  -- | 'dataType'+  PropertyDataType ->+  -- | 'type''+  PropertyType ->+  AssetModelProperty+newAssetModelProperty pName_ pDataType_ pType_ =+  AssetModelProperty'+    { dataTypeSpec = Prelude.Nothing,+      id = Prelude.Nothing,+      unit = Prelude.Nothing,+      name = pName_,+      dataType = pDataType_,+      type' = pType_+    }++-- | The data type of the structure for this property. This parameter exists+-- on properties that have the @STRUCT@ data type.+assetModelProperty_dataTypeSpec :: Lens.Lens' AssetModelProperty (Prelude.Maybe Prelude.Text)+assetModelProperty_dataTypeSpec = Lens.lens (\AssetModelProperty' {dataTypeSpec} -> dataTypeSpec) (\s@AssetModelProperty' {} a -> s {dataTypeSpec = a} :: AssetModelProperty)++-- | The ID of the asset model property.+assetModelProperty_id :: Lens.Lens' AssetModelProperty (Prelude.Maybe Prelude.Text)+assetModelProperty_id = Lens.lens (\AssetModelProperty' {id} -> id) (\s@AssetModelProperty' {} a -> s {id = a} :: AssetModelProperty)++-- | The unit of the asset model property, such as @Newtons@ or @RPM@.+assetModelProperty_unit :: Lens.Lens' AssetModelProperty (Prelude.Maybe Prelude.Text)+assetModelProperty_unit = Lens.lens (\AssetModelProperty' {unit} -> unit) (\s@AssetModelProperty' {} a -> s {unit = a} :: AssetModelProperty)++-- | The name of the asset model property.+assetModelProperty_name :: Lens.Lens' AssetModelProperty Prelude.Text+assetModelProperty_name = Lens.lens (\AssetModelProperty' {name} -> name) (\s@AssetModelProperty' {} a -> s {name = a} :: AssetModelProperty)++-- | The data type of the asset model property.+assetModelProperty_dataType :: Lens.Lens' AssetModelProperty PropertyDataType+assetModelProperty_dataType = Lens.lens (\AssetModelProperty' {dataType} -> dataType) (\s@AssetModelProperty' {} a -> s {dataType = a} :: AssetModelProperty)++-- | The property type (see @PropertyType@).+assetModelProperty_type :: Lens.Lens' AssetModelProperty PropertyType+assetModelProperty_type = Lens.lens (\AssetModelProperty' {type'} -> type') (\s@AssetModelProperty' {} a -> s {type' = a} :: AssetModelProperty)++instance Data.FromJSON AssetModelProperty where+  parseJSON =+    Data.withObject+      "AssetModelProperty"+      ( \x ->+          AssetModelProperty'+            Prelude.<$> (x Data..:? "dataTypeSpec")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "unit")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "dataType")+            Prelude.<*> (x Data..: "type")+      )++instance Prelude.Hashable AssetModelProperty where+  hashWithSalt _salt AssetModelProperty' {..} =+    _salt+      `Prelude.hashWithSalt` dataTypeSpec+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` unit+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` dataType+      `Prelude.hashWithSalt` type'++instance Prelude.NFData AssetModelProperty where+  rnf AssetModelProperty' {..} =+    Prelude.rnf dataTypeSpec+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf unit+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf dataType+      `Prelude.seq` Prelude.rnf type'++instance Data.ToJSON AssetModelProperty where+  toJSON AssetModelProperty' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("dataTypeSpec" Data..=) Prelude.<$> dataTypeSpec,+            ("id" Data..=) Prelude.<$> id,+            ("unit" Data..=) Prelude.<$> unit,+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("dataType" Data..= dataType),+            Prelude.Just ("type" Data..= type')+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/AssetModelPropertyDefinition.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.IoTSiteWise.Types.AssetModelPropertyDefinition+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetModelPropertyDefinition where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.PropertyDataType+import Amazonka.IoTSiteWise.Types.PropertyType+import qualified Amazonka.Prelude as Prelude++-- | Contains an asset model property definition. This property definition is+-- applied to all assets created from the asset model.+--+-- /See:/ 'newAssetModelPropertyDefinition' smart constructor.+data AssetModelPropertyDefinition = AssetModelPropertyDefinition'+  { -- | The data type of the structure for this property. This parameter is+    -- required on properties that have the @STRUCT@ data type.+    --+    -- The options for this parameter depend on the type of the composite model+    -- in which you define this property. Use @AWS\/ALARM_STATE@ for alarm+    -- state in alarm composite models.+    dataTypeSpec :: Prelude.Maybe Prelude.Text,+    -- | The unit of the property definition, such as @Newtons@ or @RPM@.+    unit :: Prelude.Maybe Prelude.Text,+    -- | The name of the property definition.+    name :: Prelude.Text,+    -- | The data type of the property definition.+    --+    -- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to+    -- identify the type of the structure for this property.+    dataType :: PropertyDataType,+    -- | The property definition type (see @PropertyType@). You can only specify+    -- one type in a property definition.+    type' :: PropertyType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetModelPropertyDefinition' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dataTypeSpec', 'assetModelPropertyDefinition_dataTypeSpec' - The data type of the structure for this property. This parameter is+-- required on properties that have the @STRUCT@ data type.+--+-- The options for this parameter depend on the type of the composite model+-- in which you define this property. Use @AWS\/ALARM_STATE@ for alarm+-- state in alarm composite models.+--+-- 'unit', 'assetModelPropertyDefinition_unit' - The unit of the property definition, such as @Newtons@ or @RPM@.+--+-- 'name', 'assetModelPropertyDefinition_name' - The name of the property definition.+--+-- 'dataType', 'assetModelPropertyDefinition_dataType' - The data type of the property definition.+--+-- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to+-- identify the type of the structure for this property.+--+-- 'type'', 'assetModelPropertyDefinition_type' - The property definition type (see @PropertyType@). You can only specify+-- one type in a property definition.+newAssetModelPropertyDefinition ::+  -- | 'name'+  Prelude.Text ->+  -- | 'dataType'+  PropertyDataType ->+  -- | 'type''+  PropertyType ->+  AssetModelPropertyDefinition+newAssetModelPropertyDefinition+  pName_+  pDataType_+  pType_ =+    AssetModelPropertyDefinition'+      { dataTypeSpec =+          Prelude.Nothing,+        unit = Prelude.Nothing,+        name = pName_,+        dataType = pDataType_,+        type' = pType_+      }++-- | The data type of the structure for this property. This parameter is+-- required on properties that have the @STRUCT@ data type.+--+-- The options for this parameter depend on the type of the composite model+-- in which you define this property. Use @AWS\/ALARM_STATE@ for alarm+-- state in alarm composite models.+assetModelPropertyDefinition_dataTypeSpec :: Lens.Lens' AssetModelPropertyDefinition (Prelude.Maybe Prelude.Text)+assetModelPropertyDefinition_dataTypeSpec = Lens.lens (\AssetModelPropertyDefinition' {dataTypeSpec} -> dataTypeSpec) (\s@AssetModelPropertyDefinition' {} a -> s {dataTypeSpec = a} :: AssetModelPropertyDefinition)++-- | The unit of the property definition, such as @Newtons@ or @RPM@.+assetModelPropertyDefinition_unit :: Lens.Lens' AssetModelPropertyDefinition (Prelude.Maybe Prelude.Text)+assetModelPropertyDefinition_unit = Lens.lens (\AssetModelPropertyDefinition' {unit} -> unit) (\s@AssetModelPropertyDefinition' {} a -> s {unit = a} :: AssetModelPropertyDefinition)++-- | The name of the property definition.+assetModelPropertyDefinition_name :: Lens.Lens' AssetModelPropertyDefinition Prelude.Text+assetModelPropertyDefinition_name = Lens.lens (\AssetModelPropertyDefinition' {name} -> name) (\s@AssetModelPropertyDefinition' {} a -> s {name = a} :: AssetModelPropertyDefinition)++-- | The data type of the property definition.+--+-- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to+-- identify the type of the structure for this property.+assetModelPropertyDefinition_dataType :: Lens.Lens' AssetModelPropertyDefinition PropertyDataType+assetModelPropertyDefinition_dataType = Lens.lens (\AssetModelPropertyDefinition' {dataType} -> dataType) (\s@AssetModelPropertyDefinition' {} a -> s {dataType = a} :: AssetModelPropertyDefinition)++-- | The property definition type (see @PropertyType@). You can only specify+-- one type in a property definition.+assetModelPropertyDefinition_type :: Lens.Lens' AssetModelPropertyDefinition PropertyType+assetModelPropertyDefinition_type = Lens.lens (\AssetModelPropertyDefinition' {type'} -> type') (\s@AssetModelPropertyDefinition' {} a -> s {type' = a} :: AssetModelPropertyDefinition)++instance+  Prelude.Hashable+    AssetModelPropertyDefinition+  where+  hashWithSalt _salt AssetModelPropertyDefinition' {..} =+    _salt+      `Prelude.hashWithSalt` dataTypeSpec+      `Prelude.hashWithSalt` unit+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` dataType+      `Prelude.hashWithSalt` type'++instance Prelude.NFData AssetModelPropertyDefinition where+  rnf AssetModelPropertyDefinition' {..} =+    Prelude.rnf dataTypeSpec+      `Prelude.seq` Prelude.rnf unit+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf dataType+      `Prelude.seq` Prelude.rnf type'++instance Data.ToJSON AssetModelPropertyDefinition where+  toJSON AssetModelPropertyDefinition' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("dataTypeSpec" Data..=) Prelude.<$> dataTypeSpec,+            ("unit" Data..=) Prelude.<$> unit,+            Prelude.Just ("name" Data..= name),+            Prelude.Just ("dataType" Data..= dataType),+            Prelude.Just ("type" Data..= type')+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/AssetModelPropertySummary.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.IoTSiteWise.Types.AssetModelPropertySummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetModelPropertySummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.PropertyDataType+import Amazonka.IoTSiteWise.Types.PropertyType+import qualified Amazonka.Prelude as Prelude++-- | Contains a summary of a property associated with a model.+--+-- /See:/ 'newAssetModelPropertySummary' smart constructor.+data AssetModelPropertySummary = AssetModelPropertySummary'+  { -- | The ID of the composite model that contains the asset model property.+    assetModelCompositeModelId :: Prelude.Maybe Prelude.Text,+    -- | The data type of the structure for this property. This parameter exists+    -- on properties that have the @STRUCT@ data type.+    dataTypeSpec :: Prelude.Maybe Prelude.Text,+    -- | The ID of the property.+    id :: Prelude.Maybe Prelude.Text,+    -- | The unit (such as @Newtons@ or @RPM@) of the property.+    unit :: Prelude.Maybe Prelude.Text,+    -- | The name of the property.+    name :: Prelude.Text,+    -- | The data type of the property.+    dataType :: PropertyDataType,+    type' :: PropertyType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetModelPropertySummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetModelCompositeModelId', 'assetModelPropertySummary_assetModelCompositeModelId' - The ID of the composite model that contains the asset model property.+--+-- 'dataTypeSpec', 'assetModelPropertySummary_dataTypeSpec' - The data type of the structure for this property. This parameter exists+-- on properties that have the @STRUCT@ data type.+--+-- 'id', 'assetModelPropertySummary_id' - The ID of the property.+--+-- 'unit', 'assetModelPropertySummary_unit' - The unit (such as @Newtons@ or @RPM@) of the property.+--+-- 'name', 'assetModelPropertySummary_name' - The name of the property.+--+-- 'dataType', 'assetModelPropertySummary_dataType' - The data type of the property.+--+-- 'type'', 'assetModelPropertySummary_type' - Undocumented member.+newAssetModelPropertySummary ::+  -- | 'name'+  Prelude.Text ->+  -- | 'dataType'+  PropertyDataType ->+  -- | 'type''+  PropertyType ->+  AssetModelPropertySummary+newAssetModelPropertySummary pName_ pDataType_ pType_ =+  AssetModelPropertySummary'+    { assetModelCompositeModelId =+        Prelude.Nothing,+      dataTypeSpec = Prelude.Nothing,+      id = Prelude.Nothing,+      unit = Prelude.Nothing,+      name = pName_,+      dataType = pDataType_,+      type' = pType_+    }++-- | The ID of the composite model that contains the asset model property.+assetModelPropertySummary_assetModelCompositeModelId :: Lens.Lens' AssetModelPropertySummary (Prelude.Maybe Prelude.Text)+assetModelPropertySummary_assetModelCompositeModelId = Lens.lens (\AssetModelPropertySummary' {assetModelCompositeModelId} -> assetModelCompositeModelId) (\s@AssetModelPropertySummary' {} a -> s {assetModelCompositeModelId = a} :: AssetModelPropertySummary)++-- | The data type of the structure for this property. This parameter exists+-- on properties that have the @STRUCT@ data type.+assetModelPropertySummary_dataTypeSpec :: Lens.Lens' AssetModelPropertySummary (Prelude.Maybe Prelude.Text)+assetModelPropertySummary_dataTypeSpec = Lens.lens (\AssetModelPropertySummary' {dataTypeSpec} -> dataTypeSpec) (\s@AssetModelPropertySummary' {} a -> s {dataTypeSpec = a} :: AssetModelPropertySummary)++-- | The ID of the property.+assetModelPropertySummary_id :: Lens.Lens' AssetModelPropertySummary (Prelude.Maybe Prelude.Text)+assetModelPropertySummary_id = Lens.lens (\AssetModelPropertySummary' {id} -> id) (\s@AssetModelPropertySummary' {} a -> s {id = a} :: AssetModelPropertySummary)++-- | The unit (such as @Newtons@ or @RPM@) of the property.+assetModelPropertySummary_unit :: Lens.Lens' AssetModelPropertySummary (Prelude.Maybe Prelude.Text)+assetModelPropertySummary_unit = Lens.lens (\AssetModelPropertySummary' {unit} -> unit) (\s@AssetModelPropertySummary' {} a -> s {unit = a} :: AssetModelPropertySummary)++-- | The name of the property.+assetModelPropertySummary_name :: Lens.Lens' AssetModelPropertySummary Prelude.Text+assetModelPropertySummary_name = Lens.lens (\AssetModelPropertySummary' {name} -> name) (\s@AssetModelPropertySummary' {} a -> s {name = a} :: AssetModelPropertySummary)++-- | The data type of the property.+assetModelPropertySummary_dataType :: Lens.Lens' AssetModelPropertySummary PropertyDataType+assetModelPropertySummary_dataType = Lens.lens (\AssetModelPropertySummary' {dataType} -> dataType) (\s@AssetModelPropertySummary' {} a -> s {dataType = a} :: AssetModelPropertySummary)++-- | Undocumented member.+assetModelPropertySummary_type :: Lens.Lens' AssetModelPropertySummary PropertyType+assetModelPropertySummary_type = Lens.lens (\AssetModelPropertySummary' {type'} -> type') (\s@AssetModelPropertySummary' {} a -> s {type' = a} :: AssetModelPropertySummary)++instance Data.FromJSON AssetModelPropertySummary where+  parseJSON =+    Data.withObject+      "AssetModelPropertySummary"+      ( \x ->+          AssetModelPropertySummary'+            Prelude.<$> (x Data..:? "assetModelCompositeModelId")+            Prelude.<*> (x Data..:? "dataTypeSpec")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "unit")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "dataType")+            Prelude.<*> (x Data..: "type")+      )++instance Prelude.Hashable AssetModelPropertySummary where+  hashWithSalt _salt AssetModelPropertySummary' {..} =+    _salt+      `Prelude.hashWithSalt` assetModelCompositeModelId+      `Prelude.hashWithSalt` dataTypeSpec+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` unit+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` dataType+      `Prelude.hashWithSalt` type'++instance Prelude.NFData AssetModelPropertySummary where+  rnf AssetModelPropertySummary' {..} =+    Prelude.rnf assetModelCompositeModelId+      `Prelude.seq` Prelude.rnf dataTypeSpec+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf unit+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf dataType+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/IoTSiteWise/Types/AssetModelState.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.IoTSiteWise.Types.AssetModelState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetModelState+  ( AssetModelState+      ( ..,+        AssetModelState_ACTIVE,+        AssetModelState_CREATING,+        AssetModelState_DELETING,+        AssetModelState_FAILED,+        AssetModelState_PROPAGATING,+        AssetModelState_UPDATING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AssetModelState = AssetModelState'+  { fromAssetModelState ::+      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 AssetModelState_ACTIVE :: AssetModelState+pattern AssetModelState_ACTIVE = AssetModelState' "ACTIVE"++pattern AssetModelState_CREATING :: AssetModelState+pattern AssetModelState_CREATING = AssetModelState' "CREATING"++pattern AssetModelState_DELETING :: AssetModelState+pattern AssetModelState_DELETING = AssetModelState' "DELETING"++pattern AssetModelState_FAILED :: AssetModelState+pattern AssetModelState_FAILED = AssetModelState' "FAILED"++pattern AssetModelState_PROPAGATING :: AssetModelState+pattern AssetModelState_PROPAGATING = AssetModelState' "PROPAGATING"++pattern AssetModelState_UPDATING :: AssetModelState+pattern AssetModelState_UPDATING = AssetModelState' "UPDATING"++{-# COMPLETE+  AssetModelState_ACTIVE,+  AssetModelState_CREATING,+  AssetModelState_DELETING,+  AssetModelState_FAILED,+  AssetModelState_PROPAGATING,+  AssetModelState_UPDATING,+  AssetModelState'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/AssetModelStatus.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.IoTSiteWise.Types.AssetModelStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetModelStatus where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetModelState+import Amazonka.IoTSiteWise.Types.ErrorDetails+import qualified Amazonka.Prelude as Prelude++-- | Contains current status information for an asset model. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-and-model-states.html Asset and model states>+-- in the /IoT SiteWise User Guide/.+--+-- /See:/ 'newAssetModelStatus' smart constructor.+data AssetModelStatus = AssetModelStatus'+  { -- | Contains associated error information, if any.+    error :: Prelude.Maybe ErrorDetails,+    -- | The current state of the asset model.+    state :: AssetModelState+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetModelStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'assetModelStatus_error' - Contains associated error information, if any.+--+-- 'state', 'assetModelStatus_state' - The current state of the asset model.+newAssetModelStatus ::+  -- | 'state'+  AssetModelState ->+  AssetModelStatus+newAssetModelStatus pState_ =+  AssetModelStatus'+    { error = Prelude.Nothing,+      state = pState_+    }++-- | Contains associated error information, if any.+assetModelStatus_error :: Lens.Lens' AssetModelStatus (Prelude.Maybe ErrorDetails)+assetModelStatus_error = Lens.lens (\AssetModelStatus' {error} -> error) (\s@AssetModelStatus' {} a -> s {error = a} :: AssetModelStatus)++-- | The current state of the asset model.+assetModelStatus_state :: Lens.Lens' AssetModelStatus AssetModelState+assetModelStatus_state = Lens.lens (\AssetModelStatus' {state} -> state) (\s@AssetModelStatus' {} a -> s {state = a} :: AssetModelStatus)++instance Data.FromJSON AssetModelStatus where+  parseJSON =+    Data.withObject+      "AssetModelStatus"+      ( \x ->+          AssetModelStatus'+            Prelude.<$> (x Data..:? "error")+            Prelude.<*> (x Data..: "state")+      )++instance Prelude.Hashable AssetModelStatus where+  hashWithSalt _salt AssetModelStatus' {..} =+    _salt+      `Prelude.hashWithSalt` error+      `Prelude.hashWithSalt` state++instance Prelude.NFData AssetModelStatus where+  rnf AssetModelStatus' {..} =+    Prelude.rnf error `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/IoTSiteWise/Types/AssetModelSummary.hs view
@@ -0,0 +1,178 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetModelSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetModelSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetModelStatus+import qualified Amazonka.Prelude as Prelude++-- | Contains a summary of an asset model.+--+-- /See:/ 'newAssetModelSummary' smart constructor.+data AssetModelSummary = AssetModelSummary'+  { -- | The ID of the asset model (used with IoT SiteWise APIs).+    id :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the asset model, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model\/${AssetModelId}@+    arn :: Prelude.Text,+    -- | The name of the asset model.+    name :: Prelude.Text,+    -- | The asset model description.+    description :: Prelude.Text,+    -- | The date the asset model was created, in Unix epoch time.+    creationDate :: Data.POSIX,+    -- | The date the asset model was last updated, in Unix epoch time.+    lastUpdateDate :: Data.POSIX,+    -- | The current status of the asset model.+    status :: AssetModelStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetModelSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'assetModelSummary_id' - The ID of the asset model (used with IoT SiteWise APIs).+--+-- 'arn', 'assetModelSummary_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset model, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model\/${AssetModelId}@+--+-- 'name', 'assetModelSummary_name' - The name of the asset model.+--+-- 'description', 'assetModelSummary_description' - The asset model description.+--+-- 'creationDate', 'assetModelSummary_creationDate' - The date the asset model was created, in Unix epoch time.+--+-- 'lastUpdateDate', 'assetModelSummary_lastUpdateDate' - The date the asset model was last updated, in Unix epoch time.+--+-- 'status', 'assetModelSummary_status' - The current status of the asset model.+newAssetModelSummary ::+  -- | 'id'+  Prelude.Text ->+  -- | 'arn'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  -- | 'description'+  Prelude.Text ->+  -- | 'creationDate'+  Prelude.UTCTime ->+  -- | 'lastUpdateDate'+  Prelude.UTCTime ->+  -- | 'status'+  AssetModelStatus ->+  AssetModelSummary+newAssetModelSummary+  pId_+  pArn_+  pName_+  pDescription_+  pCreationDate_+  pLastUpdateDate_+  pStatus_ =+    AssetModelSummary'+      { id = pId_,+        arn = pArn_,+        name = pName_,+        description = pDescription_,+        creationDate = Data._Time Lens.# pCreationDate_,+        lastUpdateDate = Data._Time Lens.# pLastUpdateDate_,+        status = pStatus_+      }++-- | The ID of the asset model (used with IoT SiteWise APIs).+assetModelSummary_id :: Lens.Lens' AssetModelSummary Prelude.Text+assetModelSummary_id = Lens.lens (\AssetModelSummary' {id} -> id) (\s@AssetModelSummary' {} a -> s {id = a} :: AssetModelSummary)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset model, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset-model\/${AssetModelId}@+assetModelSummary_arn :: Lens.Lens' AssetModelSummary Prelude.Text+assetModelSummary_arn = Lens.lens (\AssetModelSummary' {arn} -> arn) (\s@AssetModelSummary' {} a -> s {arn = a} :: AssetModelSummary)++-- | The name of the asset model.+assetModelSummary_name :: Lens.Lens' AssetModelSummary Prelude.Text+assetModelSummary_name = Lens.lens (\AssetModelSummary' {name} -> name) (\s@AssetModelSummary' {} a -> s {name = a} :: AssetModelSummary)++-- | The asset model description.+assetModelSummary_description :: Lens.Lens' AssetModelSummary Prelude.Text+assetModelSummary_description = Lens.lens (\AssetModelSummary' {description} -> description) (\s@AssetModelSummary' {} a -> s {description = a} :: AssetModelSummary)++-- | The date the asset model was created, in Unix epoch time.+assetModelSummary_creationDate :: Lens.Lens' AssetModelSummary Prelude.UTCTime+assetModelSummary_creationDate = Lens.lens (\AssetModelSummary' {creationDate} -> creationDate) (\s@AssetModelSummary' {} a -> s {creationDate = a} :: AssetModelSummary) Prelude.. Data._Time++-- | The date the asset model was last updated, in Unix epoch time.+assetModelSummary_lastUpdateDate :: Lens.Lens' AssetModelSummary Prelude.UTCTime+assetModelSummary_lastUpdateDate = Lens.lens (\AssetModelSummary' {lastUpdateDate} -> lastUpdateDate) (\s@AssetModelSummary' {} a -> s {lastUpdateDate = a} :: AssetModelSummary) Prelude.. Data._Time++-- | The current status of the asset model.+assetModelSummary_status :: Lens.Lens' AssetModelSummary AssetModelStatus+assetModelSummary_status = Lens.lens (\AssetModelSummary' {status} -> status) (\s@AssetModelSummary' {} a -> s {status = a} :: AssetModelSummary)++instance Data.FromJSON AssetModelSummary where+  parseJSON =+    Data.withObject+      "AssetModelSummary"+      ( \x ->+          AssetModelSummary'+            Prelude.<$> (x Data..: "id")+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "description")+            Prelude.<*> (x Data..: "creationDate")+            Prelude.<*> (x Data..: "lastUpdateDate")+            Prelude.<*> (x Data..: "status")+      )++instance Prelude.Hashable AssetModelSummary where+  hashWithSalt _salt AssetModelSummary' {..} =+    _salt+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` creationDate+      `Prelude.hashWithSalt` lastUpdateDate+      `Prelude.hashWithSalt` status++instance Prelude.NFData AssetModelSummary where+  rnf AssetModelSummary' {..} =+    Prelude.rnf id+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf creationDate+      `Prelude.seq` Prelude.rnf lastUpdateDate+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/IoTSiteWise/Types/AssetProperty.hs view
@@ -0,0 +1,176 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetProperty+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetProperty where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.PropertyDataType+import Amazonka.IoTSiteWise.Types.PropertyNotification+import qualified Amazonka.Prelude as Prelude++-- | Contains asset property information.+--+-- /See:/ 'newAssetProperty' smart constructor.+data AssetProperty = AssetProperty'+  { -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    alias :: Prelude.Maybe Prelude.Text,+    -- | The data type of the structure for this property. This parameter exists+    -- on properties that have the @STRUCT@ data type.+    dataTypeSpec :: Prelude.Maybe Prelude.Text,+    -- | The asset property\'s notification topic and state. For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+    notification :: Prelude.Maybe PropertyNotification,+    -- | The unit (such as @Newtons@ or @RPM@) of the asset property.+    unit :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    id :: Prelude.Text,+    -- | The name of the property.+    name :: Prelude.Text,+    -- | The data type of the asset property.+    dataType :: PropertyDataType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetProperty' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'alias', 'assetProperty_alias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- 'dataTypeSpec', 'assetProperty_dataTypeSpec' - The data type of the structure for this property. This parameter exists+-- on properties that have the @STRUCT@ data type.+--+-- 'notification', 'assetProperty_notification' - The asset property\'s notification topic and state. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+--+-- 'unit', 'assetProperty_unit' - The unit (such as @Newtons@ or @RPM@) of the asset property.+--+-- 'id', 'assetProperty_id' - The ID of the asset property.+--+-- 'name', 'assetProperty_name' - The name of the property.+--+-- 'dataType', 'assetProperty_dataType' - The data type of the asset property.+newAssetProperty ::+  -- | 'id'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  -- | 'dataType'+  PropertyDataType ->+  AssetProperty+newAssetProperty pId_ pName_ pDataType_ =+  AssetProperty'+    { alias = Prelude.Nothing,+      dataTypeSpec = Prelude.Nothing,+      notification = Prelude.Nothing,+      unit = Prelude.Nothing,+      id = pId_,+      name = pName_,+      dataType = pDataType_+    }++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+assetProperty_alias :: Lens.Lens' AssetProperty (Prelude.Maybe Prelude.Text)+assetProperty_alias = Lens.lens (\AssetProperty' {alias} -> alias) (\s@AssetProperty' {} a -> s {alias = a} :: AssetProperty)++-- | The data type of the structure for this property. This parameter exists+-- on properties that have the @STRUCT@ data type.+assetProperty_dataTypeSpec :: Lens.Lens' AssetProperty (Prelude.Maybe Prelude.Text)+assetProperty_dataTypeSpec = Lens.lens (\AssetProperty' {dataTypeSpec} -> dataTypeSpec) (\s@AssetProperty' {} a -> s {dataTypeSpec = a} :: AssetProperty)++-- | The asset property\'s notification topic and state. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+assetProperty_notification :: Lens.Lens' AssetProperty (Prelude.Maybe PropertyNotification)+assetProperty_notification = Lens.lens (\AssetProperty' {notification} -> notification) (\s@AssetProperty' {} a -> s {notification = a} :: AssetProperty)++-- | The unit (such as @Newtons@ or @RPM@) of the asset property.+assetProperty_unit :: Lens.Lens' AssetProperty (Prelude.Maybe Prelude.Text)+assetProperty_unit = Lens.lens (\AssetProperty' {unit} -> unit) (\s@AssetProperty' {} a -> s {unit = a} :: AssetProperty)++-- | The ID of the asset property.+assetProperty_id :: Lens.Lens' AssetProperty Prelude.Text+assetProperty_id = Lens.lens (\AssetProperty' {id} -> id) (\s@AssetProperty' {} a -> s {id = a} :: AssetProperty)++-- | The name of the property.+assetProperty_name :: Lens.Lens' AssetProperty Prelude.Text+assetProperty_name = Lens.lens (\AssetProperty' {name} -> name) (\s@AssetProperty' {} a -> s {name = a} :: AssetProperty)++-- | The data type of the asset property.+assetProperty_dataType :: Lens.Lens' AssetProperty PropertyDataType+assetProperty_dataType = Lens.lens (\AssetProperty' {dataType} -> dataType) (\s@AssetProperty' {} a -> s {dataType = a} :: AssetProperty)++instance Data.FromJSON AssetProperty where+  parseJSON =+    Data.withObject+      "AssetProperty"+      ( \x ->+          AssetProperty'+            Prelude.<$> (x Data..:? "alias")+            Prelude.<*> (x Data..:? "dataTypeSpec")+            Prelude.<*> (x Data..:? "notification")+            Prelude.<*> (x Data..:? "unit")+            Prelude.<*> (x Data..: "id")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "dataType")+      )++instance Prelude.Hashable AssetProperty where+  hashWithSalt _salt AssetProperty' {..} =+    _salt+      `Prelude.hashWithSalt` alias+      `Prelude.hashWithSalt` dataTypeSpec+      `Prelude.hashWithSalt` notification+      `Prelude.hashWithSalt` unit+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` dataType++instance Prelude.NFData AssetProperty where+  rnf AssetProperty' {..} =+    Prelude.rnf alias+      `Prelude.seq` Prelude.rnf dataTypeSpec+      `Prelude.seq` Prelude.rnf notification+      `Prelude.seq` Prelude.rnf unit+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf dataType
+ gen/Amazonka/IoTSiteWise/Types/AssetPropertySummary.hs view
@@ -0,0 +1,135 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetPropertySummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetPropertySummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.PropertyNotification+import qualified Amazonka.Prelude as Prelude++-- | Contains a summary of a property associated with an asset.+--+-- /See:/ 'newAssetPropertySummary' smart constructor.+data AssetPropertySummary = AssetPropertySummary'+  { -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    alias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the composite model that contains the asset property.+    assetCompositeModelId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the property.+    id :: Prelude.Maybe Prelude.Text,+    notification :: Prelude.Maybe PropertyNotification,+    -- | The unit of measure (such as Newtons or RPM) of the asset property.+    unit :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetPropertySummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'alias', 'assetPropertySummary_alias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- 'assetCompositeModelId', 'assetPropertySummary_assetCompositeModelId' - The ID of the composite model that contains the asset property.+--+-- 'id', 'assetPropertySummary_id' - The ID of the property.+--+-- 'notification', 'assetPropertySummary_notification' - Undocumented member.+--+-- 'unit', 'assetPropertySummary_unit' - The unit of measure (such as Newtons or RPM) of the asset property.+newAssetPropertySummary ::+  AssetPropertySummary+newAssetPropertySummary =+  AssetPropertySummary'+    { alias = Prelude.Nothing,+      assetCompositeModelId = Prelude.Nothing,+      id = Prelude.Nothing,+      notification = Prelude.Nothing,+      unit = Prelude.Nothing+    }++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+assetPropertySummary_alias :: Lens.Lens' AssetPropertySummary (Prelude.Maybe Prelude.Text)+assetPropertySummary_alias = Lens.lens (\AssetPropertySummary' {alias} -> alias) (\s@AssetPropertySummary' {} a -> s {alias = a} :: AssetPropertySummary)++-- | The ID of the composite model that contains the asset property.+assetPropertySummary_assetCompositeModelId :: Lens.Lens' AssetPropertySummary (Prelude.Maybe Prelude.Text)+assetPropertySummary_assetCompositeModelId = Lens.lens (\AssetPropertySummary' {assetCompositeModelId} -> assetCompositeModelId) (\s@AssetPropertySummary' {} a -> s {assetCompositeModelId = a} :: AssetPropertySummary)++-- | The ID of the property.+assetPropertySummary_id :: Lens.Lens' AssetPropertySummary (Prelude.Maybe Prelude.Text)+assetPropertySummary_id = Lens.lens (\AssetPropertySummary' {id} -> id) (\s@AssetPropertySummary' {} a -> s {id = a} :: AssetPropertySummary)++-- | Undocumented member.+assetPropertySummary_notification :: Lens.Lens' AssetPropertySummary (Prelude.Maybe PropertyNotification)+assetPropertySummary_notification = Lens.lens (\AssetPropertySummary' {notification} -> notification) (\s@AssetPropertySummary' {} a -> s {notification = a} :: AssetPropertySummary)++-- | The unit of measure (such as Newtons or RPM) of the asset property.+assetPropertySummary_unit :: Lens.Lens' AssetPropertySummary (Prelude.Maybe Prelude.Text)+assetPropertySummary_unit = Lens.lens (\AssetPropertySummary' {unit} -> unit) (\s@AssetPropertySummary' {} a -> s {unit = a} :: AssetPropertySummary)++instance Data.FromJSON AssetPropertySummary where+  parseJSON =+    Data.withObject+      "AssetPropertySummary"+      ( \x ->+          AssetPropertySummary'+            Prelude.<$> (x Data..:? "alias")+            Prelude.<*> (x Data..:? "assetCompositeModelId")+            Prelude.<*> (x Data..:? "id")+            Prelude.<*> (x Data..:? "notification")+            Prelude.<*> (x Data..:? "unit")+      )++instance Prelude.Hashable AssetPropertySummary where+  hashWithSalt _salt AssetPropertySummary' {..} =+    _salt+      `Prelude.hashWithSalt` alias+      `Prelude.hashWithSalt` assetCompositeModelId+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` notification+      `Prelude.hashWithSalt` unit++instance Prelude.NFData AssetPropertySummary where+  rnf AssetPropertySummary' {..} =+    Prelude.rnf alias+      `Prelude.seq` Prelude.rnf assetCompositeModelId+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf notification+      `Prelude.seq` Prelude.rnf unit
+ gen/Amazonka/IoTSiteWise/Types/AssetPropertyValue.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.IoTSiteWise.Types.AssetPropertyValue+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetPropertyValue where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.Quality+import Amazonka.IoTSiteWise.Types.TimeInNanos+import Amazonka.IoTSiteWise.Types.Variant+import qualified Amazonka.Prelude as Prelude++-- | Contains asset property value information.+--+-- /See:/ 'newAssetPropertyValue' smart constructor.+data AssetPropertyValue = AssetPropertyValue'+  { -- | The quality of the asset property value.+    quality :: Prelude.Maybe Quality,+    -- | The value of the asset property (see @Variant@).+    value :: Variant,+    -- | The timestamp of the asset property value.+    timestamp :: TimeInNanos+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetPropertyValue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'quality', 'assetPropertyValue_quality' - The quality of the asset property value.+--+-- 'value', 'assetPropertyValue_value' - The value of the asset property (see @Variant@).+--+-- 'timestamp', 'assetPropertyValue_timestamp' - The timestamp of the asset property value.+newAssetPropertyValue ::+  -- | 'value'+  Variant ->+  -- | 'timestamp'+  TimeInNanos ->+  AssetPropertyValue+newAssetPropertyValue pValue_ pTimestamp_ =+  AssetPropertyValue'+    { quality = Prelude.Nothing,+      value = pValue_,+      timestamp = pTimestamp_+    }++-- | The quality of the asset property value.+assetPropertyValue_quality :: Lens.Lens' AssetPropertyValue (Prelude.Maybe Quality)+assetPropertyValue_quality = Lens.lens (\AssetPropertyValue' {quality} -> quality) (\s@AssetPropertyValue' {} a -> s {quality = a} :: AssetPropertyValue)++-- | The value of the asset property (see @Variant@).+assetPropertyValue_value :: Lens.Lens' AssetPropertyValue Variant+assetPropertyValue_value = Lens.lens (\AssetPropertyValue' {value} -> value) (\s@AssetPropertyValue' {} a -> s {value = a} :: AssetPropertyValue)++-- | The timestamp of the asset property value.+assetPropertyValue_timestamp :: Lens.Lens' AssetPropertyValue TimeInNanos+assetPropertyValue_timestamp = Lens.lens (\AssetPropertyValue' {timestamp} -> timestamp) (\s@AssetPropertyValue' {} a -> s {timestamp = a} :: AssetPropertyValue)++instance Data.FromJSON AssetPropertyValue where+  parseJSON =+    Data.withObject+      "AssetPropertyValue"+      ( \x ->+          AssetPropertyValue'+            Prelude.<$> (x Data..:? "quality")+            Prelude.<*> (x Data..: "value")+            Prelude.<*> (x Data..: "timestamp")+      )++instance Prelude.Hashable AssetPropertyValue where+  hashWithSalt _salt AssetPropertyValue' {..} =+    _salt+      `Prelude.hashWithSalt` quality+      `Prelude.hashWithSalt` value+      `Prelude.hashWithSalt` timestamp++instance Prelude.NFData AssetPropertyValue where+  rnf AssetPropertyValue' {..} =+    Prelude.rnf quality+      `Prelude.seq` Prelude.rnf value+      `Prelude.seq` Prelude.rnf timestamp++instance Data.ToJSON AssetPropertyValue where+  toJSON AssetPropertyValue' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("quality" Data..=) Prelude.<$> quality,+            Prelude.Just ("value" Data..= value),+            Prelude.Just ("timestamp" Data..= timestamp)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/AssetRelationshipSummary.hs view
@@ -0,0 +1,110 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetRelationshipSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetRelationshipSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetHierarchyInfo+import Amazonka.IoTSiteWise.Types.AssetRelationshipType+import qualified Amazonka.Prelude as Prelude++-- | Contains information about assets that are related to one another.+--+-- /See:/ 'newAssetRelationshipSummary' smart constructor.+data AssetRelationshipSummary = AssetRelationshipSummary'+  { -- | The assets that are related through an asset hierarchy.+    --+    -- This object is present if the @relationshipType@ is @HIERARCHY@.+    hierarchyInfo :: Prelude.Maybe AssetHierarchyInfo,+    -- | The relationship type of the assets in this relationship. This value is+    -- one of the following:+    --+    -- -   @HIERARCHY@ – The assets are related through an asset hierarchy. If+    --     you specify this relationship type, this asset relationship includes+    --     the @hierarchyInfo@ object.+    relationshipType :: AssetRelationshipType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetRelationshipSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'hierarchyInfo', 'assetRelationshipSummary_hierarchyInfo' - The assets that are related through an asset hierarchy.+--+-- This object is present if the @relationshipType@ is @HIERARCHY@.+--+-- 'relationshipType', 'assetRelationshipSummary_relationshipType' - The relationship type of the assets in this relationship. This value is+-- one of the following:+--+-- -   @HIERARCHY@ – The assets are related through an asset hierarchy. If+--     you specify this relationship type, this asset relationship includes+--     the @hierarchyInfo@ object.+newAssetRelationshipSummary ::+  -- | 'relationshipType'+  AssetRelationshipType ->+  AssetRelationshipSummary+newAssetRelationshipSummary pRelationshipType_ =+  AssetRelationshipSummary'+    { hierarchyInfo =+        Prelude.Nothing,+      relationshipType = pRelationshipType_+    }++-- | The assets that are related through an asset hierarchy.+--+-- This object is present if the @relationshipType@ is @HIERARCHY@.+assetRelationshipSummary_hierarchyInfo :: Lens.Lens' AssetRelationshipSummary (Prelude.Maybe AssetHierarchyInfo)+assetRelationshipSummary_hierarchyInfo = Lens.lens (\AssetRelationshipSummary' {hierarchyInfo} -> hierarchyInfo) (\s@AssetRelationshipSummary' {} a -> s {hierarchyInfo = a} :: AssetRelationshipSummary)++-- | The relationship type of the assets in this relationship. This value is+-- one of the following:+--+-- -   @HIERARCHY@ – The assets are related through an asset hierarchy. If+--     you specify this relationship type, this asset relationship includes+--     the @hierarchyInfo@ object.+assetRelationshipSummary_relationshipType :: Lens.Lens' AssetRelationshipSummary AssetRelationshipType+assetRelationshipSummary_relationshipType = Lens.lens (\AssetRelationshipSummary' {relationshipType} -> relationshipType) (\s@AssetRelationshipSummary' {} a -> s {relationshipType = a} :: AssetRelationshipSummary)++instance Data.FromJSON AssetRelationshipSummary where+  parseJSON =+    Data.withObject+      "AssetRelationshipSummary"+      ( \x ->+          AssetRelationshipSummary'+            Prelude.<$> (x Data..:? "hierarchyInfo")+            Prelude.<*> (x Data..: "relationshipType")+      )++instance Prelude.Hashable AssetRelationshipSummary where+  hashWithSalt _salt AssetRelationshipSummary' {..} =+    _salt+      `Prelude.hashWithSalt` hierarchyInfo+      `Prelude.hashWithSalt` relationshipType++instance Prelude.NFData AssetRelationshipSummary where+  rnf AssetRelationshipSummary' {..} =+    Prelude.rnf hierarchyInfo+      `Prelude.seq` Prelude.rnf relationshipType
+ gen/Amazonka/IoTSiteWise/Types/AssetRelationshipType.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetRelationshipType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetRelationshipType+  ( AssetRelationshipType+      ( ..,+        AssetRelationshipType_HIERARCHY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AssetRelationshipType = AssetRelationshipType'+  { fromAssetRelationshipType ::+      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 AssetRelationshipType_HIERARCHY :: AssetRelationshipType+pattern AssetRelationshipType_HIERARCHY = AssetRelationshipType' "HIERARCHY"++{-# COMPLETE+  AssetRelationshipType_HIERARCHY,+  AssetRelationshipType'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/AssetState.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetState+  ( AssetState+      ( ..,+        AssetState_ACTIVE,+        AssetState_CREATING,+        AssetState_DELETING,+        AssetState_FAILED,+        AssetState_UPDATING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AssetState = AssetState'+  { fromAssetState ::+      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 AssetState_ACTIVE :: AssetState+pattern AssetState_ACTIVE = AssetState' "ACTIVE"++pattern AssetState_CREATING :: AssetState+pattern AssetState_CREATING = AssetState' "CREATING"++pattern AssetState_DELETING :: AssetState+pattern AssetState_DELETING = AssetState' "DELETING"++pattern AssetState_FAILED :: AssetState+pattern AssetState_FAILED = AssetState' "FAILED"++pattern AssetState_UPDATING :: AssetState+pattern AssetState_UPDATING = AssetState' "UPDATING"++{-# COMPLETE+  AssetState_ACTIVE,+  AssetState_CREATING,+  AssetState_DELETING,+  AssetState_FAILED,+  AssetState_UPDATING,+  AssetState'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/AssetStatus.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.IoTSiteWise.Types.AssetStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetStatus where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetState+import Amazonka.IoTSiteWise.Types.ErrorDetails+import qualified Amazonka.Prelude as Prelude++-- | Contains information about the current status of an asset. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-and-model-states.html Asset and model states>+-- in the /IoT SiteWise User Guide/.+--+-- /See:/ 'newAssetStatus' smart constructor.+data AssetStatus = AssetStatus'+  { -- | Contains associated error information, if any.+    error :: Prelude.Maybe ErrorDetails,+    -- | The current status of the asset.+    state :: AssetState+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'assetStatus_error' - Contains associated error information, if any.+--+-- 'state', 'assetStatus_state' - The current status of the asset.+newAssetStatus ::+  -- | 'state'+  AssetState ->+  AssetStatus+newAssetStatus pState_ =+  AssetStatus'+    { error = Prelude.Nothing,+      state = pState_+    }++-- | Contains associated error information, if any.+assetStatus_error :: Lens.Lens' AssetStatus (Prelude.Maybe ErrorDetails)+assetStatus_error = Lens.lens (\AssetStatus' {error} -> error) (\s@AssetStatus' {} a -> s {error = a} :: AssetStatus)++-- | The current status of the asset.+assetStatus_state :: Lens.Lens' AssetStatus AssetState+assetStatus_state = Lens.lens (\AssetStatus' {state} -> state) (\s@AssetStatus' {} a -> s {state = a} :: AssetStatus)++instance Data.FromJSON AssetStatus where+  parseJSON =+    Data.withObject+      "AssetStatus"+      ( \x ->+          AssetStatus'+            Prelude.<$> (x Data..:? "error")+            Prelude.<*> (x Data..: "state")+      )++instance Prelude.Hashable AssetStatus where+  hashWithSalt _salt AssetStatus' {..} =+    _salt+      `Prelude.hashWithSalt` error+      `Prelude.hashWithSalt` state++instance Prelude.NFData AssetStatus where+  rnf AssetStatus' {..} =+    Prelude.rnf error `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/IoTSiteWise/Types/AssetSummary.hs view
@@ -0,0 +1,206 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssetSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssetSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetHierarchy+import Amazonka.IoTSiteWise.Types.AssetStatus+import qualified Amazonka.Prelude as Prelude++-- | Contains a summary of an asset.+--+-- /See:/ 'newAssetSummary' smart constructor.+data AssetSummary = AssetSummary'+  { -- | A description for the asset.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset.+    id :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the asset, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+    arn :: Prelude.Text,+    -- | The name of the asset.+    name :: Prelude.Text,+    -- | The ID of the asset model used to create this asset.+    assetModelId :: Prelude.Text,+    -- | The date the asset was created, in Unix epoch time.+    creationDate :: Data.POSIX,+    -- | The date the asset was last updated, in Unix epoch time.+    lastUpdateDate :: Data.POSIX,+    -- | The current status of the asset.+    status :: AssetStatus,+    -- | A list of asset hierarchies that each contain a @hierarchyId@. A+    -- hierarchy specifies allowed parent\/child asset relationships.+    hierarchies :: [AssetHierarchy]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssetSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'assetSummary_description' - A description for the asset.+--+-- 'id', 'assetSummary_id' - The ID of the asset.+--+-- 'arn', 'assetSummary_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+--+-- 'name', 'assetSummary_name' - The name of the asset.+--+-- 'assetModelId', 'assetSummary_assetModelId' - The ID of the asset model used to create this asset.+--+-- 'creationDate', 'assetSummary_creationDate' - The date the asset was created, in Unix epoch time.+--+-- 'lastUpdateDate', 'assetSummary_lastUpdateDate' - The date the asset was last updated, in Unix epoch time.+--+-- 'status', 'assetSummary_status' - The current status of the asset.+--+-- 'hierarchies', 'assetSummary_hierarchies' - A list of asset hierarchies that each contain a @hierarchyId@. A+-- hierarchy specifies allowed parent\/child asset relationships.+newAssetSummary ::+  -- | 'id'+  Prelude.Text ->+  -- | 'arn'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  -- | 'assetModelId'+  Prelude.Text ->+  -- | 'creationDate'+  Prelude.UTCTime ->+  -- | 'lastUpdateDate'+  Prelude.UTCTime ->+  -- | 'status'+  AssetStatus ->+  AssetSummary+newAssetSummary+  pId_+  pArn_+  pName_+  pAssetModelId_+  pCreationDate_+  pLastUpdateDate_+  pStatus_ =+    AssetSummary'+      { description = Prelude.Nothing,+        id = pId_,+        arn = pArn_,+        name = pName_,+        assetModelId = pAssetModelId_,+        creationDate = Data._Time Lens.# pCreationDate_,+        lastUpdateDate = Data._Time Lens.# pLastUpdateDate_,+        status = pStatus_,+        hierarchies = Prelude.mempty+      }++-- | A description for the asset.+assetSummary_description :: Lens.Lens' AssetSummary (Prelude.Maybe Prelude.Text)+assetSummary_description = Lens.lens (\AssetSummary' {description} -> description) (\s@AssetSummary' {} a -> s {description = a} :: AssetSummary)++-- | The ID of the asset.+assetSummary_id :: Lens.Lens' AssetSummary Prelude.Text+assetSummary_id = Lens.lens (\AssetSummary' {id} -> id) (\s@AssetSummary' {} a -> s {id = a} :: AssetSummary)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+assetSummary_arn :: Lens.Lens' AssetSummary Prelude.Text+assetSummary_arn = Lens.lens (\AssetSummary' {arn} -> arn) (\s@AssetSummary' {} a -> s {arn = a} :: AssetSummary)++-- | The name of the asset.+assetSummary_name :: Lens.Lens' AssetSummary Prelude.Text+assetSummary_name = Lens.lens (\AssetSummary' {name} -> name) (\s@AssetSummary' {} a -> s {name = a} :: AssetSummary)++-- | The ID of the asset model used to create this asset.+assetSummary_assetModelId :: Lens.Lens' AssetSummary Prelude.Text+assetSummary_assetModelId = Lens.lens (\AssetSummary' {assetModelId} -> assetModelId) (\s@AssetSummary' {} a -> s {assetModelId = a} :: AssetSummary)++-- | The date the asset was created, in Unix epoch time.+assetSummary_creationDate :: Lens.Lens' AssetSummary Prelude.UTCTime+assetSummary_creationDate = Lens.lens (\AssetSummary' {creationDate} -> creationDate) (\s@AssetSummary' {} a -> s {creationDate = a} :: AssetSummary) Prelude.. Data._Time++-- | The date the asset was last updated, in Unix epoch time.+assetSummary_lastUpdateDate :: Lens.Lens' AssetSummary Prelude.UTCTime+assetSummary_lastUpdateDate = Lens.lens (\AssetSummary' {lastUpdateDate} -> lastUpdateDate) (\s@AssetSummary' {} a -> s {lastUpdateDate = a} :: AssetSummary) Prelude.. Data._Time++-- | The current status of the asset.+assetSummary_status :: Lens.Lens' AssetSummary AssetStatus+assetSummary_status = Lens.lens (\AssetSummary' {status} -> status) (\s@AssetSummary' {} a -> s {status = a} :: AssetSummary)++-- | A list of asset hierarchies that each contain a @hierarchyId@. A+-- hierarchy specifies allowed parent\/child asset relationships.+assetSummary_hierarchies :: Lens.Lens' AssetSummary [AssetHierarchy]+assetSummary_hierarchies = Lens.lens (\AssetSummary' {hierarchies} -> hierarchies) (\s@AssetSummary' {} a -> s {hierarchies = a} :: AssetSummary) Prelude.. Lens.coerced++instance Data.FromJSON AssetSummary where+  parseJSON =+    Data.withObject+      "AssetSummary"+      ( \x ->+          AssetSummary'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..: "id")+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "assetModelId")+            Prelude.<*> (x Data..: "creationDate")+            Prelude.<*> (x Data..: "lastUpdateDate")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..:? "hierarchies" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable AssetSummary where+  hashWithSalt _salt AssetSummary' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` assetModelId+      `Prelude.hashWithSalt` creationDate+      `Prelude.hashWithSalt` lastUpdateDate+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` hierarchies++instance Prelude.NFData AssetSummary where+  rnf AssetSummary' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf assetModelId+      `Prelude.seq` Prelude.rnf creationDate+      `Prelude.seq` Prelude.rnf lastUpdateDate+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf hierarchies
+ gen/Amazonka/IoTSiteWise/Types/AssociatedAssetsSummary.hs view
@@ -0,0 +1,208 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.AssociatedAssetsSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AssociatedAssetsSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetHierarchy+import Amazonka.IoTSiteWise.Types.AssetStatus+import qualified Amazonka.Prelude as Prelude++-- | Contains a summary of an associated asset.+--+-- /See:/ 'newAssociatedAssetsSummary' smart constructor.+data AssociatedAssetsSummary = AssociatedAssetsSummary'+  { -- | A description for the asset.+    description :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset.+    id :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the asset, which has the following format.+    --+    -- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+    arn :: Prelude.Text,+    -- | The name of the asset.+    name :: Prelude.Text,+    -- | The ID of the asset model used to create the asset.+    assetModelId :: Prelude.Text,+    -- | The date the asset was created, in Unix epoch time.+    creationDate :: Data.POSIX,+    -- | The date the asset was last updated, in Unix epoch time.+    lastUpdateDate :: Data.POSIX,+    -- | The current status of the asset.+    status :: AssetStatus,+    -- | A list of asset hierarchies that each contain a @hierarchyId@. A+    -- hierarchy specifies allowed parent\/child asset relationships.+    hierarchies :: [AssetHierarchy]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociatedAssetsSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'associatedAssetsSummary_description' - A description for the asset.+--+-- 'id', 'associatedAssetsSummary_id' - The ID of the asset.+--+-- 'arn', 'associatedAssetsSummary_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+--+-- 'name', 'associatedAssetsSummary_name' - The name of the asset.+--+-- 'assetModelId', 'associatedAssetsSummary_assetModelId' - The ID of the asset model used to create the asset.+--+-- 'creationDate', 'associatedAssetsSummary_creationDate' - The date the asset was created, in Unix epoch time.+--+-- 'lastUpdateDate', 'associatedAssetsSummary_lastUpdateDate' - The date the asset was last updated, in Unix epoch time.+--+-- 'status', 'associatedAssetsSummary_status' - The current status of the asset.+--+-- 'hierarchies', 'associatedAssetsSummary_hierarchies' - A list of asset hierarchies that each contain a @hierarchyId@. A+-- hierarchy specifies allowed parent\/child asset relationships.+newAssociatedAssetsSummary ::+  -- | 'id'+  Prelude.Text ->+  -- | 'arn'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  -- | 'assetModelId'+  Prelude.Text ->+  -- | 'creationDate'+  Prelude.UTCTime ->+  -- | 'lastUpdateDate'+  Prelude.UTCTime ->+  -- | 'status'+  AssetStatus ->+  AssociatedAssetsSummary+newAssociatedAssetsSummary+  pId_+  pArn_+  pName_+  pAssetModelId_+  pCreationDate_+  pLastUpdateDate_+  pStatus_ =+    AssociatedAssetsSummary'+      { description =+          Prelude.Nothing,+        id = pId_,+        arn = pArn_,+        name = pName_,+        assetModelId = pAssetModelId_,+        creationDate = Data._Time Lens.# pCreationDate_,+        lastUpdateDate =+          Data._Time Lens.# pLastUpdateDate_,+        status = pStatus_,+        hierarchies = Prelude.mempty+      }++-- | A description for the asset.+associatedAssetsSummary_description :: Lens.Lens' AssociatedAssetsSummary (Prelude.Maybe Prelude.Text)+associatedAssetsSummary_description = Lens.lens (\AssociatedAssetsSummary' {description} -> description) (\s@AssociatedAssetsSummary' {} a -> s {description = a} :: AssociatedAssetsSummary)++-- | The ID of the asset.+associatedAssetsSummary_id :: Lens.Lens' AssociatedAssetsSummary Prelude.Text+associatedAssetsSummary_id = Lens.lens (\AssociatedAssetsSummary' {id} -> id) (\s@AssociatedAssetsSummary' {} a -> s {id = a} :: AssociatedAssetsSummary)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the asset, which has the following format.+--+-- @arn:${Partition}:iotsitewise:${Region}:${Account}:asset\/${AssetId}@+associatedAssetsSummary_arn :: Lens.Lens' AssociatedAssetsSummary Prelude.Text+associatedAssetsSummary_arn = Lens.lens (\AssociatedAssetsSummary' {arn} -> arn) (\s@AssociatedAssetsSummary' {} a -> s {arn = a} :: AssociatedAssetsSummary)++-- | The name of the asset.+associatedAssetsSummary_name :: Lens.Lens' AssociatedAssetsSummary Prelude.Text+associatedAssetsSummary_name = Lens.lens (\AssociatedAssetsSummary' {name} -> name) (\s@AssociatedAssetsSummary' {} a -> s {name = a} :: AssociatedAssetsSummary)++-- | The ID of the asset model used to create the asset.+associatedAssetsSummary_assetModelId :: Lens.Lens' AssociatedAssetsSummary Prelude.Text+associatedAssetsSummary_assetModelId = Lens.lens (\AssociatedAssetsSummary' {assetModelId} -> assetModelId) (\s@AssociatedAssetsSummary' {} a -> s {assetModelId = a} :: AssociatedAssetsSummary)++-- | The date the asset was created, in Unix epoch time.+associatedAssetsSummary_creationDate :: Lens.Lens' AssociatedAssetsSummary Prelude.UTCTime+associatedAssetsSummary_creationDate = Lens.lens (\AssociatedAssetsSummary' {creationDate} -> creationDate) (\s@AssociatedAssetsSummary' {} a -> s {creationDate = a} :: AssociatedAssetsSummary) Prelude.. Data._Time++-- | The date the asset was last updated, in Unix epoch time.+associatedAssetsSummary_lastUpdateDate :: Lens.Lens' AssociatedAssetsSummary Prelude.UTCTime+associatedAssetsSummary_lastUpdateDate = Lens.lens (\AssociatedAssetsSummary' {lastUpdateDate} -> lastUpdateDate) (\s@AssociatedAssetsSummary' {} a -> s {lastUpdateDate = a} :: AssociatedAssetsSummary) Prelude.. Data._Time++-- | The current status of the asset.+associatedAssetsSummary_status :: Lens.Lens' AssociatedAssetsSummary AssetStatus+associatedAssetsSummary_status = Lens.lens (\AssociatedAssetsSummary' {status} -> status) (\s@AssociatedAssetsSummary' {} a -> s {status = a} :: AssociatedAssetsSummary)++-- | A list of asset hierarchies that each contain a @hierarchyId@. A+-- hierarchy specifies allowed parent\/child asset relationships.+associatedAssetsSummary_hierarchies :: Lens.Lens' AssociatedAssetsSummary [AssetHierarchy]+associatedAssetsSummary_hierarchies = Lens.lens (\AssociatedAssetsSummary' {hierarchies} -> hierarchies) (\s@AssociatedAssetsSummary' {} a -> s {hierarchies = a} :: AssociatedAssetsSummary) Prelude.. Lens.coerced++instance Data.FromJSON AssociatedAssetsSummary where+  parseJSON =+    Data.withObject+      "AssociatedAssetsSummary"+      ( \x ->+          AssociatedAssetsSummary'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..: "id")+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "assetModelId")+            Prelude.<*> (x Data..: "creationDate")+            Prelude.<*> (x Data..: "lastUpdateDate")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..:? "hierarchies" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable AssociatedAssetsSummary where+  hashWithSalt _salt AssociatedAssetsSummary' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` assetModelId+      `Prelude.hashWithSalt` creationDate+      `Prelude.hashWithSalt` lastUpdateDate+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` hierarchies++instance Prelude.NFData AssociatedAssetsSummary where+  rnf AssociatedAssetsSummary' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf assetModelId+      `Prelude.seq` Prelude.rnf creationDate+      `Prelude.seq` Prelude.rnf lastUpdateDate+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf hierarchies
+ gen/Amazonka/IoTSiteWise/Types/Attribute.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.Attribute+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Attribute 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 an asset attribute property. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html#attributes Attributes>+-- in the /IoT SiteWise User Guide/.+--+-- /See:/ 'newAttribute' smart constructor.+data Attribute = Attribute'+  { -- | The default value of the asset model property attribute. All assets that+    -- you create from the asset model contain this attribute value. You can+    -- update an attribute\'s value after you create an asset. For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-attribute-values.html Updating attribute values>+    -- in the /IoT SiteWise User Guide/.+    defaultValue :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Attribute' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'defaultValue', 'attribute_defaultValue' - The default value of the asset model property attribute. All assets that+-- you create from the asset model contain this attribute value. You can+-- update an attribute\'s value after you create an asset. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-attribute-values.html Updating attribute values>+-- in the /IoT SiteWise User Guide/.+newAttribute ::+  Attribute+newAttribute =+  Attribute' {defaultValue = Prelude.Nothing}++-- | The default value of the asset model property attribute. All assets that+-- you create from the asset model contain this attribute value. You can+-- update an attribute\'s value after you create an asset. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-attribute-values.html Updating attribute values>+-- in the /IoT SiteWise User Guide/.+attribute_defaultValue :: Lens.Lens' Attribute (Prelude.Maybe Prelude.Text)+attribute_defaultValue = Lens.lens (\Attribute' {defaultValue} -> defaultValue) (\s@Attribute' {} a -> s {defaultValue = a} :: Attribute)++instance Data.FromJSON Attribute where+  parseJSON =+    Data.withObject+      "Attribute"+      ( \x ->+          Attribute' Prelude.<$> (x Data..:? "defaultValue")+      )++instance Prelude.Hashable Attribute where+  hashWithSalt _salt Attribute' {..} =+    _salt `Prelude.hashWithSalt` defaultValue++instance Prelude.NFData Attribute where+  rnf Attribute' {..} = Prelude.rnf defaultValue++instance Data.ToJSON Attribute where+  toJSON Attribute' {..} =+    Data.object+      ( Prelude.catMaybes+          [("defaultValue" Data..=) Prelude.<$> defaultValue]+      )
+ gen/Amazonka/IoTSiteWise/Types/AuthMode.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.IoTSiteWise.Types.AuthMode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.AuthMode+  ( AuthMode+      ( ..,+        AuthMode_IAM,+        AuthMode_SSO+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype AuthMode = AuthMode'+  { fromAuthMode ::+      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 AuthMode_IAM :: AuthMode+pattern AuthMode_IAM = AuthMode' "IAM"++pattern AuthMode_SSO :: AuthMode+pattern AuthMode_SSO = AuthMode' "SSO"++{-# COMPLETE+  AuthMode_IAM,+  AuthMode_SSO,+  AuthMode'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/BatchEntryCompletionStatus.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.IoTSiteWise.Types.BatchEntryCompletionStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchEntryCompletionStatus+  ( BatchEntryCompletionStatus+      ( ..,+        BatchEntryCompletionStatus_ERROR,+        BatchEntryCompletionStatus_SUCCESS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype BatchEntryCompletionStatus = BatchEntryCompletionStatus'+  { fromBatchEntryCompletionStatus ::+      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 BatchEntryCompletionStatus_ERROR :: BatchEntryCompletionStatus+pattern BatchEntryCompletionStatus_ERROR = BatchEntryCompletionStatus' "ERROR"++pattern BatchEntryCompletionStatus_SUCCESS :: BatchEntryCompletionStatus+pattern BatchEntryCompletionStatus_SUCCESS = BatchEntryCompletionStatus' "SUCCESS"++{-# COMPLETE+  BatchEntryCompletionStatus_ERROR,+  BatchEntryCompletionStatus_SUCCESS,+  BatchEntryCompletionStatus'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyAggregatesEntry.hs view
@@ -0,0 +1,252 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AggregateType+import Amazonka.IoTSiteWise.Types.Quality+import Amazonka.IoTSiteWise.Types.TimeOrdering+import qualified Amazonka.Prelude as Prelude++-- | Contains information for an asset property aggregate entry that is+-- associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html BatchGetAssetPropertyAggregates>+-- API.+--+-- To identify an asset property, you must specify one of the following:+--+-- -   The @assetId@ and @propertyId@ of an asset property.+--+-- -   A @propertyAlias@, which is a data stream alias (for example,+--     @\/company\/windfarm\/3\/turbine\/7\/temperature@). To define an+--     asset property\'s alias, see+--     <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+--+-- /See:/ 'newBatchGetAssetPropertyAggregatesEntry' smart constructor.+data BatchGetAssetPropertyAggregatesEntry = BatchGetAssetPropertyAggregatesEntry'+  { -- | The ID of the asset in which the asset property was created.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    propertyAlias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Maybe Prelude.Text,+    -- | The quality by which to filter asset data.+    qualities :: Prelude.Maybe (Prelude.NonEmpty Quality),+    -- | The chronological sorting order of the requested information.+    --+    -- Default: @ASCENDING@+    timeOrdering :: Prelude.Maybe TimeOrdering,+    -- | The ID of the entry.+    entryId :: Prelude.Text,+    -- | The data aggregating function.+    aggregateTypes :: Prelude.NonEmpty AggregateType,+    -- | The time interval over which to aggregate data.+    resolution :: Prelude.Text,+    -- | The exclusive start of the range from which to query historical data,+    -- expressed in seconds in Unix epoch time.+    startDate :: Data.POSIX,+    -- | The inclusive end of the range from which to query historical data,+    -- expressed in seconds in Unix epoch time.+    endDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyAggregatesEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetId', 'batchGetAssetPropertyAggregatesEntry_assetId' - The ID of the asset in which the asset property was created.+--+-- 'propertyAlias', 'batchGetAssetPropertyAggregatesEntry_propertyAlias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- 'propertyId', 'batchGetAssetPropertyAggregatesEntry_propertyId' - The ID of the asset property.+--+-- 'qualities', 'batchGetAssetPropertyAggregatesEntry_qualities' - The quality by which to filter asset data.+--+-- 'timeOrdering', 'batchGetAssetPropertyAggregatesEntry_timeOrdering' - The chronological sorting order of the requested information.+--+-- Default: @ASCENDING@+--+-- 'entryId', 'batchGetAssetPropertyAggregatesEntry_entryId' - The ID of the entry.+--+-- 'aggregateTypes', 'batchGetAssetPropertyAggregatesEntry_aggregateTypes' - The data aggregating function.+--+-- 'resolution', 'batchGetAssetPropertyAggregatesEntry_resolution' - The time interval over which to aggregate data.+--+-- 'startDate', 'batchGetAssetPropertyAggregatesEntry_startDate' - The exclusive start of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+--+-- 'endDate', 'batchGetAssetPropertyAggregatesEntry_endDate' - The inclusive end of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+newBatchGetAssetPropertyAggregatesEntry ::+  -- | 'entryId'+  Prelude.Text ->+  -- | 'aggregateTypes'+  Prelude.NonEmpty AggregateType ->+  -- | 'resolution'+  Prelude.Text ->+  -- | 'startDate'+  Prelude.UTCTime ->+  -- | 'endDate'+  Prelude.UTCTime ->+  BatchGetAssetPropertyAggregatesEntry+newBatchGetAssetPropertyAggregatesEntry+  pEntryId_+  pAggregateTypes_+  pResolution_+  pStartDate_+  pEndDate_ =+    BatchGetAssetPropertyAggregatesEntry'+      { assetId =+          Prelude.Nothing,+        propertyAlias = Prelude.Nothing,+        propertyId = Prelude.Nothing,+        qualities = Prelude.Nothing,+        timeOrdering = Prelude.Nothing,+        entryId = pEntryId_,+        aggregateTypes =+          Lens.coerced+            Lens.# pAggregateTypes_,+        resolution = pResolution_,+        startDate =+          Data._Time Lens.# pStartDate_,+        endDate = Data._Time Lens.# pEndDate_+      }++-- | The ID of the asset in which the asset property was created.+batchGetAssetPropertyAggregatesEntry_assetId :: Lens.Lens' BatchGetAssetPropertyAggregatesEntry (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyAggregatesEntry_assetId = Lens.lens (\BatchGetAssetPropertyAggregatesEntry' {assetId} -> assetId) (\s@BatchGetAssetPropertyAggregatesEntry' {} a -> s {assetId = a} :: BatchGetAssetPropertyAggregatesEntry)++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+batchGetAssetPropertyAggregatesEntry_propertyAlias :: Lens.Lens' BatchGetAssetPropertyAggregatesEntry (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyAggregatesEntry_propertyAlias = Lens.lens (\BatchGetAssetPropertyAggregatesEntry' {propertyAlias} -> propertyAlias) (\s@BatchGetAssetPropertyAggregatesEntry' {} a -> s {propertyAlias = a} :: BatchGetAssetPropertyAggregatesEntry)++-- | The ID of the asset property.+batchGetAssetPropertyAggregatesEntry_propertyId :: Lens.Lens' BatchGetAssetPropertyAggregatesEntry (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyAggregatesEntry_propertyId = Lens.lens (\BatchGetAssetPropertyAggregatesEntry' {propertyId} -> propertyId) (\s@BatchGetAssetPropertyAggregatesEntry' {} a -> s {propertyId = a} :: BatchGetAssetPropertyAggregatesEntry)++-- | The quality by which to filter asset data.+batchGetAssetPropertyAggregatesEntry_qualities :: Lens.Lens' BatchGetAssetPropertyAggregatesEntry (Prelude.Maybe (Prelude.NonEmpty Quality))+batchGetAssetPropertyAggregatesEntry_qualities = Lens.lens (\BatchGetAssetPropertyAggregatesEntry' {qualities} -> qualities) (\s@BatchGetAssetPropertyAggregatesEntry' {} a -> s {qualities = a} :: BatchGetAssetPropertyAggregatesEntry) Prelude.. Lens.mapping Lens.coerced++-- | The chronological sorting order of the requested information.+--+-- Default: @ASCENDING@+batchGetAssetPropertyAggregatesEntry_timeOrdering :: Lens.Lens' BatchGetAssetPropertyAggregatesEntry (Prelude.Maybe TimeOrdering)+batchGetAssetPropertyAggregatesEntry_timeOrdering = Lens.lens (\BatchGetAssetPropertyAggregatesEntry' {timeOrdering} -> timeOrdering) (\s@BatchGetAssetPropertyAggregatesEntry' {} a -> s {timeOrdering = a} :: BatchGetAssetPropertyAggregatesEntry)++-- | The ID of the entry.+batchGetAssetPropertyAggregatesEntry_entryId :: Lens.Lens' BatchGetAssetPropertyAggregatesEntry Prelude.Text+batchGetAssetPropertyAggregatesEntry_entryId = Lens.lens (\BatchGetAssetPropertyAggregatesEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyAggregatesEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyAggregatesEntry)++-- | The data aggregating function.+batchGetAssetPropertyAggregatesEntry_aggregateTypes :: Lens.Lens' BatchGetAssetPropertyAggregatesEntry (Prelude.NonEmpty AggregateType)+batchGetAssetPropertyAggregatesEntry_aggregateTypes = Lens.lens (\BatchGetAssetPropertyAggregatesEntry' {aggregateTypes} -> aggregateTypes) (\s@BatchGetAssetPropertyAggregatesEntry' {} a -> s {aggregateTypes = a} :: BatchGetAssetPropertyAggregatesEntry) Prelude.. Lens.coerced++-- | The time interval over which to aggregate data.+batchGetAssetPropertyAggregatesEntry_resolution :: Lens.Lens' BatchGetAssetPropertyAggregatesEntry Prelude.Text+batchGetAssetPropertyAggregatesEntry_resolution = Lens.lens (\BatchGetAssetPropertyAggregatesEntry' {resolution} -> resolution) (\s@BatchGetAssetPropertyAggregatesEntry' {} a -> s {resolution = a} :: BatchGetAssetPropertyAggregatesEntry)++-- | The exclusive start of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+batchGetAssetPropertyAggregatesEntry_startDate :: Lens.Lens' BatchGetAssetPropertyAggregatesEntry Prelude.UTCTime+batchGetAssetPropertyAggregatesEntry_startDate = Lens.lens (\BatchGetAssetPropertyAggregatesEntry' {startDate} -> startDate) (\s@BatchGetAssetPropertyAggregatesEntry' {} a -> s {startDate = a} :: BatchGetAssetPropertyAggregatesEntry) Prelude.. Data._Time++-- | The inclusive end of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+batchGetAssetPropertyAggregatesEntry_endDate :: Lens.Lens' BatchGetAssetPropertyAggregatesEntry Prelude.UTCTime+batchGetAssetPropertyAggregatesEntry_endDate = Lens.lens (\BatchGetAssetPropertyAggregatesEntry' {endDate} -> endDate) (\s@BatchGetAssetPropertyAggregatesEntry' {} a -> s {endDate = a} :: BatchGetAssetPropertyAggregatesEntry) Prelude.. Data._Time++instance+  Prelude.Hashable+    BatchGetAssetPropertyAggregatesEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyAggregatesEntry' {..} =+      _salt+        `Prelude.hashWithSalt` assetId+        `Prelude.hashWithSalt` propertyAlias+        `Prelude.hashWithSalt` propertyId+        `Prelude.hashWithSalt` qualities+        `Prelude.hashWithSalt` timeOrdering+        `Prelude.hashWithSalt` entryId+        `Prelude.hashWithSalt` aggregateTypes+        `Prelude.hashWithSalt` resolution+        `Prelude.hashWithSalt` startDate+        `Prelude.hashWithSalt` endDate++instance+  Prelude.NFData+    BatchGetAssetPropertyAggregatesEntry+  where+  rnf BatchGetAssetPropertyAggregatesEntry' {..} =+    Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf propertyAlias+      `Prelude.seq` Prelude.rnf propertyId+      `Prelude.seq` Prelude.rnf qualities+      `Prelude.seq` Prelude.rnf timeOrdering+      `Prelude.seq` Prelude.rnf entryId+      `Prelude.seq` Prelude.rnf aggregateTypes+      `Prelude.seq` Prelude.rnf resolution+      `Prelude.seq` Prelude.rnf startDate+      `Prelude.seq` Prelude.rnf endDate++instance+  Data.ToJSON+    BatchGetAssetPropertyAggregatesEntry+  where+  toJSON BatchGetAssetPropertyAggregatesEntry' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("assetId" Data..=) Prelude.<$> assetId,+            ("propertyAlias" Data..=) Prelude.<$> propertyAlias,+            ("propertyId" Data..=) Prelude.<$> propertyId,+            ("qualities" Data..=) Prelude.<$> qualities,+            ("timeOrdering" Data..=) Prelude.<$> timeOrdering,+            Prelude.Just ("entryId" Data..= entryId),+            Prelude.Just+              ("aggregateTypes" Data..= aggregateTypes),+            Prelude.Just ("resolution" Data..= resolution),+            Prelude.Just ("startDate" Data..= startDate),+            Prelude.Just ("endDate" Data..= endDate)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyAggregatesErrorCode.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.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorCode+  ( BatchGetAssetPropertyAggregatesErrorCode+      ( ..,+        BatchGetAssetPropertyAggregatesErrorCode_AccessDeniedException,+        BatchGetAssetPropertyAggregatesErrorCode_InvalidRequestException,+        BatchGetAssetPropertyAggregatesErrorCode_ResourceNotFoundException+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype BatchGetAssetPropertyAggregatesErrorCode = BatchGetAssetPropertyAggregatesErrorCode'+  { fromBatchGetAssetPropertyAggregatesErrorCode ::+      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 BatchGetAssetPropertyAggregatesErrorCode_AccessDeniedException :: BatchGetAssetPropertyAggregatesErrorCode+pattern BatchGetAssetPropertyAggregatesErrorCode_AccessDeniedException = BatchGetAssetPropertyAggregatesErrorCode' "AccessDeniedException"++pattern BatchGetAssetPropertyAggregatesErrorCode_InvalidRequestException :: BatchGetAssetPropertyAggregatesErrorCode+pattern BatchGetAssetPropertyAggregatesErrorCode_InvalidRequestException = BatchGetAssetPropertyAggregatesErrorCode' "InvalidRequestException"++pattern BatchGetAssetPropertyAggregatesErrorCode_ResourceNotFoundException :: BatchGetAssetPropertyAggregatesErrorCode+pattern BatchGetAssetPropertyAggregatesErrorCode_ResourceNotFoundException = BatchGetAssetPropertyAggregatesErrorCode' "ResourceNotFoundException"++{-# COMPLETE+  BatchGetAssetPropertyAggregatesErrorCode_AccessDeniedException,+  BatchGetAssetPropertyAggregatesErrorCode_InvalidRequestException,+  BatchGetAssetPropertyAggregatesErrorCode_ResourceNotFoundException,+  BatchGetAssetPropertyAggregatesErrorCode'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyAggregatesErrorEntry.hs view
@@ -0,0 +1,121 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorCode+import qualified Amazonka.Prelude as Prelude++-- | Contains error information for an asset property aggregate entry that is+-- associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html BatchGetAssetPropertyAggregates>+-- API.+--+-- /See:/ 'newBatchGetAssetPropertyAggregatesErrorEntry' smart constructor.+data BatchGetAssetPropertyAggregatesErrorEntry = BatchGetAssetPropertyAggregatesErrorEntry'+  { -- | The error code.+    errorCode :: BatchGetAssetPropertyAggregatesErrorCode,+    -- | The associated error message.+    errorMessage :: Prelude.Text,+    -- | The ID of the entry.+    entryId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyAggregatesErrorEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorCode', 'batchGetAssetPropertyAggregatesErrorEntry_errorCode' - The error code.+--+-- 'errorMessage', 'batchGetAssetPropertyAggregatesErrorEntry_errorMessage' - The associated error message.+--+-- 'entryId', 'batchGetAssetPropertyAggregatesErrorEntry_entryId' - The ID of the entry.+newBatchGetAssetPropertyAggregatesErrorEntry ::+  -- | 'errorCode'+  BatchGetAssetPropertyAggregatesErrorCode ->+  -- | 'errorMessage'+  Prelude.Text ->+  -- | 'entryId'+  Prelude.Text ->+  BatchGetAssetPropertyAggregatesErrorEntry+newBatchGetAssetPropertyAggregatesErrorEntry+  pErrorCode_+  pErrorMessage_+  pEntryId_ =+    BatchGetAssetPropertyAggregatesErrorEntry'+      { errorCode =+          pErrorCode_,+        errorMessage = pErrorMessage_,+        entryId = pEntryId_+      }++-- | The error code.+batchGetAssetPropertyAggregatesErrorEntry_errorCode :: Lens.Lens' BatchGetAssetPropertyAggregatesErrorEntry BatchGetAssetPropertyAggregatesErrorCode+batchGetAssetPropertyAggregatesErrorEntry_errorCode = Lens.lens (\BatchGetAssetPropertyAggregatesErrorEntry' {errorCode} -> errorCode) (\s@BatchGetAssetPropertyAggregatesErrorEntry' {} a -> s {errorCode = a} :: BatchGetAssetPropertyAggregatesErrorEntry)++-- | The associated error message.+batchGetAssetPropertyAggregatesErrorEntry_errorMessage :: Lens.Lens' BatchGetAssetPropertyAggregatesErrorEntry Prelude.Text+batchGetAssetPropertyAggregatesErrorEntry_errorMessage = Lens.lens (\BatchGetAssetPropertyAggregatesErrorEntry' {errorMessage} -> errorMessage) (\s@BatchGetAssetPropertyAggregatesErrorEntry' {} a -> s {errorMessage = a} :: BatchGetAssetPropertyAggregatesErrorEntry)++-- | The ID of the entry.+batchGetAssetPropertyAggregatesErrorEntry_entryId :: Lens.Lens' BatchGetAssetPropertyAggregatesErrorEntry Prelude.Text+batchGetAssetPropertyAggregatesErrorEntry_entryId = Lens.lens (\BatchGetAssetPropertyAggregatesErrorEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyAggregatesErrorEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyAggregatesErrorEntry)++instance+  Data.FromJSON+    BatchGetAssetPropertyAggregatesErrorEntry+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyAggregatesErrorEntry"+      ( \x ->+          BatchGetAssetPropertyAggregatesErrorEntry'+            Prelude.<$> (x Data..: "errorCode")+            Prelude.<*> (x Data..: "errorMessage")+            Prelude.<*> (x Data..: "entryId")+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyAggregatesErrorEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyAggregatesErrorEntry' {..} =+      _salt+        `Prelude.hashWithSalt` errorCode+        `Prelude.hashWithSalt` errorMessage+        `Prelude.hashWithSalt` entryId++instance+  Prelude.NFData+    BatchGetAssetPropertyAggregatesErrorEntry+  where+  rnf BatchGetAssetPropertyAggregatesErrorEntry' {..} =+    Prelude.rnf errorCode+      `Prelude.seq` Prelude.rnf errorMessage+      `Prelude.seq` Prelude.rnf entryId
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyAggregatesErrorInfo.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.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorInfo+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorInfo where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorCode+import qualified Amazonka.Prelude as Prelude++-- | Contains the error code and the timestamp for an asset property+-- aggregate entry that is associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html BatchGetAssetPropertyAggregates>+-- API.+--+-- /See:/ 'newBatchGetAssetPropertyAggregatesErrorInfo' smart constructor.+data BatchGetAssetPropertyAggregatesErrorInfo = BatchGetAssetPropertyAggregatesErrorInfo'+  { -- | The error code.+    errorCode :: BatchGetAssetPropertyAggregatesErrorCode,+    -- | The date the error occurred, in Unix epoch time.+    errorTimestamp :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyAggregatesErrorInfo' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorCode', 'batchGetAssetPropertyAggregatesErrorInfo_errorCode' - The error code.+--+-- 'errorTimestamp', 'batchGetAssetPropertyAggregatesErrorInfo_errorTimestamp' - The date the error occurred, in Unix epoch time.+newBatchGetAssetPropertyAggregatesErrorInfo ::+  -- | 'errorCode'+  BatchGetAssetPropertyAggregatesErrorCode ->+  -- | 'errorTimestamp'+  Prelude.UTCTime ->+  BatchGetAssetPropertyAggregatesErrorInfo+newBatchGetAssetPropertyAggregatesErrorInfo+  pErrorCode_+  pErrorTimestamp_ =+    BatchGetAssetPropertyAggregatesErrorInfo'+      { errorCode =+          pErrorCode_,+        errorTimestamp =+          Data._Time+            Lens.# pErrorTimestamp_+      }++-- | The error code.+batchGetAssetPropertyAggregatesErrorInfo_errorCode :: Lens.Lens' BatchGetAssetPropertyAggregatesErrorInfo BatchGetAssetPropertyAggregatesErrorCode+batchGetAssetPropertyAggregatesErrorInfo_errorCode = Lens.lens (\BatchGetAssetPropertyAggregatesErrorInfo' {errorCode} -> errorCode) (\s@BatchGetAssetPropertyAggregatesErrorInfo' {} a -> s {errorCode = a} :: BatchGetAssetPropertyAggregatesErrorInfo)++-- | The date the error occurred, in Unix epoch time.+batchGetAssetPropertyAggregatesErrorInfo_errorTimestamp :: Lens.Lens' BatchGetAssetPropertyAggregatesErrorInfo Prelude.UTCTime+batchGetAssetPropertyAggregatesErrorInfo_errorTimestamp = Lens.lens (\BatchGetAssetPropertyAggregatesErrorInfo' {errorTimestamp} -> errorTimestamp) (\s@BatchGetAssetPropertyAggregatesErrorInfo' {} a -> s {errorTimestamp = a} :: BatchGetAssetPropertyAggregatesErrorInfo) Prelude.. Data._Time++instance+  Data.FromJSON+    BatchGetAssetPropertyAggregatesErrorInfo+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyAggregatesErrorInfo"+      ( \x ->+          BatchGetAssetPropertyAggregatesErrorInfo'+            Prelude.<$> (x Data..: "errorCode")+            Prelude.<*> (x Data..: "errorTimestamp")+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyAggregatesErrorInfo+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyAggregatesErrorInfo' {..} =+      _salt+        `Prelude.hashWithSalt` errorCode+        `Prelude.hashWithSalt` errorTimestamp++instance+  Prelude.NFData+    BatchGetAssetPropertyAggregatesErrorInfo+  where+  rnf BatchGetAssetPropertyAggregatesErrorInfo' {..} =+    Prelude.rnf errorCode+      `Prelude.seq` Prelude.rnf errorTimestamp
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyAggregatesSkippedEntry.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.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesSkippedEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesSkippedEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.BatchEntryCompletionStatus+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesErrorInfo+import qualified Amazonka.Prelude as Prelude++-- | Contains information for an entry that has been processed by the+-- previous+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html BatchGetAssetPropertyAggregates>+-- request.+--+-- /See:/ 'newBatchGetAssetPropertyAggregatesSkippedEntry' smart constructor.+data BatchGetAssetPropertyAggregatesSkippedEntry = BatchGetAssetPropertyAggregatesSkippedEntry'+  { -- | The error information, such as the error code and the timestamp.+    errorInfo :: Prelude.Maybe BatchGetAssetPropertyAggregatesErrorInfo,+    -- | The ID of the entry.+    entryId :: Prelude.Text,+    -- | The completion status of each entry that is associated with the+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html BatchGetAssetPropertyAggregates>+    -- API.+    completionStatus :: BatchEntryCompletionStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyAggregatesSkippedEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorInfo', 'batchGetAssetPropertyAggregatesSkippedEntry_errorInfo' - The error information, such as the error code and the timestamp.+--+-- 'entryId', 'batchGetAssetPropertyAggregatesSkippedEntry_entryId' - The ID of the entry.+--+-- 'completionStatus', 'batchGetAssetPropertyAggregatesSkippedEntry_completionStatus' - The completion status of each entry that is associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html BatchGetAssetPropertyAggregates>+-- API.+newBatchGetAssetPropertyAggregatesSkippedEntry ::+  -- | 'entryId'+  Prelude.Text ->+  -- | 'completionStatus'+  BatchEntryCompletionStatus ->+  BatchGetAssetPropertyAggregatesSkippedEntry+newBatchGetAssetPropertyAggregatesSkippedEntry+  pEntryId_+  pCompletionStatus_ =+    BatchGetAssetPropertyAggregatesSkippedEntry'+      { errorInfo =+          Prelude.Nothing,+        entryId = pEntryId_,+        completionStatus =+          pCompletionStatus_+      }++-- | The error information, such as the error code and the timestamp.+batchGetAssetPropertyAggregatesSkippedEntry_errorInfo :: Lens.Lens' BatchGetAssetPropertyAggregatesSkippedEntry (Prelude.Maybe BatchGetAssetPropertyAggregatesErrorInfo)+batchGetAssetPropertyAggregatesSkippedEntry_errorInfo = Lens.lens (\BatchGetAssetPropertyAggregatesSkippedEntry' {errorInfo} -> errorInfo) (\s@BatchGetAssetPropertyAggregatesSkippedEntry' {} a -> s {errorInfo = a} :: BatchGetAssetPropertyAggregatesSkippedEntry)++-- | The ID of the entry.+batchGetAssetPropertyAggregatesSkippedEntry_entryId :: Lens.Lens' BatchGetAssetPropertyAggregatesSkippedEntry Prelude.Text+batchGetAssetPropertyAggregatesSkippedEntry_entryId = Lens.lens (\BatchGetAssetPropertyAggregatesSkippedEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyAggregatesSkippedEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyAggregatesSkippedEntry)++-- | The completion status of each entry that is associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html BatchGetAssetPropertyAggregates>+-- API.+batchGetAssetPropertyAggregatesSkippedEntry_completionStatus :: Lens.Lens' BatchGetAssetPropertyAggregatesSkippedEntry BatchEntryCompletionStatus+batchGetAssetPropertyAggregatesSkippedEntry_completionStatus = Lens.lens (\BatchGetAssetPropertyAggregatesSkippedEntry' {completionStatus} -> completionStatus) (\s@BatchGetAssetPropertyAggregatesSkippedEntry' {} a -> s {completionStatus = a} :: BatchGetAssetPropertyAggregatesSkippedEntry)++instance+  Data.FromJSON+    BatchGetAssetPropertyAggregatesSkippedEntry+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyAggregatesSkippedEntry"+      ( \x ->+          BatchGetAssetPropertyAggregatesSkippedEntry'+            Prelude.<$> (x Data..:? "errorInfo")+            Prelude.<*> (x Data..: "entryId")+            Prelude.<*> (x Data..: "completionStatus")+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyAggregatesSkippedEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyAggregatesSkippedEntry' {..} =+      _salt+        `Prelude.hashWithSalt` errorInfo+        `Prelude.hashWithSalt` entryId+        `Prelude.hashWithSalt` completionStatus++instance+  Prelude.NFData+    BatchGetAssetPropertyAggregatesSkippedEntry+  where+  rnf BatchGetAssetPropertyAggregatesSkippedEntry' {..} =+    Prelude.rnf errorInfo+      `Prelude.seq` Prelude.rnf entryId+      `Prelude.seq` Prelude.rnf completionStatus
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyAggregatesSuccessEntry.hs view
@@ -0,0 +1,109 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesSuccessEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyAggregatesSuccessEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AggregatedValue+import qualified Amazonka.Prelude as Prelude++-- | Contains success information for an entry that is associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyAggregates.html BatchGetAssetPropertyAggregates>+-- API.+--+-- /See:/ 'newBatchGetAssetPropertyAggregatesSuccessEntry' smart constructor.+data BatchGetAssetPropertyAggregatesSuccessEntry = BatchGetAssetPropertyAggregatesSuccessEntry'+  { -- | The ID of the entry.+    entryId :: Prelude.Text,+    -- | The requested aggregated asset property values (for example, average,+    -- minimum, and maximum).+    aggregatedValues :: [AggregatedValue]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyAggregatesSuccessEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'entryId', 'batchGetAssetPropertyAggregatesSuccessEntry_entryId' - The ID of the entry.+--+-- 'aggregatedValues', 'batchGetAssetPropertyAggregatesSuccessEntry_aggregatedValues' - The requested aggregated asset property values (for example, average,+-- minimum, and maximum).+newBatchGetAssetPropertyAggregatesSuccessEntry ::+  -- | 'entryId'+  Prelude.Text ->+  BatchGetAssetPropertyAggregatesSuccessEntry+newBatchGetAssetPropertyAggregatesSuccessEntry+  pEntryId_ =+    BatchGetAssetPropertyAggregatesSuccessEntry'+      { entryId =+          pEntryId_,+        aggregatedValues =+          Prelude.mempty+      }++-- | The ID of the entry.+batchGetAssetPropertyAggregatesSuccessEntry_entryId :: Lens.Lens' BatchGetAssetPropertyAggregatesSuccessEntry Prelude.Text+batchGetAssetPropertyAggregatesSuccessEntry_entryId = Lens.lens (\BatchGetAssetPropertyAggregatesSuccessEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyAggregatesSuccessEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyAggregatesSuccessEntry)++-- | The requested aggregated asset property values (for example, average,+-- minimum, and maximum).+batchGetAssetPropertyAggregatesSuccessEntry_aggregatedValues :: Lens.Lens' BatchGetAssetPropertyAggregatesSuccessEntry [AggregatedValue]+batchGetAssetPropertyAggregatesSuccessEntry_aggregatedValues = Lens.lens (\BatchGetAssetPropertyAggregatesSuccessEntry' {aggregatedValues} -> aggregatedValues) (\s@BatchGetAssetPropertyAggregatesSuccessEntry' {} a -> s {aggregatedValues = a} :: BatchGetAssetPropertyAggregatesSuccessEntry) Prelude.. Lens.coerced++instance+  Data.FromJSON+    BatchGetAssetPropertyAggregatesSuccessEntry+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyAggregatesSuccessEntry"+      ( \x ->+          BatchGetAssetPropertyAggregatesSuccessEntry'+            Prelude.<$> (x Data..: "entryId")+            Prelude.<*> ( x+                            Data..:? "aggregatedValues"+                            Data..!= Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyAggregatesSuccessEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyAggregatesSuccessEntry' {..} =+      _salt+        `Prelude.hashWithSalt` entryId+        `Prelude.hashWithSalt` aggregatedValues++instance+  Prelude.NFData+    BatchGetAssetPropertyAggregatesSuccessEntry+  where+  rnf BatchGetAssetPropertyAggregatesSuccessEntry' {..} =+    Prelude.rnf entryId+      `Prelude.seq` Prelude.rnf aggregatedValues
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueEntry.hs view
@@ -0,0 +1,145 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueEntry 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 information for an asset property value entry that is+-- associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html BatchGetAssetPropertyValue>+-- API.+--+-- To identify an asset property, you must specify one of the following:+--+-- -   The @assetId@ and @propertyId@ of an asset property.+--+-- -   A @propertyAlias@, which is a data stream alias (for example,+--     @\/company\/windfarm\/3\/turbine\/7\/temperature@). To define an+--     asset property\'s alias, see+--     <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+--+-- /See:/ 'newBatchGetAssetPropertyValueEntry' smart constructor.+data BatchGetAssetPropertyValueEntry = BatchGetAssetPropertyValueEntry'+  { -- | The ID of the asset in which the asset property was created.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    propertyAlias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the entry.+    entryId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetId', 'batchGetAssetPropertyValueEntry_assetId' - The ID of the asset in which the asset property was created.+--+-- 'propertyAlias', 'batchGetAssetPropertyValueEntry_propertyAlias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- 'propertyId', 'batchGetAssetPropertyValueEntry_propertyId' - The ID of the asset property.+--+-- 'entryId', 'batchGetAssetPropertyValueEntry_entryId' - The ID of the entry.+newBatchGetAssetPropertyValueEntry ::+  -- | 'entryId'+  Prelude.Text ->+  BatchGetAssetPropertyValueEntry+newBatchGetAssetPropertyValueEntry pEntryId_ =+  BatchGetAssetPropertyValueEntry'+    { assetId =+        Prelude.Nothing,+      propertyAlias = Prelude.Nothing,+      propertyId = Prelude.Nothing,+      entryId = pEntryId_+    }++-- | The ID of the asset in which the asset property was created.+batchGetAssetPropertyValueEntry_assetId :: Lens.Lens' BatchGetAssetPropertyValueEntry (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyValueEntry_assetId = Lens.lens (\BatchGetAssetPropertyValueEntry' {assetId} -> assetId) (\s@BatchGetAssetPropertyValueEntry' {} a -> s {assetId = a} :: BatchGetAssetPropertyValueEntry)++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+batchGetAssetPropertyValueEntry_propertyAlias :: Lens.Lens' BatchGetAssetPropertyValueEntry (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyValueEntry_propertyAlias = Lens.lens (\BatchGetAssetPropertyValueEntry' {propertyAlias} -> propertyAlias) (\s@BatchGetAssetPropertyValueEntry' {} a -> s {propertyAlias = a} :: BatchGetAssetPropertyValueEntry)++-- | The ID of the asset property.+batchGetAssetPropertyValueEntry_propertyId :: Lens.Lens' BatchGetAssetPropertyValueEntry (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyValueEntry_propertyId = Lens.lens (\BatchGetAssetPropertyValueEntry' {propertyId} -> propertyId) (\s@BatchGetAssetPropertyValueEntry' {} a -> s {propertyId = a} :: BatchGetAssetPropertyValueEntry)++-- | The ID of the entry.+batchGetAssetPropertyValueEntry_entryId :: Lens.Lens' BatchGetAssetPropertyValueEntry Prelude.Text+batchGetAssetPropertyValueEntry_entryId = Lens.lens (\BatchGetAssetPropertyValueEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyValueEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyValueEntry)++instance+  Prelude.Hashable+    BatchGetAssetPropertyValueEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyValueEntry' {..} =+      _salt+        `Prelude.hashWithSalt` assetId+        `Prelude.hashWithSalt` propertyAlias+        `Prelude.hashWithSalt` propertyId+        `Prelude.hashWithSalt` entryId++instance+  Prelude.NFData+    BatchGetAssetPropertyValueEntry+  where+  rnf BatchGetAssetPropertyValueEntry' {..} =+    Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf propertyAlias+      `Prelude.seq` Prelude.rnf propertyId+      `Prelude.seq` Prelude.rnf entryId++instance Data.ToJSON BatchGetAssetPropertyValueEntry where+  toJSON BatchGetAssetPropertyValueEntry' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("assetId" Data..=) Prelude.<$> assetId,+            ("propertyAlias" Data..=) Prelude.<$> propertyAlias,+            ("propertyId" Data..=) Prelude.<$> propertyId,+            Prelude.Just ("entryId" Data..= entryId)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueErrorCode.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.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorCode+  ( BatchGetAssetPropertyValueErrorCode+      ( ..,+        BatchGetAssetPropertyValueErrorCode_AccessDeniedException,+        BatchGetAssetPropertyValueErrorCode_InvalidRequestException,+        BatchGetAssetPropertyValueErrorCode_ResourceNotFoundException+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype BatchGetAssetPropertyValueErrorCode = BatchGetAssetPropertyValueErrorCode'+  { fromBatchGetAssetPropertyValueErrorCode ::+      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 BatchGetAssetPropertyValueErrorCode_AccessDeniedException :: BatchGetAssetPropertyValueErrorCode+pattern BatchGetAssetPropertyValueErrorCode_AccessDeniedException = BatchGetAssetPropertyValueErrorCode' "AccessDeniedException"++pattern BatchGetAssetPropertyValueErrorCode_InvalidRequestException :: BatchGetAssetPropertyValueErrorCode+pattern BatchGetAssetPropertyValueErrorCode_InvalidRequestException = BatchGetAssetPropertyValueErrorCode' "InvalidRequestException"++pattern BatchGetAssetPropertyValueErrorCode_ResourceNotFoundException :: BatchGetAssetPropertyValueErrorCode+pattern BatchGetAssetPropertyValueErrorCode_ResourceNotFoundException = BatchGetAssetPropertyValueErrorCode' "ResourceNotFoundException"++{-# COMPLETE+  BatchGetAssetPropertyValueErrorCode_AccessDeniedException,+  BatchGetAssetPropertyValueErrorCode_InvalidRequestException,+  BatchGetAssetPropertyValueErrorCode_ResourceNotFoundException,+  BatchGetAssetPropertyValueErrorCode'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueErrorEntry.hs view
@@ -0,0 +1,121 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorCode+import qualified Amazonka.Prelude as Prelude++-- | Contains error information for an asset property value entry that is+-- associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html BatchGetAssetPropertyValue>+-- API.+--+-- /See:/ 'newBatchGetAssetPropertyValueErrorEntry' smart constructor.+data BatchGetAssetPropertyValueErrorEntry = BatchGetAssetPropertyValueErrorEntry'+  { -- | The error code.+    errorCode :: BatchGetAssetPropertyValueErrorCode,+    -- | The associated error message.+    errorMessage :: Prelude.Text,+    -- | The ID of the entry.+    entryId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueErrorEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorCode', 'batchGetAssetPropertyValueErrorEntry_errorCode' - The error code.+--+-- 'errorMessage', 'batchGetAssetPropertyValueErrorEntry_errorMessage' - The associated error message.+--+-- 'entryId', 'batchGetAssetPropertyValueErrorEntry_entryId' - The ID of the entry.+newBatchGetAssetPropertyValueErrorEntry ::+  -- | 'errorCode'+  BatchGetAssetPropertyValueErrorCode ->+  -- | 'errorMessage'+  Prelude.Text ->+  -- | 'entryId'+  Prelude.Text ->+  BatchGetAssetPropertyValueErrorEntry+newBatchGetAssetPropertyValueErrorEntry+  pErrorCode_+  pErrorMessage_+  pEntryId_ =+    BatchGetAssetPropertyValueErrorEntry'+      { errorCode =+          pErrorCode_,+        errorMessage = pErrorMessage_,+        entryId = pEntryId_+      }++-- | The error code.+batchGetAssetPropertyValueErrorEntry_errorCode :: Lens.Lens' BatchGetAssetPropertyValueErrorEntry BatchGetAssetPropertyValueErrorCode+batchGetAssetPropertyValueErrorEntry_errorCode = Lens.lens (\BatchGetAssetPropertyValueErrorEntry' {errorCode} -> errorCode) (\s@BatchGetAssetPropertyValueErrorEntry' {} a -> s {errorCode = a} :: BatchGetAssetPropertyValueErrorEntry)++-- | The associated error message.+batchGetAssetPropertyValueErrorEntry_errorMessage :: Lens.Lens' BatchGetAssetPropertyValueErrorEntry Prelude.Text+batchGetAssetPropertyValueErrorEntry_errorMessage = Lens.lens (\BatchGetAssetPropertyValueErrorEntry' {errorMessage} -> errorMessage) (\s@BatchGetAssetPropertyValueErrorEntry' {} a -> s {errorMessage = a} :: BatchGetAssetPropertyValueErrorEntry)++-- | The ID of the entry.+batchGetAssetPropertyValueErrorEntry_entryId :: Lens.Lens' BatchGetAssetPropertyValueErrorEntry Prelude.Text+batchGetAssetPropertyValueErrorEntry_entryId = Lens.lens (\BatchGetAssetPropertyValueErrorEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyValueErrorEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyValueErrorEntry)++instance+  Data.FromJSON+    BatchGetAssetPropertyValueErrorEntry+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyValueErrorEntry"+      ( \x ->+          BatchGetAssetPropertyValueErrorEntry'+            Prelude.<$> (x Data..: "errorCode")+            Prelude.<*> (x Data..: "errorMessage")+            Prelude.<*> (x Data..: "entryId")+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyValueErrorEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyValueErrorEntry' {..} =+      _salt+        `Prelude.hashWithSalt` errorCode+        `Prelude.hashWithSalt` errorMessage+        `Prelude.hashWithSalt` entryId++instance+  Prelude.NFData+    BatchGetAssetPropertyValueErrorEntry+  where+  rnf BatchGetAssetPropertyValueErrorEntry' {..} =+    Prelude.rnf errorCode+      `Prelude.seq` Prelude.rnf errorMessage+      `Prelude.seq` Prelude.rnf entryId
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueErrorInfo.hs view
@@ -0,0 +1,104 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorInfo+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorInfo where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorCode+import qualified Amazonka.Prelude as Prelude++-- | The error information, such as the error code and the timestamp.+--+-- /See:/ 'newBatchGetAssetPropertyValueErrorInfo' smart constructor.+data BatchGetAssetPropertyValueErrorInfo = BatchGetAssetPropertyValueErrorInfo'+  { -- | The error code.+    errorCode :: BatchGetAssetPropertyValueErrorCode,+    -- | The date the error occurred, in Unix epoch time.+    errorTimestamp :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueErrorInfo' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorCode', 'batchGetAssetPropertyValueErrorInfo_errorCode' - The error code.+--+-- 'errorTimestamp', 'batchGetAssetPropertyValueErrorInfo_errorTimestamp' - The date the error occurred, in Unix epoch time.+newBatchGetAssetPropertyValueErrorInfo ::+  -- | 'errorCode'+  BatchGetAssetPropertyValueErrorCode ->+  -- | 'errorTimestamp'+  Prelude.UTCTime ->+  BatchGetAssetPropertyValueErrorInfo+newBatchGetAssetPropertyValueErrorInfo+  pErrorCode_+  pErrorTimestamp_ =+    BatchGetAssetPropertyValueErrorInfo'+      { errorCode =+          pErrorCode_,+        errorTimestamp =+          Data._Time Lens.# pErrorTimestamp_+      }++-- | The error code.+batchGetAssetPropertyValueErrorInfo_errorCode :: Lens.Lens' BatchGetAssetPropertyValueErrorInfo BatchGetAssetPropertyValueErrorCode+batchGetAssetPropertyValueErrorInfo_errorCode = Lens.lens (\BatchGetAssetPropertyValueErrorInfo' {errorCode} -> errorCode) (\s@BatchGetAssetPropertyValueErrorInfo' {} a -> s {errorCode = a} :: BatchGetAssetPropertyValueErrorInfo)++-- | The date the error occurred, in Unix epoch time.+batchGetAssetPropertyValueErrorInfo_errorTimestamp :: Lens.Lens' BatchGetAssetPropertyValueErrorInfo Prelude.UTCTime+batchGetAssetPropertyValueErrorInfo_errorTimestamp = Lens.lens (\BatchGetAssetPropertyValueErrorInfo' {errorTimestamp} -> errorTimestamp) (\s@BatchGetAssetPropertyValueErrorInfo' {} a -> s {errorTimestamp = a} :: BatchGetAssetPropertyValueErrorInfo) Prelude.. Data._Time++instance+  Data.FromJSON+    BatchGetAssetPropertyValueErrorInfo+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyValueErrorInfo"+      ( \x ->+          BatchGetAssetPropertyValueErrorInfo'+            Prelude.<$> (x Data..: "errorCode")+            Prelude.<*> (x Data..: "errorTimestamp")+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyValueErrorInfo+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyValueErrorInfo' {..} =+      _salt+        `Prelude.hashWithSalt` errorCode+        `Prelude.hashWithSalt` errorTimestamp++instance+  Prelude.NFData+    BatchGetAssetPropertyValueErrorInfo+  where+  rnf BatchGetAssetPropertyValueErrorInfo' {..} =+    Prelude.rnf errorCode+      `Prelude.seq` Prelude.rnf errorTimestamp
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueHistoryEntry.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.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.Quality+import Amazonka.IoTSiteWise.Types.TimeOrdering+import qualified Amazonka.Prelude as Prelude++-- | Contains information for an asset property historical value entry that+-- is associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html BatchGetAssetPropertyValueHistory>+-- API.+--+-- To identify an asset property, you must specify one of the following:+--+-- -   The @assetId@ and @propertyId@ of an asset property.+--+-- -   A @propertyAlias@, which is a data stream alias (for example,+--     @\/company\/windfarm\/3\/turbine\/7\/temperature@). To define an+--     asset property\'s alias, see+--     <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+--+-- /See:/ 'newBatchGetAssetPropertyValueHistoryEntry' smart constructor.+data BatchGetAssetPropertyValueHistoryEntry = BatchGetAssetPropertyValueHistoryEntry'+  { -- | The ID of the asset in which the asset property was created.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The inclusive end of the range from which to query historical data,+    -- expressed in seconds in Unix epoch time.+    endDate :: Prelude.Maybe Data.POSIX,+    -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    propertyAlias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Maybe Prelude.Text,+    -- | The quality by which to filter asset data.+    qualities :: Prelude.Maybe (Prelude.NonEmpty Quality),+    -- | The exclusive start of the range from which to query historical data,+    -- expressed in seconds in Unix epoch time.+    startDate :: Prelude.Maybe Data.POSIX,+    -- | The chronological sorting order of the requested information.+    --+    -- Default: @ASCENDING@+    timeOrdering :: Prelude.Maybe TimeOrdering,+    -- | The ID of the entry.+    entryId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueHistoryEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetId', 'batchGetAssetPropertyValueHistoryEntry_assetId' - The ID of the asset in which the asset property was created.+--+-- 'endDate', 'batchGetAssetPropertyValueHistoryEntry_endDate' - The inclusive end of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+--+-- 'propertyAlias', 'batchGetAssetPropertyValueHistoryEntry_propertyAlias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- 'propertyId', 'batchGetAssetPropertyValueHistoryEntry_propertyId' - The ID of the asset property.+--+-- 'qualities', 'batchGetAssetPropertyValueHistoryEntry_qualities' - The quality by which to filter asset data.+--+-- 'startDate', 'batchGetAssetPropertyValueHistoryEntry_startDate' - The exclusive start of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+--+-- 'timeOrdering', 'batchGetAssetPropertyValueHistoryEntry_timeOrdering' - The chronological sorting order of the requested information.+--+-- Default: @ASCENDING@+--+-- 'entryId', 'batchGetAssetPropertyValueHistoryEntry_entryId' - The ID of the entry.+newBatchGetAssetPropertyValueHistoryEntry ::+  -- | 'entryId'+  Prelude.Text ->+  BatchGetAssetPropertyValueHistoryEntry+newBatchGetAssetPropertyValueHistoryEntry pEntryId_ =+  BatchGetAssetPropertyValueHistoryEntry'+    { assetId =+        Prelude.Nothing,+      endDate = Prelude.Nothing,+      propertyAlias = Prelude.Nothing,+      propertyId = Prelude.Nothing,+      qualities = Prelude.Nothing,+      startDate = Prelude.Nothing,+      timeOrdering = Prelude.Nothing,+      entryId = pEntryId_+    }++-- | The ID of the asset in which the asset property was created.+batchGetAssetPropertyValueHistoryEntry_assetId :: Lens.Lens' BatchGetAssetPropertyValueHistoryEntry (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyValueHistoryEntry_assetId = Lens.lens (\BatchGetAssetPropertyValueHistoryEntry' {assetId} -> assetId) (\s@BatchGetAssetPropertyValueHistoryEntry' {} a -> s {assetId = a} :: BatchGetAssetPropertyValueHistoryEntry)++-- | The inclusive end of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+batchGetAssetPropertyValueHistoryEntry_endDate :: Lens.Lens' BatchGetAssetPropertyValueHistoryEntry (Prelude.Maybe Prelude.UTCTime)+batchGetAssetPropertyValueHistoryEntry_endDate = Lens.lens (\BatchGetAssetPropertyValueHistoryEntry' {endDate} -> endDate) (\s@BatchGetAssetPropertyValueHistoryEntry' {} a -> s {endDate = a} :: BatchGetAssetPropertyValueHistoryEntry) Prelude.. Lens.mapping Data._Time++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+batchGetAssetPropertyValueHistoryEntry_propertyAlias :: Lens.Lens' BatchGetAssetPropertyValueHistoryEntry (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyValueHistoryEntry_propertyAlias = Lens.lens (\BatchGetAssetPropertyValueHistoryEntry' {propertyAlias} -> propertyAlias) (\s@BatchGetAssetPropertyValueHistoryEntry' {} a -> s {propertyAlias = a} :: BatchGetAssetPropertyValueHistoryEntry)++-- | The ID of the asset property.+batchGetAssetPropertyValueHistoryEntry_propertyId :: Lens.Lens' BatchGetAssetPropertyValueHistoryEntry (Prelude.Maybe Prelude.Text)+batchGetAssetPropertyValueHistoryEntry_propertyId = Lens.lens (\BatchGetAssetPropertyValueHistoryEntry' {propertyId} -> propertyId) (\s@BatchGetAssetPropertyValueHistoryEntry' {} a -> s {propertyId = a} :: BatchGetAssetPropertyValueHistoryEntry)++-- | The quality by which to filter asset data.+batchGetAssetPropertyValueHistoryEntry_qualities :: Lens.Lens' BatchGetAssetPropertyValueHistoryEntry (Prelude.Maybe (Prelude.NonEmpty Quality))+batchGetAssetPropertyValueHistoryEntry_qualities = Lens.lens (\BatchGetAssetPropertyValueHistoryEntry' {qualities} -> qualities) (\s@BatchGetAssetPropertyValueHistoryEntry' {} a -> s {qualities = a} :: BatchGetAssetPropertyValueHistoryEntry) Prelude.. Lens.mapping Lens.coerced++-- | The exclusive start of the range from which to query historical data,+-- expressed in seconds in Unix epoch time.+batchGetAssetPropertyValueHistoryEntry_startDate :: Lens.Lens' BatchGetAssetPropertyValueHistoryEntry (Prelude.Maybe Prelude.UTCTime)+batchGetAssetPropertyValueHistoryEntry_startDate = Lens.lens (\BatchGetAssetPropertyValueHistoryEntry' {startDate} -> startDate) (\s@BatchGetAssetPropertyValueHistoryEntry' {} a -> s {startDate = a} :: BatchGetAssetPropertyValueHistoryEntry) Prelude.. Lens.mapping Data._Time++-- | The chronological sorting order of the requested information.+--+-- Default: @ASCENDING@+batchGetAssetPropertyValueHistoryEntry_timeOrdering :: Lens.Lens' BatchGetAssetPropertyValueHistoryEntry (Prelude.Maybe TimeOrdering)+batchGetAssetPropertyValueHistoryEntry_timeOrdering = Lens.lens (\BatchGetAssetPropertyValueHistoryEntry' {timeOrdering} -> timeOrdering) (\s@BatchGetAssetPropertyValueHistoryEntry' {} a -> s {timeOrdering = a} :: BatchGetAssetPropertyValueHistoryEntry)++-- | The ID of the entry.+batchGetAssetPropertyValueHistoryEntry_entryId :: Lens.Lens' BatchGetAssetPropertyValueHistoryEntry Prelude.Text+batchGetAssetPropertyValueHistoryEntry_entryId = Lens.lens (\BatchGetAssetPropertyValueHistoryEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyValueHistoryEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyValueHistoryEntry)++instance+  Prelude.Hashable+    BatchGetAssetPropertyValueHistoryEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyValueHistoryEntry' {..} =+      _salt+        `Prelude.hashWithSalt` assetId+        `Prelude.hashWithSalt` endDate+        `Prelude.hashWithSalt` propertyAlias+        `Prelude.hashWithSalt` propertyId+        `Prelude.hashWithSalt` qualities+        `Prelude.hashWithSalt` startDate+        `Prelude.hashWithSalt` timeOrdering+        `Prelude.hashWithSalt` entryId++instance+  Prelude.NFData+    BatchGetAssetPropertyValueHistoryEntry+  where+  rnf BatchGetAssetPropertyValueHistoryEntry' {..} =+    Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf endDate+      `Prelude.seq` Prelude.rnf propertyAlias+      `Prelude.seq` Prelude.rnf propertyId+      `Prelude.seq` Prelude.rnf qualities+      `Prelude.seq` Prelude.rnf startDate+      `Prelude.seq` Prelude.rnf timeOrdering+      `Prelude.seq` Prelude.rnf entryId++instance+  Data.ToJSON+    BatchGetAssetPropertyValueHistoryEntry+  where+  toJSON BatchGetAssetPropertyValueHistoryEntry' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("assetId" Data..=) Prelude.<$> assetId,+            ("endDate" Data..=) Prelude.<$> endDate,+            ("propertyAlias" Data..=) Prelude.<$> propertyAlias,+            ("propertyId" Data..=) Prelude.<$> propertyId,+            ("qualities" Data..=) Prelude.<$> qualities,+            ("startDate" Data..=) Prelude.<$> startDate,+            ("timeOrdering" Data..=) Prelude.<$> timeOrdering,+            Prelude.Just ("entryId" Data..= entryId)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueHistoryErrorCode.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.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorCode+  ( BatchGetAssetPropertyValueHistoryErrorCode+      ( ..,+        BatchGetAssetPropertyValueHistoryErrorCode_AccessDeniedException,+        BatchGetAssetPropertyValueHistoryErrorCode_InvalidRequestException,+        BatchGetAssetPropertyValueHistoryErrorCode_ResourceNotFoundException+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype BatchGetAssetPropertyValueHistoryErrorCode = BatchGetAssetPropertyValueHistoryErrorCode'+  { fromBatchGetAssetPropertyValueHistoryErrorCode ::+      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 BatchGetAssetPropertyValueHistoryErrorCode_AccessDeniedException :: BatchGetAssetPropertyValueHistoryErrorCode+pattern BatchGetAssetPropertyValueHistoryErrorCode_AccessDeniedException = BatchGetAssetPropertyValueHistoryErrorCode' "AccessDeniedException"++pattern BatchGetAssetPropertyValueHistoryErrorCode_InvalidRequestException :: BatchGetAssetPropertyValueHistoryErrorCode+pattern BatchGetAssetPropertyValueHistoryErrorCode_InvalidRequestException = BatchGetAssetPropertyValueHistoryErrorCode' "InvalidRequestException"++pattern BatchGetAssetPropertyValueHistoryErrorCode_ResourceNotFoundException :: BatchGetAssetPropertyValueHistoryErrorCode+pattern BatchGetAssetPropertyValueHistoryErrorCode_ResourceNotFoundException = BatchGetAssetPropertyValueHistoryErrorCode' "ResourceNotFoundException"++{-# COMPLETE+  BatchGetAssetPropertyValueHistoryErrorCode_AccessDeniedException,+  BatchGetAssetPropertyValueHistoryErrorCode_InvalidRequestException,+  BatchGetAssetPropertyValueHistoryErrorCode_ResourceNotFoundException,+  BatchGetAssetPropertyValueHistoryErrorCode'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueHistoryErrorEntry.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.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorCode+import qualified Amazonka.Prelude as Prelude++-- | A list of the errors (if any) associated with the batch request. Each+-- error entry contains the @entryId@ of the entry that failed.+--+-- /See:/ 'newBatchGetAssetPropertyValueHistoryErrorEntry' smart constructor.+data BatchGetAssetPropertyValueHistoryErrorEntry = BatchGetAssetPropertyValueHistoryErrorEntry'+  { -- | The error code.+    errorCode :: BatchGetAssetPropertyValueHistoryErrorCode,+    -- | The associated error message.+    errorMessage :: Prelude.Text,+    -- | The ID of the entry.+    entryId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueHistoryErrorEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorCode', 'batchGetAssetPropertyValueHistoryErrorEntry_errorCode' - The error code.+--+-- 'errorMessage', 'batchGetAssetPropertyValueHistoryErrorEntry_errorMessage' - The associated error message.+--+-- 'entryId', 'batchGetAssetPropertyValueHistoryErrorEntry_entryId' - The ID of the entry.+newBatchGetAssetPropertyValueHistoryErrorEntry ::+  -- | 'errorCode'+  BatchGetAssetPropertyValueHistoryErrorCode ->+  -- | 'errorMessage'+  Prelude.Text ->+  -- | 'entryId'+  Prelude.Text ->+  BatchGetAssetPropertyValueHistoryErrorEntry+newBatchGetAssetPropertyValueHistoryErrorEntry+  pErrorCode_+  pErrorMessage_+  pEntryId_ =+    BatchGetAssetPropertyValueHistoryErrorEntry'+      { errorCode =+          pErrorCode_,+        errorMessage = pErrorMessage_,+        entryId = pEntryId_+      }++-- | The error code.+batchGetAssetPropertyValueHistoryErrorEntry_errorCode :: Lens.Lens' BatchGetAssetPropertyValueHistoryErrorEntry BatchGetAssetPropertyValueHistoryErrorCode+batchGetAssetPropertyValueHistoryErrorEntry_errorCode = Lens.lens (\BatchGetAssetPropertyValueHistoryErrorEntry' {errorCode} -> errorCode) (\s@BatchGetAssetPropertyValueHistoryErrorEntry' {} a -> s {errorCode = a} :: BatchGetAssetPropertyValueHistoryErrorEntry)++-- | The associated error message.+batchGetAssetPropertyValueHistoryErrorEntry_errorMessage :: Lens.Lens' BatchGetAssetPropertyValueHistoryErrorEntry Prelude.Text+batchGetAssetPropertyValueHistoryErrorEntry_errorMessage = Lens.lens (\BatchGetAssetPropertyValueHistoryErrorEntry' {errorMessage} -> errorMessage) (\s@BatchGetAssetPropertyValueHistoryErrorEntry' {} a -> s {errorMessage = a} :: BatchGetAssetPropertyValueHistoryErrorEntry)++-- | The ID of the entry.+batchGetAssetPropertyValueHistoryErrorEntry_entryId :: Lens.Lens' BatchGetAssetPropertyValueHistoryErrorEntry Prelude.Text+batchGetAssetPropertyValueHistoryErrorEntry_entryId = Lens.lens (\BatchGetAssetPropertyValueHistoryErrorEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyValueHistoryErrorEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyValueHistoryErrorEntry)++instance+  Data.FromJSON+    BatchGetAssetPropertyValueHistoryErrorEntry+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyValueHistoryErrorEntry"+      ( \x ->+          BatchGetAssetPropertyValueHistoryErrorEntry'+            Prelude.<$> (x Data..: "errorCode")+            Prelude.<*> (x Data..: "errorMessage")+            Prelude.<*> (x Data..: "entryId")+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyValueHistoryErrorEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyValueHistoryErrorEntry' {..} =+      _salt+        `Prelude.hashWithSalt` errorCode+        `Prelude.hashWithSalt` errorMessage+        `Prelude.hashWithSalt` entryId++instance+  Prelude.NFData+    BatchGetAssetPropertyValueHistoryErrorEntry+  where+  rnf BatchGetAssetPropertyValueHistoryErrorEntry' {..} =+    Prelude.rnf errorCode+      `Prelude.seq` Prelude.rnf errorMessage+      `Prelude.seq` Prelude.rnf entryId
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueHistoryErrorInfo.hs view
@@ -0,0 +1,105 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorInfo+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorInfo where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorCode+import qualified Amazonka.Prelude as Prelude++-- | The error information, such as the error code and the timestamp.+--+-- /See:/ 'newBatchGetAssetPropertyValueHistoryErrorInfo' smart constructor.+data BatchGetAssetPropertyValueHistoryErrorInfo = BatchGetAssetPropertyValueHistoryErrorInfo'+  { -- | The error code.+    errorCode :: BatchGetAssetPropertyValueHistoryErrorCode,+    -- | The date the error occurred, in Unix epoch time.+    errorTimestamp :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueHistoryErrorInfo' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorCode', 'batchGetAssetPropertyValueHistoryErrorInfo_errorCode' - The error code.+--+-- 'errorTimestamp', 'batchGetAssetPropertyValueHistoryErrorInfo_errorTimestamp' - The date the error occurred, in Unix epoch time.+newBatchGetAssetPropertyValueHistoryErrorInfo ::+  -- | 'errorCode'+  BatchGetAssetPropertyValueHistoryErrorCode ->+  -- | 'errorTimestamp'+  Prelude.UTCTime ->+  BatchGetAssetPropertyValueHistoryErrorInfo+newBatchGetAssetPropertyValueHistoryErrorInfo+  pErrorCode_+  pErrorTimestamp_ =+    BatchGetAssetPropertyValueHistoryErrorInfo'+      { errorCode =+          pErrorCode_,+        errorTimestamp =+          Data._Time+            Lens.# pErrorTimestamp_+      }++-- | The error code.+batchGetAssetPropertyValueHistoryErrorInfo_errorCode :: Lens.Lens' BatchGetAssetPropertyValueHistoryErrorInfo BatchGetAssetPropertyValueHistoryErrorCode+batchGetAssetPropertyValueHistoryErrorInfo_errorCode = Lens.lens (\BatchGetAssetPropertyValueHistoryErrorInfo' {errorCode} -> errorCode) (\s@BatchGetAssetPropertyValueHistoryErrorInfo' {} a -> s {errorCode = a} :: BatchGetAssetPropertyValueHistoryErrorInfo)++-- | The date the error occurred, in Unix epoch time.+batchGetAssetPropertyValueHistoryErrorInfo_errorTimestamp :: Lens.Lens' BatchGetAssetPropertyValueHistoryErrorInfo Prelude.UTCTime+batchGetAssetPropertyValueHistoryErrorInfo_errorTimestamp = Lens.lens (\BatchGetAssetPropertyValueHistoryErrorInfo' {errorTimestamp} -> errorTimestamp) (\s@BatchGetAssetPropertyValueHistoryErrorInfo' {} a -> s {errorTimestamp = a} :: BatchGetAssetPropertyValueHistoryErrorInfo) Prelude.. Data._Time++instance+  Data.FromJSON+    BatchGetAssetPropertyValueHistoryErrorInfo+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyValueHistoryErrorInfo"+      ( \x ->+          BatchGetAssetPropertyValueHistoryErrorInfo'+            Prelude.<$> (x Data..: "errorCode")+            Prelude.<*> (x Data..: "errorTimestamp")+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyValueHistoryErrorInfo+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyValueHistoryErrorInfo' {..} =+      _salt+        `Prelude.hashWithSalt` errorCode+        `Prelude.hashWithSalt` errorTimestamp++instance+  Prelude.NFData+    BatchGetAssetPropertyValueHistoryErrorInfo+  where+  rnf BatchGetAssetPropertyValueHistoryErrorInfo' {..} =+    Prelude.rnf errorCode+      `Prelude.seq` Prelude.rnf errorTimestamp
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueHistorySkippedEntry.hs view
@@ -0,0 +1,127 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistorySkippedEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistorySkippedEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.BatchEntryCompletionStatus+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistoryErrorInfo+import qualified Amazonka.Prelude as Prelude++-- | Contains information for an entry that has been processed by the+-- previous+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html BatchGetAssetPropertyValueHistory>+-- request.+--+-- /See:/ 'newBatchGetAssetPropertyValueHistorySkippedEntry' smart constructor.+data BatchGetAssetPropertyValueHistorySkippedEntry = BatchGetAssetPropertyValueHistorySkippedEntry'+  { -- | The error information, such as the error code and the timestamp.+    errorInfo :: Prelude.Maybe BatchGetAssetPropertyValueHistoryErrorInfo,+    -- | The ID of the entry.+    entryId :: Prelude.Text,+    -- | The completion status of each entry that is associated with the+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValueHistory.html BatchGetAssetPropertyValueHistory>+    -- API.+    completionStatus :: BatchEntryCompletionStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueHistorySkippedEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorInfo', 'batchGetAssetPropertyValueHistorySkippedEntry_errorInfo' - The error information, such as the error code and the timestamp.+--+-- 'entryId', 'batchGetAssetPropertyValueHistorySkippedEntry_entryId' - The ID of the entry.+--+-- 'completionStatus', 'batchGetAssetPropertyValueHistorySkippedEntry_completionStatus' - The completion status of each entry that is associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValueHistory.html BatchGetAssetPropertyValueHistory>+-- API.+newBatchGetAssetPropertyValueHistorySkippedEntry ::+  -- | 'entryId'+  Prelude.Text ->+  -- | 'completionStatus'+  BatchEntryCompletionStatus ->+  BatchGetAssetPropertyValueHistorySkippedEntry+newBatchGetAssetPropertyValueHistorySkippedEntry+  pEntryId_+  pCompletionStatus_ =+    BatchGetAssetPropertyValueHistorySkippedEntry'+      { errorInfo =+          Prelude.Nothing,+        entryId = pEntryId_,+        completionStatus =+          pCompletionStatus_+      }++-- | The error information, such as the error code and the timestamp.+batchGetAssetPropertyValueHistorySkippedEntry_errorInfo :: Lens.Lens' BatchGetAssetPropertyValueHistorySkippedEntry (Prelude.Maybe BatchGetAssetPropertyValueHistoryErrorInfo)+batchGetAssetPropertyValueHistorySkippedEntry_errorInfo = Lens.lens (\BatchGetAssetPropertyValueHistorySkippedEntry' {errorInfo} -> errorInfo) (\s@BatchGetAssetPropertyValueHistorySkippedEntry' {} a -> s {errorInfo = a} :: BatchGetAssetPropertyValueHistorySkippedEntry)++-- | The ID of the entry.+batchGetAssetPropertyValueHistorySkippedEntry_entryId :: Lens.Lens' BatchGetAssetPropertyValueHistorySkippedEntry Prelude.Text+batchGetAssetPropertyValueHistorySkippedEntry_entryId = Lens.lens (\BatchGetAssetPropertyValueHistorySkippedEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyValueHistorySkippedEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyValueHistorySkippedEntry)++-- | The completion status of each entry that is associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValueHistory.html BatchGetAssetPropertyValueHistory>+-- API.+batchGetAssetPropertyValueHistorySkippedEntry_completionStatus :: Lens.Lens' BatchGetAssetPropertyValueHistorySkippedEntry BatchEntryCompletionStatus+batchGetAssetPropertyValueHistorySkippedEntry_completionStatus = Lens.lens (\BatchGetAssetPropertyValueHistorySkippedEntry' {completionStatus} -> completionStatus) (\s@BatchGetAssetPropertyValueHistorySkippedEntry' {} a -> s {completionStatus = a} :: BatchGetAssetPropertyValueHistorySkippedEntry)++instance+  Data.FromJSON+    BatchGetAssetPropertyValueHistorySkippedEntry+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyValueHistorySkippedEntry"+      ( \x ->+          BatchGetAssetPropertyValueHistorySkippedEntry'+            Prelude.<$> (x Data..:? "errorInfo")+            Prelude.<*> (x Data..: "entryId")+            Prelude.<*> (x Data..: "completionStatus")+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyValueHistorySkippedEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyValueHistorySkippedEntry' {..} =+      _salt+        `Prelude.hashWithSalt` errorInfo+        `Prelude.hashWithSalt` entryId+        `Prelude.hashWithSalt` completionStatus++instance+  Prelude.NFData+    BatchGetAssetPropertyValueHistorySkippedEntry+  where+  rnf+    BatchGetAssetPropertyValueHistorySkippedEntry' {..} =+      Prelude.rnf errorInfo+        `Prelude.seq` Prelude.rnf entryId+        `Prelude.seq` Prelude.rnf completionStatus
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueHistorySuccessEntry.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.IoTSiteWise.Types.BatchGetAssetPropertyValueHistorySuccessEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueHistorySuccessEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetPropertyValue+import qualified Amazonka.Prelude as Prelude++-- | Contains success information for an entry that is associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html BatchGetAssetPropertyValueHistory>+-- API.+--+-- /See:/ 'newBatchGetAssetPropertyValueHistorySuccessEntry' smart constructor.+data BatchGetAssetPropertyValueHistorySuccessEntry = BatchGetAssetPropertyValueHistorySuccessEntry'+  { -- | The ID of the entry.+    entryId :: Prelude.Text,+    -- | The requested historical values for the specified asset property.+    assetPropertyValueHistory :: [AssetPropertyValue]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueHistorySuccessEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'entryId', 'batchGetAssetPropertyValueHistorySuccessEntry_entryId' - The ID of the entry.+--+-- 'assetPropertyValueHistory', 'batchGetAssetPropertyValueHistorySuccessEntry_assetPropertyValueHistory' - The requested historical values for the specified asset property.+newBatchGetAssetPropertyValueHistorySuccessEntry ::+  -- | 'entryId'+  Prelude.Text ->+  BatchGetAssetPropertyValueHistorySuccessEntry+newBatchGetAssetPropertyValueHistorySuccessEntry+  pEntryId_ =+    BatchGetAssetPropertyValueHistorySuccessEntry'+      { entryId =+          pEntryId_,+        assetPropertyValueHistory =+          Prelude.mempty+      }++-- | The ID of the entry.+batchGetAssetPropertyValueHistorySuccessEntry_entryId :: Lens.Lens' BatchGetAssetPropertyValueHistorySuccessEntry Prelude.Text+batchGetAssetPropertyValueHistorySuccessEntry_entryId = Lens.lens (\BatchGetAssetPropertyValueHistorySuccessEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyValueHistorySuccessEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyValueHistorySuccessEntry)++-- | The requested historical values for the specified asset property.+batchGetAssetPropertyValueHistorySuccessEntry_assetPropertyValueHistory :: Lens.Lens' BatchGetAssetPropertyValueHistorySuccessEntry [AssetPropertyValue]+batchGetAssetPropertyValueHistorySuccessEntry_assetPropertyValueHistory = Lens.lens (\BatchGetAssetPropertyValueHistorySuccessEntry' {assetPropertyValueHistory} -> assetPropertyValueHistory) (\s@BatchGetAssetPropertyValueHistorySuccessEntry' {} a -> s {assetPropertyValueHistory = a} :: BatchGetAssetPropertyValueHistorySuccessEntry) Prelude.. Lens.coerced++instance+  Data.FromJSON+    BatchGetAssetPropertyValueHistorySuccessEntry+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyValueHistorySuccessEntry"+      ( \x ->+          BatchGetAssetPropertyValueHistorySuccessEntry'+            Prelude.<$> (x Data..: "entryId")+            Prelude.<*> ( x+                            Data..:? "assetPropertyValueHistory"+                            Data..!= Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyValueHistorySuccessEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyValueHistorySuccessEntry' {..} =+      _salt+        `Prelude.hashWithSalt` entryId+        `Prelude.hashWithSalt` assetPropertyValueHistory++instance+  Prelude.NFData+    BatchGetAssetPropertyValueHistorySuccessEntry+  where+  rnf+    BatchGetAssetPropertyValueHistorySuccessEntry' {..} =+      Prelude.rnf entryId+        `Prelude.seq` Prelude.rnf assetPropertyValueHistory
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueSkippedEntry.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.IoTSiteWise.Types.BatchGetAssetPropertyValueSkippedEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueSkippedEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.BatchEntryCompletionStatus+import Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueErrorInfo+import qualified Amazonka.Prelude as Prelude++-- | Contains information for an entry that has been processed by the+-- previous+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html BatchGetAssetPropertyValue>+-- request.+--+-- /See:/ 'newBatchGetAssetPropertyValueSkippedEntry' smart constructor.+data BatchGetAssetPropertyValueSkippedEntry = BatchGetAssetPropertyValueSkippedEntry'+  { -- | The error information, such as the error code and the timestamp.+    errorInfo :: Prelude.Maybe BatchGetAssetPropertyValueErrorInfo,+    -- | The ID of the entry.+    entryId :: Prelude.Text,+    -- | The completion status of each entry that is associated with the+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html BatchGetAssetPropertyValue>+    -- request.+    completionStatus :: BatchEntryCompletionStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueSkippedEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorInfo', 'batchGetAssetPropertyValueSkippedEntry_errorInfo' - The error information, such as the error code and the timestamp.+--+-- 'entryId', 'batchGetAssetPropertyValueSkippedEntry_entryId' - The ID of the entry.+--+-- 'completionStatus', 'batchGetAssetPropertyValueSkippedEntry_completionStatus' - The completion status of each entry that is associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html BatchGetAssetPropertyValue>+-- request.+newBatchGetAssetPropertyValueSkippedEntry ::+  -- | 'entryId'+  Prelude.Text ->+  -- | 'completionStatus'+  BatchEntryCompletionStatus ->+  BatchGetAssetPropertyValueSkippedEntry+newBatchGetAssetPropertyValueSkippedEntry+  pEntryId_+  pCompletionStatus_ =+    BatchGetAssetPropertyValueSkippedEntry'+      { errorInfo =+          Prelude.Nothing,+        entryId = pEntryId_,+        completionStatus =+          pCompletionStatus_+      }++-- | The error information, such as the error code and the timestamp.+batchGetAssetPropertyValueSkippedEntry_errorInfo :: Lens.Lens' BatchGetAssetPropertyValueSkippedEntry (Prelude.Maybe BatchGetAssetPropertyValueErrorInfo)+batchGetAssetPropertyValueSkippedEntry_errorInfo = Lens.lens (\BatchGetAssetPropertyValueSkippedEntry' {errorInfo} -> errorInfo) (\s@BatchGetAssetPropertyValueSkippedEntry' {} a -> s {errorInfo = a} :: BatchGetAssetPropertyValueSkippedEntry)++-- | The ID of the entry.+batchGetAssetPropertyValueSkippedEntry_entryId :: Lens.Lens' BatchGetAssetPropertyValueSkippedEntry Prelude.Text+batchGetAssetPropertyValueSkippedEntry_entryId = Lens.lens (\BatchGetAssetPropertyValueSkippedEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyValueSkippedEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyValueSkippedEntry)++-- | The completion status of each entry that is associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html BatchGetAssetPropertyValue>+-- request.+batchGetAssetPropertyValueSkippedEntry_completionStatus :: Lens.Lens' BatchGetAssetPropertyValueSkippedEntry BatchEntryCompletionStatus+batchGetAssetPropertyValueSkippedEntry_completionStatus = Lens.lens (\BatchGetAssetPropertyValueSkippedEntry' {completionStatus} -> completionStatus) (\s@BatchGetAssetPropertyValueSkippedEntry' {} a -> s {completionStatus = a} :: BatchGetAssetPropertyValueSkippedEntry)++instance+  Data.FromJSON+    BatchGetAssetPropertyValueSkippedEntry+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyValueSkippedEntry"+      ( \x ->+          BatchGetAssetPropertyValueSkippedEntry'+            Prelude.<$> (x Data..:? "errorInfo")+            Prelude.<*> (x Data..: "entryId")+            Prelude.<*> (x Data..: "completionStatus")+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyValueSkippedEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyValueSkippedEntry' {..} =+      _salt+        `Prelude.hashWithSalt` errorInfo+        `Prelude.hashWithSalt` entryId+        `Prelude.hashWithSalt` completionStatus++instance+  Prelude.NFData+    BatchGetAssetPropertyValueSkippedEntry+  where+  rnf BatchGetAssetPropertyValueSkippedEntry' {..} =+    Prelude.rnf errorInfo+      `Prelude.seq` Prelude.rnf entryId+      `Prelude.seq` Prelude.rnf completionStatus
+ gen/Amazonka/IoTSiteWise/Types/BatchGetAssetPropertyValueSuccessEntry.hs view
@@ -0,0 +1,100 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueSuccessEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchGetAssetPropertyValueSuccessEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetPropertyValue+import qualified Amazonka.Prelude as Prelude++-- | Contains success information for an entry that is associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchGetAssetPropertyValue.html BatchGetAssetPropertyValue>+-- API.+--+-- /See:/ 'newBatchGetAssetPropertyValueSuccessEntry' smart constructor.+data BatchGetAssetPropertyValueSuccessEntry = BatchGetAssetPropertyValueSuccessEntry'+  { assetPropertyValue :: Prelude.Maybe AssetPropertyValue,+    -- | The ID of the entry.+    entryId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetAssetPropertyValueSuccessEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetPropertyValue', 'batchGetAssetPropertyValueSuccessEntry_assetPropertyValue' - Undocumented member.+--+-- 'entryId', 'batchGetAssetPropertyValueSuccessEntry_entryId' - The ID of the entry.+newBatchGetAssetPropertyValueSuccessEntry ::+  -- | 'entryId'+  Prelude.Text ->+  BatchGetAssetPropertyValueSuccessEntry+newBatchGetAssetPropertyValueSuccessEntry pEntryId_ =+  BatchGetAssetPropertyValueSuccessEntry'+    { assetPropertyValue =+        Prelude.Nothing,+      entryId = pEntryId_+    }++-- | Undocumented member.+batchGetAssetPropertyValueSuccessEntry_assetPropertyValue :: Lens.Lens' BatchGetAssetPropertyValueSuccessEntry (Prelude.Maybe AssetPropertyValue)+batchGetAssetPropertyValueSuccessEntry_assetPropertyValue = Lens.lens (\BatchGetAssetPropertyValueSuccessEntry' {assetPropertyValue} -> assetPropertyValue) (\s@BatchGetAssetPropertyValueSuccessEntry' {} a -> s {assetPropertyValue = a} :: BatchGetAssetPropertyValueSuccessEntry)++-- | The ID of the entry.+batchGetAssetPropertyValueSuccessEntry_entryId :: Lens.Lens' BatchGetAssetPropertyValueSuccessEntry Prelude.Text+batchGetAssetPropertyValueSuccessEntry_entryId = Lens.lens (\BatchGetAssetPropertyValueSuccessEntry' {entryId} -> entryId) (\s@BatchGetAssetPropertyValueSuccessEntry' {} a -> s {entryId = a} :: BatchGetAssetPropertyValueSuccessEntry)++instance+  Data.FromJSON+    BatchGetAssetPropertyValueSuccessEntry+  where+  parseJSON =+    Data.withObject+      "BatchGetAssetPropertyValueSuccessEntry"+      ( \x ->+          BatchGetAssetPropertyValueSuccessEntry'+            Prelude.<$> (x Data..:? "assetPropertyValue")+            Prelude.<*> (x Data..: "entryId")+      )++instance+  Prelude.Hashable+    BatchGetAssetPropertyValueSuccessEntry+  where+  hashWithSalt+    _salt+    BatchGetAssetPropertyValueSuccessEntry' {..} =+      _salt+        `Prelude.hashWithSalt` assetPropertyValue+        `Prelude.hashWithSalt` entryId++instance+  Prelude.NFData+    BatchGetAssetPropertyValueSuccessEntry+  where+  rnf BatchGetAssetPropertyValueSuccessEntry' {..} =+    Prelude.rnf assetPropertyValue+      `Prelude.seq` Prelude.rnf entryId
+ gen/Amazonka/IoTSiteWise/Types/BatchPutAssetPropertyError.hs view
@@ -0,0 +1,106 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyValueErrorCode+import Amazonka.IoTSiteWise.Types.TimeInNanos+import qualified Amazonka.Prelude as Prelude++-- | Contains error information from updating a batch of asset property+-- values.+--+-- /See:/ 'newBatchPutAssetPropertyError' smart constructor.+data BatchPutAssetPropertyError = BatchPutAssetPropertyError'+  { -- | The error code.+    errorCode :: BatchPutAssetPropertyValueErrorCode,+    -- | The associated error message.+    errorMessage :: Prelude.Text,+    -- | A list of timestamps for each error, if any.+    timestamps :: [TimeInNanos]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchPutAssetPropertyError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorCode', 'batchPutAssetPropertyError_errorCode' - The error code.+--+-- 'errorMessage', 'batchPutAssetPropertyError_errorMessage' - The associated error message.+--+-- 'timestamps', 'batchPutAssetPropertyError_timestamps' - A list of timestamps for each error, if any.+newBatchPutAssetPropertyError ::+  -- | 'errorCode'+  BatchPutAssetPropertyValueErrorCode ->+  -- | 'errorMessage'+  Prelude.Text ->+  BatchPutAssetPropertyError+newBatchPutAssetPropertyError+  pErrorCode_+  pErrorMessage_ =+    BatchPutAssetPropertyError'+      { errorCode =+          pErrorCode_,+        errorMessage = pErrorMessage_,+        timestamps = Prelude.mempty+      }++-- | The error code.+batchPutAssetPropertyError_errorCode :: Lens.Lens' BatchPutAssetPropertyError BatchPutAssetPropertyValueErrorCode+batchPutAssetPropertyError_errorCode = Lens.lens (\BatchPutAssetPropertyError' {errorCode} -> errorCode) (\s@BatchPutAssetPropertyError' {} a -> s {errorCode = a} :: BatchPutAssetPropertyError)++-- | The associated error message.+batchPutAssetPropertyError_errorMessage :: Lens.Lens' BatchPutAssetPropertyError Prelude.Text+batchPutAssetPropertyError_errorMessage = Lens.lens (\BatchPutAssetPropertyError' {errorMessage} -> errorMessage) (\s@BatchPutAssetPropertyError' {} a -> s {errorMessage = a} :: BatchPutAssetPropertyError)++-- | A list of timestamps for each error, if any.+batchPutAssetPropertyError_timestamps :: Lens.Lens' BatchPutAssetPropertyError [TimeInNanos]+batchPutAssetPropertyError_timestamps = Lens.lens (\BatchPutAssetPropertyError' {timestamps} -> timestamps) (\s@BatchPutAssetPropertyError' {} a -> s {timestamps = a} :: BatchPutAssetPropertyError) Prelude.. Lens.coerced++instance Data.FromJSON BatchPutAssetPropertyError where+  parseJSON =+    Data.withObject+      "BatchPutAssetPropertyError"+      ( \x ->+          BatchPutAssetPropertyError'+            Prelude.<$> (x Data..: "errorCode")+            Prelude.<*> (x Data..: "errorMessage")+            Prelude.<*> (x Data..:? "timestamps" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable BatchPutAssetPropertyError where+  hashWithSalt _salt BatchPutAssetPropertyError' {..} =+    _salt+      `Prelude.hashWithSalt` errorCode+      `Prelude.hashWithSalt` errorMessage+      `Prelude.hashWithSalt` timestamps++instance Prelude.NFData BatchPutAssetPropertyError where+  rnf BatchPutAssetPropertyError' {..} =+    Prelude.rnf errorCode+      `Prelude.seq` Prelude.rnf errorMessage+      `Prelude.seq` Prelude.rnf timestamps
+ gen/Amazonka/IoTSiteWise/Types/BatchPutAssetPropertyErrorEntry.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.IoTSiteWise.Types.BatchPutAssetPropertyErrorEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyErrorEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyError+import qualified Amazonka.Prelude as Prelude++-- | Contains error information for asset property value entries that are+-- associated with the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html BatchPutAssetPropertyValue>+-- API.+--+-- /See:/ 'newBatchPutAssetPropertyErrorEntry' smart constructor.+data BatchPutAssetPropertyErrorEntry = BatchPutAssetPropertyErrorEntry'+  { -- | The ID of the failed entry.+    entryId :: Prelude.Text,+    -- | The list of update property value errors.+    errors :: [BatchPutAssetPropertyError]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchPutAssetPropertyErrorEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'entryId', 'batchPutAssetPropertyErrorEntry_entryId' - The ID of the failed entry.+--+-- 'errors', 'batchPutAssetPropertyErrorEntry_errors' - The list of update property value errors.+newBatchPutAssetPropertyErrorEntry ::+  -- | 'entryId'+  Prelude.Text ->+  BatchPutAssetPropertyErrorEntry+newBatchPutAssetPropertyErrorEntry pEntryId_ =+  BatchPutAssetPropertyErrorEntry'+    { entryId =+        pEntryId_,+      errors = Prelude.mempty+    }++-- | The ID of the failed entry.+batchPutAssetPropertyErrorEntry_entryId :: Lens.Lens' BatchPutAssetPropertyErrorEntry Prelude.Text+batchPutAssetPropertyErrorEntry_entryId = Lens.lens (\BatchPutAssetPropertyErrorEntry' {entryId} -> entryId) (\s@BatchPutAssetPropertyErrorEntry' {} a -> s {entryId = a} :: BatchPutAssetPropertyErrorEntry)++-- | The list of update property value errors.+batchPutAssetPropertyErrorEntry_errors :: Lens.Lens' BatchPutAssetPropertyErrorEntry [BatchPutAssetPropertyError]+batchPutAssetPropertyErrorEntry_errors = Lens.lens (\BatchPutAssetPropertyErrorEntry' {errors} -> errors) (\s@BatchPutAssetPropertyErrorEntry' {} a -> s {errors = a} :: BatchPutAssetPropertyErrorEntry) Prelude.. Lens.coerced++instance+  Data.FromJSON+    BatchPutAssetPropertyErrorEntry+  where+  parseJSON =+    Data.withObject+      "BatchPutAssetPropertyErrorEntry"+      ( \x ->+          BatchPutAssetPropertyErrorEntry'+            Prelude.<$> (x Data..: "entryId")+            Prelude.<*> (x Data..:? "errors" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    BatchPutAssetPropertyErrorEntry+  where+  hashWithSalt+    _salt+    BatchPutAssetPropertyErrorEntry' {..} =+      _salt+        `Prelude.hashWithSalt` entryId+        `Prelude.hashWithSalt` errors++instance+  Prelude.NFData+    BatchPutAssetPropertyErrorEntry+  where+  rnf BatchPutAssetPropertyErrorEntry' {..} =+    Prelude.rnf entryId+      `Prelude.seq` Prelude.rnf errors
+ gen/Amazonka/IoTSiteWise/Types/BatchPutAssetPropertyValueErrorCode.hs view
@@ -0,0 +1,106 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyValueErrorCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.BatchPutAssetPropertyValueErrorCode+  ( BatchPutAssetPropertyValueErrorCode+      ( ..,+        BatchPutAssetPropertyValueErrorCode_AccessDeniedException,+        BatchPutAssetPropertyValueErrorCode_ConflictingOperationException,+        BatchPutAssetPropertyValueErrorCode_InternalFailureException,+        BatchPutAssetPropertyValueErrorCode_InvalidRequestException,+        BatchPutAssetPropertyValueErrorCode_LimitExceededException,+        BatchPutAssetPropertyValueErrorCode_ResourceNotFoundException,+        BatchPutAssetPropertyValueErrorCode_ServiceUnavailableException,+        BatchPutAssetPropertyValueErrorCode_ThrottlingException,+        BatchPutAssetPropertyValueErrorCode_TimestampOutOfRangeException+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype BatchPutAssetPropertyValueErrorCode = BatchPutAssetPropertyValueErrorCode'+  { fromBatchPutAssetPropertyValueErrorCode ::+      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 BatchPutAssetPropertyValueErrorCode_AccessDeniedException :: BatchPutAssetPropertyValueErrorCode+pattern BatchPutAssetPropertyValueErrorCode_AccessDeniedException = BatchPutAssetPropertyValueErrorCode' "AccessDeniedException"++pattern BatchPutAssetPropertyValueErrorCode_ConflictingOperationException :: BatchPutAssetPropertyValueErrorCode+pattern BatchPutAssetPropertyValueErrorCode_ConflictingOperationException = BatchPutAssetPropertyValueErrorCode' "ConflictingOperationException"++pattern BatchPutAssetPropertyValueErrorCode_InternalFailureException :: BatchPutAssetPropertyValueErrorCode+pattern BatchPutAssetPropertyValueErrorCode_InternalFailureException = BatchPutAssetPropertyValueErrorCode' "InternalFailureException"++pattern BatchPutAssetPropertyValueErrorCode_InvalidRequestException :: BatchPutAssetPropertyValueErrorCode+pattern BatchPutAssetPropertyValueErrorCode_InvalidRequestException = BatchPutAssetPropertyValueErrorCode' "InvalidRequestException"++pattern BatchPutAssetPropertyValueErrorCode_LimitExceededException :: BatchPutAssetPropertyValueErrorCode+pattern BatchPutAssetPropertyValueErrorCode_LimitExceededException = BatchPutAssetPropertyValueErrorCode' "LimitExceededException"++pattern BatchPutAssetPropertyValueErrorCode_ResourceNotFoundException :: BatchPutAssetPropertyValueErrorCode+pattern BatchPutAssetPropertyValueErrorCode_ResourceNotFoundException = BatchPutAssetPropertyValueErrorCode' "ResourceNotFoundException"++pattern BatchPutAssetPropertyValueErrorCode_ServiceUnavailableException :: BatchPutAssetPropertyValueErrorCode+pattern BatchPutAssetPropertyValueErrorCode_ServiceUnavailableException = BatchPutAssetPropertyValueErrorCode' "ServiceUnavailableException"++pattern BatchPutAssetPropertyValueErrorCode_ThrottlingException :: BatchPutAssetPropertyValueErrorCode+pattern BatchPutAssetPropertyValueErrorCode_ThrottlingException = BatchPutAssetPropertyValueErrorCode' "ThrottlingException"++pattern BatchPutAssetPropertyValueErrorCode_TimestampOutOfRangeException :: BatchPutAssetPropertyValueErrorCode+pattern BatchPutAssetPropertyValueErrorCode_TimestampOutOfRangeException = BatchPutAssetPropertyValueErrorCode' "TimestampOutOfRangeException"++{-# COMPLETE+  BatchPutAssetPropertyValueErrorCode_AccessDeniedException,+  BatchPutAssetPropertyValueErrorCode_ConflictingOperationException,+  BatchPutAssetPropertyValueErrorCode_InternalFailureException,+  BatchPutAssetPropertyValueErrorCode_InvalidRequestException,+  BatchPutAssetPropertyValueErrorCode_LimitExceededException,+  BatchPutAssetPropertyValueErrorCode_ResourceNotFoundException,+  BatchPutAssetPropertyValueErrorCode_ServiceUnavailableException,+  BatchPutAssetPropertyValueErrorCode_ThrottlingException,+  BatchPutAssetPropertyValueErrorCode_TimestampOutOfRangeException,+  BatchPutAssetPropertyValueErrorCode'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/CapabilitySyncStatus.hs view
@@ -0,0 +1,81 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.CapabilitySyncStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.CapabilitySyncStatus+  ( CapabilitySyncStatus+      ( ..,+        CapabilitySyncStatus_IN_SYNC,+        CapabilitySyncStatus_OUT_OF_SYNC,+        CapabilitySyncStatus_SYNC_FAILED,+        CapabilitySyncStatus_UNKNOWN+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype CapabilitySyncStatus = CapabilitySyncStatus'+  { fromCapabilitySyncStatus ::+      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 CapabilitySyncStatus_IN_SYNC :: CapabilitySyncStatus+pattern CapabilitySyncStatus_IN_SYNC = CapabilitySyncStatus' "IN_SYNC"++pattern CapabilitySyncStatus_OUT_OF_SYNC :: CapabilitySyncStatus+pattern CapabilitySyncStatus_OUT_OF_SYNC = CapabilitySyncStatus' "OUT_OF_SYNC"++pattern CapabilitySyncStatus_SYNC_FAILED :: CapabilitySyncStatus+pattern CapabilitySyncStatus_SYNC_FAILED = CapabilitySyncStatus' "SYNC_FAILED"++pattern CapabilitySyncStatus_UNKNOWN :: CapabilitySyncStatus+pattern CapabilitySyncStatus_UNKNOWN = CapabilitySyncStatus' "UNKNOWN"++{-# COMPLETE+  CapabilitySyncStatus_IN_SYNC,+  CapabilitySyncStatus_OUT_OF_SYNC,+  CapabilitySyncStatus_SYNC_FAILED,+  CapabilitySyncStatus_UNKNOWN,+  CapabilitySyncStatus'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/ColumnName.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ColumnName+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ColumnName+  ( ColumnName+      ( ..,+        ColumnName_ALIAS,+        ColumnName_ASSET_ID,+        ColumnName_DATA_TYPE,+        ColumnName_PROPERTY_ID,+        ColumnName_QUALITY,+        ColumnName_TIMESTAMP_NANO_OFFSET,+        ColumnName_TIMESTAMP_SECONDS,+        ColumnName_VALUE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ColumnName = ColumnName'+  { fromColumnName ::+      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 ColumnName_ALIAS :: ColumnName+pattern ColumnName_ALIAS = ColumnName' "ALIAS"++pattern ColumnName_ASSET_ID :: ColumnName+pattern ColumnName_ASSET_ID = ColumnName' "ASSET_ID"++pattern ColumnName_DATA_TYPE :: ColumnName+pattern ColumnName_DATA_TYPE = ColumnName' "DATA_TYPE"++pattern ColumnName_PROPERTY_ID :: ColumnName+pattern ColumnName_PROPERTY_ID = ColumnName' "PROPERTY_ID"++pattern ColumnName_QUALITY :: ColumnName+pattern ColumnName_QUALITY = ColumnName' "QUALITY"++pattern ColumnName_TIMESTAMP_NANO_OFFSET :: ColumnName+pattern ColumnName_TIMESTAMP_NANO_OFFSET = ColumnName' "TIMESTAMP_NANO_OFFSET"++pattern ColumnName_TIMESTAMP_SECONDS :: ColumnName+pattern ColumnName_TIMESTAMP_SECONDS = ColumnName' "TIMESTAMP_SECONDS"++pattern ColumnName_VALUE :: ColumnName+pattern ColumnName_VALUE = ColumnName' "VALUE"++{-# COMPLETE+  ColumnName_ALIAS,+  ColumnName_ASSET_ID,+  ColumnName_DATA_TYPE,+  ColumnName_PROPERTY_ID,+  ColumnName_QUALITY,+  ColumnName_TIMESTAMP_NANO_OFFSET,+  ColumnName_TIMESTAMP_SECONDS,+  ColumnName_VALUE,+  ColumnName'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/CompositeModelProperty.hs view
@@ -0,0 +1,117 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.CompositeModelProperty+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.CompositeModelProperty where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.Property+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a composite model property on an asset.+--+-- /See:/ 'newCompositeModelProperty' smart constructor.+data CompositeModelProperty = CompositeModelProperty'+  { -- | The ID of the composite model that contains the property.+    id :: Prelude.Maybe Prelude.Text,+    -- | The name of the property.+    name :: Prelude.Text,+    -- | The type of the composite model that defines this property.+    type' :: Prelude.Text,+    assetProperty :: Property+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CompositeModelProperty' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'compositeModelProperty_id' - The ID of the composite model that contains the property.+--+-- 'name', 'compositeModelProperty_name' - The name of the property.+--+-- 'type'', 'compositeModelProperty_type' - The type of the composite model that defines this property.+--+-- 'assetProperty', 'compositeModelProperty_assetProperty' - Undocumented member.+newCompositeModelProperty ::+  -- | 'name'+  Prelude.Text ->+  -- | 'type''+  Prelude.Text ->+  -- | 'assetProperty'+  Property ->+  CompositeModelProperty+newCompositeModelProperty+  pName_+  pType_+  pAssetProperty_ =+    CompositeModelProperty'+      { id = Prelude.Nothing,+        name = pName_,+        type' = pType_,+        assetProperty = pAssetProperty_+      }++-- | The ID of the composite model that contains the property.+compositeModelProperty_id :: Lens.Lens' CompositeModelProperty (Prelude.Maybe Prelude.Text)+compositeModelProperty_id = Lens.lens (\CompositeModelProperty' {id} -> id) (\s@CompositeModelProperty' {} a -> s {id = a} :: CompositeModelProperty)++-- | The name of the property.+compositeModelProperty_name :: Lens.Lens' CompositeModelProperty Prelude.Text+compositeModelProperty_name = Lens.lens (\CompositeModelProperty' {name} -> name) (\s@CompositeModelProperty' {} a -> s {name = a} :: CompositeModelProperty)++-- | The type of the composite model that defines this property.+compositeModelProperty_type :: Lens.Lens' CompositeModelProperty Prelude.Text+compositeModelProperty_type = Lens.lens (\CompositeModelProperty' {type'} -> type') (\s@CompositeModelProperty' {} a -> s {type' = a} :: CompositeModelProperty)++-- | Undocumented member.+compositeModelProperty_assetProperty :: Lens.Lens' CompositeModelProperty Property+compositeModelProperty_assetProperty = Lens.lens (\CompositeModelProperty' {assetProperty} -> assetProperty) (\s@CompositeModelProperty' {} a -> s {assetProperty = a} :: CompositeModelProperty)++instance Data.FromJSON CompositeModelProperty where+  parseJSON =+    Data.withObject+      "CompositeModelProperty"+      ( \x ->+          CompositeModelProperty'+            Prelude.<$> (x Data..:? "id")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "type")+            Prelude.<*> (x Data..: "assetProperty")+      )++instance Prelude.Hashable CompositeModelProperty where+  hashWithSalt _salt CompositeModelProperty' {..} =+    _salt+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` assetProperty++instance Prelude.NFData CompositeModelProperty where+  rnf CompositeModelProperty' {..} =+    Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf assetProperty
+ gen/Amazonka/IoTSiteWise/Types/ComputeLocation.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.IoTSiteWise.Types.ComputeLocation+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ComputeLocation+  ( ComputeLocation+      ( ..,+        ComputeLocation_CLOUD,+        ComputeLocation_EDGE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ComputeLocation = ComputeLocation'+  { fromComputeLocation ::+      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 ComputeLocation_CLOUD :: ComputeLocation+pattern ComputeLocation_CLOUD = ComputeLocation' "CLOUD"++pattern ComputeLocation_EDGE :: ComputeLocation+pattern ComputeLocation_EDGE = ComputeLocation' "EDGE"++{-# COMPLETE+  ComputeLocation_CLOUD,+  ComputeLocation_EDGE,+  ComputeLocation'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/ConfigurationErrorDetails.hs view
@@ -0,0 +1,88 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ConfigurationErrorDetails+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ConfigurationErrorDetails where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.ErrorCode+import qualified Amazonka.Prelude as Prelude++-- | Contains the details of an IoT SiteWise configuration error.+--+-- /See:/ 'newConfigurationErrorDetails' smart constructor.+data ConfigurationErrorDetails = ConfigurationErrorDetails'+  { -- | The error code.+    code :: ErrorCode,+    -- | The error message.+    message :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ConfigurationErrorDetails' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'configurationErrorDetails_code' - The error code.+--+-- 'message', 'configurationErrorDetails_message' - The error message.+newConfigurationErrorDetails ::+  -- | 'code'+  ErrorCode ->+  -- | 'message'+  Prelude.Text ->+  ConfigurationErrorDetails+newConfigurationErrorDetails pCode_ pMessage_ =+  ConfigurationErrorDetails'+    { code = pCode_,+      message = pMessage_+    }++-- | The error code.+configurationErrorDetails_code :: Lens.Lens' ConfigurationErrorDetails ErrorCode+configurationErrorDetails_code = Lens.lens (\ConfigurationErrorDetails' {code} -> code) (\s@ConfigurationErrorDetails' {} a -> s {code = a} :: ConfigurationErrorDetails)++-- | The error message.+configurationErrorDetails_message :: Lens.Lens' ConfigurationErrorDetails Prelude.Text+configurationErrorDetails_message = Lens.lens (\ConfigurationErrorDetails' {message} -> message) (\s@ConfigurationErrorDetails' {} a -> s {message = a} :: ConfigurationErrorDetails)++instance Data.FromJSON ConfigurationErrorDetails where+  parseJSON =+    Data.withObject+      "ConfigurationErrorDetails"+      ( \x ->+          ConfigurationErrorDetails'+            Prelude.<$> (x Data..: "code")+            Prelude.<*> (x Data..: "message")+      )++instance Prelude.Hashable ConfigurationErrorDetails where+  hashWithSalt _salt ConfigurationErrorDetails' {..} =+    _salt+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` message++instance Prelude.NFData ConfigurationErrorDetails where+  rnf ConfigurationErrorDetails' {..} =+    Prelude.rnf code `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/IoTSiteWise/Types/ConfigurationState.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.IoTSiteWise.Types.ConfigurationState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ConfigurationState+  ( ConfigurationState+      ( ..,+        ConfigurationState_ACTIVE,+        ConfigurationState_UPDATE_FAILED,+        ConfigurationState_UPDATE_IN_PROGRESS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ConfigurationState = ConfigurationState'+  { fromConfigurationState ::+      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 ConfigurationState_ACTIVE :: ConfigurationState+pattern ConfigurationState_ACTIVE = ConfigurationState' "ACTIVE"++pattern ConfigurationState_UPDATE_FAILED :: ConfigurationState+pattern ConfigurationState_UPDATE_FAILED = ConfigurationState' "UPDATE_FAILED"++pattern ConfigurationState_UPDATE_IN_PROGRESS :: ConfigurationState+pattern ConfigurationState_UPDATE_IN_PROGRESS = ConfigurationState' "UPDATE_IN_PROGRESS"++{-# COMPLETE+  ConfigurationState_ACTIVE,+  ConfigurationState_UPDATE_FAILED,+  ConfigurationState_UPDATE_IN_PROGRESS,+  ConfigurationState'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/ConfigurationStatus.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ConfigurationStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ConfigurationStatus where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.ConfigurationErrorDetails+import Amazonka.IoTSiteWise.Types.ConfigurationState+import qualified Amazonka.Prelude as Prelude++-- | Contains current status information for the configuration.+--+-- /See:/ 'newConfigurationStatus' smart constructor.+data ConfigurationStatus = ConfigurationStatus'+  { -- | Contains associated error information, if any.+    error :: Prelude.Maybe ConfigurationErrorDetails,+    -- | The current state of the configuration.+    state :: ConfigurationState+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ConfigurationStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'configurationStatus_error' - Contains associated error information, if any.+--+-- 'state', 'configurationStatus_state' - The current state of the configuration.+newConfigurationStatus ::+  -- | 'state'+  ConfigurationState ->+  ConfigurationStatus+newConfigurationStatus pState_ =+  ConfigurationStatus'+    { error = Prelude.Nothing,+      state = pState_+    }++-- | Contains associated error information, if any.+configurationStatus_error :: Lens.Lens' ConfigurationStatus (Prelude.Maybe ConfigurationErrorDetails)+configurationStatus_error = Lens.lens (\ConfigurationStatus' {error} -> error) (\s@ConfigurationStatus' {} a -> s {error = a} :: ConfigurationStatus)++-- | The current state of the configuration.+configurationStatus_state :: Lens.Lens' ConfigurationStatus ConfigurationState+configurationStatus_state = Lens.lens (\ConfigurationStatus' {state} -> state) (\s@ConfigurationStatus' {} a -> s {state = a} :: ConfigurationStatus)++instance Data.FromJSON ConfigurationStatus where+  parseJSON =+    Data.withObject+      "ConfigurationStatus"+      ( \x ->+          ConfigurationStatus'+            Prelude.<$> (x Data..:? "error")+            Prelude.<*> (x Data..: "state")+      )++instance Prelude.Hashable ConfigurationStatus where+  hashWithSalt _salt ConfigurationStatus' {..} =+    _salt+      `Prelude.hashWithSalt` error+      `Prelude.hashWithSalt` state++instance Prelude.NFData ConfigurationStatus where+  rnf ConfigurationStatus' {..} =+    Prelude.rnf error `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/IoTSiteWise/Types/Csv.hs view
@@ -0,0 +1,75 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.Csv+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Csv where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.ColumnName+import qualified Amazonka.Prelude as Prelude++-- | A .csv file.+--+-- /See:/ 'newCsv' smart constructor.+data Csv = Csv'+  { -- | The column names specified in the .csv file.+    columnNames :: Prelude.Maybe [ColumnName]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Csv' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'columnNames', 'csv_columnNames' - The column names specified in the .csv file.+newCsv ::+  Csv+newCsv = Csv' {columnNames = Prelude.Nothing}++-- | The column names specified in the .csv file.+csv_columnNames :: Lens.Lens' Csv (Prelude.Maybe [ColumnName])+csv_columnNames = Lens.lens (\Csv' {columnNames} -> columnNames) (\s@Csv' {} a -> s {columnNames = a} :: Csv) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON Csv where+  parseJSON =+    Data.withObject+      "Csv"+      ( \x ->+          Csv'+            Prelude.<$> (x Data..:? "columnNames" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Csv where+  hashWithSalt _salt Csv' {..} =+    _salt `Prelude.hashWithSalt` columnNames++instance Prelude.NFData Csv where+  rnf Csv' {..} = Prelude.rnf columnNames++instance Data.ToJSON Csv where+  toJSON Csv' {..} =+    Data.object+      ( Prelude.catMaybes+          [("columnNames" Data..=) Prelude.<$> columnNames]+      )
+ gen/Amazonka/IoTSiteWise/Types/CustomerManagedS3Storage.hs view
@@ -0,0 +1,123 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.CustomerManagedS3Storage+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.CustomerManagedS3Storage 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 information about a customer managed Amazon S3 bucket.+--+-- /See:/ 'newCustomerManagedS3Storage' smart constructor.+data CustomerManagedS3Storage = CustomerManagedS3Storage'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the Amazon S3 object. For more information about how to find the ARN+    -- for an Amazon S3 object, see+    -- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html Amazon S3 resources>+    -- in the /Amazon Simple Storage Service User Guide/.+    s3ResourceArn :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the Identity and Access Management role that allows IoT SiteWise to+    -- send data to Amazon S3.+    roleArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CustomerManagedS3Storage' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 's3ResourceArn', 'customerManagedS3Storage_s3ResourceArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the Amazon S3 object. For more information about how to find the ARN+-- for an Amazon S3 object, see+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html Amazon S3 resources>+-- in the /Amazon Simple Storage Service User Guide/.+--+-- 'roleArn', 'customerManagedS3Storage_roleArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the Identity and Access Management role that allows IoT SiteWise to+-- send data to Amazon S3.+newCustomerManagedS3Storage ::+  -- | 's3ResourceArn'+  Prelude.Text ->+  -- | 'roleArn'+  Prelude.Text ->+  CustomerManagedS3Storage+newCustomerManagedS3Storage pS3ResourceArn_ pRoleArn_ =+  CustomerManagedS3Storage'+    { s3ResourceArn =+        pS3ResourceArn_,+      roleArn = pRoleArn_+    }++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the Amazon S3 object. For more information about how to find the ARN+-- for an Amazon S3 object, see+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-arn-format.html Amazon S3 resources>+-- in the /Amazon Simple Storage Service User Guide/.+customerManagedS3Storage_s3ResourceArn :: Lens.Lens' CustomerManagedS3Storage Prelude.Text+customerManagedS3Storage_s3ResourceArn = Lens.lens (\CustomerManagedS3Storage' {s3ResourceArn} -> s3ResourceArn) (\s@CustomerManagedS3Storage' {} a -> s {s3ResourceArn = a} :: CustomerManagedS3Storage)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the Identity and Access Management role that allows IoT SiteWise to+-- send data to Amazon S3.+customerManagedS3Storage_roleArn :: Lens.Lens' CustomerManagedS3Storage Prelude.Text+customerManagedS3Storage_roleArn = Lens.lens (\CustomerManagedS3Storage' {roleArn} -> roleArn) (\s@CustomerManagedS3Storage' {} a -> s {roleArn = a} :: CustomerManagedS3Storage)++instance Data.FromJSON CustomerManagedS3Storage where+  parseJSON =+    Data.withObject+      "CustomerManagedS3Storage"+      ( \x ->+          CustomerManagedS3Storage'+            Prelude.<$> (x Data..: "s3ResourceArn")+            Prelude.<*> (x Data..: "roleArn")+      )++instance Prelude.Hashable CustomerManagedS3Storage where+  hashWithSalt _salt CustomerManagedS3Storage' {..} =+    _salt+      `Prelude.hashWithSalt` s3ResourceArn+      `Prelude.hashWithSalt` roleArn++instance Prelude.NFData CustomerManagedS3Storage where+  rnf CustomerManagedS3Storage' {..} =+    Prelude.rnf s3ResourceArn+      `Prelude.seq` Prelude.rnf roleArn++instance Data.ToJSON CustomerManagedS3Storage where+  toJSON CustomerManagedS3Storage' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("s3ResourceArn" Data..= s3ResourceArn),+            Prelude.Just ("roleArn" Data..= roleArn)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/DashboardSummary.hs view
@@ -0,0 +1,124 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.DashboardSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.DashboardSummary 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 dashboard summary.+--+-- /See:/ 'newDashboardSummary' smart constructor.+data DashboardSummary = DashboardSummary'+  { -- | The date the dashboard was created, in Unix epoch time.+    creationDate :: Prelude.Maybe Data.POSIX,+    -- | The dashboard\'s description.+    description :: Prelude.Maybe Prelude.Text,+    -- | The date the dashboard was last updated, in Unix epoch time.+    lastUpdateDate :: Prelude.Maybe Data.POSIX,+    -- | The ID of the dashboard.+    id :: Prelude.Text,+    -- | The name of the dashboard+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DashboardSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'creationDate', 'dashboardSummary_creationDate' - The date the dashboard was created, in Unix epoch time.+--+-- 'description', 'dashboardSummary_description' - The dashboard\'s description.+--+-- 'lastUpdateDate', 'dashboardSummary_lastUpdateDate' - The date the dashboard was last updated, in Unix epoch time.+--+-- 'id', 'dashboardSummary_id' - The ID of the dashboard.+--+-- 'name', 'dashboardSummary_name' - The name of the dashboard+newDashboardSummary ::+  -- | 'id'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  DashboardSummary+newDashboardSummary pId_ pName_ =+  DashboardSummary'+    { creationDate = Prelude.Nothing,+      description = Prelude.Nothing,+      lastUpdateDate = Prelude.Nothing,+      id = pId_,+      name = pName_+    }++-- | The date the dashboard was created, in Unix epoch time.+dashboardSummary_creationDate :: Lens.Lens' DashboardSummary (Prelude.Maybe Prelude.UTCTime)+dashboardSummary_creationDate = Lens.lens (\DashboardSummary' {creationDate} -> creationDate) (\s@DashboardSummary' {} a -> s {creationDate = a} :: DashboardSummary) Prelude.. Lens.mapping Data._Time++-- | The dashboard\'s description.+dashboardSummary_description :: Lens.Lens' DashboardSummary (Prelude.Maybe Prelude.Text)+dashboardSummary_description = Lens.lens (\DashboardSummary' {description} -> description) (\s@DashboardSummary' {} a -> s {description = a} :: DashboardSummary)++-- | The date the dashboard was last updated, in Unix epoch time.+dashboardSummary_lastUpdateDate :: Lens.Lens' DashboardSummary (Prelude.Maybe Prelude.UTCTime)+dashboardSummary_lastUpdateDate = Lens.lens (\DashboardSummary' {lastUpdateDate} -> lastUpdateDate) (\s@DashboardSummary' {} a -> s {lastUpdateDate = a} :: DashboardSummary) Prelude.. Lens.mapping Data._Time++-- | The ID of the dashboard.+dashboardSummary_id :: Lens.Lens' DashboardSummary Prelude.Text+dashboardSummary_id = Lens.lens (\DashboardSummary' {id} -> id) (\s@DashboardSummary' {} a -> s {id = a} :: DashboardSummary)++-- | The name of the dashboard+dashboardSummary_name :: Lens.Lens' DashboardSummary Prelude.Text+dashboardSummary_name = Lens.lens (\DashboardSummary' {name} -> name) (\s@DashboardSummary' {} a -> s {name = a} :: DashboardSummary)++instance Data.FromJSON DashboardSummary where+  parseJSON =+    Data.withObject+      "DashboardSummary"+      ( \x ->+          DashboardSummary'+            Prelude.<$> (x Data..:? "creationDate")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "lastUpdateDate")+            Prelude.<*> (x Data..: "id")+            Prelude.<*> (x Data..: "name")+      )++instance Prelude.Hashable DashboardSummary where+  hashWithSalt _salt DashboardSummary' {..} =+    _salt+      `Prelude.hashWithSalt` creationDate+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` lastUpdateDate+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name++instance Prelude.NFData DashboardSummary where+  rnf DashboardSummary' {..} =+    Prelude.rnf creationDate+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf lastUpdateDate+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf name
+ gen/Amazonka/IoTSiteWise/Types/DetailedError.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.IoTSiteWise.Types.DetailedError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.DetailedError where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.DetailedErrorCode+import qualified Amazonka.Prelude as Prelude++-- | Contains detailed error information.+--+-- /See:/ 'newDetailedError' smart constructor.+data DetailedError = DetailedError'+  { -- | The error code.+    code :: DetailedErrorCode,+    -- | The error message.+    message :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DetailedError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'detailedError_code' - The error code.+--+-- 'message', 'detailedError_message' - The error message.+newDetailedError ::+  -- | 'code'+  DetailedErrorCode ->+  -- | 'message'+  Prelude.Text ->+  DetailedError+newDetailedError pCode_ pMessage_ =+  DetailedError' {code = pCode_, message = pMessage_}++-- | The error code.+detailedError_code :: Lens.Lens' DetailedError DetailedErrorCode+detailedError_code = Lens.lens (\DetailedError' {code} -> code) (\s@DetailedError' {} a -> s {code = a} :: DetailedError)++-- | The error message.+detailedError_message :: Lens.Lens' DetailedError Prelude.Text+detailedError_message = Lens.lens (\DetailedError' {message} -> message) (\s@DetailedError' {} a -> s {message = a} :: DetailedError)++instance Data.FromJSON DetailedError where+  parseJSON =+    Data.withObject+      "DetailedError"+      ( \x ->+          DetailedError'+            Prelude.<$> (x Data..: "code")+            Prelude.<*> (x Data..: "message")+      )++instance Prelude.Hashable DetailedError where+  hashWithSalt _salt DetailedError' {..} =+    _salt+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` message++instance Prelude.NFData DetailedError where+  rnf DetailedError' {..} =+    Prelude.rnf code `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/IoTSiteWise/Types/DetailedErrorCode.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.IoTSiteWise.Types.DetailedErrorCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.DetailedErrorCode+  ( DetailedErrorCode+      ( ..,+        DetailedErrorCode_INCOMPATIBLE_COMPUTE_LOCATION,+        DetailedErrorCode_INCOMPATIBLE_FORWARDING_CONFIGURATION+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DetailedErrorCode = DetailedErrorCode'+  { fromDetailedErrorCode ::+      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 DetailedErrorCode_INCOMPATIBLE_COMPUTE_LOCATION :: DetailedErrorCode+pattern DetailedErrorCode_INCOMPATIBLE_COMPUTE_LOCATION = DetailedErrorCode' "INCOMPATIBLE_COMPUTE_LOCATION"++pattern DetailedErrorCode_INCOMPATIBLE_FORWARDING_CONFIGURATION :: DetailedErrorCode+pattern DetailedErrorCode_INCOMPATIBLE_FORWARDING_CONFIGURATION = DetailedErrorCode' "INCOMPATIBLE_FORWARDING_CONFIGURATION"++{-# COMPLETE+  DetailedErrorCode_INCOMPATIBLE_COMPUTE_LOCATION,+  DetailedErrorCode_INCOMPATIBLE_FORWARDING_CONFIGURATION,+  DetailedErrorCode'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/DisassociatedDataStorageState.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.IoTSiteWise.Types.DisassociatedDataStorageState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.DisassociatedDataStorageState+  ( DisassociatedDataStorageState+      ( ..,+        DisassociatedDataStorageState_DISABLED,+        DisassociatedDataStorageState_ENABLED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DisassociatedDataStorageState = DisassociatedDataStorageState'+  { fromDisassociatedDataStorageState ::+      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 DisassociatedDataStorageState_DISABLED :: DisassociatedDataStorageState+pattern DisassociatedDataStorageState_DISABLED = DisassociatedDataStorageState' "DISABLED"++pattern DisassociatedDataStorageState_ENABLED :: DisassociatedDataStorageState+pattern DisassociatedDataStorageState_ENABLED = DisassociatedDataStorageState' "ENABLED"++{-# COMPLETE+  DisassociatedDataStorageState_DISABLED,+  DisassociatedDataStorageState_ENABLED,+  DisassociatedDataStorageState'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/EncryptionType.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.IoTSiteWise.Types.EncryptionType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.EncryptionType+  ( EncryptionType+      ( ..,+        EncryptionType_KMS_BASED_ENCRYPTION,+        EncryptionType_SITEWISE_DEFAULT_ENCRYPTION+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EncryptionType = EncryptionType'+  { fromEncryptionType ::+      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 EncryptionType_KMS_BASED_ENCRYPTION :: EncryptionType+pattern EncryptionType_KMS_BASED_ENCRYPTION = EncryptionType' "KMS_BASED_ENCRYPTION"++pattern EncryptionType_SITEWISE_DEFAULT_ENCRYPTION :: EncryptionType+pattern EncryptionType_SITEWISE_DEFAULT_ENCRYPTION = EncryptionType' "SITEWISE_DEFAULT_ENCRYPTION"++{-# COMPLETE+  EncryptionType_KMS_BASED_ENCRYPTION,+  EncryptionType_SITEWISE_DEFAULT_ENCRYPTION,+  EncryptionType'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/ErrorCode.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.IoTSiteWise.Types.ErrorCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ErrorCode+  ( ErrorCode+      ( ..,+        ErrorCode_INTERNAL_FAILURE,+        ErrorCode_VALIDATION_ERROR+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ErrorCode = ErrorCode'+  { fromErrorCode ::+      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 ErrorCode_INTERNAL_FAILURE :: ErrorCode+pattern ErrorCode_INTERNAL_FAILURE = ErrorCode' "INTERNAL_FAILURE"++pattern ErrorCode_VALIDATION_ERROR :: ErrorCode+pattern ErrorCode_VALIDATION_ERROR = ErrorCode' "VALIDATION_ERROR"++{-# COMPLETE+  ErrorCode_INTERNAL_FAILURE,+  ErrorCode_VALIDATION_ERROR,+  ErrorCode'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/ErrorDetails.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.IoTSiteWise.Types.ErrorDetails+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ErrorDetails where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.DetailedError+import Amazonka.IoTSiteWise.Types.ErrorCode+import qualified Amazonka.Prelude as Prelude++-- | Contains the details of an IoT SiteWise error.+--+-- /See:/ 'newErrorDetails' smart constructor.+data ErrorDetails = ErrorDetails'+  { -- | A list of detailed errors.+    details :: Prelude.Maybe [DetailedError],+    -- | The error code.+    code :: ErrorCode,+    -- | The error message.+    message :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ErrorDetails' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'details', 'errorDetails_details' - A list of detailed errors.+--+-- 'code', 'errorDetails_code' - The error code.+--+-- 'message', 'errorDetails_message' - The error message.+newErrorDetails ::+  -- | 'code'+  ErrorCode ->+  -- | 'message'+  Prelude.Text ->+  ErrorDetails+newErrorDetails pCode_ pMessage_ =+  ErrorDetails'+    { details = Prelude.Nothing,+      code = pCode_,+      message = pMessage_+    }++-- | A list of detailed errors.+errorDetails_details :: Lens.Lens' ErrorDetails (Prelude.Maybe [DetailedError])+errorDetails_details = Lens.lens (\ErrorDetails' {details} -> details) (\s@ErrorDetails' {} a -> s {details = a} :: ErrorDetails) Prelude.. Lens.mapping Lens.coerced++-- | The error code.+errorDetails_code :: Lens.Lens' ErrorDetails ErrorCode+errorDetails_code = Lens.lens (\ErrorDetails' {code} -> code) (\s@ErrorDetails' {} a -> s {code = a} :: ErrorDetails)++-- | The error message.+errorDetails_message :: Lens.Lens' ErrorDetails Prelude.Text+errorDetails_message = Lens.lens (\ErrorDetails' {message} -> message) (\s@ErrorDetails' {} a -> s {message = a} :: ErrorDetails)++instance Data.FromJSON ErrorDetails where+  parseJSON =+    Data.withObject+      "ErrorDetails"+      ( \x ->+          ErrorDetails'+            Prelude.<$> (x Data..:? "details" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "code")+            Prelude.<*> (x Data..: "message")+      )++instance Prelude.Hashable ErrorDetails where+  hashWithSalt _salt ErrorDetails' {..} =+    _salt+      `Prelude.hashWithSalt` details+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` message++instance Prelude.NFData ErrorDetails where+  rnf ErrorDetails' {..} =+    Prelude.rnf details+      `Prelude.seq` Prelude.rnf code+      `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/IoTSiteWise/Types/ErrorReportLocation.hs view
@@ -0,0 +1,115 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ErrorReportLocation+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ErrorReportLocation where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The Amazon S3 destination where errors associated with the job creation+-- request are saved.+--+-- /See:/ 'newErrorReportLocation' smart constructor.+data ErrorReportLocation = ErrorReportLocation'+  { -- | The name of the Amazon S3 bucket to which errors associated with the+    -- bulk import job are sent.+    bucket :: Prelude.Text,+    -- | Amazon S3 uses the prefix as a folder name to organize data in the+    -- bucket. Each Amazon S3 object has a key that is its unique identifier in+    -- the bucket. Each object in a bucket has exactly one key. The prefix must+    -- end with a forward slash (\/). For more information, see+    -- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html Organizing objects using prefixes>+    -- in the /Amazon Simple Storage Service User Guide/.+    prefix :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ErrorReportLocation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'bucket', 'errorReportLocation_bucket' - The name of the Amazon S3 bucket to which errors associated with the+-- bulk import job are sent.+--+-- 'prefix', 'errorReportLocation_prefix' - Amazon S3 uses the prefix as a folder name to organize data in the+-- bucket. Each Amazon S3 object has a key that is its unique identifier in+-- the bucket. Each object in a bucket has exactly one key. The prefix must+-- end with a forward slash (\/). For more information, see+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html Organizing objects using prefixes>+-- in the /Amazon Simple Storage Service User Guide/.+newErrorReportLocation ::+  -- | 'bucket'+  Prelude.Text ->+  -- | 'prefix'+  Prelude.Text ->+  ErrorReportLocation+newErrorReportLocation pBucket_ pPrefix_ =+  ErrorReportLocation'+    { bucket = pBucket_,+      prefix = pPrefix_+    }++-- | The name of the Amazon S3 bucket to which errors associated with the+-- bulk import job are sent.+errorReportLocation_bucket :: Lens.Lens' ErrorReportLocation Prelude.Text+errorReportLocation_bucket = Lens.lens (\ErrorReportLocation' {bucket} -> bucket) (\s@ErrorReportLocation' {} a -> s {bucket = a} :: ErrorReportLocation)++-- | Amazon S3 uses the prefix as a folder name to organize data in the+-- bucket. Each Amazon S3 object has a key that is its unique identifier in+-- the bucket. Each object in a bucket has exactly one key. The prefix must+-- end with a forward slash (\/). For more information, see+-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html Organizing objects using prefixes>+-- in the /Amazon Simple Storage Service User Guide/.+errorReportLocation_prefix :: Lens.Lens' ErrorReportLocation Prelude.Text+errorReportLocation_prefix = Lens.lens (\ErrorReportLocation' {prefix} -> prefix) (\s@ErrorReportLocation' {} a -> s {prefix = a} :: ErrorReportLocation)++instance Data.FromJSON ErrorReportLocation where+  parseJSON =+    Data.withObject+      "ErrorReportLocation"+      ( \x ->+          ErrorReportLocation'+            Prelude.<$> (x Data..: "bucket")+            Prelude.<*> (x Data..: "prefix")+      )++instance Prelude.Hashable ErrorReportLocation where+  hashWithSalt _salt ErrorReportLocation' {..} =+    _salt+      `Prelude.hashWithSalt` bucket+      `Prelude.hashWithSalt` prefix++instance Prelude.NFData ErrorReportLocation where+  rnf ErrorReportLocation' {..} =+    Prelude.rnf bucket `Prelude.seq` Prelude.rnf prefix++instance Data.ToJSON ErrorReportLocation where+  toJSON ErrorReportLocation' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("bucket" Data..= bucket),+            Prelude.Just ("prefix" Data..= prefix)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/ExpressionVariable.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ExpressionVariable+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ExpressionVariable where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.VariableValue+import qualified Amazonka.Prelude as Prelude++-- | Contains expression variable information.+--+-- /See:/ 'newExpressionVariable' smart constructor.+data ExpressionVariable = ExpressionVariable'+  { -- | The friendly name of the variable to be used in the expression.+    name :: Prelude.Text,+    -- | The variable that identifies an asset property from which to use values.+    value :: VariableValue+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ExpressionVariable' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'expressionVariable_name' - The friendly name of the variable to be used in the expression.+--+-- 'value', 'expressionVariable_value' - The variable that identifies an asset property from which to use values.+newExpressionVariable ::+  -- | 'name'+  Prelude.Text ->+  -- | 'value'+  VariableValue ->+  ExpressionVariable+newExpressionVariable pName_ pValue_ =+  ExpressionVariable' {name = pName_, value = pValue_}++-- | The friendly name of the variable to be used in the expression.+expressionVariable_name :: Lens.Lens' ExpressionVariable Prelude.Text+expressionVariable_name = Lens.lens (\ExpressionVariable' {name} -> name) (\s@ExpressionVariable' {} a -> s {name = a} :: ExpressionVariable)++-- | The variable that identifies an asset property from which to use values.+expressionVariable_value :: Lens.Lens' ExpressionVariable VariableValue+expressionVariable_value = Lens.lens (\ExpressionVariable' {value} -> value) (\s@ExpressionVariable' {} a -> s {value = a} :: ExpressionVariable)++instance Data.FromJSON ExpressionVariable where+  parseJSON =+    Data.withObject+      "ExpressionVariable"+      ( \x ->+          ExpressionVariable'+            Prelude.<$> (x Data..: "name")+            Prelude.<*> (x Data..: "value")+      )++instance Prelude.Hashable ExpressionVariable where+  hashWithSalt _salt ExpressionVariable' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` value++instance Prelude.NFData ExpressionVariable where+  rnf ExpressionVariable' {..} =+    Prelude.rnf name `Prelude.seq` Prelude.rnf value++instance Data.ToJSON ExpressionVariable where+  toJSON ExpressionVariable' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("name" Data..= name),+            Prelude.Just ("value" Data..= value)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/File.hs view
@@ -0,0 +1,116 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.File+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.File where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The file in Amazon S3 where your data is saved.+--+-- /See:/ 'newFile' smart constructor.+data File = File'+  { -- | The version ID to identify a specific version of the Amazon S3 object+    -- that contains your data.+    versionId :: Prelude.Maybe Prelude.Text,+    -- | The name of the Amazon S3 bucket from which data is imported.+    bucket :: Prelude.Text,+    -- | The key of the Amazon S3 object that contains your data. Each object has+    -- a key that is a unique identifier. Each object has exactly one key.+    key :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'File' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'versionId', 'file_versionId' - The version ID to identify a specific version of the Amazon S3 object+-- that contains your data.+--+-- 'bucket', 'file_bucket' - The name of the Amazon S3 bucket from which data is imported.+--+-- 'key', 'file_key' - The key of the Amazon S3 object that contains your data. Each object has+-- a key that is a unique identifier. Each object has exactly one key.+newFile ::+  -- | 'bucket'+  Prelude.Text ->+  -- | 'key'+  Prelude.Text ->+  File+newFile pBucket_ pKey_ =+  File'+    { versionId = Prelude.Nothing,+      bucket = pBucket_,+      key = pKey_+    }++-- | The version ID to identify a specific version of the Amazon S3 object+-- that contains your data.+file_versionId :: Lens.Lens' File (Prelude.Maybe Prelude.Text)+file_versionId = Lens.lens (\File' {versionId} -> versionId) (\s@File' {} a -> s {versionId = a} :: File)++-- | The name of the Amazon S3 bucket from which data is imported.+file_bucket :: Lens.Lens' File Prelude.Text+file_bucket = Lens.lens (\File' {bucket} -> bucket) (\s@File' {} a -> s {bucket = a} :: File)++-- | The key of the Amazon S3 object that contains your data. Each object has+-- a key that is a unique identifier. Each object has exactly one key.+file_key :: Lens.Lens' File Prelude.Text+file_key = Lens.lens (\File' {key} -> key) (\s@File' {} a -> s {key = a} :: File)++instance Data.FromJSON File where+  parseJSON =+    Data.withObject+      "File"+      ( \x ->+          File'+            Prelude.<$> (x Data..:? "versionId")+            Prelude.<*> (x Data..: "bucket")+            Prelude.<*> (x Data..: "key")+      )++instance Prelude.Hashable File where+  hashWithSalt _salt File' {..} =+    _salt+      `Prelude.hashWithSalt` versionId+      `Prelude.hashWithSalt` bucket+      `Prelude.hashWithSalt` key++instance Prelude.NFData File where+  rnf File' {..} =+    Prelude.rnf versionId+      `Prelude.seq` Prelude.rnf bucket+      `Prelude.seq` Prelude.rnf key++instance Data.ToJSON File where+  toJSON File' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("versionId" Data..=) Prelude.<$> versionId,+            Prelude.Just ("bucket" Data..= bucket),+            Prelude.Just ("key" Data..= key)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/FileFormat.hs view
@@ -0,0 +1,70 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.FileFormat+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.FileFormat where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.Csv+import qualified Amazonka.Prelude as Prelude++-- | The file format of the data.+--+-- /See:/ 'newFileFormat' smart constructor.+data FileFormat = FileFormat'+  { -- | The .csv file format.+    csv :: Prelude.Maybe Csv+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FileFormat' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'csv', 'fileFormat_csv' - The .csv file format.+newFileFormat ::+  FileFormat+newFileFormat = FileFormat' {csv = Prelude.Nothing}++-- | The .csv file format.+fileFormat_csv :: Lens.Lens' FileFormat (Prelude.Maybe Csv)+fileFormat_csv = Lens.lens (\FileFormat' {csv} -> csv) (\s@FileFormat' {} a -> s {csv = a} :: FileFormat)++instance Data.FromJSON FileFormat where+  parseJSON =+    Data.withObject+      "FileFormat"+      (\x -> FileFormat' Prelude.<$> (x Data..:? "csv"))++instance Prelude.Hashable FileFormat where+  hashWithSalt _salt FileFormat' {..} =+    _salt `Prelude.hashWithSalt` csv++instance Prelude.NFData FileFormat where+  rnf FileFormat' {..} = Prelude.rnf csv++instance Data.ToJSON FileFormat where+  toJSON FileFormat' {..} =+    Data.object+      (Prelude.catMaybes [("csv" Data..=) Prelude.<$> csv])
+ gen/Amazonka/IoTSiteWise/Types/ForwardingConfig.hs view
@@ -0,0 +1,77 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ForwardingConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ForwardingConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.ForwardingConfigState+import qualified Amazonka.Prelude as Prelude++-- | The forwarding configuration for a given property.+--+-- /See:/ 'newForwardingConfig' smart constructor.+data ForwardingConfig = ForwardingConfig'+  { -- | The forwarding state for the given property.+    state :: ForwardingConfigState+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ForwardingConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'state', 'forwardingConfig_state' - The forwarding state for the given property.+newForwardingConfig ::+  -- | 'state'+  ForwardingConfigState ->+  ForwardingConfig+newForwardingConfig pState_ =+  ForwardingConfig' {state = pState_}++-- | The forwarding state for the given property.+forwardingConfig_state :: Lens.Lens' ForwardingConfig ForwardingConfigState+forwardingConfig_state = Lens.lens (\ForwardingConfig' {state} -> state) (\s@ForwardingConfig' {} a -> s {state = a} :: ForwardingConfig)++instance Data.FromJSON ForwardingConfig where+  parseJSON =+    Data.withObject+      "ForwardingConfig"+      ( \x ->+          ForwardingConfig' Prelude.<$> (x Data..: "state")+      )++instance Prelude.Hashable ForwardingConfig where+  hashWithSalt _salt ForwardingConfig' {..} =+    _salt `Prelude.hashWithSalt` state++instance Prelude.NFData ForwardingConfig where+  rnf ForwardingConfig' {..} = Prelude.rnf state++instance Data.ToJSON ForwardingConfig where+  toJSON ForwardingConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("state" Data..= state)]+      )
+ gen/Amazonka/IoTSiteWise/Types/ForwardingConfigState.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.IoTSiteWise.Types.ForwardingConfigState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ForwardingConfigState+  ( ForwardingConfigState+      ( ..,+        ForwardingConfigState_DISABLED,+        ForwardingConfigState_ENABLED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ForwardingConfigState = ForwardingConfigState'+  { fromForwardingConfigState ::+      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 ForwardingConfigState_DISABLED :: ForwardingConfigState+pattern ForwardingConfigState_DISABLED = ForwardingConfigState' "DISABLED"++pattern ForwardingConfigState_ENABLED :: ForwardingConfigState+pattern ForwardingConfigState_ENABLED = ForwardingConfigState' "ENABLED"++{-# COMPLETE+  ForwardingConfigState_DISABLED,+  ForwardingConfigState_ENABLED,+  ForwardingConfigState'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/GatewayCapabilitySummary.hs view
@@ -0,0 +1,128 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.GatewayCapabilitySummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.GatewayCapabilitySummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.CapabilitySyncStatus+import qualified Amazonka.Prelude as Prelude++-- | Contains a summary of a gateway capability configuration.+--+-- /See:/ 'newGatewayCapabilitySummary' smart constructor.+data GatewayCapabilitySummary = GatewayCapabilitySummary'+  { -- | The namespace of the capability configuration. For example, if you+    -- configure OPC-UA sources from the IoT SiteWise console, your OPC-UA+    -- capability configuration has the namespace+    -- @iotsitewise:opcuacollector:version@, where @version@ is a number such+    -- as @1@.+    capabilityNamespace :: Prelude.Text,+    -- | The synchronization status of the capability configuration. The sync+    -- status can be one of the following:+    --+    -- -   @IN_SYNC@ – The gateway is running the capability configuration.+    --+    -- -   @OUT_OF_SYNC@ – The gateway hasn\'t received the capability+    --     configuration.+    --+    -- -   @SYNC_FAILED@ – The gateway rejected the capability configuration.+    capabilitySyncStatus :: CapabilitySyncStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GatewayCapabilitySummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'capabilityNamespace', 'gatewayCapabilitySummary_capabilityNamespace' - The namespace of the capability configuration. For example, if you+-- configure OPC-UA sources from the IoT SiteWise console, your OPC-UA+-- capability configuration has the namespace+-- @iotsitewise:opcuacollector:version@, where @version@ is a number such+-- as @1@.+--+-- 'capabilitySyncStatus', 'gatewayCapabilitySummary_capabilitySyncStatus' - The synchronization status of the capability configuration. The sync+-- status can be one of the following:+--+-- -   @IN_SYNC@ – The gateway is running the capability configuration.+--+-- -   @OUT_OF_SYNC@ – The gateway hasn\'t received the capability+--     configuration.+--+-- -   @SYNC_FAILED@ – The gateway rejected the capability configuration.+newGatewayCapabilitySummary ::+  -- | 'capabilityNamespace'+  Prelude.Text ->+  -- | 'capabilitySyncStatus'+  CapabilitySyncStatus ->+  GatewayCapabilitySummary+newGatewayCapabilitySummary+  pCapabilityNamespace_+  pCapabilitySyncStatus_ =+    GatewayCapabilitySummary'+      { capabilityNamespace =+          pCapabilityNamespace_,+        capabilitySyncStatus = pCapabilitySyncStatus_+      }++-- | The namespace of the capability configuration. For example, if you+-- configure OPC-UA sources from the IoT SiteWise console, your OPC-UA+-- capability configuration has the namespace+-- @iotsitewise:opcuacollector:version@, where @version@ is a number such+-- as @1@.+gatewayCapabilitySummary_capabilityNamespace :: Lens.Lens' GatewayCapabilitySummary Prelude.Text+gatewayCapabilitySummary_capabilityNamespace = Lens.lens (\GatewayCapabilitySummary' {capabilityNamespace} -> capabilityNamespace) (\s@GatewayCapabilitySummary' {} a -> s {capabilityNamespace = a} :: GatewayCapabilitySummary)++-- | The synchronization status of the capability configuration. The sync+-- status can be one of the following:+--+-- -   @IN_SYNC@ – The gateway is running the capability configuration.+--+-- -   @OUT_OF_SYNC@ – The gateway hasn\'t received the capability+--     configuration.+--+-- -   @SYNC_FAILED@ – The gateway rejected the capability configuration.+gatewayCapabilitySummary_capabilitySyncStatus :: Lens.Lens' GatewayCapabilitySummary CapabilitySyncStatus+gatewayCapabilitySummary_capabilitySyncStatus = Lens.lens (\GatewayCapabilitySummary' {capabilitySyncStatus} -> capabilitySyncStatus) (\s@GatewayCapabilitySummary' {} a -> s {capabilitySyncStatus = a} :: GatewayCapabilitySummary)++instance Data.FromJSON GatewayCapabilitySummary where+  parseJSON =+    Data.withObject+      "GatewayCapabilitySummary"+      ( \x ->+          GatewayCapabilitySummary'+            Prelude.<$> (x Data..: "capabilityNamespace")+            Prelude.<*> (x Data..: "capabilitySyncStatus")+      )++instance Prelude.Hashable GatewayCapabilitySummary where+  hashWithSalt _salt GatewayCapabilitySummary' {..} =+    _salt+      `Prelude.hashWithSalt` capabilityNamespace+      `Prelude.hashWithSalt` capabilitySyncStatus++instance Prelude.NFData GatewayCapabilitySummary where+  rnf GatewayCapabilitySummary' {..} =+    Prelude.rnf capabilityNamespace+      `Prelude.seq` Prelude.rnf capabilitySyncStatus
+ gen/Amazonka/IoTSiteWise/Types/GatewayPlatform.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.GatewayPlatform+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.GatewayPlatform where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.Greengrass+import Amazonka.IoTSiteWise.Types.GreengrassV2+import qualified Amazonka.Prelude as Prelude++-- | Contains a gateway\'s platform information.+--+-- /See:/ 'newGatewayPlatform' smart constructor.+data GatewayPlatform = GatewayPlatform'+  { -- | A gateway that runs on IoT Greengrass.+    greengrass :: Prelude.Maybe Greengrass,+    -- | A gateway that runs on IoT Greengrass V2.+    greengrassV2 :: Prelude.Maybe GreengrassV2+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GatewayPlatform' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'greengrass', 'gatewayPlatform_greengrass' - A gateway that runs on IoT Greengrass.+--+-- 'greengrassV2', 'gatewayPlatform_greengrassV2' - A gateway that runs on IoT Greengrass V2.+newGatewayPlatform ::+  GatewayPlatform+newGatewayPlatform =+  GatewayPlatform'+    { greengrass = Prelude.Nothing,+      greengrassV2 = Prelude.Nothing+    }++-- | A gateway that runs on IoT Greengrass.+gatewayPlatform_greengrass :: Lens.Lens' GatewayPlatform (Prelude.Maybe Greengrass)+gatewayPlatform_greengrass = Lens.lens (\GatewayPlatform' {greengrass} -> greengrass) (\s@GatewayPlatform' {} a -> s {greengrass = a} :: GatewayPlatform)++-- | A gateway that runs on IoT Greengrass V2.+gatewayPlatform_greengrassV2 :: Lens.Lens' GatewayPlatform (Prelude.Maybe GreengrassV2)+gatewayPlatform_greengrassV2 = Lens.lens (\GatewayPlatform' {greengrassV2} -> greengrassV2) (\s@GatewayPlatform' {} a -> s {greengrassV2 = a} :: GatewayPlatform)++instance Data.FromJSON GatewayPlatform where+  parseJSON =+    Data.withObject+      "GatewayPlatform"+      ( \x ->+          GatewayPlatform'+            Prelude.<$> (x Data..:? "greengrass")+            Prelude.<*> (x Data..:? "greengrassV2")+      )++instance Prelude.Hashable GatewayPlatform where+  hashWithSalt _salt GatewayPlatform' {..} =+    _salt+      `Prelude.hashWithSalt` greengrass+      `Prelude.hashWithSalt` greengrassV2++instance Prelude.NFData GatewayPlatform where+  rnf GatewayPlatform' {..} =+    Prelude.rnf greengrass+      `Prelude.seq` Prelude.rnf greengrassV2++instance Data.ToJSON GatewayPlatform where+  toJSON GatewayPlatform' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("greengrass" Data..=) Prelude.<$> greengrass,+            ("greengrassV2" Data..=) Prelude.<$> greengrassV2+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/GatewaySummary.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.IoTSiteWise.Types.GatewaySummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.GatewaySummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.GatewayCapabilitySummary+import Amazonka.IoTSiteWise.Types.GatewayPlatform+import qualified Amazonka.Prelude as Prelude++-- | Contains a summary of a gateway.+--+-- /See:/ 'newGatewaySummary' smart constructor.+data GatewaySummary = GatewaySummary'+  { -- | A list of gateway capability summaries that each contain a namespace and+    -- status. Each gateway capability defines data sources for the gateway. To+    -- retrieve a capability configuration\'s definition, use+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeGatewayCapabilityConfiguration.html DescribeGatewayCapabilityConfiguration>.+    gatewayCapabilitySummaries :: Prelude.Maybe [GatewayCapabilitySummary],+    gatewayPlatform :: Prelude.Maybe GatewayPlatform,+    -- | The ID of the gateway device.+    gatewayId :: Prelude.Text,+    -- | The name of the asset.+    gatewayName :: Prelude.Text,+    -- | The date the gateway was created, in Unix epoch time.+    creationDate :: Data.POSIX,+    -- | The date the gateway was last updated, in Unix epoch time.+    lastUpdateDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GatewaySummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'gatewayCapabilitySummaries', 'gatewaySummary_gatewayCapabilitySummaries' - A list of gateway capability summaries that each contain a namespace and+-- status. Each gateway capability defines data sources for the gateway. To+-- retrieve a capability configuration\'s definition, use+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeGatewayCapabilityConfiguration.html DescribeGatewayCapabilityConfiguration>.+--+-- 'gatewayPlatform', 'gatewaySummary_gatewayPlatform' - Undocumented member.+--+-- 'gatewayId', 'gatewaySummary_gatewayId' - The ID of the gateway device.+--+-- 'gatewayName', 'gatewaySummary_gatewayName' - The name of the asset.+--+-- 'creationDate', 'gatewaySummary_creationDate' - The date the gateway was created, in Unix epoch time.+--+-- 'lastUpdateDate', 'gatewaySummary_lastUpdateDate' - The date the gateway was last updated, in Unix epoch time.+newGatewaySummary ::+  -- | 'gatewayId'+  Prelude.Text ->+  -- | 'gatewayName'+  Prelude.Text ->+  -- | 'creationDate'+  Prelude.UTCTime ->+  -- | 'lastUpdateDate'+  Prelude.UTCTime ->+  GatewaySummary+newGatewaySummary+  pGatewayId_+  pGatewayName_+  pCreationDate_+  pLastUpdateDate_ =+    GatewaySummary'+      { gatewayCapabilitySummaries =+          Prelude.Nothing,+        gatewayPlatform = Prelude.Nothing,+        gatewayId = pGatewayId_,+        gatewayName = pGatewayName_,+        creationDate = Data._Time Lens.# pCreationDate_,+        lastUpdateDate = Data._Time Lens.# pLastUpdateDate_+      }++-- | A list of gateway capability summaries that each contain a namespace and+-- status. Each gateway capability defines data sources for the gateway. To+-- retrieve a capability configuration\'s definition, use+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeGatewayCapabilityConfiguration.html DescribeGatewayCapabilityConfiguration>.+gatewaySummary_gatewayCapabilitySummaries :: Lens.Lens' GatewaySummary (Prelude.Maybe [GatewayCapabilitySummary])+gatewaySummary_gatewayCapabilitySummaries = Lens.lens (\GatewaySummary' {gatewayCapabilitySummaries} -> gatewayCapabilitySummaries) (\s@GatewaySummary' {} a -> s {gatewayCapabilitySummaries = a} :: GatewaySummary) Prelude.. Lens.mapping Lens.coerced++-- | Undocumented member.+gatewaySummary_gatewayPlatform :: Lens.Lens' GatewaySummary (Prelude.Maybe GatewayPlatform)+gatewaySummary_gatewayPlatform = Lens.lens (\GatewaySummary' {gatewayPlatform} -> gatewayPlatform) (\s@GatewaySummary' {} a -> s {gatewayPlatform = a} :: GatewaySummary)++-- | The ID of the gateway device.+gatewaySummary_gatewayId :: Lens.Lens' GatewaySummary Prelude.Text+gatewaySummary_gatewayId = Lens.lens (\GatewaySummary' {gatewayId} -> gatewayId) (\s@GatewaySummary' {} a -> s {gatewayId = a} :: GatewaySummary)++-- | The name of the asset.+gatewaySummary_gatewayName :: Lens.Lens' GatewaySummary Prelude.Text+gatewaySummary_gatewayName = Lens.lens (\GatewaySummary' {gatewayName} -> gatewayName) (\s@GatewaySummary' {} a -> s {gatewayName = a} :: GatewaySummary)++-- | The date the gateway was created, in Unix epoch time.+gatewaySummary_creationDate :: Lens.Lens' GatewaySummary Prelude.UTCTime+gatewaySummary_creationDate = Lens.lens (\GatewaySummary' {creationDate} -> creationDate) (\s@GatewaySummary' {} a -> s {creationDate = a} :: GatewaySummary) Prelude.. Data._Time++-- | The date the gateway was last updated, in Unix epoch time.+gatewaySummary_lastUpdateDate :: Lens.Lens' GatewaySummary Prelude.UTCTime+gatewaySummary_lastUpdateDate = Lens.lens (\GatewaySummary' {lastUpdateDate} -> lastUpdateDate) (\s@GatewaySummary' {} a -> s {lastUpdateDate = a} :: GatewaySummary) Prelude.. Data._Time++instance Data.FromJSON GatewaySummary where+  parseJSON =+    Data.withObject+      "GatewaySummary"+      ( \x ->+          GatewaySummary'+            Prelude.<$> ( x+                            Data..:? "gatewayCapabilitySummaries"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "gatewayPlatform")+            Prelude.<*> (x Data..: "gatewayId")+            Prelude.<*> (x Data..: "gatewayName")+            Prelude.<*> (x Data..: "creationDate")+            Prelude.<*> (x Data..: "lastUpdateDate")+      )++instance Prelude.Hashable GatewaySummary where+  hashWithSalt _salt GatewaySummary' {..} =+    _salt+      `Prelude.hashWithSalt` gatewayCapabilitySummaries+      `Prelude.hashWithSalt` gatewayPlatform+      `Prelude.hashWithSalt` gatewayId+      `Prelude.hashWithSalt` gatewayName+      `Prelude.hashWithSalt` creationDate+      `Prelude.hashWithSalt` lastUpdateDate++instance Prelude.NFData GatewaySummary where+  rnf GatewaySummary' {..} =+    Prelude.rnf gatewayCapabilitySummaries+      `Prelude.seq` Prelude.rnf gatewayPlatform+      `Prelude.seq` Prelude.rnf gatewayId+      `Prelude.seq` Prelude.rnf gatewayName+      `Prelude.seq` Prelude.rnf creationDate+      `Prelude.seq` Prelude.rnf lastUpdateDate
+ gen/Amazonka/IoTSiteWise/Types/Greengrass.hs view
@@ -0,0 +1,103 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.Greengrass+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Greengrass 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 for a gateway that runs on IoT Greengrass. To create a+-- gateway that runs on IoT Greengrass, you must add the IoT SiteWise+-- connector to a Greengrass group and deploy it. Your Greengrass group+-- must also have permissions to upload data to IoT SiteWise. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/gateway-connector.html Ingesting data using a gateway>+-- in the /IoT SiteWise User Guide/.+--+-- /See:/ 'newGreengrass' smart constructor.+data Greengrass = Greengrass'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the Greengrass group. For more information about how to find a+    -- group\'s ARN, see+    -- <https://docs.aws.amazon.com/greengrass/latest/apireference/listgroups-get.html ListGroups>+    -- and+    -- <https://docs.aws.amazon.com/greengrass/latest/apireference/getgroup-get.html GetGroup>+    -- in the /IoT Greengrass API Reference/.+    groupArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Greengrass' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'groupArn', 'greengrass_groupArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the Greengrass group. For more information about how to find a+-- group\'s ARN, see+-- <https://docs.aws.amazon.com/greengrass/latest/apireference/listgroups-get.html ListGroups>+-- and+-- <https://docs.aws.amazon.com/greengrass/latest/apireference/getgroup-get.html GetGroup>+-- in the /IoT Greengrass API Reference/.+newGreengrass ::+  -- | 'groupArn'+  Prelude.Text ->+  Greengrass+newGreengrass pGroupArn_ =+  Greengrass' {groupArn = pGroupArn_}++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the Greengrass group. For more information about how to find a+-- group\'s ARN, see+-- <https://docs.aws.amazon.com/greengrass/latest/apireference/listgroups-get.html ListGroups>+-- and+-- <https://docs.aws.amazon.com/greengrass/latest/apireference/getgroup-get.html GetGroup>+-- in the /IoT Greengrass API Reference/.+greengrass_groupArn :: Lens.Lens' Greengrass Prelude.Text+greengrass_groupArn = Lens.lens (\Greengrass' {groupArn} -> groupArn) (\s@Greengrass' {} a -> s {groupArn = a} :: Greengrass)++instance Data.FromJSON Greengrass where+  parseJSON =+    Data.withObject+      "Greengrass"+      ( \x ->+          Greengrass' Prelude.<$> (x Data..: "groupArn")+      )++instance Prelude.Hashable Greengrass where+  hashWithSalt _salt Greengrass' {..} =+    _salt `Prelude.hashWithSalt` groupArn++instance Prelude.NFData Greengrass where+  rnf Greengrass' {..} = Prelude.rnf groupArn++instance Data.ToJSON Greengrass where+  toJSON Greengrass' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("groupArn" Data..= groupArn)]+      )
+ gen/Amazonka/IoTSiteWise/Types/GreengrassV2.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.IoTSiteWise.Types.GreengrassV2+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.GreengrassV2 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 for a gateway that runs on IoT Greengrass V2. To create+-- a gateway that runs on IoT Greengrass V2, you must deploy the IoT+-- SiteWise Edge component to your gateway device. Your+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/device-service-role.html Greengrass device role>+-- must use the @AWSIoTSiteWiseEdgeAccess@ policy. For more information,+-- see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/sw-gateways.html Using IoT SiteWise at the edge>+-- in the /IoT SiteWise User Guide/.+--+-- /See:/ 'newGreengrassV2' smart constructor.+data GreengrassV2 = GreengrassV2'+  { -- | The name of the IoT thing for your IoT Greengrass V2 core device.+    coreDeviceThingName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GreengrassV2' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'coreDeviceThingName', 'greengrassV2_coreDeviceThingName' - The name of the IoT thing for your IoT Greengrass V2 core device.+newGreengrassV2 ::+  -- | 'coreDeviceThingName'+  Prelude.Text ->+  GreengrassV2+newGreengrassV2 pCoreDeviceThingName_ =+  GreengrassV2'+    { coreDeviceThingName =+        pCoreDeviceThingName_+    }++-- | The name of the IoT thing for your IoT Greengrass V2 core device.+greengrassV2_coreDeviceThingName :: Lens.Lens' GreengrassV2 Prelude.Text+greengrassV2_coreDeviceThingName = Lens.lens (\GreengrassV2' {coreDeviceThingName} -> coreDeviceThingName) (\s@GreengrassV2' {} a -> s {coreDeviceThingName = a} :: GreengrassV2)++instance Data.FromJSON GreengrassV2 where+  parseJSON =+    Data.withObject+      "GreengrassV2"+      ( \x ->+          GreengrassV2'+            Prelude.<$> (x Data..: "coreDeviceThingName")+      )++instance Prelude.Hashable GreengrassV2 where+  hashWithSalt _salt GreengrassV2' {..} =+    _salt `Prelude.hashWithSalt` coreDeviceThingName++instance Prelude.NFData GreengrassV2 where+  rnf GreengrassV2' {..} =+    Prelude.rnf coreDeviceThingName++instance Data.ToJSON GreengrassV2 where+  toJSON GreengrassV2' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("coreDeviceThingName" Data..= coreDeviceThingName)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/GroupIdentity.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.GroupIdentity+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.GroupIdentity 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 information for a group identity in an access policy.+--+-- /See:/ 'newGroupIdentity' smart constructor.+data GroupIdentity = GroupIdentity'+  { -- | The IAM Identity Center ID of the group.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GroupIdentity' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'groupIdentity_id' - The IAM Identity Center ID of the group.+newGroupIdentity ::+  -- | 'id'+  Prelude.Text ->+  GroupIdentity+newGroupIdentity pId_ = GroupIdentity' {id = pId_}++-- | The IAM Identity Center ID of the group.+groupIdentity_id :: Lens.Lens' GroupIdentity Prelude.Text+groupIdentity_id = Lens.lens (\GroupIdentity' {id} -> id) (\s@GroupIdentity' {} a -> s {id = a} :: GroupIdentity)++instance Data.FromJSON GroupIdentity where+  parseJSON =+    Data.withObject+      "GroupIdentity"+      (\x -> GroupIdentity' Prelude.<$> (x Data..: "id"))++instance Prelude.Hashable GroupIdentity where+  hashWithSalt _salt GroupIdentity' {..} =+    _salt `Prelude.hashWithSalt` id++instance Prelude.NFData GroupIdentity where+  rnf GroupIdentity' {..} = Prelude.rnf id++instance Data.ToJSON GroupIdentity where+  toJSON GroupIdentity' {..} =+    Data.object+      (Prelude.catMaybes [Prelude.Just ("id" Data..= id)])
+ gen/Amazonka/IoTSiteWise/Types/IAMRoleIdentity.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.IoTSiteWise.Types.IAMRoleIdentity+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.IAMRoleIdentity 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 information about an Identity and Access Management role. For+-- more information, see+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM roles>+-- in the /IAM User Guide/.+--+-- /See:/ 'newIAMRoleIdentity' smart constructor.+data IAMRoleIdentity = IAMRoleIdentity'+  { -- | The ARN of the IAM role. For more information, see+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html IAM ARNs>+    -- in the /IAM User Guide/.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IAMRoleIdentity' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'iAMRoleIdentity_arn' - The ARN of the IAM role. For more information, see+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html IAM ARNs>+-- in the /IAM User Guide/.+newIAMRoleIdentity ::+  -- | 'arn'+  Prelude.Text ->+  IAMRoleIdentity+newIAMRoleIdentity pArn_ =+  IAMRoleIdentity' {arn = pArn_}++-- | The ARN of the IAM role. For more information, see+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html IAM ARNs>+-- in the /IAM User Guide/.+iAMRoleIdentity_arn :: Lens.Lens' IAMRoleIdentity Prelude.Text+iAMRoleIdentity_arn = Lens.lens (\IAMRoleIdentity' {arn} -> arn) (\s@IAMRoleIdentity' {} a -> s {arn = a} :: IAMRoleIdentity)++instance Data.FromJSON IAMRoleIdentity where+  parseJSON =+    Data.withObject+      "IAMRoleIdentity"+      ( \x ->+          IAMRoleIdentity' Prelude.<$> (x Data..: "arn")+      )++instance Prelude.Hashable IAMRoleIdentity where+  hashWithSalt _salt IAMRoleIdentity' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData IAMRoleIdentity where+  rnf IAMRoleIdentity' {..} = Prelude.rnf arn++instance Data.ToJSON IAMRoleIdentity where+  toJSON IAMRoleIdentity' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arn" Data..= arn)]+      )
+ gen/Amazonka/IoTSiteWise/Types/IAMUserIdentity.hs view
@@ -0,0 +1,94 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.IAMUserIdentity+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.IAMUserIdentity 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 information about an Identity and Access Management user.+--+-- /See:/ 'newIAMUserIdentity' smart constructor.+data IAMUserIdentity = IAMUserIdentity'+  { -- | The ARN of the IAM user. For more information, see+    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html IAM ARNs>+    -- in the /IAM User Guide/.+    --+    -- If you delete the IAM user, access policies that contain this identity+    -- include an empty @arn@. You can delete the access policy for the IAM+    -- user that no longer exists.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IAMUserIdentity' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arn', 'iAMUserIdentity_arn' - The ARN of the IAM user. For more information, see+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html IAM ARNs>+-- in the /IAM User Guide/.+--+-- If you delete the IAM user, access policies that contain this identity+-- include an empty @arn@. You can delete the access policy for the IAM+-- user that no longer exists.+newIAMUserIdentity ::+  -- | 'arn'+  Prelude.Text ->+  IAMUserIdentity+newIAMUserIdentity pArn_ =+  IAMUserIdentity' {arn = pArn_}++-- | The ARN of the IAM user. For more information, see+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html IAM ARNs>+-- in the /IAM User Guide/.+--+-- If you delete the IAM user, access policies that contain this identity+-- include an empty @arn@. You can delete the access policy for the IAM+-- user that no longer exists.+iAMUserIdentity_arn :: Lens.Lens' IAMUserIdentity Prelude.Text+iAMUserIdentity_arn = Lens.lens (\IAMUserIdentity' {arn} -> arn) (\s@IAMUserIdentity' {} a -> s {arn = a} :: IAMUserIdentity)++instance Data.FromJSON IAMUserIdentity where+  parseJSON =+    Data.withObject+      "IAMUserIdentity"+      ( \x ->+          IAMUserIdentity' Prelude.<$> (x Data..: "arn")+      )++instance Prelude.Hashable IAMUserIdentity where+  hashWithSalt _salt IAMUserIdentity' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData IAMUserIdentity where+  rnf IAMUserIdentity' {..} = Prelude.rnf arn++instance Data.ToJSON IAMUserIdentity where+  toJSON IAMUserIdentity' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arn" Data..= arn)]+      )
+ gen/Amazonka/IoTSiteWise/Types/Identity.hs view
@@ -0,0 +1,128 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.Identity+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Identity where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.GroupIdentity+import Amazonka.IoTSiteWise.Types.IAMRoleIdentity+import Amazonka.IoTSiteWise.Types.IAMUserIdentity+import Amazonka.IoTSiteWise.Types.UserIdentity+import qualified Amazonka.Prelude as Prelude++-- | Contains an identity that can access an IoT SiteWise Monitor resource.+--+-- Currently, you can\'t use Amazon Web Services APIs to retrieve IAM+-- Identity Center identity IDs. You can find the IAM Identity Center+-- identity IDs in the URL of user and group pages in the+-- <https://console.aws.amazon.com/singlesignon IAM Identity Center console>.+--+-- /See:/ 'newIdentity' smart constructor.+data Identity = Identity'+  { -- | An IAM Identity Center group identity.+    group' :: Prelude.Maybe GroupIdentity,+    -- | An IAM role identity.+    iamRole :: Prelude.Maybe IAMRoleIdentity,+    -- | An IAM user identity.+    iamUser :: Prelude.Maybe IAMUserIdentity,+    -- | An IAM Identity Center user identity.+    user :: Prelude.Maybe UserIdentity+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Identity' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'group'', 'identity_group' - An IAM Identity Center group identity.+--+-- 'iamRole', 'identity_iamRole' - An IAM role identity.+--+-- 'iamUser', 'identity_iamUser' - An IAM user identity.+--+-- 'user', 'identity_user' - An IAM Identity Center user identity.+newIdentity ::+  Identity+newIdentity =+  Identity'+    { group' = Prelude.Nothing,+      iamRole = Prelude.Nothing,+      iamUser = Prelude.Nothing,+      user = Prelude.Nothing+    }++-- | An IAM Identity Center group identity.+identity_group :: Lens.Lens' Identity (Prelude.Maybe GroupIdentity)+identity_group = Lens.lens (\Identity' {group'} -> group') (\s@Identity' {} a -> s {group' = a} :: Identity)++-- | An IAM role identity.+identity_iamRole :: Lens.Lens' Identity (Prelude.Maybe IAMRoleIdentity)+identity_iamRole = Lens.lens (\Identity' {iamRole} -> iamRole) (\s@Identity' {} a -> s {iamRole = a} :: Identity)++-- | An IAM user identity.+identity_iamUser :: Lens.Lens' Identity (Prelude.Maybe IAMUserIdentity)+identity_iamUser = Lens.lens (\Identity' {iamUser} -> iamUser) (\s@Identity' {} a -> s {iamUser = a} :: Identity)++-- | An IAM Identity Center user identity.+identity_user :: Lens.Lens' Identity (Prelude.Maybe UserIdentity)+identity_user = Lens.lens (\Identity' {user} -> user) (\s@Identity' {} a -> s {user = a} :: Identity)++instance Data.FromJSON Identity where+  parseJSON =+    Data.withObject+      "Identity"+      ( \x ->+          Identity'+            Prelude.<$> (x Data..:? "group")+            Prelude.<*> (x Data..:? "iamRole")+            Prelude.<*> (x Data..:? "iamUser")+            Prelude.<*> (x Data..:? "user")+      )++instance Prelude.Hashable Identity where+  hashWithSalt _salt Identity' {..} =+    _salt+      `Prelude.hashWithSalt` group'+      `Prelude.hashWithSalt` iamRole+      `Prelude.hashWithSalt` iamUser+      `Prelude.hashWithSalt` user++instance Prelude.NFData Identity where+  rnf Identity' {..} =+    Prelude.rnf group'+      `Prelude.seq` Prelude.rnf iamRole+      `Prelude.seq` Prelude.rnf iamUser+      `Prelude.seq` Prelude.rnf user++instance Data.ToJSON Identity where+  toJSON Identity' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("group" Data..=) Prelude.<$> group',+            ("iamRole" Data..=) Prelude.<$> iamRole,+            ("iamUser" Data..=) Prelude.<$> iamUser,+            ("user" Data..=) Prelude.<$> user+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/IdentityType.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.IoTSiteWise.Types.IdentityType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.IdentityType+  ( IdentityType+      ( ..,+        IdentityType_GROUP,+        IdentityType_IAM,+        IdentityType_USER+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype IdentityType = IdentityType'+  { fromIdentityType ::+      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 IdentityType_GROUP :: IdentityType+pattern IdentityType_GROUP = IdentityType' "GROUP"++pattern IdentityType_IAM :: IdentityType+pattern IdentityType_IAM = IdentityType' "IAM"++pattern IdentityType_USER :: IdentityType+pattern IdentityType_USER = IdentityType' "USER"++{-# COMPLETE+  IdentityType_GROUP,+  IdentityType_IAM,+  IdentityType_USER,+  IdentityType'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/Image.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.IoTSiteWise.Types.Image+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Image where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.ImageFile+import qualified Amazonka.Prelude as Prelude++-- | Contains an image that is one of the following:+--+-- -   An image file. Choose this option to upload a new image.+--+-- -   The ID of an existing image. Choose this option to keep an existing+--     image.+--+-- /See:/ 'newImage' smart constructor.+data Image = Image'+  { file :: Prelude.Maybe ImageFile,+    -- | The ID of an existing image. Specify this parameter to keep an existing+    -- image.+    id :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Image' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'file', 'image_file' - Undocumented member.+--+-- 'id', 'image_id' - The ID of an existing image. Specify this parameter to keep an existing+-- image.+newImage ::+  Image+newImage =+  Image'+    { file = Prelude.Nothing,+      id = Prelude.Nothing+    }++-- | Undocumented member.+image_file :: Lens.Lens' Image (Prelude.Maybe ImageFile)+image_file = Lens.lens (\Image' {file} -> file) (\s@Image' {} a -> s {file = a} :: Image)++-- | The ID of an existing image. Specify this parameter to keep an existing+-- image.+image_id :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_id = Lens.lens (\Image' {id} -> id) (\s@Image' {} a -> s {id = a} :: Image)++instance Prelude.Hashable Image where+  hashWithSalt _salt Image' {..} =+    _salt+      `Prelude.hashWithSalt` file+      `Prelude.hashWithSalt` id++instance Prelude.NFData Image where+  rnf Image' {..} =+    Prelude.rnf file `Prelude.seq` Prelude.rnf id++instance Data.ToJSON Image where+  toJSON Image' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("file" Data..=) Prelude.<$> file,+            ("id" Data..=) Prelude.<$> id+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/ImageFile.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ImageFile+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ImageFile where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.ImageFileType+import qualified Amazonka.Prelude as Prelude++-- | Contains an image file.+--+-- /See:/ 'newImageFile' smart constructor.+data ImageFile = ImageFile'+  { -- | The image file contents, represented as a base64-encoded string. The+    -- file size must be less than 1 MB.+    data' :: Data.Base64,+    -- | The file type of the image.+    type' :: ImageFileType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageFile' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'data'', 'imageFile_data' - The image file contents, represented as a base64-encoded string. The+-- file size must be less than 1 MB.--+-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.+-- -- The underlying isomorphism will encode to Base64 representation during+-- -- serialisation, and decode from Base64 representation during deserialisation.+-- -- This 'Lens' accepts and returns only raw unencoded data.+--+-- 'type'', 'imageFile_type' - The file type of the image.+newImageFile ::+  -- | 'data''+  Prelude.ByteString ->+  -- | 'type''+  ImageFileType ->+  ImageFile+newImageFile pData_ pType_ =+  ImageFile'+    { data' = Data._Base64 Lens.# pData_,+      type' = pType_+    }++-- | The image file contents, represented as a base64-encoded string. The+-- file size must be less than 1 MB.--+-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.+-- -- The underlying isomorphism will encode to Base64 representation during+-- -- serialisation, and decode from Base64 representation during deserialisation.+-- -- This 'Lens' accepts and returns only raw unencoded data.+imageFile_data :: Lens.Lens' ImageFile Prelude.ByteString+imageFile_data = Lens.lens (\ImageFile' {data'} -> data') (\s@ImageFile' {} a -> s {data' = a} :: ImageFile) Prelude.. Data._Base64++-- | The file type of the image.+imageFile_type :: Lens.Lens' ImageFile ImageFileType+imageFile_type = Lens.lens (\ImageFile' {type'} -> type') (\s@ImageFile' {} a -> s {type' = a} :: ImageFile)++instance Prelude.Hashable ImageFile where+  hashWithSalt _salt ImageFile' {..} =+    _salt+      `Prelude.hashWithSalt` data'+      `Prelude.hashWithSalt` type'++instance Prelude.NFData ImageFile where+  rnf ImageFile' {..} =+    Prelude.rnf data' `Prelude.seq` Prelude.rnf type'++instance Data.ToJSON ImageFile where+  toJSON ImageFile' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("data" Data..= data'),+            Prelude.Just ("type" Data..= type')+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/ImageFileType.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ImageFileType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ImageFileType+  ( ImageFileType+      ( ..,+        ImageFileType_PNG+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ImageFileType = ImageFileType'+  { fromImageFileType ::+      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 ImageFileType_PNG :: ImageFileType+pattern ImageFileType_PNG = ImageFileType' "PNG"++{-# COMPLETE+  ImageFileType_PNG,+  ImageFileType'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/ImageLocation.hs view
@@ -0,0 +1,88 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ImageLocation+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ImageLocation 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 an image that is uploaded to IoT SiteWise and available at a+-- URL.+--+-- /See:/ 'newImageLocation' smart constructor.+data ImageLocation = ImageLocation'+  { -- | The ID of the image.+    id :: Prelude.Text,+    -- | The URL where the image is available. The URL is valid for 15 minutes so+    -- that you can view and download the image+    url :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageLocation' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'imageLocation_id' - The ID of the image.+--+-- 'url', 'imageLocation_url' - The URL where the image is available. The URL is valid for 15 minutes so+-- that you can view and download the image+newImageLocation ::+  -- | 'id'+  Prelude.Text ->+  -- | 'url'+  Prelude.Text ->+  ImageLocation+newImageLocation pId_ pUrl_ =+  ImageLocation' {id = pId_, url = pUrl_}++-- | The ID of the image.+imageLocation_id :: Lens.Lens' ImageLocation Prelude.Text+imageLocation_id = Lens.lens (\ImageLocation' {id} -> id) (\s@ImageLocation' {} a -> s {id = a} :: ImageLocation)++-- | The URL where the image is available. The URL is valid for 15 minutes so+-- that you can view and download the image+imageLocation_url :: Lens.Lens' ImageLocation Prelude.Text+imageLocation_url = Lens.lens (\ImageLocation' {url} -> url) (\s@ImageLocation' {} a -> s {url = a} :: ImageLocation)++instance Data.FromJSON ImageLocation where+  parseJSON =+    Data.withObject+      "ImageLocation"+      ( \x ->+          ImageLocation'+            Prelude.<$> (x Data..: "id")+            Prelude.<*> (x Data..: "url")+      )++instance Prelude.Hashable ImageLocation where+  hashWithSalt _salt ImageLocation' {..} =+    _salt+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` url++instance Prelude.NFData ImageLocation where+  rnf ImageLocation' {..} =+    Prelude.rnf id `Prelude.seq` Prelude.rnf url
+ gen/Amazonka/IoTSiteWise/Types/InterpolatedAssetPropertyValue.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.IoTSiteWise.Types.InterpolatedAssetPropertyValue+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.InterpolatedAssetPropertyValue where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.TimeInNanos+import Amazonka.IoTSiteWise.Types.Variant+import qualified Amazonka.Prelude as Prelude++-- | Contains information about an interpolated asset property value.+--+-- /See:/ 'newInterpolatedAssetPropertyValue' smart constructor.+data InterpolatedAssetPropertyValue = InterpolatedAssetPropertyValue'+  { timestamp :: TimeInNanos,+    value :: Variant+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InterpolatedAssetPropertyValue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'timestamp', 'interpolatedAssetPropertyValue_timestamp' - Undocumented member.+--+-- 'value', 'interpolatedAssetPropertyValue_value' - Undocumented member.+newInterpolatedAssetPropertyValue ::+  -- | 'timestamp'+  TimeInNanos ->+  -- | 'value'+  Variant ->+  InterpolatedAssetPropertyValue+newInterpolatedAssetPropertyValue pTimestamp_ pValue_ =+  InterpolatedAssetPropertyValue'+    { timestamp =+        pTimestamp_,+      value = pValue_+    }++-- | Undocumented member.+interpolatedAssetPropertyValue_timestamp :: Lens.Lens' InterpolatedAssetPropertyValue TimeInNanos+interpolatedAssetPropertyValue_timestamp = Lens.lens (\InterpolatedAssetPropertyValue' {timestamp} -> timestamp) (\s@InterpolatedAssetPropertyValue' {} a -> s {timestamp = a} :: InterpolatedAssetPropertyValue)++-- | Undocumented member.+interpolatedAssetPropertyValue_value :: Lens.Lens' InterpolatedAssetPropertyValue Variant+interpolatedAssetPropertyValue_value = Lens.lens (\InterpolatedAssetPropertyValue' {value} -> value) (\s@InterpolatedAssetPropertyValue' {} a -> s {value = a} :: InterpolatedAssetPropertyValue)++instance Data.FromJSON InterpolatedAssetPropertyValue where+  parseJSON =+    Data.withObject+      "InterpolatedAssetPropertyValue"+      ( \x ->+          InterpolatedAssetPropertyValue'+            Prelude.<$> (x Data..: "timestamp")+            Prelude.<*> (x Data..: "value")+      )++instance+  Prelude.Hashable+    InterpolatedAssetPropertyValue+  where+  hashWithSalt+    _salt+    InterpolatedAssetPropertyValue' {..} =+      _salt+        `Prelude.hashWithSalt` timestamp+        `Prelude.hashWithSalt` value++instance+  Prelude.NFData+    InterpolatedAssetPropertyValue+  where+  rnf InterpolatedAssetPropertyValue' {..} =+    Prelude.rnf timestamp+      `Prelude.seq` Prelude.rnf value
+ gen/Amazonka/IoTSiteWise/Types/JobConfiguration.hs view
@@ -0,0 +1,79 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.JobConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.JobConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.FileFormat+import qualified Amazonka.Prelude as Prelude++-- | Contains the configuration information of a job, such as the file format+-- used to save data in Amazon S3.+--+-- /See:/ 'newJobConfiguration' smart constructor.+data JobConfiguration = JobConfiguration'+  { -- | The file format of the data in Amazon S3.+    fileFormat :: FileFormat+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'JobConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'fileFormat', 'jobConfiguration_fileFormat' - The file format of the data in Amazon S3.+newJobConfiguration ::+  -- | 'fileFormat'+  FileFormat ->+  JobConfiguration+newJobConfiguration pFileFormat_ =+  JobConfiguration' {fileFormat = pFileFormat_}++-- | The file format of the data in Amazon S3.+jobConfiguration_fileFormat :: Lens.Lens' JobConfiguration FileFormat+jobConfiguration_fileFormat = Lens.lens (\JobConfiguration' {fileFormat} -> fileFormat) (\s@JobConfiguration' {} a -> s {fileFormat = a} :: JobConfiguration)++instance Data.FromJSON JobConfiguration where+  parseJSON =+    Data.withObject+      "JobConfiguration"+      ( \x ->+          JobConfiguration'+            Prelude.<$> (x Data..: "fileFormat")+      )++instance Prelude.Hashable JobConfiguration where+  hashWithSalt _salt JobConfiguration' {..} =+    _salt `Prelude.hashWithSalt` fileFormat++instance Prelude.NFData JobConfiguration where+  rnf JobConfiguration' {..} = Prelude.rnf fileFormat++instance Data.ToJSON JobConfiguration where+  toJSON JobConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("fileFormat" Data..= fileFormat)]+      )
+ gen/Amazonka/IoTSiteWise/Types/JobStatus.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.IoTSiteWise.Types.JobStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.JobStatus+  ( JobStatus+      ( ..,+        JobStatus_CANCELLED,+        JobStatus_COMPLETED,+        JobStatus_COMPLETED_WITH_FAILURES,+        JobStatus_FAILED,+        JobStatus_PENDING,+        JobStatus_RUNNING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype JobStatus = JobStatus'+  { fromJobStatus ::+      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 JobStatus_CANCELLED :: JobStatus+pattern JobStatus_CANCELLED = JobStatus' "CANCELLED"++pattern JobStatus_COMPLETED :: JobStatus+pattern JobStatus_COMPLETED = JobStatus' "COMPLETED"++pattern JobStatus_COMPLETED_WITH_FAILURES :: JobStatus+pattern JobStatus_COMPLETED_WITH_FAILURES = JobStatus' "COMPLETED_WITH_FAILURES"++pattern JobStatus_FAILED :: JobStatus+pattern JobStatus_FAILED = JobStatus' "FAILED"++pattern JobStatus_PENDING :: JobStatus+pattern JobStatus_PENDING = JobStatus' "PENDING"++pattern JobStatus_RUNNING :: JobStatus+pattern JobStatus_RUNNING = JobStatus' "RUNNING"++{-# COMPLETE+  JobStatus_CANCELLED,+  JobStatus_COMPLETED,+  JobStatus_COMPLETED_WITH_FAILURES,+  JobStatus_FAILED,+  JobStatus_PENDING,+  JobStatus_RUNNING,+  JobStatus'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/JobSummary.hs view
@@ -0,0 +1,163 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.JobSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.JobSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.JobStatus+import qualified Amazonka.Prelude as Prelude++-- | Contains a job summary information.+--+-- /See:/ 'newJobSummary' smart constructor.+data JobSummary = JobSummary'+  { -- | The ID of the job.+    id :: Prelude.Text,+    -- | The unique name that helps identify the job request.+    name :: Prelude.Text,+    -- | The status of the bulk import job can be one of following values.+    --+    -- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job+    --     to finish.+    --+    -- -   @CANCELLED@ – The bulk import job has been canceled.+    --+    -- -   @RUNNING@ – IoT SiteWise is processing your request to import your+    --     data from Amazon S3.+    --+    -- -   @COMPLETED@ – IoT SiteWise successfully completed your request to+    --     import data from Amazon S3.+    --+    -- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import+    --     data from Amazon S3. You can use logs saved in the specified error+    --     report location in Amazon S3 to troubleshoot issues.+    --+    -- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to+    --     import data from Amazon S3 with errors. You can use logs saved in+    --     the specified error report location in Amazon S3 to troubleshoot+    --     issues.+    status :: JobStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'JobSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'jobSummary_id' - The ID of the job.+--+-- 'name', 'jobSummary_name' - The unique name that helps identify the job request.+--+-- 'status', 'jobSummary_status' - The status of the bulk import job can be one of following values.+--+-- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job+--     to finish.+--+-- -   @CANCELLED@ – The bulk import job has been canceled.+--+-- -   @RUNNING@ – IoT SiteWise is processing your request to import your+--     data from Amazon S3.+--+-- -   @COMPLETED@ – IoT SiteWise successfully completed your request to+--     import data from Amazon S3.+--+-- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import+--     data from Amazon S3. You can use logs saved in the specified error+--     report location in Amazon S3 to troubleshoot issues.+--+-- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to+--     import data from Amazon S3 with errors. You can use logs saved in+--     the specified error report location in Amazon S3 to troubleshoot+--     issues.+newJobSummary ::+  -- | 'id'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  -- | 'status'+  JobStatus ->+  JobSummary+newJobSummary pId_ pName_ pStatus_ =+  JobSummary'+    { id = pId_,+      name = pName_,+      status = pStatus_+    }++-- | The ID of the job.+jobSummary_id :: Lens.Lens' JobSummary Prelude.Text+jobSummary_id = Lens.lens (\JobSummary' {id} -> id) (\s@JobSummary' {} a -> s {id = a} :: JobSummary)++-- | The unique name that helps identify the job request.+jobSummary_name :: Lens.Lens' JobSummary Prelude.Text+jobSummary_name = Lens.lens (\JobSummary' {name} -> name) (\s@JobSummary' {} a -> s {name = a} :: JobSummary)++-- | The status of the bulk import job can be one of following values.+--+-- -   @PENDING@ – IoT SiteWise is waiting for the current bulk import job+--     to finish.+--+-- -   @CANCELLED@ – The bulk import job has been canceled.+--+-- -   @RUNNING@ – IoT SiteWise is processing your request to import your+--     data from Amazon S3.+--+-- -   @COMPLETED@ – IoT SiteWise successfully completed your request to+--     import data from Amazon S3.+--+-- -   @FAILED@ – IoT SiteWise couldn\'t process your request to import+--     data from Amazon S3. You can use logs saved in the specified error+--     report location in Amazon S3 to troubleshoot issues.+--+-- -   @COMPLETED_WITH_FAILURES@ – IoT SiteWise completed your request to+--     import data from Amazon S3 with errors. You can use logs saved in+--     the specified error report location in Amazon S3 to troubleshoot+--     issues.+jobSummary_status :: Lens.Lens' JobSummary JobStatus+jobSummary_status = Lens.lens (\JobSummary' {status} -> status) (\s@JobSummary' {} a -> s {status = a} :: JobSummary)++instance Data.FromJSON JobSummary where+  parseJSON =+    Data.withObject+      "JobSummary"+      ( \x ->+          JobSummary'+            Prelude.<$> (x Data..: "id")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "status")+      )++instance Prelude.Hashable JobSummary where+  hashWithSalt _salt JobSummary' {..} =+    _salt+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status++instance Prelude.NFData JobSummary where+  rnf JobSummary' {..} =+    Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/IoTSiteWise/Types/ListAssetModelPropertiesFilter.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.IoTSiteWise.Types.ListAssetModelPropertiesFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ListAssetModelPropertiesFilter+  ( ListAssetModelPropertiesFilter+      ( ..,+        ListAssetModelPropertiesFilter_ALL,+        ListAssetModelPropertiesFilter_BASE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ListAssetModelPropertiesFilter = ListAssetModelPropertiesFilter'+  { fromListAssetModelPropertiesFilter ::+      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 ListAssetModelPropertiesFilter_ALL :: ListAssetModelPropertiesFilter+pattern ListAssetModelPropertiesFilter_ALL = ListAssetModelPropertiesFilter' "ALL"++pattern ListAssetModelPropertiesFilter_BASE :: ListAssetModelPropertiesFilter+pattern ListAssetModelPropertiesFilter_BASE = ListAssetModelPropertiesFilter' "BASE"++{-# COMPLETE+  ListAssetModelPropertiesFilter_ALL,+  ListAssetModelPropertiesFilter_BASE,+  ListAssetModelPropertiesFilter'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/ListAssetPropertiesFilter.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.IoTSiteWise.Types.ListAssetPropertiesFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ListAssetPropertiesFilter+  ( ListAssetPropertiesFilter+      ( ..,+        ListAssetPropertiesFilter_ALL,+        ListAssetPropertiesFilter_BASE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ListAssetPropertiesFilter = ListAssetPropertiesFilter'+  { fromListAssetPropertiesFilter ::+      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 ListAssetPropertiesFilter_ALL :: ListAssetPropertiesFilter+pattern ListAssetPropertiesFilter_ALL = ListAssetPropertiesFilter' "ALL"++pattern ListAssetPropertiesFilter_BASE :: ListAssetPropertiesFilter+pattern ListAssetPropertiesFilter_BASE = ListAssetPropertiesFilter' "BASE"++{-# COMPLETE+  ListAssetPropertiesFilter_ALL,+  ListAssetPropertiesFilter_BASE,+  ListAssetPropertiesFilter'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/ListAssetsFilter.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.IoTSiteWise.Types.ListAssetsFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ListAssetsFilter+  ( ListAssetsFilter+      ( ..,+        ListAssetsFilter_ALL,+        ListAssetsFilter_TOP_LEVEL+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ListAssetsFilter = ListAssetsFilter'+  { fromListAssetsFilter ::+      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 ListAssetsFilter_ALL :: ListAssetsFilter+pattern ListAssetsFilter_ALL = ListAssetsFilter' "ALL"++pattern ListAssetsFilter_TOP_LEVEL :: ListAssetsFilter+pattern ListAssetsFilter_TOP_LEVEL = ListAssetsFilter' "TOP_LEVEL"++{-# COMPLETE+  ListAssetsFilter_ALL,+  ListAssetsFilter_TOP_LEVEL,+  ListAssetsFilter'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/ListBulkImportJobsFilter.hs view
@@ -0,0 +1,96 @@+{-# 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.IoTSiteWise.Types.ListBulkImportJobsFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ListBulkImportJobsFilter+  ( ListBulkImportJobsFilter+      ( ..,+        ListBulkImportJobsFilter_ALL,+        ListBulkImportJobsFilter_CANCELLED,+        ListBulkImportJobsFilter_COMPLETED,+        ListBulkImportJobsFilter_COMPLETED_WITH_FAILURES,+        ListBulkImportJobsFilter_FAILED,+        ListBulkImportJobsFilter_PENDING,+        ListBulkImportJobsFilter_RUNNING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ListBulkImportJobsFilter = ListBulkImportJobsFilter'+  { fromListBulkImportJobsFilter ::+      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 ListBulkImportJobsFilter_ALL :: ListBulkImportJobsFilter+pattern ListBulkImportJobsFilter_ALL = ListBulkImportJobsFilter' "ALL"++pattern ListBulkImportJobsFilter_CANCELLED :: ListBulkImportJobsFilter+pattern ListBulkImportJobsFilter_CANCELLED = ListBulkImportJobsFilter' "CANCELLED"++pattern ListBulkImportJobsFilter_COMPLETED :: ListBulkImportJobsFilter+pattern ListBulkImportJobsFilter_COMPLETED = ListBulkImportJobsFilter' "COMPLETED"++pattern ListBulkImportJobsFilter_COMPLETED_WITH_FAILURES :: ListBulkImportJobsFilter+pattern ListBulkImportJobsFilter_COMPLETED_WITH_FAILURES = ListBulkImportJobsFilter' "COMPLETED_WITH_FAILURES"++pattern ListBulkImportJobsFilter_FAILED :: ListBulkImportJobsFilter+pattern ListBulkImportJobsFilter_FAILED = ListBulkImportJobsFilter' "FAILED"++pattern ListBulkImportJobsFilter_PENDING :: ListBulkImportJobsFilter+pattern ListBulkImportJobsFilter_PENDING = ListBulkImportJobsFilter' "PENDING"++pattern ListBulkImportJobsFilter_RUNNING :: ListBulkImportJobsFilter+pattern ListBulkImportJobsFilter_RUNNING = ListBulkImportJobsFilter' "RUNNING"++{-# COMPLETE+  ListBulkImportJobsFilter_ALL,+  ListBulkImportJobsFilter_CANCELLED,+  ListBulkImportJobsFilter_COMPLETED,+  ListBulkImportJobsFilter_COMPLETED_WITH_FAILURES,+  ListBulkImportJobsFilter_FAILED,+  ListBulkImportJobsFilter_PENDING,+  ListBulkImportJobsFilter_RUNNING,+  ListBulkImportJobsFilter'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/ListTimeSeriesType.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.IoTSiteWise.Types.ListTimeSeriesType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ListTimeSeriesType+  ( ListTimeSeriesType+      ( ..,+        ListTimeSeriesType_ASSOCIATED,+        ListTimeSeriesType_DISASSOCIATED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ListTimeSeriesType = ListTimeSeriesType'+  { fromListTimeSeriesType ::+      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 ListTimeSeriesType_ASSOCIATED :: ListTimeSeriesType+pattern ListTimeSeriesType_ASSOCIATED = ListTimeSeriesType' "ASSOCIATED"++pattern ListTimeSeriesType_DISASSOCIATED :: ListTimeSeriesType+pattern ListTimeSeriesType_DISASSOCIATED = ListTimeSeriesType' "DISASSOCIATED"++{-# COMPLETE+  ListTimeSeriesType_ASSOCIATED,+  ListTimeSeriesType_DISASSOCIATED,+  ListTimeSeriesType'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/LoggingLevel.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.IoTSiteWise.Types.LoggingLevel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.LoggingLevel+  ( LoggingLevel+      ( ..,+        LoggingLevel_ERROR,+        LoggingLevel_INFO,+        LoggingLevel_OFF+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LoggingLevel = LoggingLevel'+  { fromLoggingLevel ::+      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 LoggingLevel_ERROR :: LoggingLevel+pattern LoggingLevel_ERROR = LoggingLevel' "ERROR"++pattern LoggingLevel_INFO :: LoggingLevel+pattern LoggingLevel_INFO = LoggingLevel' "INFO"++pattern LoggingLevel_OFF :: LoggingLevel+pattern LoggingLevel_OFF = LoggingLevel' "OFF"++{-# COMPLETE+  LoggingLevel_ERROR,+  LoggingLevel_INFO,+  LoggingLevel_OFF,+  LoggingLevel'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/LoggingOptions.hs view
@@ -0,0 +1,77 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.LoggingOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.LoggingOptions where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.LoggingLevel+import qualified Amazonka.Prelude as Prelude++-- | Contains logging options.+--+-- /See:/ 'newLoggingOptions' smart constructor.+data LoggingOptions = LoggingOptions'+  { -- | The IoT SiteWise logging verbosity level.+    level :: LoggingLevel+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LoggingOptions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'level', 'loggingOptions_level' - The IoT SiteWise logging verbosity level.+newLoggingOptions ::+  -- | 'level'+  LoggingLevel ->+  LoggingOptions+newLoggingOptions pLevel_ =+  LoggingOptions' {level = pLevel_}++-- | The IoT SiteWise logging verbosity level.+loggingOptions_level :: Lens.Lens' LoggingOptions LoggingLevel+loggingOptions_level = Lens.lens (\LoggingOptions' {level} -> level) (\s@LoggingOptions' {} a -> s {level = a} :: LoggingOptions)++instance Data.FromJSON LoggingOptions where+  parseJSON =+    Data.withObject+      "LoggingOptions"+      ( \x ->+          LoggingOptions' Prelude.<$> (x Data..: "level")+      )++instance Prelude.Hashable LoggingOptions where+  hashWithSalt _salt LoggingOptions' {..} =+    _salt `Prelude.hashWithSalt` level++instance Prelude.NFData LoggingOptions where+  rnf LoggingOptions' {..} = Prelude.rnf level++instance Data.ToJSON LoggingOptions where+  toJSON LoggingOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("level" Data..= level)]+      )
+ gen/Amazonka/IoTSiteWise/Types/Measurement.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.IoTSiteWise.Types.Measurement+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Measurement where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.MeasurementProcessingConfig+import qualified Amazonka.Prelude as Prelude++-- | Contains an asset measurement property. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html#measurements Measurements>+-- in the /IoT SiteWise User Guide/.+--+-- /See:/ 'newMeasurement' smart constructor.+data Measurement = Measurement'+  { -- | The processing configuration for the given measurement property. You can+    -- configure measurements to be kept at the edge or forwarded to the Amazon+    -- Web Services Cloud. By default, measurements are forwarded to the cloud.+    processingConfig :: Prelude.Maybe MeasurementProcessingConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Measurement' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'processingConfig', 'measurement_processingConfig' - The processing configuration for the given measurement property. You can+-- configure measurements to be kept at the edge or forwarded to the Amazon+-- Web Services Cloud. By default, measurements are forwarded to the cloud.+newMeasurement ::+  Measurement+newMeasurement =+  Measurement' {processingConfig = Prelude.Nothing}++-- | The processing configuration for the given measurement property. You can+-- configure measurements to be kept at the edge or forwarded to the Amazon+-- Web Services Cloud. By default, measurements are forwarded to the cloud.+measurement_processingConfig :: Lens.Lens' Measurement (Prelude.Maybe MeasurementProcessingConfig)+measurement_processingConfig = Lens.lens (\Measurement' {processingConfig} -> processingConfig) (\s@Measurement' {} a -> s {processingConfig = a} :: Measurement)++instance Data.FromJSON Measurement where+  parseJSON =+    Data.withObject+      "Measurement"+      ( \x ->+          Measurement'+            Prelude.<$> (x Data..:? "processingConfig")+      )++instance Prelude.Hashable Measurement where+  hashWithSalt _salt Measurement' {..} =+    _salt `Prelude.hashWithSalt` processingConfig++instance Prelude.NFData Measurement where+  rnf Measurement' {..} = Prelude.rnf processingConfig++instance Data.ToJSON Measurement where+  toJSON Measurement' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("processingConfig" Data..=)+              Prelude.<$> processingConfig+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/MeasurementProcessingConfig.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.IoTSiteWise.Types.MeasurementProcessingConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.MeasurementProcessingConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.ForwardingConfig+import qualified Amazonka.Prelude as Prelude++-- | The processing configuration for the given measurement property. You can+-- configure measurements to be kept at the edge or forwarded to the Amazon+-- Web Services Cloud. By default, measurements are forwarded to the cloud.+--+-- /See:/ 'newMeasurementProcessingConfig' smart constructor.+data MeasurementProcessingConfig = MeasurementProcessingConfig'+  { -- | The forwarding configuration for the given measurement property.+    forwardingConfig :: ForwardingConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MeasurementProcessingConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'forwardingConfig', 'measurementProcessingConfig_forwardingConfig' - The forwarding configuration for the given measurement property.+newMeasurementProcessingConfig ::+  -- | 'forwardingConfig'+  ForwardingConfig ->+  MeasurementProcessingConfig+newMeasurementProcessingConfig pForwardingConfig_ =+  MeasurementProcessingConfig'+    { forwardingConfig =+        pForwardingConfig_+    }++-- | The forwarding configuration for the given measurement property.+measurementProcessingConfig_forwardingConfig :: Lens.Lens' MeasurementProcessingConfig ForwardingConfig+measurementProcessingConfig_forwardingConfig = Lens.lens (\MeasurementProcessingConfig' {forwardingConfig} -> forwardingConfig) (\s@MeasurementProcessingConfig' {} a -> s {forwardingConfig = a} :: MeasurementProcessingConfig)++instance Data.FromJSON MeasurementProcessingConfig where+  parseJSON =+    Data.withObject+      "MeasurementProcessingConfig"+      ( \x ->+          MeasurementProcessingConfig'+            Prelude.<$> (x Data..: "forwardingConfig")+      )++instance Prelude.Hashable MeasurementProcessingConfig where+  hashWithSalt _salt MeasurementProcessingConfig' {..} =+    _salt `Prelude.hashWithSalt` forwardingConfig++instance Prelude.NFData MeasurementProcessingConfig where+  rnf MeasurementProcessingConfig' {..} =+    Prelude.rnf forwardingConfig++instance Data.ToJSON MeasurementProcessingConfig where+  toJSON MeasurementProcessingConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("forwardingConfig" Data..= forwardingConfig)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/Metric.hs view
@@ -0,0 +1,170 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.Metric+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Metric where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.ExpressionVariable+import Amazonka.IoTSiteWise.Types.MetricProcessingConfig+import Amazonka.IoTSiteWise.Types.MetricWindow+import qualified Amazonka.Prelude as Prelude++-- | Contains an asset metric property. With metrics, you can calculate+-- aggregate functions, such as an average, maximum, or minimum, as+-- specified through an expression. A metric maps several values to a+-- single value (such as a sum).+--+-- The maximum number of dependent\/cascading variables used in any one+-- metric calculation is 10. Therefore, a /root/ metric can have up to 10+-- cascading metrics in its computational dependency tree. Additionally, a+-- metric can only have a data type of @DOUBLE@ and consume properties with+-- data types of @INTEGER@ or @DOUBLE@.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html#metrics Metrics>+-- in the /IoT SiteWise User Guide/.+--+-- /See:/ 'newMetric' smart constructor.+data Metric = Metric'+  { -- | The processing configuration for the given metric property. You can+    -- configure metrics to be computed at the edge or in the Amazon Web+    -- Services Cloud. By default, metrics are forwarded to the cloud.+    processingConfig :: Prelude.Maybe MetricProcessingConfig,+    -- | The mathematical expression that defines the metric aggregation+    -- function. You can specify up to 10 variables per expression. You can+    -- specify up to 10 functions per expression.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+    -- in the /IoT SiteWise User Guide/.+    expression :: Prelude.Text,+    -- | The list of variables used in the expression.+    variables :: [ExpressionVariable],+    -- | The window (time interval) over which IoT SiteWise computes the+    -- metric\'s aggregation expression. IoT SiteWise computes one data point+    -- per @window@.+    window :: MetricWindow+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Metric' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'processingConfig', 'metric_processingConfig' - The processing configuration for the given metric property. You can+-- configure metrics to be computed at the edge or in the Amazon Web+-- Services Cloud. By default, metrics are forwarded to the cloud.+--+-- 'expression', 'metric_expression' - The mathematical expression that defines the metric aggregation+-- function. You can specify up to 10 variables per expression. You can+-- specify up to 10 functions per expression.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+--+-- 'variables', 'metric_variables' - The list of variables used in the expression.+--+-- 'window', 'metric_window' - The window (time interval) over which IoT SiteWise computes the+-- metric\'s aggregation expression. IoT SiteWise computes one data point+-- per @window@.+newMetric ::+  -- | 'expression'+  Prelude.Text ->+  -- | 'window'+  MetricWindow ->+  Metric+newMetric pExpression_ pWindow_ =+  Metric'+    { processingConfig = Prelude.Nothing,+      expression = pExpression_,+      variables = Prelude.mempty,+      window = pWindow_+    }++-- | The processing configuration for the given metric property. You can+-- configure metrics to be computed at the edge or in the Amazon Web+-- Services Cloud. By default, metrics are forwarded to the cloud.+metric_processingConfig :: Lens.Lens' Metric (Prelude.Maybe MetricProcessingConfig)+metric_processingConfig = Lens.lens (\Metric' {processingConfig} -> processingConfig) (\s@Metric' {} a -> s {processingConfig = a} :: Metric)++-- | The mathematical expression that defines the metric aggregation+-- function. You can specify up to 10 variables per expression. You can+-- specify up to 10 functions per expression.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+metric_expression :: Lens.Lens' Metric Prelude.Text+metric_expression = Lens.lens (\Metric' {expression} -> expression) (\s@Metric' {} a -> s {expression = a} :: Metric)++-- | The list of variables used in the expression.+metric_variables :: Lens.Lens' Metric [ExpressionVariable]+metric_variables = Lens.lens (\Metric' {variables} -> variables) (\s@Metric' {} a -> s {variables = a} :: Metric) Prelude.. Lens.coerced++-- | The window (time interval) over which IoT SiteWise computes the+-- metric\'s aggregation expression. IoT SiteWise computes one data point+-- per @window@.+metric_window :: Lens.Lens' Metric MetricWindow+metric_window = Lens.lens (\Metric' {window} -> window) (\s@Metric' {} a -> s {window = a} :: Metric)++instance Data.FromJSON Metric where+  parseJSON =+    Data.withObject+      "Metric"+      ( \x ->+          Metric'+            Prelude.<$> (x Data..:? "processingConfig")+            Prelude.<*> (x Data..: "expression")+            Prelude.<*> (x Data..:? "variables" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "window")+      )++instance Prelude.Hashable Metric where+  hashWithSalt _salt Metric' {..} =+    _salt+      `Prelude.hashWithSalt` processingConfig+      `Prelude.hashWithSalt` expression+      `Prelude.hashWithSalt` variables+      `Prelude.hashWithSalt` window++instance Prelude.NFData Metric where+  rnf Metric' {..} =+    Prelude.rnf processingConfig+      `Prelude.seq` Prelude.rnf expression+      `Prelude.seq` Prelude.rnf variables+      `Prelude.seq` Prelude.rnf window++instance Data.ToJSON Metric where+  toJSON Metric' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("processingConfig" Data..=)+              Prelude.<$> processingConfig,+            Prelude.Just ("expression" Data..= expression),+            Prelude.Just ("variables" Data..= variables),+            Prelude.Just ("window" Data..= window)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/MetricProcessingConfig.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.IoTSiteWise.Types.MetricProcessingConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.MetricProcessingConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.ComputeLocation+import qualified Amazonka.Prelude as Prelude++-- | The processing configuration for the given metric property. You can+-- configure metrics to be computed at the edge or in the Amazon Web+-- Services Cloud. By default, metrics are forwarded to the cloud.+--+-- /See:/ 'newMetricProcessingConfig' smart constructor.+data MetricProcessingConfig = MetricProcessingConfig'+  { -- | The compute location for the given metric property.+    computeLocation :: ComputeLocation+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MetricProcessingConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'computeLocation', 'metricProcessingConfig_computeLocation' - The compute location for the given metric property.+newMetricProcessingConfig ::+  -- | 'computeLocation'+  ComputeLocation ->+  MetricProcessingConfig+newMetricProcessingConfig pComputeLocation_ =+  MetricProcessingConfig'+    { computeLocation =+        pComputeLocation_+    }++-- | The compute location for the given metric property.+metricProcessingConfig_computeLocation :: Lens.Lens' MetricProcessingConfig ComputeLocation+metricProcessingConfig_computeLocation = Lens.lens (\MetricProcessingConfig' {computeLocation} -> computeLocation) (\s@MetricProcessingConfig' {} a -> s {computeLocation = a} :: MetricProcessingConfig)++instance Data.FromJSON MetricProcessingConfig where+  parseJSON =+    Data.withObject+      "MetricProcessingConfig"+      ( \x ->+          MetricProcessingConfig'+            Prelude.<$> (x Data..: "computeLocation")+      )++instance Prelude.Hashable MetricProcessingConfig where+  hashWithSalt _salt MetricProcessingConfig' {..} =+    _salt `Prelude.hashWithSalt` computeLocation++instance Prelude.NFData MetricProcessingConfig where+  rnf MetricProcessingConfig' {..} =+    Prelude.rnf computeLocation++instance Data.ToJSON MetricProcessingConfig where+  toJSON MetricProcessingConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("computeLocation" Data..= computeLocation)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/MetricWindow.hs view
@@ -0,0 +1,76 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.MetricWindow+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.MetricWindow where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.TumblingWindow+import qualified Amazonka.Prelude as Prelude++-- | Contains a time interval window used for data aggregate computations+-- (for example, average, sum, count, and so on).+--+-- /See:/ 'newMetricWindow' smart constructor.+data MetricWindow = MetricWindow'+  { -- | The tumbling time interval window.+    tumbling :: Prelude.Maybe TumblingWindow+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MetricWindow' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tumbling', 'metricWindow_tumbling' - The tumbling time interval window.+newMetricWindow ::+  MetricWindow+newMetricWindow =+  MetricWindow' {tumbling = Prelude.Nothing}++-- | The tumbling time interval window.+metricWindow_tumbling :: Lens.Lens' MetricWindow (Prelude.Maybe TumblingWindow)+metricWindow_tumbling = Lens.lens (\MetricWindow' {tumbling} -> tumbling) (\s@MetricWindow' {} a -> s {tumbling = a} :: MetricWindow)++instance Data.FromJSON MetricWindow where+  parseJSON =+    Data.withObject+      "MetricWindow"+      ( \x ->+          MetricWindow' Prelude.<$> (x Data..:? "tumbling")+      )++instance Prelude.Hashable MetricWindow where+  hashWithSalt _salt MetricWindow' {..} =+    _salt `Prelude.hashWithSalt` tumbling++instance Prelude.NFData MetricWindow where+  rnf MetricWindow' {..} = Prelude.rnf tumbling++instance Data.ToJSON MetricWindow where+  toJSON MetricWindow' {..} =+    Data.object+      ( Prelude.catMaybes+          [("tumbling" Data..=) Prelude.<$> tumbling]+      )
+ gen/Amazonka/IoTSiteWise/Types/MonitorErrorCode.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.IoTSiteWise.Types.MonitorErrorCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.MonitorErrorCode+  ( MonitorErrorCode+      ( ..,+        MonitorErrorCode_INTERNAL_FAILURE,+        MonitorErrorCode_LIMIT_EXCEEDED,+        MonitorErrorCode_VALIDATION_ERROR+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype MonitorErrorCode = MonitorErrorCode'+  { fromMonitorErrorCode ::+      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 MonitorErrorCode_INTERNAL_FAILURE :: MonitorErrorCode+pattern MonitorErrorCode_INTERNAL_FAILURE = MonitorErrorCode' "INTERNAL_FAILURE"++pattern MonitorErrorCode_LIMIT_EXCEEDED :: MonitorErrorCode+pattern MonitorErrorCode_LIMIT_EXCEEDED = MonitorErrorCode' "LIMIT_EXCEEDED"++pattern MonitorErrorCode_VALIDATION_ERROR :: MonitorErrorCode+pattern MonitorErrorCode_VALIDATION_ERROR = MonitorErrorCode' "VALIDATION_ERROR"++{-# COMPLETE+  MonitorErrorCode_INTERNAL_FAILURE,+  MonitorErrorCode_LIMIT_EXCEEDED,+  MonitorErrorCode_VALIDATION_ERROR,+  MonitorErrorCode'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/MonitorErrorDetails.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.IoTSiteWise.Types.MonitorErrorDetails+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.MonitorErrorDetails where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.MonitorErrorCode+import qualified Amazonka.Prelude as Prelude++-- | Contains IoT SiteWise Monitor error details.+--+-- /See:/ 'newMonitorErrorDetails' smart constructor.+data MonitorErrorDetails = MonitorErrorDetails'+  { -- | The error code.+    code :: Prelude.Maybe MonitorErrorCode,+    -- | The error message.+    message :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MonitorErrorDetails' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'monitorErrorDetails_code' - The error code.+--+-- 'message', 'monitorErrorDetails_message' - The error message.+newMonitorErrorDetails ::+  MonitorErrorDetails+newMonitorErrorDetails =+  MonitorErrorDetails'+    { code = Prelude.Nothing,+      message = Prelude.Nothing+    }++-- | The error code.+monitorErrorDetails_code :: Lens.Lens' MonitorErrorDetails (Prelude.Maybe MonitorErrorCode)+monitorErrorDetails_code = Lens.lens (\MonitorErrorDetails' {code} -> code) (\s@MonitorErrorDetails' {} a -> s {code = a} :: MonitorErrorDetails)++-- | The error message.+monitorErrorDetails_message :: Lens.Lens' MonitorErrorDetails (Prelude.Maybe Prelude.Text)+monitorErrorDetails_message = Lens.lens (\MonitorErrorDetails' {message} -> message) (\s@MonitorErrorDetails' {} a -> s {message = a} :: MonitorErrorDetails)++instance Data.FromJSON MonitorErrorDetails where+  parseJSON =+    Data.withObject+      "MonitorErrorDetails"+      ( \x ->+          MonitorErrorDetails'+            Prelude.<$> (x Data..:? "code")+            Prelude.<*> (x Data..:? "message")+      )++instance Prelude.Hashable MonitorErrorDetails where+  hashWithSalt _salt MonitorErrorDetails' {..} =+    _salt+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` message++instance Prelude.NFData MonitorErrorDetails where+  rnf MonitorErrorDetails' {..} =+    Prelude.rnf code `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/IoTSiteWise/Types/MultiLayerStorage.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.MultiLayerStorage+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.MultiLayerStorage where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.CustomerManagedS3Storage+import qualified Amazonka.Prelude as Prelude++-- | Contains information about the storage destination.+--+-- /See:/ 'newMultiLayerStorage' smart constructor.+data MultiLayerStorage = MultiLayerStorage'+  { -- | Contains information about a customer managed Amazon S3 bucket.+    customerManagedS3Storage :: CustomerManagedS3Storage+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MultiLayerStorage' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'customerManagedS3Storage', 'multiLayerStorage_customerManagedS3Storage' - Contains information about a customer managed Amazon S3 bucket.+newMultiLayerStorage ::+  -- | 'customerManagedS3Storage'+  CustomerManagedS3Storage ->+  MultiLayerStorage+newMultiLayerStorage pCustomerManagedS3Storage_ =+  MultiLayerStorage'+    { customerManagedS3Storage =+        pCustomerManagedS3Storage_+    }++-- | Contains information about a customer managed Amazon S3 bucket.+multiLayerStorage_customerManagedS3Storage :: Lens.Lens' MultiLayerStorage CustomerManagedS3Storage+multiLayerStorage_customerManagedS3Storage = Lens.lens (\MultiLayerStorage' {customerManagedS3Storage} -> customerManagedS3Storage) (\s@MultiLayerStorage' {} a -> s {customerManagedS3Storage = a} :: MultiLayerStorage)++instance Data.FromJSON MultiLayerStorage where+  parseJSON =+    Data.withObject+      "MultiLayerStorage"+      ( \x ->+          MultiLayerStorage'+            Prelude.<$> (x Data..: "customerManagedS3Storage")+      )++instance Prelude.Hashable MultiLayerStorage where+  hashWithSalt _salt MultiLayerStorage' {..} =+    _salt+      `Prelude.hashWithSalt` customerManagedS3Storage++instance Prelude.NFData MultiLayerStorage where+  rnf MultiLayerStorage' {..} =+    Prelude.rnf customerManagedS3Storage++instance Data.ToJSON MultiLayerStorage where+  toJSON MultiLayerStorage' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "customerManagedS3Storage"+                  Data..= customerManagedS3Storage+              )+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/Permission.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.IoTSiteWise.Types.Permission+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Permission+  ( Permission+      ( ..,+        Permission_ADMINISTRATOR,+        Permission_VIEWER+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype Permission = Permission'+  { fromPermission ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern Permission_ADMINISTRATOR :: Permission+pattern Permission_ADMINISTRATOR = Permission' "ADMINISTRATOR"++pattern Permission_VIEWER :: Permission+pattern Permission_VIEWER = Permission' "VIEWER"++{-# COMPLETE+  Permission_ADMINISTRATOR,+  Permission_VIEWER,+  Permission'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/PortalResource.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.PortalResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.PortalResource 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++-- | Identifies an IoT SiteWise Monitor portal.+--+-- /See:/ 'newPortalResource' smart constructor.+data PortalResource = PortalResource'+  { -- | The ID of the portal.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PortalResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'portalResource_id' - The ID of the portal.+newPortalResource ::+  -- | 'id'+  Prelude.Text ->+  PortalResource+newPortalResource pId_ = PortalResource' {id = pId_}++-- | The ID of the portal.+portalResource_id :: Lens.Lens' PortalResource Prelude.Text+portalResource_id = Lens.lens (\PortalResource' {id} -> id) (\s@PortalResource' {} a -> s {id = a} :: PortalResource)++instance Data.FromJSON PortalResource where+  parseJSON =+    Data.withObject+      "PortalResource"+      (\x -> PortalResource' Prelude.<$> (x Data..: "id"))++instance Prelude.Hashable PortalResource where+  hashWithSalt _salt PortalResource' {..} =+    _salt `Prelude.hashWithSalt` id++instance Prelude.NFData PortalResource where+  rnf PortalResource' {..} = Prelude.rnf id++instance Data.ToJSON PortalResource where+  toJSON PortalResource' {..} =+    Data.object+      (Prelude.catMaybes [Prelude.Just ("id" Data..= id)])
+ gen/Amazonka/IoTSiteWise/Types/PortalState.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.PortalState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.PortalState+  ( PortalState+      ( ..,+        PortalState_ACTIVE,+        PortalState_CREATING,+        PortalState_DELETING,+        PortalState_FAILED,+        PortalState_UPDATING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype PortalState = PortalState'+  { fromPortalState ::+      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 PortalState_ACTIVE :: PortalState+pattern PortalState_ACTIVE = PortalState' "ACTIVE"++pattern PortalState_CREATING :: PortalState+pattern PortalState_CREATING = PortalState' "CREATING"++pattern PortalState_DELETING :: PortalState+pattern PortalState_DELETING = PortalState' "DELETING"++pattern PortalState_FAILED :: PortalState+pattern PortalState_FAILED = PortalState' "FAILED"++pattern PortalState_UPDATING :: PortalState+pattern PortalState_UPDATING = PortalState' "UPDATING"++{-# COMPLETE+  PortalState_ACTIVE,+  PortalState_CREATING,+  PortalState_DELETING,+  PortalState_FAILED,+  PortalState_UPDATING,+  PortalState'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/PortalStatus.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.PortalStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.PortalStatus where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.MonitorErrorDetails+import Amazonka.IoTSiteWise.Types.PortalState+import qualified Amazonka.Prelude as Prelude++-- | Contains information about the current status of a portal.+--+-- /See:/ 'newPortalStatus' smart constructor.+data PortalStatus = PortalStatus'+  { -- | Contains associated error information, if any.+    error :: Prelude.Maybe MonitorErrorDetails,+    -- | The current state of the portal.+    state :: PortalState+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PortalStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'portalStatus_error' - Contains associated error information, if any.+--+-- 'state', 'portalStatus_state' - The current state of the portal.+newPortalStatus ::+  -- | 'state'+  PortalState ->+  PortalStatus+newPortalStatus pState_ =+  PortalStatus'+    { error = Prelude.Nothing,+      state = pState_+    }++-- | Contains associated error information, if any.+portalStatus_error :: Lens.Lens' PortalStatus (Prelude.Maybe MonitorErrorDetails)+portalStatus_error = Lens.lens (\PortalStatus' {error} -> error) (\s@PortalStatus' {} a -> s {error = a} :: PortalStatus)++-- | The current state of the portal.+portalStatus_state :: Lens.Lens' PortalStatus PortalState+portalStatus_state = Lens.lens (\PortalStatus' {state} -> state) (\s@PortalStatus' {} a -> s {state = a} :: PortalStatus)++instance Data.FromJSON PortalStatus where+  parseJSON =+    Data.withObject+      "PortalStatus"+      ( \x ->+          PortalStatus'+            Prelude.<$> (x Data..:? "error")+            Prelude.<*> (x Data..: "state")+      )++instance Prelude.Hashable PortalStatus where+  hashWithSalt _salt PortalStatus' {..} =+    _salt+      `Prelude.hashWithSalt` error+      `Prelude.hashWithSalt` state++instance Prelude.NFData PortalStatus where+  rnf PortalStatus' {..} =+    Prelude.rnf error `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/IoTSiteWise/Types/PortalSummary.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.IoTSiteWise.Types.PortalSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.PortalSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.PortalStatus+import qualified Amazonka.Prelude as Prelude++-- | Contains a portal summary.+--+-- /See:/ 'newPortalSummary' smart constructor.+data PortalSummary = PortalSummary'+  { -- | The date the portal was created, in Unix epoch time.+    creationDate :: Prelude.Maybe Data.POSIX,+    -- | The portal\'s description.+    description :: Prelude.Maybe Prelude.Text,+    -- | The date the portal was last updated, in Unix epoch time.+    lastUpdateDate :: Prelude.Maybe Data.POSIX,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the service role that allows the portal\'s users to access your IoT+    -- SiteWise resources on your behalf. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+    -- in the /IoT SiteWise User Guide/.+    roleArn :: Prelude.Maybe Prelude.Text,+    -- | The ID of the portal.+    id :: Prelude.Text,+    -- | The name of the portal.+    name :: Prelude.Text,+    -- | The URL for the IoT SiteWise Monitor portal. You can use this URL to+    -- access portals that use IAM Identity Center for authentication. For+    -- portals that use IAM for authentication, you must use the IoT SiteWise+    -- console to get a URL that you can use to access the portal.+    startUrl :: Prelude.Text,+    status :: PortalStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PortalSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'creationDate', 'portalSummary_creationDate' - The date the portal was created, in Unix epoch time.+--+-- 'description', 'portalSummary_description' - The portal\'s description.+--+-- 'lastUpdateDate', 'portalSummary_lastUpdateDate' - The date the portal was last updated, in Unix epoch time.+--+-- 'roleArn', 'portalSummary_roleArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the service role that allows the portal\'s users to access your IoT+-- SiteWise resources on your behalf. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+-- in the /IoT SiteWise User Guide/.+--+-- 'id', 'portalSummary_id' - The ID of the portal.+--+-- 'name', 'portalSummary_name' - The name of the portal.+--+-- 'startUrl', 'portalSummary_startUrl' - The URL for the IoT SiteWise Monitor portal. You can use this URL to+-- access portals that use IAM Identity Center for authentication. For+-- portals that use IAM for authentication, you must use the IoT SiteWise+-- console to get a URL that you can use to access the portal.+--+-- 'status', 'portalSummary_status' - Undocumented member.+newPortalSummary ::+  -- | 'id'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  -- | 'startUrl'+  Prelude.Text ->+  -- | 'status'+  PortalStatus ->+  PortalSummary+newPortalSummary pId_ pName_ pStartUrl_ pStatus_ =+  PortalSummary'+    { creationDate = Prelude.Nothing,+      description = Prelude.Nothing,+      lastUpdateDate = Prelude.Nothing,+      roleArn = Prelude.Nothing,+      id = pId_,+      name = pName_,+      startUrl = pStartUrl_,+      status = pStatus_+    }++-- | The date the portal was created, in Unix epoch time.+portalSummary_creationDate :: Lens.Lens' PortalSummary (Prelude.Maybe Prelude.UTCTime)+portalSummary_creationDate = Lens.lens (\PortalSummary' {creationDate} -> creationDate) (\s@PortalSummary' {} a -> s {creationDate = a} :: PortalSummary) Prelude.. Lens.mapping Data._Time++-- | The portal\'s description.+portalSummary_description :: Lens.Lens' PortalSummary (Prelude.Maybe Prelude.Text)+portalSummary_description = Lens.lens (\PortalSummary' {description} -> description) (\s@PortalSummary' {} a -> s {description = a} :: PortalSummary)++-- | The date the portal was last updated, in Unix epoch time.+portalSummary_lastUpdateDate :: Lens.Lens' PortalSummary (Prelude.Maybe Prelude.UTCTime)+portalSummary_lastUpdateDate = Lens.lens (\PortalSummary' {lastUpdateDate} -> lastUpdateDate) (\s@PortalSummary' {} a -> s {lastUpdateDate = a} :: PortalSummary) Prelude.. Lens.mapping Data._Time++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the service role that allows the portal\'s users to access your IoT+-- SiteWise resources on your behalf. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+-- in the /IoT SiteWise User Guide/.+portalSummary_roleArn :: Lens.Lens' PortalSummary (Prelude.Maybe Prelude.Text)+portalSummary_roleArn = Lens.lens (\PortalSummary' {roleArn} -> roleArn) (\s@PortalSummary' {} a -> s {roleArn = a} :: PortalSummary)++-- | The ID of the portal.+portalSummary_id :: Lens.Lens' PortalSummary Prelude.Text+portalSummary_id = Lens.lens (\PortalSummary' {id} -> id) (\s@PortalSummary' {} a -> s {id = a} :: PortalSummary)++-- | The name of the portal.+portalSummary_name :: Lens.Lens' PortalSummary Prelude.Text+portalSummary_name = Lens.lens (\PortalSummary' {name} -> name) (\s@PortalSummary' {} a -> s {name = a} :: PortalSummary)++-- | The URL for the IoT SiteWise Monitor portal. You can use this URL to+-- access portals that use IAM Identity Center for authentication. For+-- portals that use IAM for authentication, you must use the IoT SiteWise+-- console to get a URL that you can use to access the portal.+portalSummary_startUrl :: Lens.Lens' PortalSummary Prelude.Text+portalSummary_startUrl = Lens.lens (\PortalSummary' {startUrl} -> startUrl) (\s@PortalSummary' {} a -> s {startUrl = a} :: PortalSummary)++-- | Undocumented member.+portalSummary_status :: Lens.Lens' PortalSummary PortalStatus+portalSummary_status = Lens.lens (\PortalSummary' {status} -> status) (\s@PortalSummary' {} a -> s {status = a} :: PortalSummary)++instance Data.FromJSON PortalSummary where+  parseJSON =+    Data.withObject+      "PortalSummary"+      ( \x ->+          PortalSummary'+            Prelude.<$> (x Data..:? "creationDate")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "lastUpdateDate")+            Prelude.<*> (x Data..:? "roleArn")+            Prelude.<*> (x Data..: "id")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "startUrl")+            Prelude.<*> (x Data..: "status")+      )++instance Prelude.Hashable PortalSummary where+  hashWithSalt _salt PortalSummary' {..} =+    _salt+      `Prelude.hashWithSalt` creationDate+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` lastUpdateDate+      `Prelude.hashWithSalt` roleArn+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` startUrl+      `Prelude.hashWithSalt` status++instance Prelude.NFData PortalSummary where+  rnf PortalSummary' {..} =+    Prelude.rnf creationDate+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf lastUpdateDate+      `Prelude.seq` Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf startUrl+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/IoTSiteWise/Types/ProjectResource.hs view
@@ -0,0 +1,73 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ProjectResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ProjectResource 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++-- | Identifies a specific IoT SiteWise Monitor project.+--+-- /See:/ 'newProjectResource' smart constructor.+data ProjectResource = ProjectResource'+  { -- | The ID of the project.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProjectResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'projectResource_id' - The ID of the project.+newProjectResource ::+  -- | 'id'+  Prelude.Text ->+  ProjectResource+newProjectResource pId_ = ProjectResource' {id = pId_}++-- | The ID of the project.+projectResource_id :: Lens.Lens' ProjectResource Prelude.Text+projectResource_id = Lens.lens (\ProjectResource' {id} -> id) (\s@ProjectResource' {} a -> s {id = a} :: ProjectResource)++instance Data.FromJSON ProjectResource where+  parseJSON =+    Data.withObject+      "ProjectResource"+      ( \x ->+          ProjectResource' Prelude.<$> (x Data..: "id")+      )++instance Prelude.Hashable ProjectResource where+  hashWithSalt _salt ProjectResource' {..} =+    _salt `Prelude.hashWithSalt` id++instance Prelude.NFData ProjectResource where+  rnf ProjectResource' {..} = Prelude.rnf id++instance Data.ToJSON ProjectResource where+  toJSON ProjectResource' {..} =+    Data.object+      (Prelude.catMaybes [Prelude.Just ("id" Data..= id)])
+ gen/Amazonka/IoTSiteWise/Types/ProjectSummary.hs view
@@ -0,0 +1,124 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ProjectSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ProjectSummary 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 project summary information.+--+-- /See:/ 'newProjectSummary' smart constructor.+data ProjectSummary = ProjectSummary'+  { -- | The date the project was created, in Unix epoch time.+    creationDate :: Prelude.Maybe Data.POSIX,+    -- | The project\'s description.+    description :: Prelude.Maybe Prelude.Text,+    -- | The date the project was last updated, in Unix epoch time.+    lastUpdateDate :: Prelude.Maybe Data.POSIX,+    -- | The ID of the project.+    id :: Prelude.Text,+    -- | The name of the project.+    name :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ProjectSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'creationDate', 'projectSummary_creationDate' - The date the project was created, in Unix epoch time.+--+-- 'description', 'projectSummary_description' - The project\'s description.+--+-- 'lastUpdateDate', 'projectSummary_lastUpdateDate' - The date the project was last updated, in Unix epoch time.+--+-- 'id', 'projectSummary_id' - The ID of the project.+--+-- 'name', 'projectSummary_name' - The name of the project.+newProjectSummary ::+  -- | 'id'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  ProjectSummary+newProjectSummary pId_ pName_ =+  ProjectSummary'+    { creationDate = Prelude.Nothing,+      description = Prelude.Nothing,+      lastUpdateDate = Prelude.Nothing,+      id = pId_,+      name = pName_+    }++-- | The date the project was created, in Unix epoch time.+projectSummary_creationDate :: Lens.Lens' ProjectSummary (Prelude.Maybe Prelude.UTCTime)+projectSummary_creationDate = Lens.lens (\ProjectSummary' {creationDate} -> creationDate) (\s@ProjectSummary' {} a -> s {creationDate = a} :: ProjectSummary) Prelude.. Lens.mapping Data._Time++-- | The project\'s description.+projectSummary_description :: Lens.Lens' ProjectSummary (Prelude.Maybe Prelude.Text)+projectSummary_description = Lens.lens (\ProjectSummary' {description} -> description) (\s@ProjectSummary' {} a -> s {description = a} :: ProjectSummary)++-- | The date the project was last updated, in Unix epoch time.+projectSummary_lastUpdateDate :: Lens.Lens' ProjectSummary (Prelude.Maybe Prelude.UTCTime)+projectSummary_lastUpdateDate = Lens.lens (\ProjectSummary' {lastUpdateDate} -> lastUpdateDate) (\s@ProjectSummary' {} a -> s {lastUpdateDate = a} :: ProjectSummary) Prelude.. Lens.mapping Data._Time++-- | The ID of the project.+projectSummary_id :: Lens.Lens' ProjectSummary Prelude.Text+projectSummary_id = Lens.lens (\ProjectSummary' {id} -> id) (\s@ProjectSummary' {} a -> s {id = a} :: ProjectSummary)++-- | The name of the project.+projectSummary_name :: Lens.Lens' ProjectSummary Prelude.Text+projectSummary_name = Lens.lens (\ProjectSummary' {name} -> name) (\s@ProjectSummary' {} a -> s {name = a} :: ProjectSummary)++instance Data.FromJSON ProjectSummary where+  parseJSON =+    Data.withObject+      "ProjectSummary"+      ( \x ->+          ProjectSummary'+            Prelude.<$> (x Data..:? "creationDate")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "lastUpdateDate")+            Prelude.<*> (x Data..: "id")+            Prelude.<*> (x Data..: "name")+      )++instance Prelude.Hashable ProjectSummary where+  hashWithSalt _salt ProjectSummary' {..} =+    _salt+      `Prelude.hashWithSalt` creationDate+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` lastUpdateDate+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name++instance Prelude.NFData ProjectSummary where+  rnf ProjectSummary' {..} =+    Prelude.rnf creationDate+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf lastUpdateDate+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf name
+ gen/Amazonka/IoTSiteWise/Types/Property.hs view
@@ -0,0 +1,174 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.Property+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Property where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.PropertyDataType+import Amazonka.IoTSiteWise.Types.PropertyNotification+import Amazonka.IoTSiteWise.Types.PropertyType+import qualified Amazonka.Prelude as Prelude++-- | Contains asset property information.+--+-- /See:/ 'newProperty' smart constructor.+data Property = Property'+  { -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    alias :: Prelude.Maybe Prelude.Text,+    -- | The asset property\'s notification topic and state. For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+    notification :: Prelude.Maybe PropertyNotification,+    -- | The property type (see @PropertyType@). A property contains one type.+    type' :: Prelude.Maybe PropertyType,+    -- | The unit (such as @Newtons@ or @RPM@) of the asset property.+    unit :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    id :: Prelude.Text,+    -- | The name of the property.+    name :: Prelude.Text,+    -- | The property data type.+    dataType :: PropertyDataType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Property' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'alias', 'property_alias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- 'notification', 'property_notification' - The asset property\'s notification topic and state. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+--+-- 'type'', 'property_type' - The property type (see @PropertyType@). A property contains one type.+--+-- 'unit', 'property_unit' - The unit (such as @Newtons@ or @RPM@) of the asset property.+--+-- 'id', 'property_id' - The ID of the asset property.+--+-- 'name', 'property_name' - The name of the property.+--+-- 'dataType', 'property_dataType' - The property data type.+newProperty ::+  -- | 'id'+  Prelude.Text ->+  -- | 'name'+  Prelude.Text ->+  -- | 'dataType'+  PropertyDataType ->+  Property+newProperty pId_ pName_ pDataType_ =+  Property'+    { alias = Prelude.Nothing,+      notification = Prelude.Nothing,+      type' = Prelude.Nothing,+      unit = Prelude.Nothing,+      id = pId_,+      name = pName_,+      dataType = pDataType_+    }++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+property_alias :: Lens.Lens' Property (Prelude.Maybe Prelude.Text)+property_alias = Lens.lens (\Property' {alias} -> alias) (\s@Property' {} a -> s {alias = a} :: Property)++-- | The asset property\'s notification topic and state. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.+property_notification :: Lens.Lens' Property (Prelude.Maybe PropertyNotification)+property_notification = Lens.lens (\Property' {notification} -> notification) (\s@Property' {} a -> s {notification = a} :: Property)++-- | The property type (see @PropertyType@). A property contains one type.+property_type :: Lens.Lens' Property (Prelude.Maybe PropertyType)+property_type = Lens.lens (\Property' {type'} -> type') (\s@Property' {} a -> s {type' = a} :: Property)++-- | The unit (such as @Newtons@ or @RPM@) of the asset property.+property_unit :: Lens.Lens' Property (Prelude.Maybe Prelude.Text)+property_unit = Lens.lens (\Property' {unit} -> unit) (\s@Property' {} a -> s {unit = a} :: Property)++-- | The ID of the asset property.+property_id :: Lens.Lens' Property Prelude.Text+property_id = Lens.lens (\Property' {id} -> id) (\s@Property' {} a -> s {id = a} :: Property)++-- | The name of the property.+property_name :: Lens.Lens' Property Prelude.Text+property_name = Lens.lens (\Property' {name} -> name) (\s@Property' {} a -> s {name = a} :: Property)++-- | The property data type.+property_dataType :: Lens.Lens' Property PropertyDataType+property_dataType = Lens.lens (\Property' {dataType} -> dataType) (\s@Property' {} a -> s {dataType = a} :: Property)++instance Data.FromJSON Property where+  parseJSON =+    Data.withObject+      "Property"+      ( \x ->+          Property'+            Prelude.<$> (x Data..:? "alias")+            Prelude.<*> (x Data..:? "notification")+            Prelude.<*> (x Data..:? "type")+            Prelude.<*> (x Data..:? "unit")+            Prelude.<*> (x Data..: "id")+            Prelude.<*> (x Data..: "name")+            Prelude.<*> (x Data..: "dataType")+      )++instance Prelude.Hashable Property where+  hashWithSalt _salt Property' {..} =+    _salt+      `Prelude.hashWithSalt` alias+      `Prelude.hashWithSalt` notification+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` unit+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` dataType++instance Prelude.NFData Property where+  rnf Property' {..} =+    Prelude.rnf alias+      `Prelude.seq` Prelude.rnf notification+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf unit+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf dataType
+ gen/Amazonka/IoTSiteWise/Types/PropertyDataType.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.PropertyDataType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.PropertyDataType+  ( PropertyDataType+      ( ..,+        PropertyDataType_BOOLEAN,+        PropertyDataType_DOUBLE,+        PropertyDataType_INTEGER,+        PropertyDataType_STRING,+        PropertyDataType_STRUCT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype PropertyDataType = PropertyDataType'+  { fromPropertyDataType ::+      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 PropertyDataType_BOOLEAN :: PropertyDataType+pattern PropertyDataType_BOOLEAN = PropertyDataType' "BOOLEAN"++pattern PropertyDataType_DOUBLE :: PropertyDataType+pattern PropertyDataType_DOUBLE = PropertyDataType' "DOUBLE"++pattern PropertyDataType_INTEGER :: PropertyDataType+pattern PropertyDataType_INTEGER = PropertyDataType' "INTEGER"++pattern PropertyDataType_STRING :: PropertyDataType+pattern PropertyDataType_STRING = PropertyDataType' "STRING"++pattern PropertyDataType_STRUCT :: PropertyDataType+pattern PropertyDataType_STRUCT = PropertyDataType' "STRUCT"++{-# COMPLETE+  PropertyDataType_BOOLEAN,+  PropertyDataType_DOUBLE,+  PropertyDataType_INTEGER,+  PropertyDataType_STRING,+  PropertyDataType_STRUCT,+  PropertyDataType'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/PropertyNotification.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.PropertyNotification+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.PropertyNotification where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.PropertyNotificationState+import qualified Amazonka.Prelude as Prelude++-- | Contains asset property value notification information. When the+-- notification state is enabled, IoT SiteWise publishes property value+-- updates to a unique MQTT topic. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/interact-with-other-services.html Interacting with other services>+-- in the /IoT SiteWise User Guide/.+--+-- /See:/ 'newPropertyNotification' smart constructor.+data PropertyNotification = PropertyNotification'+  { -- | The MQTT topic to which IoT SiteWise publishes property value update+    -- notifications.+    topic :: Prelude.Text,+    -- | The current notification state.+    state :: PropertyNotificationState+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PropertyNotification' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'topic', 'propertyNotification_topic' - The MQTT topic to which IoT SiteWise publishes property value update+-- notifications.+--+-- 'state', 'propertyNotification_state' - The current notification state.+newPropertyNotification ::+  -- | 'topic'+  Prelude.Text ->+  -- | 'state'+  PropertyNotificationState ->+  PropertyNotification+newPropertyNotification pTopic_ pState_ =+  PropertyNotification'+    { topic = pTopic_,+      state = pState_+    }++-- | The MQTT topic to which IoT SiteWise publishes property value update+-- notifications.+propertyNotification_topic :: Lens.Lens' PropertyNotification Prelude.Text+propertyNotification_topic = Lens.lens (\PropertyNotification' {topic} -> topic) (\s@PropertyNotification' {} a -> s {topic = a} :: PropertyNotification)++-- | The current notification state.+propertyNotification_state :: Lens.Lens' PropertyNotification PropertyNotificationState+propertyNotification_state = Lens.lens (\PropertyNotification' {state} -> state) (\s@PropertyNotification' {} a -> s {state = a} :: PropertyNotification)++instance Data.FromJSON PropertyNotification where+  parseJSON =+    Data.withObject+      "PropertyNotification"+      ( \x ->+          PropertyNotification'+            Prelude.<$> (x Data..: "topic")+            Prelude.<*> (x Data..: "state")+      )++instance Prelude.Hashable PropertyNotification where+  hashWithSalt _salt PropertyNotification' {..} =+    _salt+      `Prelude.hashWithSalt` topic+      `Prelude.hashWithSalt` state++instance Prelude.NFData PropertyNotification where+  rnf PropertyNotification' {..} =+    Prelude.rnf topic `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/IoTSiteWise/Types/PropertyNotificationState.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.IoTSiteWise.Types.PropertyNotificationState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.PropertyNotificationState+  ( PropertyNotificationState+      ( ..,+        PropertyNotificationState_DISABLED,+        PropertyNotificationState_ENABLED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype PropertyNotificationState = PropertyNotificationState'+  { fromPropertyNotificationState ::+      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 PropertyNotificationState_DISABLED :: PropertyNotificationState+pattern PropertyNotificationState_DISABLED = PropertyNotificationState' "DISABLED"++pattern PropertyNotificationState_ENABLED :: PropertyNotificationState+pattern PropertyNotificationState_ENABLED = PropertyNotificationState' "ENABLED"++{-# COMPLETE+  PropertyNotificationState_DISABLED,+  PropertyNotificationState_ENABLED,+  PropertyNotificationState'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/PropertyType.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.IoTSiteWise.Types.PropertyType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.PropertyType where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.Attribute+import Amazonka.IoTSiteWise.Types.Measurement+import Amazonka.IoTSiteWise.Types.Metric+import Amazonka.IoTSiteWise.Types.Transform+import qualified Amazonka.Prelude as Prelude++-- | Contains a property type, which can be one of @attribute@,+-- @measurement@, @metric@, or @transform@.+--+-- /See:/ 'newPropertyType' smart constructor.+data PropertyType = PropertyType'+  { -- | Specifies an asset attribute property. An attribute generally contains+    -- static information, such as the serial number of an+    -- <https://en.wikipedia.org/wiki/Internet_of_things#Industrial_applications IIoT>+    -- wind turbine.+    attribute :: Prelude.Maybe Attribute,+    -- | Specifies an asset measurement property. A measurement represents a+    -- device\'s raw sensor data stream, such as timestamped temperature values+    -- or timestamped power values.+    measurement :: Prelude.Maybe Measurement,+    -- | Specifies an asset metric property. A metric contains a mathematical+    -- expression that uses aggregate functions to process all input data+    -- points over a time interval and output a single data point, such as to+    -- calculate the average hourly temperature.+    metric :: Prelude.Maybe Metric,+    -- | Specifies an asset transform property. A transform contains a+    -- mathematical expression that maps a property\'s data points from one+    -- form to another, such as a unit conversion from Celsius to Fahrenheit.+    transform :: Prelude.Maybe Transform+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PropertyType' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'attribute', 'propertyType_attribute' - Specifies an asset attribute property. An attribute generally contains+-- static information, such as the serial number of an+-- <https://en.wikipedia.org/wiki/Internet_of_things#Industrial_applications IIoT>+-- wind turbine.+--+-- 'measurement', 'propertyType_measurement' - Specifies an asset measurement property. A measurement represents a+-- device\'s raw sensor data stream, such as timestamped temperature values+-- or timestamped power values.+--+-- 'metric', 'propertyType_metric' - Specifies an asset metric property. A metric contains a mathematical+-- expression that uses aggregate functions to process all input data+-- points over a time interval and output a single data point, such as to+-- calculate the average hourly temperature.+--+-- 'transform', 'propertyType_transform' - Specifies an asset transform property. A transform contains a+-- mathematical expression that maps a property\'s data points from one+-- form to another, such as a unit conversion from Celsius to Fahrenheit.+newPropertyType ::+  PropertyType+newPropertyType =+  PropertyType'+    { attribute = Prelude.Nothing,+      measurement = Prelude.Nothing,+      metric = Prelude.Nothing,+      transform = Prelude.Nothing+    }++-- | Specifies an asset attribute property. An attribute generally contains+-- static information, such as the serial number of an+-- <https://en.wikipedia.org/wiki/Internet_of_things#Industrial_applications IIoT>+-- wind turbine.+propertyType_attribute :: Lens.Lens' PropertyType (Prelude.Maybe Attribute)+propertyType_attribute = Lens.lens (\PropertyType' {attribute} -> attribute) (\s@PropertyType' {} a -> s {attribute = a} :: PropertyType)++-- | Specifies an asset measurement property. A measurement represents a+-- device\'s raw sensor data stream, such as timestamped temperature values+-- or timestamped power values.+propertyType_measurement :: Lens.Lens' PropertyType (Prelude.Maybe Measurement)+propertyType_measurement = Lens.lens (\PropertyType' {measurement} -> measurement) (\s@PropertyType' {} a -> s {measurement = a} :: PropertyType)++-- | Specifies an asset metric property. A metric contains a mathematical+-- expression that uses aggregate functions to process all input data+-- points over a time interval and output a single data point, such as to+-- calculate the average hourly temperature.+propertyType_metric :: Lens.Lens' PropertyType (Prelude.Maybe Metric)+propertyType_metric = Lens.lens (\PropertyType' {metric} -> metric) (\s@PropertyType' {} a -> s {metric = a} :: PropertyType)++-- | Specifies an asset transform property. A transform contains a+-- mathematical expression that maps a property\'s data points from one+-- form to another, such as a unit conversion from Celsius to Fahrenheit.+propertyType_transform :: Lens.Lens' PropertyType (Prelude.Maybe Transform)+propertyType_transform = Lens.lens (\PropertyType' {transform} -> transform) (\s@PropertyType' {} a -> s {transform = a} :: PropertyType)++instance Data.FromJSON PropertyType where+  parseJSON =+    Data.withObject+      "PropertyType"+      ( \x ->+          PropertyType'+            Prelude.<$> (x Data..:? "attribute")+            Prelude.<*> (x Data..:? "measurement")+            Prelude.<*> (x Data..:? "metric")+            Prelude.<*> (x Data..:? "transform")+      )++instance Prelude.Hashable PropertyType where+  hashWithSalt _salt PropertyType' {..} =+    _salt+      `Prelude.hashWithSalt` attribute+      `Prelude.hashWithSalt` measurement+      `Prelude.hashWithSalt` metric+      `Prelude.hashWithSalt` transform++instance Prelude.NFData PropertyType where+  rnf PropertyType' {..} =+    Prelude.rnf attribute+      `Prelude.seq` Prelude.rnf measurement+      `Prelude.seq` Prelude.rnf metric+      `Prelude.seq` Prelude.rnf transform++instance Data.ToJSON PropertyType where+  toJSON PropertyType' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("attribute" Data..=) Prelude.<$> attribute,+            ("measurement" Data..=) Prelude.<$> measurement,+            ("metric" Data..=) Prelude.<$> metric,+            ("transform" Data..=) Prelude.<$> transform+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/PutAssetPropertyValueEntry.hs view
@@ -0,0 +1,148 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.PutAssetPropertyValueEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.PutAssetPropertyValueEntry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.AssetPropertyValue+import qualified Amazonka.Prelude as Prelude++-- | Contains a list of value updates for an asset property in the list of+-- asset entries consumed by the+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html BatchPutAssetPropertyValue>+-- API operation.+--+-- /See:/ 'newPutAssetPropertyValueEntry' smart constructor.+data PutAssetPropertyValueEntry = PutAssetPropertyValueEntry'+  { -- | The ID of the asset to update.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    propertyAlias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property for this entry.+    propertyId :: Prelude.Maybe Prelude.Text,+    -- | The user specified ID for the entry. You can use this ID to identify+    -- which entries failed.+    entryId :: Prelude.Text,+    -- | The list of property values to upload. You can specify up to 10+    -- @propertyValues@ array elements.+    propertyValues :: [AssetPropertyValue]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutAssetPropertyValueEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetId', 'putAssetPropertyValueEntry_assetId' - The ID of the asset to update.+--+-- 'propertyAlias', 'putAssetPropertyValueEntry_propertyAlias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- 'propertyId', 'putAssetPropertyValueEntry_propertyId' - The ID of the asset property for this entry.+--+-- 'entryId', 'putAssetPropertyValueEntry_entryId' - The user specified ID for the entry. You can use this ID to identify+-- which entries failed.+--+-- 'propertyValues', 'putAssetPropertyValueEntry_propertyValues' - The list of property values to upload. You can specify up to 10+-- @propertyValues@ array elements.+newPutAssetPropertyValueEntry ::+  -- | 'entryId'+  Prelude.Text ->+  PutAssetPropertyValueEntry+newPutAssetPropertyValueEntry pEntryId_ =+  PutAssetPropertyValueEntry'+    { assetId =+        Prelude.Nothing,+      propertyAlias = Prelude.Nothing,+      propertyId = Prelude.Nothing,+      entryId = pEntryId_,+      propertyValues = Prelude.mempty+    }++-- | The ID of the asset to update.+putAssetPropertyValueEntry_assetId :: Lens.Lens' PutAssetPropertyValueEntry (Prelude.Maybe Prelude.Text)+putAssetPropertyValueEntry_assetId = Lens.lens (\PutAssetPropertyValueEntry' {assetId} -> assetId) (\s@PutAssetPropertyValueEntry' {} a -> s {assetId = a} :: PutAssetPropertyValueEntry)++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+putAssetPropertyValueEntry_propertyAlias :: Lens.Lens' PutAssetPropertyValueEntry (Prelude.Maybe Prelude.Text)+putAssetPropertyValueEntry_propertyAlias = Lens.lens (\PutAssetPropertyValueEntry' {propertyAlias} -> propertyAlias) (\s@PutAssetPropertyValueEntry' {} a -> s {propertyAlias = a} :: PutAssetPropertyValueEntry)++-- | The ID of the asset property for this entry.+putAssetPropertyValueEntry_propertyId :: Lens.Lens' PutAssetPropertyValueEntry (Prelude.Maybe Prelude.Text)+putAssetPropertyValueEntry_propertyId = Lens.lens (\PutAssetPropertyValueEntry' {propertyId} -> propertyId) (\s@PutAssetPropertyValueEntry' {} a -> s {propertyId = a} :: PutAssetPropertyValueEntry)++-- | The user specified ID for the entry. You can use this ID to identify+-- which entries failed.+putAssetPropertyValueEntry_entryId :: Lens.Lens' PutAssetPropertyValueEntry Prelude.Text+putAssetPropertyValueEntry_entryId = Lens.lens (\PutAssetPropertyValueEntry' {entryId} -> entryId) (\s@PutAssetPropertyValueEntry' {} a -> s {entryId = a} :: PutAssetPropertyValueEntry)++-- | The list of property values to upload. You can specify up to 10+-- @propertyValues@ array elements.+putAssetPropertyValueEntry_propertyValues :: Lens.Lens' PutAssetPropertyValueEntry [AssetPropertyValue]+putAssetPropertyValueEntry_propertyValues = Lens.lens (\PutAssetPropertyValueEntry' {propertyValues} -> propertyValues) (\s@PutAssetPropertyValueEntry' {} a -> s {propertyValues = a} :: PutAssetPropertyValueEntry) Prelude.. Lens.coerced++instance Prelude.Hashable PutAssetPropertyValueEntry where+  hashWithSalt _salt PutAssetPropertyValueEntry' {..} =+    _salt+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` propertyAlias+      `Prelude.hashWithSalt` propertyId+      `Prelude.hashWithSalt` entryId+      `Prelude.hashWithSalt` propertyValues++instance Prelude.NFData PutAssetPropertyValueEntry where+  rnf PutAssetPropertyValueEntry' {..} =+    Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf propertyAlias+      `Prelude.seq` Prelude.rnf propertyId+      `Prelude.seq` Prelude.rnf entryId+      `Prelude.seq` Prelude.rnf propertyValues++instance Data.ToJSON PutAssetPropertyValueEntry where+  toJSON PutAssetPropertyValueEntry' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("assetId" Data..=) Prelude.<$> assetId,+            ("propertyAlias" Data..=) Prelude.<$> propertyAlias,+            ("propertyId" Data..=) Prelude.<$> propertyId,+            Prelude.Just ("entryId" Data..= entryId),+            Prelude.Just+              ("propertyValues" Data..= propertyValues)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/Quality.hs view
@@ -0,0 +1,73 @@+{-# 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.IoTSiteWise.Types.Quality+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Quality+  ( Quality+      ( ..,+        Quality_BAD,+        Quality_GOOD,+        Quality_UNCERTAIN+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype Quality = Quality' {fromQuality :: 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 Quality_BAD :: Quality+pattern Quality_BAD = Quality' "BAD"++pattern Quality_GOOD :: Quality+pattern Quality_GOOD = Quality' "GOOD"++pattern Quality_UNCERTAIN :: Quality+pattern Quality_UNCERTAIN = Quality' "UNCERTAIN"++{-# COMPLETE+  Quality_BAD,+  Quality_GOOD,+  Quality_UNCERTAIN,+  Quality'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/Resource.hs view
@@ -0,0 +1,95 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.Resource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Resource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.PortalResource+import Amazonka.IoTSiteWise.Types.ProjectResource+import qualified Amazonka.Prelude as Prelude++-- | Contains an IoT SiteWise Monitor resource ID for a portal or project.+--+-- /See:/ 'newResource' smart constructor.+data Resource = Resource'+  { -- | A portal resource.+    portal :: Prelude.Maybe PortalResource,+    -- | A project resource.+    project :: Prelude.Maybe ProjectResource+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Resource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'portal', 'resource_portal' - A portal resource.+--+-- 'project', 'resource_project' - A project resource.+newResource ::+  Resource+newResource =+  Resource'+    { portal = Prelude.Nothing,+      project = Prelude.Nothing+    }++-- | A portal resource.+resource_portal :: Lens.Lens' Resource (Prelude.Maybe PortalResource)+resource_portal = Lens.lens (\Resource' {portal} -> portal) (\s@Resource' {} a -> s {portal = a} :: Resource)++-- | A project resource.+resource_project :: Lens.Lens' Resource (Prelude.Maybe ProjectResource)+resource_project = Lens.lens (\Resource' {project} -> project) (\s@Resource' {} a -> s {project = a} :: Resource)++instance Data.FromJSON Resource where+  parseJSON =+    Data.withObject+      "Resource"+      ( \x ->+          Resource'+            Prelude.<$> (x Data..:? "portal")+            Prelude.<*> (x Data..:? "project")+      )++instance Prelude.Hashable Resource where+  hashWithSalt _salt Resource' {..} =+    _salt+      `Prelude.hashWithSalt` portal+      `Prelude.hashWithSalt` project++instance Prelude.NFData Resource where+  rnf Resource' {..} =+    Prelude.rnf portal+      `Prelude.seq` Prelude.rnf project++instance Data.ToJSON Resource where+  toJSON Resource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("portal" Data..=) Prelude.<$> portal,+            ("project" Data..=) Prelude.<$> project+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/ResourceType.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.ResourceType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.ResourceType+  ( ResourceType+      ( ..,+        ResourceType_PORTAL,+        ResourceType_PROJECT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ResourceType = ResourceType'+  { fromResourceType ::+      Data.Text+  }+  deriving stock+    ( Prelude.Show,+      Prelude.Read,+      Prelude.Eq,+      Prelude.Ord,+      Prelude.Generic+    )+  deriving newtype+    ( Prelude.Hashable,+      Prelude.NFData,+      Data.FromText,+      Data.ToText,+      Data.ToByteString,+      Data.ToLog,+      Data.ToHeader,+      Data.ToQuery,+      Data.FromJSON,+      Data.FromJSONKey,+      Data.ToJSON,+      Data.ToJSONKey,+      Data.FromXML,+      Data.ToXML+    )++pattern ResourceType_PORTAL :: ResourceType+pattern ResourceType_PORTAL = ResourceType' "PORTAL"++pattern ResourceType_PROJECT :: ResourceType+pattern ResourceType_PROJECT = ResourceType' "PROJECT"++{-# COMPLETE+  ResourceType_PORTAL,+  ResourceType_PROJECT,+  ResourceType'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/RetentionPeriod.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.IoTSiteWise.Types.RetentionPeriod+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.RetentionPeriod 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++-- | How many days your data is kept in the hot tier. By default, your data+-- is kept indefinitely in the hot tier.+--+-- /See:/ 'newRetentionPeriod' smart constructor.+data RetentionPeriod = RetentionPeriod'+  { -- | The number of days that your data is kept.+    --+    -- If you specified a value for this parameter, the @unlimited@ parameter+    -- must be @false@.+    numberOfDays :: Prelude.Maybe Prelude.Natural,+    -- | If true, your data is kept indefinitely.+    --+    -- If configured to @true@, you must not specify a value for the+    -- @numberOfDays@ parameter.+    unlimited :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RetentionPeriod' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'numberOfDays', 'retentionPeriod_numberOfDays' - The number of days that your data is kept.+--+-- If you specified a value for this parameter, the @unlimited@ parameter+-- must be @false@.+--+-- 'unlimited', 'retentionPeriod_unlimited' - If true, your data is kept indefinitely.+--+-- If configured to @true@, you must not specify a value for the+-- @numberOfDays@ parameter.+newRetentionPeriod ::+  RetentionPeriod+newRetentionPeriod =+  RetentionPeriod'+    { numberOfDays = Prelude.Nothing,+      unlimited = Prelude.Nothing+    }++-- | The number of days that your data is kept.+--+-- If you specified a value for this parameter, the @unlimited@ parameter+-- must be @false@.+retentionPeriod_numberOfDays :: Lens.Lens' RetentionPeriod (Prelude.Maybe Prelude.Natural)+retentionPeriod_numberOfDays = Lens.lens (\RetentionPeriod' {numberOfDays} -> numberOfDays) (\s@RetentionPeriod' {} a -> s {numberOfDays = a} :: RetentionPeriod)++-- | If true, your data is kept indefinitely.+--+-- If configured to @true@, you must not specify a value for the+-- @numberOfDays@ parameter.+retentionPeriod_unlimited :: Lens.Lens' RetentionPeriod (Prelude.Maybe Prelude.Bool)+retentionPeriod_unlimited = Lens.lens (\RetentionPeriod' {unlimited} -> unlimited) (\s@RetentionPeriod' {} a -> s {unlimited = a} :: RetentionPeriod)++instance Data.FromJSON RetentionPeriod where+  parseJSON =+    Data.withObject+      "RetentionPeriod"+      ( \x ->+          RetentionPeriod'+            Prelude.<$> (x Data..:? "numberOfDays")+            Prelude.<*> (x Data..:? "unlimited")+      )++instance Prelude.Hashable RetentionPeriod where+  hashWithSalt _salt RetentionPeriod' {..} =+    _salt+      `Prelude.hashWithSalt` numberOfDays+      `Prelude.hashWithSalt` unlimited++instance Prelude.NFData RetentionPeriod where+  rnf RetentionPeriod' {..} =+    Prelude.rnf numberOfDays+      `Prelude.seq` Prelude.rnf unlimited++instance Data.ToJSON RetentionPeriod where+  toJSON RetentionPeriod' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("numberOfDays" Data..=) Prelude.<$> numberOfDays,+            ("unlimited" Data..=) Prelude.<$> unlimited+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/StorageType.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.IoTSiteWise.Types.StorageType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.StorageType+  ( StorageType+      ( ..,+        StorageType_MULTI_LAYER_STORAGE,+        StorageType_SITEWISE_DEFAULT_STORAGE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype StorageType = StorageType'+  { fromStorageType ::+      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 StorageType_MULTI_LAYER_STORAGE :: StorageType+pattern StorageType_MULTI_LAYER_STORAGE = StorageType' "MULTI_LAYER_STORAGE"++pattern StorageType_SITEWISE_DEFAULT_STORAGE :: StorageType+pattern StorageType_SITEWISE_DEFAULT_STORAGE = StorageType' "SITEWISE_DEFAULT_STORAGE"++{-# COMPLETE+  StorageType_MULTI_LAYER_STORAGE,+  StorageType_SITEWISE_DEFAULT_STORAGE,+  StorageType'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/TimeInNanos.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.TimeInNanos+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.TimeInNanos 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 timestamp with optional nanosecond granularity.+--+-- /See:/ 'newTimeInNanos' smart constructor.+data TimeInNanos = TimeInNanos'+  { -- | The nanosecond offset from @timeInSeconds@.+    offsetInNanos :: Prelude.Maybe Prelude.Natural,+    -- | The timestamp date, in seconds, in the Unix epoch format. Fractional+    -- nanosecond data is provided by @offsetInNanos@.+    timeInSeconds :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TimeInNanos' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'offsetInNanos', 'timeInNanos_offsetInNanos' - The nanosecond offset from @timeInSeconds@.+--+-- 'timeInSeconds', 'timeInNanos_timeInSeconds' - The timestamp date, in seconds, in the Unix epoch format. Fractional+-- nanosecond data is provided by @offsetInNanos@.+newTimeInNanos ::+  -- | 'timeInSeconds'+  Prelude.Natural ->+  TimeInNanos+newTimeInNanos pTimeInSeconds_ =+  TimeInNanos'+    { offsetInNanos = Prelude.Nothing,+      timeInSeconds = pTimeInSeconds_+    }++-- | The nanosecond offset from @timeInSeconds@.+timeInNanos_offsetInNanos :: Lens.Lens' TimeInNanos (Prelude.Maybe Prelude.Natural)+timeInNanos_offsetInNanos = Lens.lens (\TimeInNanos' {offsetInNanos} -> offsetInNanos) (\s@TimeInNanos' {} a -> s {offsetInNanos = a} :: TimeInNanos)++-- | The timestamp date, in seconds, in the Unix epoch format. Fractional+-- nanosecond data is provided by @offsetInNanos@.+timeInNanos_timeInSeconds :: Lens.Lens' TimeInNanos Prelude.Natural+timeInNanos_timeInSeconds = Lens.lens (\TimeInNanos' {timeInSeconds} -> timeInSeconds) (\s@TimeInNanos' {} a -> s {timeInSeconds = a} :: TimeInNanos)++instance Data.FromJSON TimeInNanos where+  parseJSON =+    Data.withObject+      "TimeInNanos"+      ( \x ->+          TimeInNanos'+            Prelude.<$> (x Data..:? "offsetInNanos")+            Prelude.<*> (x Data..: "timeInSeconds")+      )++instance Prelude.Hashable TimeInNanos where+  hashWithSalt _salt TimeInNanos' {..} =+    _salt+      `Prelude.hashWithSalt` offsetInNanos+      `Prelude.hashWithSalt` timeInSeconds++instance Prelude.NFData TimeInNanos where+  rnf TimeInNanos' {..} =+    Prelude.rnf offsetInNanos+      `Prelude.seq` Prelude.rnf timeInSeconds++instance Data.ToJSON TimeInNanos where+  toJSON TimeInNanos' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("offsetInNanos" Data..=) Prelude.<$> offsetInNanos,+            Prelude.Just+              ("timeInSeconds" Data..= timeInSeconds)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/TimeOrdering.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.IoTSiteWise.Types.TimeOrdering+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.TimeOrdering+  ( TimeOrdering+      ( ..,+        TimeOrdering_ASCENDING,+        TimeOrdering_DESCENDING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TimeOrdering = TimeOrdering'+  { fromTimeOrdering ::+      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 TimeOrdering_ASCENDING :: TimeOrdering+pattern TimeOrdering_ASCENDING = TimeOrdering' "ASCENDING"++pattern TimeOrdering_DESCENDING :: TimeOrdering+pattern TimeOrdering_DESCENDING = TimeOrdering' "DESCENDING"++{-# COMPLETE+  TimeOrdering_ASCENDING,+  TimeOrdering_DESCENDING,+  TimeOrdering'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/TimeSeriesSummary.hs view
@@ -0,0 +1,198 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.TimeSeriesSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.TimeSeriesSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.PropertyDataType+import qualified Amazonka.Prelude as Prelude++-- | Contains a summary of a time series (data stream).+--+-- /See:/ 'newTimeSeriesSummary' smart constructor.+data TimeSeriesSummary = TimeSeriesSummary'+  { -- | The alias that identifies the time series.+    alias :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset in which the asset property was created.+    assetId :: Prelude.Maybe Prelude.Text,+    -- | The data type of the structure for this time series. This parameter is+    -- required for time series that have the @STRUCT@ data type.+    --+    -- The options for this parameter depend on the type of the composite model+    -- in which you created the asset property that is associated with your+    -- time series. Use @AWS\/ALARM_STATE@ for alarm state in alarm composite+    -- models.+    dataTypeSpec :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset property.+    propertyId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the time series.+    timeSeriesId :: Prelude.Text,+    -- | The data type of the time series.+    --+    -- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to+    -- identify the type of the structure for this time series.+    dataType :: PropertyDataType,+    -- | The date that the time series was created, in Unix epoch time.+    timeSeriesCreationDate :: Data.POSIX,+    -- | The date that the time series was last updated, in Unix epoch time.+    timeSeriesLastUpdateDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TimeSeriesSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'alias', 'timeSeriesSummary_alias' - The alias that identifies the time series.+--+-- 'assetId', 'timeSeriesSummary_assetId' - The ID of the asset in which the asset property was created.+--+-- 'dataTypeSpec', 'timeSeriesSummary_dataTypeSpec' - The data type of the structure for this time series. This parameter is+-- required for time series that have the @STRUCT@ data type.+--+-- The options for this parameter depend on the type of the composite model+-- in which you created the asset property that is associated with your+-- time series. Use @AWS\/ALARM_STATE@ for alarm state in alarm composite+-- models.+--+-- 'propertyId', 'timeSeriesSummary_propertyId' - The ID of the asset property.+--+-- 'timeSeriesId', 'timeSeriesSummary_timeSeriesId' - The ID of the time series.+--+-- 'dataType', 'timeSeriesSummary_dataType' - The data type of the time series.+--+-- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to+-- identify the type of the structure for this time series.+--+-- 'timeSeriesCreationDate', 'timeSeriesSummary_timeSeriesCreationDate' - The date that the time series was created, in Unix epoch time.+--+-- 'timeSeriesLastUpdateDate', 'timeSeriesSummary_timeSeriesLastUpdateDate' - The date that the time series was last updated, in Unix epoch time.+newTimeSeriesSummary ::+  -- | 'timeSeriesId'+  Prelude.Text ->+  -- | 'dataType'+  PropertyDataType ->+  -- | 'timeSeriesCreationDate'+  Prelude.UTCTime ->+  -- | 'timeSeriesLastUpdateDate'+  Prelude.UTCTime ->+  TimeSeriesSummary+newTimeSeriesSummary+  pTimeSeriesId_+  pDataType_+  pTimeSeriesCreationDate_+  pTimeSeriesLastUpdateDate_ =+    TimeSeriesSummary'+      { alias = Prelude.Nothing,+        assetId = Prelude.Nothing,+        dataTypeSpec = Prelude.Nothing,+        propertyId = Prelude.Nothing,+        timeSeriesId = pTimeSeriesId_,+        dataType = pDataType_,+        timeSeriesCreationDate =+          Data._Time Lens.# pTimeSeriesCreationDate_,+        timeSeriesLastUpdateDate =+          Data._Time Lens.# pTimeSeriesLastUpdateDate_+      }++-- | The alias that identifies the time series.+timeSeriesSummary_alias :: Lens.Lens' TimeSeriesSummary (Prelude.Maybe Prelude.Text)+timeSeriesSummary_alias = Lens.lens (\TimeSeriesSummary' {alias} -> alias) (\s@TimeSeriesSummary' {} a -> s {alias = a} :: TimeSeriesSummary)++-- | The ID of the asset in which the asset property was created.+timeSeriesSummary_assetId :: Lens.Lens' TimeSeriesSummary (Prelude.Maybe Prelude.Text)+timeSeriesSummary_assetId = Lens.lens (\TimeSeriesSummary' {assetId} -> assetId) (\s@TimeSeriesSummary' {} a -> s {assetId = a} :: TimeSeriesSummary)++-- | The data type of the structure for this time series. This parameter is+-- required for time series that have the @STRUCT@ data type.+--+-- The options for this parameter depend on the type of the composite model+-- in which you created the asset property that is associated with your+-- time series. Use @AWS\/ALARM_STATE@ for alarm state in alarm composite+-- models.+timeSeriesSummary_dataTypeSpec :: Lens.Lens' TimeSeriesSummary (Prelude.Maybe Prelude.Text)+timeSeriesSummary_dataTypeSpec = Lens.lens (\TimeSeriesSummary' {dataTypeSpec} -> dataTypeSpec) (\s@TimeSeriesSummary' {} a -> s {dataTypeSpec = a} :: TimeSeriesSummary)++-- | The ID of the asset property.+timeSeriesSummary_propertyId :: Lens.Lens' TimeSeriesSummary (Prelude.Maybe Prelude.Text)+timeSeriesSummary_propertyId = Lens.lens (\TimeSeriesSummary' {propertyId} -> propertyId) (\s@TimeSeriesSummary' {} a -> s {propertyId = a} :: TimeSeriesSummary)++-- | The ID of the time series.+timeSeriesSummary_timeSeriesId :: Lens.Lens' TimeSeriesSummary Prelude.Text+timeSeriesSummary_timeSeriesId = Lens.lens (\TimeSeriesSummary' {timeSeriesId} -> timeSeriesId) (\s@TimeSeriesSummary' {} a -> s {timeSeriesId = a} :: TimeSeriesSummary)++-- | The data type of the time series.+--+-- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to+-- identify the type of the structure for this time series.+timeSeriesSummary_dataType :: Lens.Lens' TimeSeriesSummary PropertyDataType+timeSeriesSummary_dataType = Lens.lens (\TimeSeriesSummary' {dataType} -> dataType) (\s@TimeSeriesSummary' {} a -> s {dataType = a} :: TimeSeriesSummary)++-- | The date that the time series was created, in Unix epoch time.+timeSeriesSummary_timeSeriesCreationDate :: Lens.Lens' TimeSeriesSummary Prelude.UTCTime+timeSeriesSummary_timeSeriesCreationDate = Lens.lens (\TimeSeriesSummary' {timeSeriesCreationDate} -> timeSeriesCreationDate) (\s@TimeSeriesSummary' {} a -> s {timeSeriesCreationDate = a} :: TimeSeriesSummary) Prelude.. Data._Time++-- | The date that the time series was last updated, in Unix epoch time.+timeSeriesSummary_timeSeriesLastUpdateDate :: Lens.Lens' TimeSeriesSummary Prelude.UTCTime+timeSeriesSummary_timeSeriesLastUpdateDate = Lens.lens (\TimeSeriesSummary' {timeSeriesLastUpdateDate} -> timeSeriesLastUpdateDate) (\s@TimeSeriesSummary' {} a -> s {timeSeriesLastUpdateDate = a} :: TimeSeriesSummary) Prelude.. Data._Time++instance Data.FromJSON TimeSeriesSummary where+  parseJSON =+    Data.withObject+      "TimeSeriesSummary"+      ( \x ->+          TimeSeriesSummary'+            Prelude.<$> (x Data..:? "alias")+            Prelude.<*> (x Data..:? "assetId")+            Prelude.<*> (x Data..:? "dataTypeSpec")+            Prelude.<*> (x Data..:? "propertyId")+            Prelude.<*> (x Data..: "timeSeriesId")+            Prelude.<*> (x Data..: "dataType")+            Prelude.<*> (x Data..: "timeSeriesCreationDate")+            Prelude.<*> (x Data..: "timeSeriesLastUpdateDate")+      )++instance Prelude.Hashable TimeSeriesSummary where+  hashWithSalt _salt TimeSeriesSummary' {..} =+    _salt+      `Prelude.hashWithSalt` alias+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` dataTypeSpec+      `Prelude.hashWithSalt` propertyId+      `Prelude.hashWithSalt` timeSeriesId+      `Prelude.hashWithSalt` dataType+      `Prelude.hashWithSalt` timeSeriesCreationDate+      `Prelude.hashWithSalt` timeSeriesLastUpdateDate++instance Prelude.NFData TimeSeriesSummary where+  rnf TimeSeriesSummary' {..} =+    Prelude.rnf alias+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf dataTypeSpec+      `Prelude.seq` Prelude.rnf propertyId+      `Prelude.seq` Prelude.rnf timeSeriesId+      `Prelude.seq` Prelude.rnf dataType+      `Prelude.seq` Prelude.rnf timeSeriesCreationDate+      `Prelude.seq` Prelude.rnf timeSeriesLastUpdateDate
+ gen/Amazonka/IoTSiteWise/Types/Transform.hs view
@@ -0,0 +1,147 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.Transform+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Transform where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.ExpressionVariable+import Amazonka.IoTSiteWise.Types.TransformProcessingConfig+import qualified Amazonka.Prelude as Prelude++-- | Contains an asset transform property. A transform is a one-to-one+-- mapping of a property\'s data points from one form to another. For+-- example, you can use a transform to convert a Celsius data stream to+-- Fahrenheit by applying the transformation expression to each data point+-- of the Celsius stream. A transform can only have a data type of @DOUBLE@+-- and consume properties with data types of @INTEGER@ or @DOUBLE@.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html#transforms Transforms>+-- in the /IoT SiteWise User Guide/.+--+-- /See:/ 'newTransform' smart constructor.+data Transform = Transform'+  { -- | The processing configuration for the given transform property. You can+    -- configure transforms to be kept at the edge or forwarded to the Amazon+    -- Web Services Cloud. You can also configure transforms to be computed at+    -- the edge or in the cloud.+    processingConfig :: Prelude.Maybe TransformProcessingConfig,+    -- | The mathematical expression that defines the transformation function.+    -- You can specify up to 10 variables per expression. You can specify up to+    -- 10 functions per expression.+    --+    -- For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+    -- in the /IoT SiteWise User Guide/.+    expression :: Prelude.Text,+    -- | The list of variables used in the expression.+    variables :: [ExpressionVariable]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Transform' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'processingConfig', 'transform_processingConfig' - The processing configuration for the given transform property. You can+-- configure transforms to be kept at the edge or forwarded to the Amazon+-- Web Services Cloud. You can also configure transforms to be computed at+-- the edge or in the cloud.+--+-- 'expression', 'transform_expression' - The mathematical expression that defines the transformation function.+-- You can specify up to 10 variables per expression. You can specify up to+-- 10 functions per expression.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+--+-- 'variables', 'transform_variables' - The list of variables used in the expression.+newTransform ::+  -- | 'expression'+  Prelude.Text ->+  Transform+newTransform pExpression_ =+  Transform'+    { processingConfig = Prelude.Nothing,+      expression = pExpression_,+      variables = Prelude.mempty+    }++-- | The processing configuration for the given transform property. You can+-- configure transforms to be kept at the edge or forwarded to the Amazon+-- Web Services Cloud. You can also configure transforms to be computed at+-- the edge or in the cloud.+transform_processingConfig :: Lens.Lens' Transform (Prelude.Maybe TransformProcessingConfig)+transform_processingConfig = Lens.lens (\Transform' {processingConfig} -> processingConfig) (\s@Transform' {} a -> s {processingConfig = a} :: Transform)++-- | The mathematical expression that defines the transformation function.+-- You can specify up to 10 variables per expression. You can specify up to+-- 10 functions per expression.+--+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+transform_expression :: Lens.Lens' Transform Prelude.Text+transform_expression = Lens.lens (\Transform' {expression} -> expression) (\s@Transform' {} a -> s {expression = a} :: Transform)++-- | The list of variables used in the expression.+transform_variables :: Lens.Lens' Transform [ExpressionVariable]+transform_variables = Lens.lens (\Transform' {variables} -> variables) (\s@Transform' {} a -> s {variables = a} :: Transform) Prelude.. Lens.coerced++instance Data.FromJSON Transform where+  parseJSON =+    Data.withObject+      "Transform"+      ( \x ->+          Transform'+            Prelude.<$> (x Data..:? "processingConfig")+            Prelude.<*> (x Data..: "expression")+            Prelude.<*> (x Data..:? "variables" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Transform where+  hashWithSalt _salt Transform' {..} =+    _salt+      `Prelude.hashWithSalt` processingConfig+      `Prelude.hashWithSalt` expression+      `Prelude.hashWithSalt` variables++instance Prelude.NFData Transform where+  rnf Transform' {..} =+    Prelude.rnf processingConfig+      `Prelude.seq` Prelude.rnf expression+      `Prelude.seq` Prelude.rnf variables++instance Data.ToJSON Transform where+  toJSON Transform' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("processingConfig" Data..=)+              Prelude.<$> processingConfig,+            Prelude.Just ("expression" Data..= expression),+            Prelude.Just ("variables" Data..= variables)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/TransformProcessingConfig.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.IoTSiteWise.Types.TransformProcessingConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.TransformProcessingConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types.ComputeLocation+import Amazonka.IoTSiteWise.Types.ForwardingConfig+import qualified Amazonka.Prelude as Prelude++-- | The processing configuration for the given transform property. You can+-- configure transforms to be kept at the edge or forwarded to the Amazon+-- Web Services Cloud. You can also configure transforms to be computed at+-- the edge or in the cloud.+--+-- /See:/ 'newTransformProcessingConfig' smart constructor.+data TransformProcessingConfig = TransformProcessingConfig'+  { forwardingConfig :: Prelude.Maybe ForwardingConfig,+    -- | The compute location for the given transform property.+    computeLocation :: ComputeLocation+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TransformProcessingConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'forwardingConfig', 'transformProcessingConfig_forwardingConfig' - Undocumented member.+--+-- 'computeLocation', 'transformProcessingConfig_computeLocation' - The compute location for the given transform property.+newTransformProcessingConfig ::+  -- | 'computeLocation'+  ComputeLocation ->+  TransformProcessingConfig+newTransformProcessingConfig pComputeLocation_ =+  TransformProcessingConfig'+    { forwardingConfig =+        Prelude.Nothing,+      computeLocation = pComputeLocation_+    }++-- | Undocumented member.+transformProcessingConfig_forwardingConfig :: Lens.Lens' TransformProcessingConfig (Prelude.Maybe ForwardingConfig)+transformProcessingConfig_forwardingConfig = Lens.lens (\TransformProcessingConfig' {forwardingConfig} -> forwardingConfig) (\s@TransformProcessingConfig' {} a -> s {forwardingConfig = a} :: TransformProcessingConfig)++-- | The compute location for the given transform property.+transformProcessingConfig_computeLocation :: Lens.Lens' TransformProcessingConfig ComputeLocation+transformProcessingConfig_computeLocation = Lens.lens (\TransformProcessingConfig' {computeLocation} -> computeLocation) (\s@TransformProcessingConfig' {} a -> s {computeLocation = a} :: TransformProcessingConfig)++instance Data.FromJSON TransformProcessingConfig where+  parseJSON =+    Data.withObject+      "TransformProcessingConfig"+      ( \x ->+          TransformProcessingConfig'+            Prelude.<$> (x Data..:? "forwardingConfig")+            Prelude.<*> (x Data..: "computeLocation")+      )++instance Prelude.Hashable TransformProcessingConfig where+  hashWithSalt _salt TransformProcessingConfig' {..} =+    _salt+      `Prelude.hashWithSalt` forwardingConfig+      `Prelude.hashWithSalt` computeLocation++instance Prelude.NFData TransformProcessingConfig where+  rnf TransformProcessingConfig' {..} =+    Prelude.rnf forwardingConfig+      `Prelude.seq` Prelude.rnf computeLocation++instance Data.ToJSON TransformProcessingConfig where+  toJSON TransformProcessingConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("forwardingConfig" Data..=)+              Prelude.<$> forwardingConfig,+            Prelude.Just+              ("computeLocation" Data..= computeLocation)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/TraversalDirection.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.IoTSiteWise.Types.TraversalDirection+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.TraversalDirection+  ( TraversalDirection+      ( ..,+        TraversalDirection_CHILD,+        TraversalDirection_PARENT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TraversalDirection = TraversalDirection'+  { fromTraversalDirection ::+      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 TraversalDirection_CHILD :: TraversalDirection+pattern TraversalDirection_CHILD = TraversalDirection' "CHILD"++pattern TraversalDirection_PARENT :: TraversalDirection+pattern TraversalDirection_PARENT = TraversalDirection' "PARENT"++{-# COMPLETE+  TraversalDirection_CHILD,+  TraversalDirection_PARENT,+  TraversalDirection'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/TraversalType.hs view
@@ -0,0 +1,66 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.TraversalType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.TraversalType+  ( TraversalType+      ( ..,+        TraversalType_PATH_TO_ROOT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype TraversalType = TraversalType'+  { fromTraversalType ::+      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 TraversalType_PATH_TO_ROOT :: TraversalType+pattern TraversalType_PATH_TO_ROOT = TraversalType' "PATH_TO_ROOT"++{-# COMPLETE+  TraversalType_PATH_TO_ROOT,+  TraversalType'+  #-}
+ gen/Amazonka/IoTSiteWise/Types/TumblingWindow.hs view
@@ -0,0 +1,278 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.TumblingWindow+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.TumblingWindow 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 tumbling window, which is a repeating fixed-sized,+-- non-overlapping, and contiguous time window. You can use this window in+-- metrics to aggregate data from properties and other assets.+--+-- You can use @m@, @h@, @d@, and @w@ when you specify an interval or+-- offset. Note that @m@ represents minutes, @h@ represents hours, @d@+-- represents days, and @w@ represents weeks. You can also use @s@ to+-- represent seconds in @offset@.+--+-- The @interval@ and @offset@ parameters support the+-- <https://en.wikipedia.org/wiki/ISO_8601 ISO 8601 format>. For example,+-- @PT5S@ represents 5 seconds, @PT5M@ represents 5 minutes, and @PT5H@+-- represents 5 hours.+--+-- /See:/ 'newTumblingWindow' smart constructor.+data TumblingWindow = TumblingWindow'+  { -- | The offset for the tumbling window. The @offset@ parameter accepts the+    -- following:+    --+    -- -   The offset time.+    --+    --     For example, if you specify @18h@ for @offset@ and @1d@ for+    --     @interval@, IoT SiteWise aggregates data in one of the following+    --     ways:+    --+    --     -   If you create the metric before or at 6 PM (UTC), you get the+    --         first aggregation result at 6 PM (UTC) on the day when you+    --         create the metric.+    --+    --     -   If you create the metric after 6 PM (UTC), you get the first+    --         aggregation result at 6 PM (UTC) the next day.+    --+    -- -   The ISO 8601 format.+    --+    --     For example, if you specify @PT18H@ for @offset@ and @1d@ for+    --     @interval@, IoT SiteWise aggregates data in one of the following+    --     ways:+    --+    --     -   If you create the metric before or at 6 PM (UTC), you get the+    --         first aggregation result at 6 PM (UTC) on the day when you+    --         create the metric.+    --+    --     -   If you create the metric after 6 PM (UTC), you get the first+    --         aggregation result at 6 PM (UTC) the next day.+    --+    -- -   The 24-hour clock.+    --+    --     For example, if you specify @00:03:00@ for @offset@, @5m@ for+    --     @interval@, and you create the metric at 2 PM (UTC), you get the+    --     first aggregation result at 2:03 PM (UTC). You get the second+    --     aggregation result at 2:08 PM (UTC).+    --+    -- -   The offset time zone.+    --+    --     For example, if you specify @2021-07-23T18:00-08@ for @offset@ and+    --     @1d@ for @interval@, IoT SiteWise aggregates data in one of the+    --     following ways:+    --+    --     -   If you create the metric before or at 6 PM (PST), you get the+    --         first aggregation result at 6 PM (PST) on the day when you+    --         create the metric.+    --+    --     -   If you create the metric after 6 PM (PST), you get the first+    --         aggregation result at 6 PM (PST) the next day.+    offset :: Prelude.Maybe Prelude.Text,+    -- | The time interval for the tumbling window. The interval time must be+    -- between 1 minute and 1 week.+    --+    -- IoT SiteWise computes the @1w@ interval the end of Sunday at midnight+    -- each week (UTC), the @1d@ interval at the end of each day at midnight+    -- (UTC), the @1h@ interval at the end of each hour, and so on.+    --+    -- When IoT SiteWise aggregates data points for metric computations, the+    -- start of each interval is exclusive and the end of each interval is+    -- inclusive. IoT SiteWise places the computed data point at the end of the+    -- interval.+    interval :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TumblingWindow' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'tumblingWindow_offset' - The offset for the tumbling window. The @offset@ parameter accepts the+-- following:+--+-- -   The offset time.+--+--     For example, if you specify @18h@ for @offset@ and @1d@ for+--     @interval@, IoT SiteWise aggregates data in one of the following+--     ways:+--+--     -   If you create the metric before or at 6 PM (UTC), you get the+--         first aggregation result at 6 PM (UTC) on the day when you+--         create the metric.+--+--     -   If you create the metric after 6 PM (UTC), you get the first+--         aggregation result at 6 PM (UTC) the next day.+--+-- -   The ISO 8601 format.+--+--     For example, if you specify @PT18H@ for @offset@ and @1d@ for+--     @interval@, IoT SiteWise aggregates data in one of the following+--     ways:+--+--     -   If you create the metric before or at 6 PM (UTC), you get the+--         first aggregation result at 6 PM (UTC) on the day when you+--         create the metric.+--+--     -   If you create the metric after 6 PM (UTC), you get the first+--         aggregation result at 6 PM (UTC) the next day.+--+-- -   The 24-hour clock.+--+--     For example, if you specify @00:03:00@ for @offset@, @5m@ for+--     @interval@, and you create the metric at 2 PM (UTC), you get the+--     first aggregation result at 2:03 PM (UTC). You get the second+--     aggregation result at 2:08 PM (UTC).+--+-- -   The offset time zone.+--+--     For example, if you specify @2021-07-23T18:00-08@ for @offset@ and+--     @1d@ for @interval@, IoT SiteWise aggregates data in one of the+--     following ways:+--+--     -   If you create the metric before or at 6 PM (PST), you get the+--         first aggregation result at 6 PM (PST) on the day when you+--         create the metric.+--+--     -   If you create the metric after 6 PM (PST), you get the first+--         aggregation result at 6 PM (PST) the next day.+--+-- 'interval', 'tumblingWindow_interval' - The time interval for the tumbling window. The interval time must be+-- between 1 minute and 1 week.+--+-- IoT SiteWise computes the @1w@ interval the end of Sunday at midnight+-- each week (UTC), the @1d@ interval at the end of each day at midnight+-- (UTC), the @1h@ interval at the end of each hour, and so on.+--+-- When IoT SiteWise aggregates data points for metric computations, the+-- start of each interval is exclusive and the end of each interval is+-- inclusive. IoT SiteWise places the computed data point at the end of the+-- interval.+newTumblingWindow ::+  -- | 'interval'+  Prelude.Text ->+  TumblingWindow+newTumblingWindow pInterval_ =+  TumblingWindow'+    { offset = Prelude.Nothing,+      interval = pInterval_+    }++-- | The offset for the tumbling window. The @offset@ parameter accepts the+-- following:+--+-- -   The offset time.+--+--     For example, if you specify @18h@ for @offset@ and @1d@ for+--     @interval@, IoT SiteWise aggregates data in one of the following+--     ways:+--+--     -   If you create the metric before or at 6 PM (UTC), you get the+--         first aggregation result at 6 PM (UTC) on the day when you+--         create the metric.+--+--     -   If you create the metric after 6 PM (UTC), you get the first+--         aggregation result at 6 PM (UTC) the next day.+--+-- -   The ISO 8601 format.+--+--     For example, if you specify @PT18H@ for @offset@ and @1d@ for+--     @interval@, IoT SiteWise aggregates data in one of the following+--     ways:+--+--     -   If you create the metric before or at 6 PM (UTC), you get the+--         first aggregation result at 6 PM (UTC) on the day when you+--         create the metric.+--+--     -   If you create the metric after 6 PM (UTC), you get the first+--         aggregation result at 6 PM (UTC) the next day.+--+-- -   The 24-hour clock.+--+--     For example, if you specify @00:03:00@ for @offset@, @5m@ for+--     @interval@, and you create the metric at 2 PM (UTC), you get the+--     first aggregation result at 2:03 PM (UTC). You get the second+--     aggregation result at 2:08 PM (UTC).+--+-- -   The offset time zone.+--+--     For example, if you specify @2021-07-23T18:00-08@ for @offset@ and+--     @1d@ for @interval@, IoT SiteWise aggregates data in one of the+--     following ways:+--+--     -   If you create the metric before or at 6 PM (PST), you get the+--         first aggregation result at 6 PM (PST) on the day when you+--         create the metric.+--+--     -   If you create the metric after 6 PM (PST), you get the first+--         aggregation result at 6 PM (PST) the next day.+tumblingWindow_offset :: Lens.Lens' TumblingWindow (Prelude.Maybe Prelude.Text)+tumblingWindow_offset = Lens.lens (\TumblingWindow' {offset} -> offset) (\s@TumblingWindow' {} a -> s {offset = a} :: TumblingWindow)++-- | The time interval for the tumbling window. The interval time must be+-- between 1 minute and 1 week.+--+-- IoT SiteWise computes the @1w@ interval the end of Sunday at midnight+-- each week (UTC), the @1d@ interval at the end of each day at midnight+-- (UTC), the @1h@ interval at the end of each hour, and so on.+--+-- When IoT SiteWise aggregates data points for metric computations, the+-- start of each interval is exclusive and the end of each interval is+-- inclusive. IoT SiteWise places the computed data point at the end of the+-- interval.+tumblingWindow_interval :: Lens.Lens' TumblingWindow Prelude.Text+tumblingWindow_interval = Lens.lens (\TumblingWindow' {interval} -> interval) (\s@TumblingWindow' {} a -> s {interval = a} :: TumblingWindow)++instance Data.FromJSON TumblingWindow where+  parseJSON =+    Data.withObject+      "TumblingWindow"+      ( \x ->+          TumblingWindow'+            Prelude.<$> (x Data..:? "offset")+            Prelude.<*> (x Data..: "interval")+      )++instance Prelude.Hashable TumblingWindow where+  hashWithSalt _salt TumblingWindow' {..} =+    _salt+      `Prelude.hashWithSalt` offset+      `Prelude.hashWithSalt` interval++instance Prelude.NFData TumblingWindow where+  rnf TumblingWindow' {..} =+    Prelude.rnf offset+      `Prelude.seq` Prelude.rnf interval++instance Data.ToJSON TumblingWindow where+  toJSON TumblingWindow' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("offset" Data..=) Prelude.<$> offset,+            Prelude.Just ("interval" Data..= interval)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/UserIdentity.hs view
@@ -0,0 +1,71 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.Types.UserIdentity+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.UserIdentity 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 information for a user identity in an access policy.+--+-- /See:/ 'newUserIdentity' smart constructor.+data UserIdentity = UserIdentity'+  { -- | The IAM Identity Center ID of the user.+    id :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UserIdentity' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'id', 'userIdentity_id' - The IAM Identity Center ID of the user.+newUserIdentity ::+  -- | 'id'+  Prelude.Text ->+  UserIdentity+newUserIdentity pId_ = UserIdentity' {id = pId_}++-- | The IAM Identity Center ID of the user.+userIdentity_id :: Lens.Lens' UserIdentity Prelude.Text+userIdentity_id = Lens.lens (\UserIdentity' {id} -> id) (\s@UserIdentity' {} a -> s {id = a} :: UserIdentity)++instance Data.FromJSON UserIdentity where+  parseJSON =+    Data.withObject+      "UserIdentity"+      (\x -> UserIdentity' Prelude.<$> (x Data..: "id"))++instance Prelude.Hashable UserIdentity where+  hashWithSalt _salt UserIdentity' {..} =+    _salt `Prelude.hashWithSalt` id++instance Prelude.NFData UserIdentity where+  rnf UserIdentity' {..} = Prelude.rnf id++instance Data.ToJSON UserIdentity where+  toJSON UserIdentity' {..} =+    Data.object+      (Prelude.catMaybes [Prelude.Just ("id" Data..= id)])
+ gen/Amazonka/IoTSiteWise/Types/VariableValue.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.IoTSiteWise.Types.VariableValue+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.VariableValue 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++-- | Identifies a property value used in an expression.+--+-- /See:/ 'newVariableValue' smart constructor.+data VariableValue = VariableValue'+  { -- | The ID of the hierarchy to query for the property ID. You can use the+    -- hierarchy\'s name instead of the hierarchy\'s ID.+    --+    -- You use a hierarchy ID instead of a model ID because you can have+    -- several hierarchies using the same model and therefore the same+    -- @propertyId@. For example, you might have separately grouped assets that+    -- come from the same asset model. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+    -- in the /IoT SiteWise User Guide/.+    hierarchyId :: Prelude.Maybe Prelude.Text,+    -- | The ID of the property to use as the variable. You can use the property+    -- @name@ if it\'s from the same asset model.+    propertyId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VariableValue' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'hierarchyId', 'variableValue_hierarchyId' - The ID of the hierarchy to query for the property ID. You can use the+-- hierarchy\'s name instead of the hierarchy\'s ID.+--+-- You use a hierarchy ID instead of a model ID because you can have+-- several hierarchies using the same model and therefore the same+-- @propertyId@. For example, you might have separately grouped assets that+-- come from the same asset model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+--+-- 'propertyId', 'variableValue_propertyId' - The ID of the property to use as the variable. You can use the property+-- @name@ if it\'s from the same asset model.+newVariableValue ::+  -- | 'propertyId'+  Prelude.Text ->+  VariableValue+newVariableValue pPropertyId_ =+  VariableValue'+    { hierarchyId = Prelude.Nothing,+      propertyId = pPropertyId_+    }++-- | The ID of the hierarchy to query for the property ID. You can use the+-- hierarchy\'s name instead of the hierarchy\'s ID.+--+-- You use a hierarchy ID instead of a model ID because you can have+-- several hierarchies using the same model and therefore the same+-- @propertyId@. For example, you might have separately grouped assets that+-- come from the same asset model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+variableValue_hierarchyId :: Lens.Lens' VariableValue (Prelude.Maybe Prelude.Text)+variableValue_hierarchyId = Lens.lens (\VariableValue' {hierarchyId} -> hierarchyId) (\s@VariableValue' {} a -> s {hierarchyId = a} :: VariableValue)++-- | The ID of the property to use as the variable. You can use the property+-- @name@ if it\'s from the same asset model.+variableValue_propertyId :: Lens.Lens' VariableValue Prelude.Text+variableValue_propertyId = Lens.lens (\VariableValue' {propertyId} -> propertyId) (\s@VariableValue' {} a -> s {propertyId = a} :: VariableValue)++instance Data.FromJSON VariableValue where+  parseJSON =+    Data.withObject+      "VariableValue"+      ( \x ->+          VariableValue'+            Prelude.<$> (x Data..:? "hierarchyId")+            Prelude.<*> (x Data..: "propertyId")+      )++instance Prelude.Hashable VariableValue where+  hashWithSalt _salt VariableValue' {..} =+    _salt+      `Prelude.hashWithSalt` hierarchyId+      `Prelude.hashWithSalt` propertyId++instance Prelude.NFData VariableValue where+  rnf VariableValue' {..} =+    Prelude.rnf hierarchyId+      `Prelude.seq` Prelude.rnf propertyId++instance Data.ToJSON VariableValue where+  toJSON VariableValue' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("hierarchyId" Data..=) Prelude.<$> hierarchyId,+            Prelude.Just ("propertyId" Data..= propertyId)+          ]+      )
+ gen/Amazonka/IoTSiteWise/Types/Variant.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.IoTSiteWise.Types.Variant+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IoTSiteWise.Types.Variant 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 an asset property value (of a single type only).+--+-- /See:/ 'newVariant' smart constructor.+data Variant = Variant'+  { -- | Asset property data of type Boolean (true or false).+    booleanValue :: Prelude.Maybe Prelude.Bool,+    -- | Asset property data of type double (floating point number).+    doubleValue :: Prelude.Maybe Prelude.Double,+    -- | Asset property data of type integer (whole number).+    integerValue :: Prelude.Maybe Prelude.Int,+    -- | Asset property data of type string (sequence of characters).+    stringValue :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Variant' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'booleanValue', 'variant_booleanValue' - Asset property data of type Boolean (true or false).+--+-- 'doubleValue', 'variant_doubleValue' - Asset property data of type double (floating point number).+--+-- 'integerValue', 'variant_integerValue' - Asset property data of type integer (whole number).+--+-- 'stringValue', 'variant_stringValue' - Asset property data of type string (sequence of characters).+newVariant ::+  Variant+newVariant =+  Variant'+    { booleanValue = Prelude.Nothing,+      doubleValue = Prelude.Nothing,+      integerValue = Prelude.Nothing,+      stringValue = Prelude.Nothing+    }++-- | Asset property data of type Boolean (true or false).+variant_booleanValue :: Lens.Lens' Variant (Prelude.Maybe Prelude.Bool)+variant_booleanValue = Lens.lens (\Variant' {booleanValue} -> booleanValue) (\s@Variant' {} a -> s {booleanValue = a} :: Variant)++-- | Asset property data of type double (floating point number).+variant_doubleValue :: Lens.Lens' Variant (Prelude.Maybe Prelude.Double)+variant_doubleValue = Lens.lens (\Variant' {doubleValue} -> doubleValue) (\s@Variant' {} a -> s {doubleValue = a} :: Variant)++-- | Asset property data of type integer (whole number).+variant_integerValue :: Lens.Lens' Variant (Prelude.Maybe Prelude.Int)+variant_integerValue = Lens.lens (\Variant' {integerValue} -> integerValue) (\s@Variant' {} a -> s {integerValue = a} :: Variant)++-- | Asset property data of type string (sequence of characters).+variant_stringValue :: Lens.Lens' Variant (Prelude.Maybe Prelude.Text)+variant_stringValue = Lens.lens (\Variant' {stringValue} -> stringValue) (\s@Variant' {} a -> s {stringValue = a} :: Variant)++instance Data.FromJSON Variant where+  parseJSON =+    Data.withObject+      "Variant"+      ( \x ->+          Variant'+            Prelude.<$> (x Data..:? "booleanValue")+            Prelude.<*> (x Data..:? "doubleValue")+            Prelude.<*> (x Data..:? "integerValue")+            Prelude.<*> (x Data..:? "stringValue")+      )++instance Prelude.Hashable Variant where+  hashWithSalt _salt Variant' {..} =+    _salt+      `Prelude.hashWithSalt` booleanValue+      `Prelude.hashWithSalt` doubleValue+      `Prelude.hashWithSalt` integerValue+      `Prelude.hashWithSalt` stringValue++instance Prelude.NFData Variant where+  rnf Variant' {..} =+    Prelude.rnf booleanValue+      `Prelude.seq` Prelude.rnf doubleValue+      `Prelude.seq` Prelude.rnf integerValue+      `Prelude.seq` Prelude.rnf stringValue++instance Data.ToJSON Variant where+  toJSON Variant' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("booleanValue" Data..=) Prelude.<$> booleanValue,+            ("doubleValue" Data..=) Prelude.<$> doubleValue,+            ("integerValue" Data..=) Prelude.<$> integerValue,+            ("stringValue" Data..=) Prelude.<$> stringValue+          ]+      )
+ gen/Amazonka/IoTSiteWise/UntagResource.hs view
@@ -0,0 +1,168 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.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 a tag from an IoT SiteWise resource.+module Amazonka.IoTSiteWise.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.IoTSiteWise.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+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the resource to untag.+    resourceArn :: Prelude.Text,+    -- | A list of keys for tags to remove from the resource.+    tagKeys :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'untagResource_resourceArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the resource to untag.+--+-- 'tagKeys', 'untagResource_tagKeys' - A list of keys for tags to remove from the resource.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Prelude.mempty+    }++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the resource to untag.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | A list of keys for tags to remove from the resource.+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.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 = Prelude.const "/tags"++instance Data.ToQuery UntagResource where+  toQuery UntagResource' {..} =+    Prelude.mconcat+      [ "resourceArn" Data.=: resourceArn,+        "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/IoTSiteWise/UpdateAccessPolicy.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.IoTSiteWise.UpdateAccessPolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an existing access policy that specifies an identity\'s access+-- to an IoT SiteWise Monitor portal or project resource.+module Amazonka.IoTSiteWise.UpdateAccessPolicy+  ( -- * Creating a Request+    UpdateAccessPolicy (..),+    newUpdateAccessPolicy,++    -- * Request Lenses+    updateAccessPolicy_clientToken,+    updateAccessPolicy_accessPolicyId,+    updateAccessPolicy_accessPolicyIdentity,+    updateAccessPolicy_accessPolicyResource,+    updateAccessPolicy_accessPolicyPermission,++    -- * Destructuring the Response+    UpdateAccessPolicyResponse (..),+    newUpdateAccessPolicyResponse,++    -- * Response Lenses+    updateAccessPolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateAccessPolicy' smart constructor.+data UpdateAccessPolicy = UpdateAccessPolicy'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the access policy.+    accessPolicyId :: Prelude.Text,+    -- | The identity for this access policy. Choose an IAM Identity Center user,+    -- an IAM Identity Center group, or an IAM user.+    accessPolicyIdentity :: Identity,+    -- | The IoT SiteWise Monitor resource for this access policy. Choose either+    -- a portal or a project.+    accessPolicyResource :: Resource,+    -- | The permission level for this access policy. Note that a project+    -- @ADMINISTRATOR@ is also known as a project owner.+    accessPolicyPermission :: Permission+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAccessPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateAccessPolicy_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'accessPolicyId', 'updateAccessPolicy_accessPolicyId' - The ID of the access policy.+--+-- 'accessPolicyIdentity', 'updateAccessPolicy_accessPolicyIdentity' - The identity for this access policy. Choose an IAM Identity Center user,+-- an IAM Identity Center group, or an IAM user.+--+-- 'accessPolicyResource', 'updateAccessPolicy_accessPolicyResource' - The IoT SiteWise Monitor resource for this access policy. Choose either+-- a portal or a project.+--+-- 'accessPolicyPermission', 'updateAccessPolicy_accessPolicyPermission' - The permission level for this access policy. Note that a project+-- @ADMINISTRATOR@ is also known as a project owner.+newUpdateAccessPolicy ::+  -- | 'accessPolicyId'+  Prelude.Text ->+  -- | 'accessPolicyIdentity'+  Identity ->+  -- | 'accessPolicyResource'+  Resource ->+  -- | 'accessPolicyPermission'+  Permission ->+  UpdateAccessPolicy+newUpdateAccessPolicy+  pAccessPolicyId_+  pAccessPolicyIdentity_+  pAccessPolicyResource_+  pAccessPolicyPermission_ =+    UpdateAccessPolicy'+      { clientToken = Prelude.Nothing,+        accessPolicyId = pAccessPolicyId_,+        accessPolicyIdentity = pAccessPolicyIdentity_,+        accessPolicyResource = pAccessPolicyResource_,+        accessPolicyPermission = pAccessPolicyPermission_+      }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+updateAccessPolicy_clientToken :: Lens.Lens' UpdateAccessPolicy (Prelude.Maybe Prelude.Text)+updateAccessPolicy_clientToken = Lens.lens (\UpdateAccessPolicy' {clientToken} -> clientToken) (\s@UpdateAccessPolicy' {} a -> s {clientToken = a} :: UpdateAccessPolicy)++-- | The ID of the access policy.+updateAccessPolicy_accessPolicyId :: Lens.Lens' UpdateAccessPolicy Prelude.Text+updateAccessPolicy_accessPolicyId = Lens.lens (\UpdateAccessPolicy' {accessPolicyId} -> accessPolicyId) (\s@UpdateAccessPolicy' {} a -> s {accessPolicyId = a} :: UpdateAccessPolicy)++-- | The identity for this access policy. Choose an IAM Identity Center user,+-- an IAM Identity Center group, or an IAM user.+updateAccessPolicy_accessPolicyIdentity :: Lens.Lens' UpdateAccessPolicy Identity+updateAccessPolicy_accessPolicyIdentity = Lens.lens (\UpdateAccessPolicy' {accessPolicyIdentity} -> accessPolicyIdentity) (\s@UpdateAccessPolicy' {} a -> s {accessPolicyIdentity = a} :: UpdateAccessPolicy)++-- | The IoT SiteWise Monitor resource for this access policy. Choose either+-- a portal or a project.+updateAccessPolicy_accessPolicyResource :: Lens.Lens' UpdateAccessPolicy Resource+updateAccessPolicy_accessPolicyResource = Lens.lens (\UpdateAccessPolicy' {accessPolicyResource} -> accessPolicyResource) (\s@UpdateAccessPolicy' {} a -> s {accessPolicyResource = a} :: UpdateAccessPolicy)++-- | The permission level for this access policy. Note that a project+-- @ADMINISTRATOR@ is also known as a project owner.+updateAccessPolicy_accessPolicyPermission :: Lens.Lens' UpdateAccessPolicy Permission+updateAccessPolicy_accessPolicyPermission = Lens.lens (\UpdateAccessPolicy' {accessPolicyPermission} -> accessPolicyPermission) (\s@UpdateAccessPolicy' {} a -> s {accessPolicyPermission = a} :: UpdateAccessPolicy)++instance Core.AWSRequest UpdateAccessPolicy where+  type+    AWSResponse UpdateAccessPolicy =+      UpdateAccessPolicyResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateAccessPolicyResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateAccessPolicy where+  hashWithSalt _salt UpdateAccessPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` accessPolicyId+      `Prelude.hashWithSalt` accessPolicyIdentity+      `Prelude.hashWithSalt` accessPolicyResource+      `Prelude.hashWithSalt` accessPolicyPermission++instance Prelude.NFData UpdateAccessPolicy where+  rnf UpdateAccessPolicy' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf accessPolicyId+      `Prelude.seq` Prelude.rnf accessPolicyIdentity+      `Prelude.seq` Prelude.rnf accessPolicyResource+      `Prelude.seq` Prelude.rnf accessPolicyPermission++instance Data.ToHeaders UpdateAccessPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateAccessPolicy where+  toJSON UpdateAccessPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just+              ( "accessPolicyIdentity"+                  Data..= accessPolicyIdentity+              ),+            Prelude.Just+              ( "accessPolicyResource"+                  Data..= accessPolicyResource+              ),+            Prelude.Just+              ( "accessPolicyPermission"+                  Data..= accessPolicyPermission+              )+          ]+      )++instance Data.ToPath UpdateAccessPolicy where+  toPath UpdateAccessPolicy' {..} =+    Prelude.mconcat+      ["/access-policies/", Data.toBS accessPolicyId]++instance Data.ToQuery UpdateAccessPolicy where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateAccessPolicyResponse' smart constructor.+data UpdateAccessPolicyResponse = UpdateAccessPolicyResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAccessPolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateAccessPolicyResponse_httpStatus' - The response's http status code.+newUpdateAccessPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateAccessPolicyResponse+newUpdateAccessPolicyResponse pHttpStatus_ =+  UpdateAccessPolicyResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+updateAccessPolicyResponse_httpStatus :: Lens.Lens' UpdateAccessPolicyResponse Prelude.Int+updateAccessPolicyResponse_httpStatus = Lens.lens (\UpdateAccessPolicyResponse' {httpStatus} -> httpStatus) (\s@UpdateAccessPolicyResponse' {} a -> s {httpStatus = a} :: UpdateAccessPolicyResponse)++instance Prelude.NFData UpdateAccessPolicyResponse where+  rnf UpdateAccessPolicyResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/UpdateAsset.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.IoTSiteWise.UpdateAsset+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an asset\'s name. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-assets-and-models.html Updating assets and models>+-- in the /IoT SiteWise User Guide/.+module Amazonka.IoTSiteWise.UpdateAsset+  ( -- * Creating a Request+    UpdateAsset (..),+    newUpdateAsset,++    -- * Request Lenses+    updateAsset_assetDescription,+    updateAsset_clientToken,+    updateAsset_assetId,+    updateAsset_assetName,++    -- * Destructuring the Response+    UpdateAssetResponse (..),+    newUpdateAssetResponse,++    -- * Response Lenses+    updateAssetResponse_httpStatus,+    updateAssetResponse_assetStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateAsset' smart constructor.+data UpdateAsset = UpdateAsset'+  { -- | A description for the asset.+    assetDescription :: Prelude.Maybe Prelude.Text,+    -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset to update.+    assetId :: Prelude.Text,+    -- | A friendly name for the asset.+    assetName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAsset' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetDescription', 'updateAsset_assetDescription' - A description for the asset.+--+-- 'clientToken', 'updateAsset_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'assetId', 'updateAsset_assetId' - The ID of the asset to update.+--+-- 'assetName', 'updateAsset_assetName' - A friendly name for the asset.+newUpdateAsset ::+  -- | 'assetId'+  Prelude.Text ->+  -- | 'assetName'+  Prelude.Text ->+  UpdateAsset+newUpdateAsset pAssetId_ pAssetName_ =+  UpdateAsset'+    { assetDescription = Prelude.Nothing,+      clientToken = Prelude.Nothing,+      assetId = pAssetId_,+      assetName = pAssetName_+    }++-- | A description for the asset.+updateAsset_assetDescription :: Lens.Lens' UpdateAsset (Prelude.Maybe Prelude.Text)+updateAsset_assetDescription = Lens.lens (\UpdateAsset' {assetDescription} -> assetDescription) (\s@UpdateAsset' {} a -> s {assetDescription = a} :: UpdateAsset)++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+updateAsset_clientToken :: Lens.Lens' UpdateAsset (Prelude.Maybe Prelude.Text)+updateAsset_clientToken = Lens.lens (\UpdateAsset' {clientToken} -> clientToken) (\s@UpdateAsset' {} a -> s {clientToken = a} :: UpdateAsset)++-- | The ID of the asset to update.+updateAsset_assetId :: Lens.Lens' UpdateAsset Prelude.Text+updateAsset_assetId = Lens.lens (\UpdateAsset' {assetId} -> assetId) (\s@UpdateAsset' {} a -> s {assetId = a} :: UpdateAsset)++-- | A friendly name for the asset.+updateAsset_assetName :: Lens.Lens' UpdateAsset Prelude.Text+updateAsset_assetName = Lens.lens (\UpdateAsset' {assetName} -> assetName) (\s@UpdateAsset' {} a -> s {assetName = a} :: UpdateAsset)++instance Core.AWSRequest UpdateAsset where+  type AWSResponse UpdateAsset = UpdateAssetResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateAssetResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "assetStatus")+      )++instance Prelude.Hashable UpdateAsset where+  hashWithSalt _salt UpdateAsset' {..} =+    _salt+      `Prelude.hashWithSalt` assetDescription+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` assetName++instance Prelude.NFData UpdateAsset where+  rnf UpdateAsset' {..} =+    Prelude.rnf assetDescription+      `Prelude.seq` Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf assetName++instance Data.ToHeaders UpdateAsset where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateAsset where+  toJSON UpdateAsset' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("assetDescription" Data..=)+              Prelude.<$> assetDescription,+            ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just ("assetName" Data..= assetName)+          ]+      )++instance Data.ToPath UpdateAsset where+  toPath UpdateAsset' {..} =+    Prelude.mconcat ["/assets/", Data.toBS assetId]++instance Data.ToQuery UpdateAsset where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateAssetResponse' smart constructor.+data UpdateAssetResponse = UpdateAssetResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The status of the asset, which contains a state (@UPDATING@ after+    -- successfully calling this operation) and any error message.+    assetStatus :: AssetStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAssetResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateAssetResponse_httpStatus' - The response's http status code.+--+-- 'assetStatus', 'updateAssetResponse_assetStatus' - The status of the asset, which contains a state (@UPDATING@ after+-- successfully calling this operation) and any error message.+newUpdateAssetResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'assetStatus'+  AssetStatus ->+  UpdateAssetResponse+newUpdateAssetResponse pHttpStatus_ pAssetStatus_ =+  UpdateAssetResponse'+    { httpStatus = pHttpStatus_,+      assetStatus = pAssetStatus_+    }++-- | The response's http status code.+updateAssetResponse_httpStatus :: Lens.Lens' UpdateAssetResponse Prelude.Int+updateAssetResponse_httpStatus = Lens.lens (\UpdateAssetResponse' {httpStatus} -> httpStatus) (\s@UpdateAssetResponse' {} a -> s {httpStatus = a} :: UpdateAssetResponse)++-- | The status of the asset, which contains a state (@UPDATING@ after+-- successfully calling this operation) and any error message.+updateAssetResponse_assetStatus :: Lens.Lens' UpdateAssetResponse AssetStatus+updateAssetResponse_assetStatus = Lens.lens (\UpdateAssetResponse' {assetStatus} -> assetStatus) (\s@UpdateAssetResponse' {} a -> s {assetStatus = a} :: UpdateAssetResponse)++instance Prelude.NFData UpdateAssetResponse where+  rnf UpdateAssetResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetStatus
+ gen/Amazonka/IoTSiteWise/UpdateAssetModel.hs view
@@ -0,0 +1,348 @@+{-# 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.IoTSiteWise.UpdateAssetModel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an asset model and all of the assets that were created from the+-- model. Each asset created from the model inherits the updated asset+-- model\'s property and hierarchy definitions. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/update-assets-and-models.html Updating assets and models>+-- in the /IoT SiteWise User Guide/.+--+-- This operation overwrites the existing model with the provided model. To+-- avoid deleting your asset model\'s properties or hierarchies, you must+-- include their IDs and definitions in the updated asset model payload.+-- For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html DescribeAssetModel>.+--+-- If you remove a property from an asset model, IoT SiteWise deletes all+-- previous data for that property. If you remove a hierarchy definition+-- from an asset model, IoT SiteWise disassociates every asset associated+-- with that hierarchy. You can\'t change the type or data type of an+-- existing property.+module Amazonka.IoTSiteWise.UpdateAssetModel+  ( -- * Creating a Request+    UpdateAssetModel (..),+    newUpdateAssetModel,++    -- * Request Lenses+    updateAssetModel_assetModelCompositeModels,+    updateAssetModel_assetModelDescription,+    updateAssetModel_assetModelHierarchies,+    updateAssetModel_assetModelProperties,+    updateAssetModel_clientToken,+    updateAssetModel_assetModelId,+    updateAssetModel_assetModelName,++    -- * Destructuring the Response+    UpdateAssetModelResponse (..),+    newUpdateAssetModelResponse,++    -- * Response Lenses+    updateAssetModelResponse_httpStatus,+    updateAssetModelResponse_assetModelStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateAssetModel' smart constructor.+data UpdateAssetModel = UpdateAssetModel'+  { -- | The composite asset models that are part of this asset model. Composite+    -- asset models are asset models that contain specific properties. Each+    -- composite model has a type that defines the properties that the+    -- composite model supports. Use composite asset models to define alarms on+    -- this asset model.+    assetModelCompositeModels :: Prelude.Maybe [AssetModelCompositeModel],+    -- | A description for the asset model.+    assetModelDescription :: Prelude.Maybe Prelude.Text,+    -- | The updated hierarchy definitions of the asset model. Each hierarchy+    -- specifies an asset model whose assets can be children of any other+    -- assets created from this asset model. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+    -- in the /IoT SiteWise User Guide/.+    --+    -- You can specify up to 10 hierarchies per asset model. For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+    -- in the /IoT SiteWise User Guide/.+    assetModelHierarchies :: Prelude.Maybe [AssetModelHierarchy],+    -- | The updated property definitions of the asset model. For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html Asset properties>+    -- in the /IoT SiteWise User Guide/.+    --+    -- You can specify up to 200 properties per asset model. For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+    -- in the /IoT SiteWise User Guide/.+    assetModelProperties :: Prelude.Maybe [AssetModelProperty],+    -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset model to update.+    assetModelId :: Prelude.Text,+    -- | A unique, friendly name for the asset model.+    assetModelName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAssetModel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'assetModelCompositeModels', 'updateAssetModel_assetModelCompositeModels' - The composite asset models that are part of this asset model. Composite+-- asset models are asset models that contain specific properties. Each+-- composite model has a type that defines the properties that the+-- composite model supports. Use composite asset models to define alarms on+-- this asset model.+--+-- 'assetModelDescription', 'updateAssetModel_assetModelDescription' - A description for the asset model.+--+-- 'assetModelHierarchies', 'updateAssetModel_assetModelHierarchies' - The updated hierarchy definitions of the asset model. Each hierarchy+-- specifies an asset model whose assets can be children of any other+-- assets created from this asset model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+--+-- You can specify up to 10 hierarchies per asset model. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+--+-- 'assetModelProperties', 'updateAssetModel_assetModelProperties' - The updated property definitions of the asset model. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html Asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- You can specify up to 200 properties per asset model. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+--+-- 'clientToken', 'updateAssetModel_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'assetModelId', 'updateAssetModel_assetModelId' - The ID of the asset model to update.+--+-- 'assetModelName', 'updateAssetModel_assetModelName' - A unique, friendly name for the asset model.+newUpdateAssetModel ::+  -- | 'assetModelId'+  Prelude.Text ->+  -- | 'assetModelName'+  Prelude.Text ->+  UpdateAssetModel+newUpdateAssetModel pAssetModelId_ pAssetModelName_ =+  UpdateAssetModel'+    { assetModelCompositeModels =+        Prelude.Nothing,+      assetModelDescription = Prelude.Nothing,+      assetModelHierarchies = Prelude.Nothing,+      assetModelProperties = Prelude.Nothing,+      clientToken = Prelude.Nothing,+      assetModelId = pAssetModelId_,+      assetModelName = pAssetModelName_+    }++-- | The composite asset models that are part of this asset model. Composite+-- asset models are asset models that contain specific properties. Each+-- composite model has a type that defines the properties that the+-- composite model supports. Use composite asset models to define alarms on+-- this asset model.+updateAssetModel_assetModelCompositeModels :: Lens.Lens' UpdateAssetModel (Prelude.Maybe [AssetModelCompositeModel])+updateAssetModel_assetModelCompositeModels = Lens.lens (\UpdateAssetModel' {assetModelCompositeModels} -> assetModelCompositeModels) (\s@UpdateAssetModel' {} a -> s {assetModelCompositeModels = a} :: UpdateAssetModel) Prelude.. Lens.mapping Lens.coerced++-- | A description for the asset model.+updateAssetModel_assetModelDescription :: Lens.Lens' UpdateAssetModel (Prelude.Maybe Prelude.Text)+updateAssetModel_assetModelDescription = Lens.lens (\UpdateAssetModel' {assetModelDescription} -> assetModelDescription) (\s@UpdateAssetModel' {} a -> s {assetModelDescription = a} :: UpdateAssetModel)++-- | The updated hierarchy definitions of the asset model. Each hierarchy+-- specifies an asset model whose assets can be children of any other+-- assets created from this asset model. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html Asset hierarchies>+-- in the /IoT SiteWise User Guide/.+--+-- You can specify up to 10 hierarchies per asset model. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+updateAssetModel_assetModelHierarchies :: Lens.Lens' UpdateAssetModel (Prelude.Maybe [AssetModelHierarchy])+updateAssetModel_assetModelHierarchies = Lens.lens (\UpdateAssetModel' {assetModelHierarchies} -> assetModelHierarchies) (\s@UpdateAssetModel' {} a -> s {assetModelHierarchies = a} :: UpdateAssetModel) Prelude.. Lens.mapping Lens.coerced++-- | The updated property definitions of the asset model. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-properties.html Asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- You can specify up to 200 properties per asset model. For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html Quotas>+-- in the /IoT SiteWise User Guide/.+updateAssetModel_assetModelProperties :: Lens.Lens' UpdateAssetModel (Prelude.Maybe [AssetModelProperty])+updateAssetModel_assetModelProperties = Lens.lens (\UpdateAssetModel' {assetModelProperties} -> assetModelProperties) (\s@UpdateAssetModel' {} a -> s {assetModelProperties = a} :: UpdateAssetModel) Prelude.. Lens.mapping Lens.coerced++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+updateAssetModel_clientToken :: Lens.Lens' UpdateAssetModel (Prelude.Maybe Prelude.Text)+updateAssetModel_clientToken = Lens.lens (\UpdateAssetModel' {clientToken} -> clientToken) (\s@UpdateAssetModel' {} a -> s {clientToken = a} :: UpdateAssetModel)++-- | The ID of the asset model to update.+updateAssetModel_assetModelId :: Lens.Lens' UpdateAssetModel Prelude.Text+updateAssetModel_assetModelId = Lens.lens (\UpdateAssetModel' {assetModelId} -> assetModelId) (\s@UpdateAssetModel' {} a -> s {assetModelId = a} :: UpdateAssetModel)++-- | A unique, friendly name for the asset model.+updateAssetModel_assetModelName :: Lens.Lens' UpdateAssetModel Prelude.Text+updateAssetModel_assetModelName = Lens.lens (\UpdateAssetModel' {assetModelName} -> assetModelName) (\s@UpdateAssetModel' {} a -> s {assetModelName = a} :: UpdateAssetModel)++instance Core.AWSRequest UpdateAssetModel where+  type+    AWSResponse UpdateAssetModel =+      UpdateAssetModelResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateAssetModelResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "assetModelStatus")+      )++instance Prelude.Hashable UpdateAssetModel where+  hashWithSalt _salt UpdateAssetModel' {..} =+    _salt+      `Prelude.hashWithSalt` assetModelCompositeModels+      `Prelude.hashWithSalt` assetModelDescription+      `Prelude.hashWithSalt` assetModelHierarchies+      `Prelude.hashWithSalt` assetModelProperties+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` assetModelId+      `Prelude.hashWithSalt` assetModelName++instance Prelude.NFData UpdateAssetModel where+  rnf UpdateAssetModel' {..} =+    Prelude.rnf assetModelCompositeModels+      `Prelude.seq` Prelude.rnf assetModelDescription+      `Prelude.seq` Prelude.rnf assetModelHierarchies+      `Prelude.seq` Prelude.rnf assetModelProperties+      `Prelude.seq` Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf assetModelId+      `Prelude.seq` Prelude.rnf assetModelName++instance Data.ToHeaders UpdateAssetModel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateAssetModel where+  toJSON UpdateAssetModel' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("assetModelCompositeModels" Data..=)+              Prelude.<$> assetModelCompositeModels,+            ("assetModelDescription" Data..=)+              Prelude.<$> assetModelDescription,+            ("assetModelHierarchies" Data..=)+              Prelude.<$> assetModelHierarchies,+            ("assetModelProperties" Data..=)+              Prelude.<$> assetModelProperties,+            ("clientToken" Data..=) Prelude.<$> clientToken,+            Prelude.Just+              ("assetModelName" Data..= assetModelName)+          ]+      )++instance Data.ToPath UpdateAssetModel where+  toPath UpdateAssetModel' {..} =+    Prelude.mconcat+      ["/asset-models/", Data.toBS assetModelId]++instance Data.ToQuery UpdateAssetModel where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateAssetModelResponse' smart constructor.+data UpdateAssetModelResponse = UpdateAssetModelResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The status of the asset model, which contains a state (@UPDATING@ after+    -- successfully calling this operation) and any error message.+    assetModelStatus :: AssetModelStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAssetModelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateAssetModelResponse_httpStatus' - The response's http status code.+--+-- 'assetModelStatus', 'updateAssetModelResponse_assetModelStatus' - The status of the asset model, which contains a state (@UPDATING@ after+-- successfully calling this operation) and any error message.+newUpdateAssetModelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'assetModelStatus'+  AssetModelStatus ->+  UpdateAssetModelResponse+newUpdateAssetModelResponse+  pHttpStatus_+  pAssetModelStatus_ =+    UpdateAssetModelResponse'+      { httpStatus =+          pHttpStatus_,+        assetModelStatus = pAssetModelStatus_+      }++-- | The response's http status code.+updateAssetModelResponse_httpStatus :: Lens.Lens' UpdateAssetModelResponse Prelude.Int+updateAssetModelResponse_httpStatus = Lens.lens (\UpdateAssetModelResponse' {httpStatus} -> httpStatus) (\s@UpdateAssetModelResponse' {} a -> s {httpStatus = a} :: UpdateAssetModelResponse)++-- | The status of the asset model, which contains a state (@UPDATING@ after+-- successfully calling this operation) and any error message.+updateAssetModelResponse_assetModelStatus :: Lens.Lens' UpdateAssetModelResponse AssetModelStatus+updateAssetModelResponse_assetModelStatus = Lens.lens (\UpdateAssetModelResponse' {assetModelStatus} -> assetModelStatus) (\s@UpdateAssetModelResponse' {} a -> s {assetModelStatus = a} :: UpdateAssetModelResponse)++instance Prelude.NFData UpdateAssetModelResponse where+  rnf UpdateAssetModelResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf assetModelStatus
+ gen/Amazonka/IoTSiteWise/UpdateAssetProperty.hs view
@@ -0,0 +1,263 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.UpdateAssetProperty+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an asset property\'s alias and notification state.+--+-- This operation overwrites the property\'s existing alias and+-- notification state. To keep your existing property\'s alias or+-- notification state, you must include the existing values in the+-- UpdateAssetProperty request. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetProperty.html DescribeAssetProperty>.+module Amazonka.IoTSiteWise.UpdateAssetProperty+  ( -- * Creating a Request+    UpdateAssetProperty (..),+    newUpdateAssetProperty,++    -- * Request Lenses+    updateAssetProperty_clientToken,+    updateAssetProperty_propertyAlias,+    updateAssetProperty_propertyNotificationState,+    updateAssetProperty_propertyUnit,+    updateAssetProperty_assetId,+    updateAssetProperty_propertyId,++    -- * Destructuring the Response+    UpdateAssetPropertyResponse (..),+    newUpdateAssetPropertyResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateAssetProperty' smart constructor.+data UpdateAssetProperty = UpdateAssetProperty'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The alias that identifies the property, such as an OPC-UA server data+    -- stream path (for example,+    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+    -- information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+    -- in the /IoT SiteWise User Guide/.+    --+    -- If you omit this parameter, the alias is removed from the property.+    propertyAlias :: Prelude.Maybe Prelude.Text,+    -- | The MQTT notification state (enabled or disabled) for this asset+    -- property. When the notification state is enabled, IoT SiteWise publishes+    -- property value updates to a unique MQTT topic. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/interact-with-other-services.html Interacting with other services>+    -- in the /IoT SiteWise User Guide/.+    --+    -- If you omit this parameter, the notification state is set to @DISABLED@.+    propertyNotificationState :: Prelude.Maybe PropertyNotificationState,+    -- | The unit of measure (such as Newtons or RPM) of the asset property. If+    -- you don\'t specify a value for this parameter, the service uses the+    -- value of the @assetModelProperty@ in the asset model.+    propertyUnit :: Prelude.Maybe Prelude.Text,+    -- | The ID of the asset to be updated.+    assetId :: Prelude.Text,+    -- | The ID of the asset property to be updated.+    propertyId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAssetProperty' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateAssetProperty_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'propertyAlias', 'updateAssetProperty_propertyAlias' - The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- If you omit this parameter, the alias is removed from the property.+--+-- 'propertyNotificationState', 'updateAssetProperty_propertyNotificationState' - The MQTT notification state (enabled or disabled) for this asset+-- property. When the notification state is enabled, IoT SiteWise publishes+-- property value updates to a unique MQTT topic. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/interact-with-other-services.html Interacting with other services>+-- in the /IoT SiteWise User Guide/.+--+-- If you omit this parameter, the notification state is set to @DISABLED@.+--+-- 'propertyUnit', 'updateAssetProperty_propertyUnit' - The unit of measure (such as Newtons or RPM) of the asset property. If+-- you don\'t specify a value for this parameter, the service uses the+-- value of the @assetModelProperty@ in the asset model.+--+-- 'assetId', 'updateAssetProperty_assetId' - The ID of the asset to be updated.+--+-- 'propertyId', 'updateAssetProperty_propertyId' - The ID of the asset property to be updated.+newUpdateAssetProperty ::+  -- | 'assetId'+  Prelude.Text ->+  -- | 'propertyId'+  Prelude.Text ->+  UpdateAssetProperty+newUpdateAssetProperty pAssetId_ pPropertyId_ =+  UpdateAssetProperty'+    { clientToken = Prelude.Nothing,+      propertyAlias = Prelude.Nothing,+      propertyNotificationState = Prelude.Nothing,+      propertyUnit = Prelude.Nothing,+      assetId = pAssetId_,+      propertyId = pPropertyId_+    }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+updateAssetProperty_clientToken :: Lens.Lens' UpdateAssetProperty (Prelude.Maybe Prelude.Text)+updateAssetProperty_clientToken = Lens.lens (\UpdateAssetProperty' {clientToken} -> clientToken) (\s@UpdateAssetProperty' {} a -> s {clientToken = a} :: UpdateAssetProperty)++-- | The alias that identifies the property, such as an OPC-UA server data+-- stream path (for example,+-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more+-- information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>+-- in the /IoT SiteWise User Guide/.+--+-- If you omit this parameter, the alias is removed from the property.+updateAssetProperty_propertyAlias :: Lens.Lens' UpdateAssetProperty (Prelude.Maybe Prelude.Text)+updateAssetProperty_propertyAlias = Lens.lens (\UpdateAssetProperty' {propertyAlias} -> propertyAlias) (\s@UpdateAssetProperty' {} a -> s {propertyAlias = a} :: UpdateAssetProperty)++-- | The MQTT notification state (enabled or disabled) for this asset+-- property. When the notification state is enabled, IoT SiteWise publishes+-- property value updates to a unique MQTT topic. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/interact-with-other-services.html Interacting with other services>+-- in the /IoT SiteWise User Guide/.+--+-- If you omit this parameter, the notification state is set to @DISABLED@.+updateAssetProperty_propertyNotificationState :: Lens.Lens' UpdateAssetProperty (Prelude.Maybe PropertyNotificationState)+updateAssetProperty_propertyNotificationState = Lens.lens (\UpdateAssetProperty' {propertyNotificationState} -> propertyNotificationState) (\s@UpdateAssetProperty' {} a -> s {propertyNotificationState = a} :: UpdateAssetProperty)++-- | The unit of measure (such as Newtons or RPM) of the asset property. If+-- you don\'t specify a value for this parameter, the service uses the+-- value of the @assetModelProperty@ in the asset model.+updateAssetProperty_propertyUnit :: Lens.Lens' UpdateAssetProperty (Prelude.Maybe Prelude.Text)+updateAssetProperty_propertyUnit = Lens.lens (\UpdateAssetProperty' {propertyUnit} -> propertyUnit) (\s@UpdateAssetProperty' {} a -> s {propertyUnit = a} :: UpdateAssetProperty)++-- | The ID of the asset to be updated.+updateAssetProperty_assetId :: Lens.Lens' UpdateAssetProperty Prelude.Text+updateAssetProperty_assetId = Lens.lens (\UpdateAssetProperty' {assetId} -> assetId) (\s@UpdateAssetProperty' {} a -> s {assetId = a} :: UpdateAssetProperty)++-- | The ID of the asset property to be updated.+updateAssetProperty_propertyId :: Lens.Lens' UpdateAssetProperty Prelude.Text+updateAssetProperty_propertyId = Lens.lens (\UpdateAssetProperty' {propertyId} -> propertyId) (\s@UpdateAssetProperty' {} a -> s {propertyId = a} :: UpdateAssetProperty)++instance Core.AWSRequest UpdateAssetProperty where+  type+    AWSResponse UpdateAssetProperty =+      UpdateAssetPropertyResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveNull UpdateAssetPropertyResponse'++instance Prelude.Hashable UpdateAssetProperty where+  hashWithSalt _salt UpdateAssetProperty' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` propertyAlias+      `Prelude.hashWithSalt` propertyNotificationState+      `Prelude.hashWithSalt` propertyUnit+      `Prelude.hashWithSalt` assetId+      `Prelude.hashWithSalt` propertyId++instance Prelude.NFData UpdateAssetProperty where+  rnf UpdateAssetProperty' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf propertyAlias+      `Prelude.seq` Prelude.rnf propertyNotificationState+      `Prelude.seq` Prelude.rnf propertyUnit+      `Prelude.seq` Prelude.rnf assetId+      `Prelude.seq` Prelude.rnf propertyId++instance Data.ToHeaders UpdateAssetProperty where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateAssetProperty where+  toJSON UpdateAssetProperty' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("propertyAlias" Data..=) Prelude.<$> propertyAlias,+            ("propertyNotificationState" Data..=)+              Prelude.<$> propertyNotificationState,+            ("propertyUnit" Data..=) Prelude.<$> propertyUnit+          ]+      )++instance Data.ToPath UpdateAssetProperty where+  toPath UpdateAssetProperty' {..} =+    Prelude.mconcat+      [ "/assets/",+        Data.toBS assetId,+        "/properties/",+        Data.toBS propertyId+      ]++instance Data.ToQuery UpdateAssetProperty where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateAssetPropertyResponse' smart constructor.+data UpdateAssetPropertyResponse = UpdateAssetPropertyResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateAssetPropertyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newUpdateAssetPropertyResponse ::+  UpdateAssetPropertyResponse+newUpdateAssetPropertyResponse =+  UpdateAssetPropertyResponse'++instance Prelude.NFData UpdateAssetPropertyResponse where+  rnf _ = ()
+ gen/Amazonka/IoTSiteWise/UpdateDashboard.hs view
@@ -0,0 +1,231 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.UpdateDashboard+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an IoT SiteWise Monitor dashboard.+module Amazonka.IoTSiteWise.UpdateDashboard+  ( -- * Creating a Request+    UpdateDashboard (..),+    newUpdateDashboard,++    -- * Request Lenses+    updateDashboard_clientToken,+    updateDashboard_dashboardDescription,+    updateDashboard_dashboardId,+    updateDashboard_dashboardName,+    updateDashboard_dashboardDefinition,++    -- * Destructuring the Response+    UpdateDashboardResponse (..),+    newUpdateDashboardResponse,++    -- * Response Lenses+    updateDashboardResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateDashboard' smart constructor.+data UpdateDashboard = UpdateDashboard'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | A new description for the dashboard.+    dashboardDescription :: Prelude.Maybe Prelude.Text,+    -- | The ID of the dashboard to update.+    dashboardId :: Prelude.Text,+    -- | A new friendly name for the dashboard.+    dashboardName :: Prelude.Text,+    -- | The new dashboard definition, as specified in a JSON literal. For+    -- detailed information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html Creating dashboards (CLI)>+    -- in the /IoT SiteWise User Guide/.+    dashboardDefinition :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateDashboard' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateDashboard_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'dashboardDescription', 'updateDashboard_dashboardDescription' - A new description for the dashboard.+--+-- 'dashboardId', 'updateDashboard_dashboardId' - The ID of the dashboard to update.+--+-- 'dashboardName', 'updateDashboard_dashboardName' - A new friendly name for the dashboard.+--+-- 'dashboardDefinition', 'updateDashboard_dashboardDefinition' - The new dashboard definition, as specified in a JSON literal. For+-- detailed information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html Creating dashboards (CLI)>+-- in the /IoT SiteWise User Guide/.+newUpdateDashboard ::+  -- | 'dashboardId'+  Prelude.Text ->+  -- | 'dashboardName'+  Prelude.Text ->+  -- | 'dashboardDefinition'+  Prelude.Text ->+  UpdateDashboard+newUpdateDashboard+  pDashboardId_+  pDashboardName_+  pDashboardDefinition_ =+    UpdateDashboard'+      { clientToken = Prelude.Nothing,+        dashboardDescription = Prelude.Nothing,+        dashboardId = pDashboardId_,+        dashboardName = pDashboardName_,+        dashboardDefinition = pDashboardDefinition_+      }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+updateDashboard_clientToken :: Lens.Lens' UpdateDashboard (Prelude.Maybe Prelude.Text)+updateDashboard_clientToken = Lens.lens (\UpdateDashboard' {clientToken} -> clientToken) (\s@UpdateDashboard' {} a -> s {clientToken = a} :: UpdateDashboard)++-- | A new description for the dashboard.+updateDashboard_dashboardDescription :: Lens.Lens' UpdateDashboard (Prelude.Maybe Prelude.Text)+updateDashboard_dashboardDescription = Lens.lens (\UpdateDashboard' {dashboardDescription} -> dashboardDescription) (\s@UpdateDashboard' {} a -> s {dashboardDescription = a} :: UpdateDashboard)++-- | The ID of the dashboard to update.+updateDashboard_dashboardId :: Lens.Lens' UpdateDashboard Prelude.Text+updateDashboard_dashboardId = Lens.lens (\UpdateDashboard' {dashboardId} -> dashboardId) (\s@UpdateDashboard' {} a -> s {dashboardId = a} :: UpdateDashboard)++-- | A new friendly name for the dashboard.+updateDashboard_dashboardName :: Lens.Lens' UpdateDashboard Prelude.Text+updateDashboard_dashboardName = Lens.lens (\UpdateDashboard' {dashboardName} -> dashboardName) (\s@UpdateDashboard' {} a -> s {dashboardName = a} :: UpdateDashboard)++-- | The new dashboard definition, as specified in a JSON literal. For+-- detailed information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-dashboards-using-aws-cli.html Creating dashboards (CLI)>+-- in the /IoT SiteWise User Guide/.+updateDashboard_dashboardDefinition :: Lens.Lens' UpdateDashboard Prelude.Text+updateDashboard_dashboardDefinition = Lens.lens (\UpdateDashboard' {dashboardDefinition} -> dashboardDefinition) (\s@UpdateDashboard' {} a -> s {dashboardDefinition = a} :: UpdateDashboard)++instance Core.AWSRequest UpdateDashboard where+  type+    AWSResponse UpdateDashboard =+      UpdateDashboardResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateDashboardResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateDashboard where+  hashWithSalt _salt UpdateDashboard' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` dashboardDescription+      `Prelude.hashWithSalt` dashboardId+      `Prelude.hashWithSalt` dashboardName+      `Prelude.hashWithSalt` dashboardDefinition++instance Prelude.NFData UpdateDashboard where+  rnf UpdateDashboard' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf dashboardDescription+      `Prelude.seq` Prelude.rnf dashboardId+      `Prelude.seq` Prelude.rnf dashboardName+      `Prelude.seq` Prelude.rnf dashboardDefinition++instance Data.ToHeaders UpdateDashboard where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateDashboard where+  toJSON UpdateDashboard' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("dashboardDescription" Data..=)+              Prelude.<$> dashboardDescription,+            Prelude.Just ("dashboardName" Data..= dashboardName),+            Prelude.Just+              ("dashboardDefinition" Data..= dashboardDefinition)+          ]+      )++instance Data.ToPath UpdateDashboard where+  toPath UpdateDashboard' {..} =+    Prelude.mconcat+      ["/dashboards/", Data.toBS dashboardId]++instance Data.ToQuery UpdateDashboard where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateDashboardResponse' smart constructor.+data UpdateDashboardResponse = UpdateDashboardResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateDashboardResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateDashboardResponse_httpStatus' - The response's http status code.+newUpdateDashboardResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateDashboardResponse+newUpdateDashboardResponse pHttpStatus_ =+  UpdateDashboardResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+updateDashboardResponse_httpStatus :: Lens.Lens' UpdateDashboardResponse Prelude.Int+updateDashboardResponse_httpStatus = Lens.lens (\UpdateDashboardResponse' {httpStatus} -> httpStatus) (\s@UpdateDashboardResponse' {} a -> s {httpStatus = a} :: UpdateDashboardResponse)++instance Prelude.NFData UpdateDashboardResponse where+  rnf UpdateDashboardResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/UpdateGateway.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.IoTSiteWise.UpdateGateway+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates a gateway\'s name.+module Amazonka.IoTSiteWise.UpdateGateway+  ( -- * Creating a Request+    UpdateGateway (..),+    newUpdateGateway,++    -- * Request Lenses+    updateGateway_gatewayId,+    updateGateway_gatewayName,++    -- * Destructuring the Response+    UpdateGatewayResponse (..),+    newUpdateGatewayResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateGateway' smart constructor.+data UpdateGateway = UpdateGateway'+  { -- | The ID of the gateway to update.+    gatewayId :: Prelude.Text,+    -- | A unique, friendly name for the gateway.+    gatewayName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateGateway' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'gatewayId', 'updateGateway_gatewayId' - The ID of the gateway to update.+--+-- 'gatewayName', 'updateGateway_gatewayName' - A unique, friendly name for the gateway.+newUpdateGateway ::+  -- | 'gatewayId'+  Prelude.Text ->+  -- | 'gatewayName'+  Prelude.Text ->+  UpdateGateway+newUpdateGateway pGatewayId_ pGatewayName_ =+  UpdateGateway'+    { gatewayId = pGatewayId_,+      gatewayName = pGatewayName_+    }++-- | The ID of the gateway to update.+updateGateway_gatewayId :: Lens.Lens' UpdateGateway Prelude.Text+updateGateway_gatewayId = Lens.lens (\UpdateGateway' {gatewayId} -> gatewayId) (\s@UpdateGateway' {} a -> s {gatewayId = a} :: UpdateGateway)++-- | A unique, friendly name for the gateway.+updateGateway_gatewayName :: Lens.Lens' UpdateGateway Prelude.Text+updateGateway_gatewayName = Lens.lens (\UpdateGateway' {gatewayName} -> gatewayName) (\s@UpdateGateway' {} a -> s {gatewayName = a} :: UpdateGateway)++instance Core.AWSRequest UpdateGateway where+  type+    AWSResponse UpdateGateway =+      UpdateGatewayResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveNull UpdateGatewayResponse'++instance Prelude.Hashable UpdateGateway where+  hashWithSalt _salt UpdateGateway' {..} =+    _salt+      `Prelude.hashWithSalt` gatewayId+      `Prelude.hashWithSalt` gatewayName++instance Prelude.NFData UpdateGateway where+  rnf UpdateGateway' {..} =+    Prelude.rnf gatewayId+      `Prelude.seq` Prelude.rnf gatewayName++instance Data.ToHeaders UpdateGateway where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateGateway where+  toJSON UpdateGateway' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("gatewayName" Data..= gatewayName)]+      )++instance Data.ToPath UpdateGateway where+  toPath UpdateGateway' {..} =+    Prelude.mconcat+      ["/20200301/gateways/", Data.toBS gatewayId]++instance Data.ToQuery UpdateGateway where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateGatewayResponse' smart constructor.+data UpdateGatewayResponse = UpdateGatewayResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateGatewayResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newUpdateGatewayResponse ::+  UpdateGatewayResponse+newUpdateGatewayResponse = UpdateGatewayResponse'++instance Prelude.NFData UpdateGatewayResponse where+  rnf _ = ()
+ gen/Amazonka/IoTSiteWise/UpdateGatewayCapabilityConfiguration.hs view
@@ -0,0 +1,324 @@+{-# 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.IoTSiteWise.UpdateGatewayCapabilityConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates a gateway capability configuration or defines a new capability+-- configuration. Each gateway capability defines data sources for a+-- gateway. A capability configuration can contain multiple data source+-- configurations. If you define OPC-UA sources for a gateway in the IoT+-- SiteWise console, all of your OPC-UA sources are stored in one+-- capability configuration. To list all capability configurations for a+-- gateway, use+-- <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeGateway.html DescribeGateway>.+module Amazonka.IoTSiteWise.UpdateGatewayCapabilityConfiguration+  ( -- * Creating a Request+    UpdateGatewayCapabilityConfiguration (..),+    newUpdateGatewayCapabilityConfiguration,++    -- * Request Lenses+    updateGatewayCapabilityConfiguration_gatewayId,+    updateGatewayCapabilityConfiguration_capabilityNamespace,+    updateGatewayCapabilityConfiguration_capabilityConfiguration,++    -- * Destructuring the Response+    UpdateGatewayCapabilityConfigurationResponse (..),+    newUpdateGatewayCapabilityConfigurationResponse,++    -- * Response Lenses+    updateGatewayCapabilityConfigurationResponse_httpStatus,+    updateGatewayCapabilityConfigurationResponse_capabilityNamespace,+    updateGatewayCapabilityConfigurationResponse_capabilitySyncStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateGatewayCapabilityConfiguration' smart constructor.+data UpdateGatewayCapabilityConfiguration = UpdateGatewayCapabilityConfiguration'+  { -- | The ID of the gateway to be updated.+    gatewayId :: Prelude.Text,+    -- | The namespace of the gateway capability configuration to be updated. For+    -- example, if you configure OPC-UA sources from the IoT SiteWise console,+    -- your OPC-UA capability configuration has the namespace+    -- @iotsitewise:opcuacollector:version@, where @version@ is a number such+    -- as @1@.+    capabilityNamespace :: Prelude.Text,+    -- | The JSON document that defines the configuration for the gateway+    -- capability. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-sources.html#configure-source-cli Configuring data sources (CLI)>+    -- in the /IoT SiteWise User Guide/.+    capabilityConfiguration :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateGatewayCapabilityConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'gatewayId', 'updateGatewayCapabilityConfiguration_gatewayId' - The ID of the gateway to be updated.+--+-- 'capabilityNamespace', 'updateGatewayCapabilityConfiguration_capabilityNamespace' - The namespace of the gateway capability configuration to be updated. For+-- example, if you configure OPC-UA sources from the IoT SiteWise console,+-- your OPC-UA capability configuration has the namespace+-- @iotsitewise:opcuacollector:version@, where @version@ is a number such+-- as @1@.+--+-- 'capabilityConfiguration', 'updateGatewayCapabilityConfiguration_capabilityConfiguration' - The JSON document that defines the configuration for the gateway+-- capability. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-sources.html#configure-source-cli Configuring data sources (CLI)>+-- in the /IoT SiteWise User Guide/.+newUpdateGatewayCapabilityConfiguration ::+  -- | 'gatewayId'+  Prelude.Text ->+  -- | 'capabilityNamespace'+  Prelude.Text ->+  -- | 'capabilityConfiguration'+  Prelude.Text ->+  UpdateGatewayCapabilityConfiguration+newUpdateGatewayCapabilityConfiguration+  pGatewayId_+  pCapabilityNamespace_+  pCapabilityConfiguration_ =+    UpdateGatewayCapabilityConfiguration'+      { gatewayId =+          pGatewayId_,+        capabilityNamespace =+          pCapabilityNamespace_,+        capabilityConfiguration =+          pCapabilityConfiguration_+      }++-- | The ID of the gateway to be updated.+updateGatewayCapabilityConfiguration_gatewayId :: Lens.Lens' UpdateGatewayCapabilityConfiguration Prelude.Text+updateGatewayCapabilityConfiguration_gatewayId = Lens.lens (\UpdateGatewayCapabilityConfiguration' {gatewayId} -> gatewayId) (\s@UpdateGatewayCapabilityConfiguration' {} a -> s {gatewayId = a} :: UpdateGatewayCapabilityConfiguration)++-- | The namespace of the gateway capability configuration to be updated. For+-- example, if you configure OPC-UA sources from the IoT SiteWise console,+-- your OPC-UA capability configuration has the namespace+-- @iotsitewise:opcuacollector:version@, where @version@ is a number such+-- as @1@.+updateGatewayCapabilityConfiguration_capabilityNamespace :: Lens.Lens' UpdateGatewayCapabilityConfiguration Prelude.Text+updateGatewayCapabilityConfiguration_capabilityNamespace = Lens.lens (\UpdateGatewayCapabilityConfiguration' {capabilityNamespace} -> capabilityNamespace) (\s@UpdateGatewayCapabilityConfiguration' {} a -> s {capabilityNamespace = a} :: UpdateGatewayCapabilityConfiguration)++-- | The JSON document that defines the configuration for the gateway+-- capability. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-sources.html#configure-source-cli Configuring data sources (CLI)>+-- in the /IoT SiteWise User Guide/.+updateGatewayCapabilityConfiguration_capabilityConfiguration :: Lens.Lens' UpdateGatewayCapabilityConfiguration Prelude.Text+updateGatewayCapabilityConfiguration_capabilityConfiguration = Lens.lens (\UpdateGatewayCapabilityConfiguration' {capabilityConfiguration} -> capabilityConfiguration) (\s@UpdateGatewayCapabilityConfiguration' {} a -> s {capabilityConfiguration = a} :: UpdateGatewayCapabilityConfiguration)++instance+  Core.AWSRequest+    UpdateGatewayCapabilityConfiguration+  where+  type+    AWSResponse UpdateGatewayCapabilityConfiguration =+      UpdateGatewayCapabilityConfigurationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateGatewayCapabilityConfigurationResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "capabilityNamespace")+            Prelude.<*> (x Data..:> "capabilitySyncStatus")+      )++instance+  Prelude.Hashable+    UpdateGatewayCapabilityConfiguration+  where+  hashWithSalt+    _salt+    UpdateGatewayCapabilityConfiguration' {..} =+      _salt+        `Prelude.hashWithSalt` gatewayId+        `Prelude.hashWithSalt` capabilityNamespace+        `Prelude.hashWithSalt` capabilityConfiguration++instance+  Prelude.NFData+    UpdateGatewayCapabilityConfiguration+  where+  rnf UpdateGatewayCapabilityConfiguration' {..} =+    Prelude.rnf gatewayId+      `Prelude.seq` Prelude.rnf capabilityNamespace+      `Prelude.seq` Prelude.rnf capabilityConfiguration++instance+  Data.ToHeaders+    UpdateGatewayCapabilityConfiguration+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    UpdateGatewayCapabilityConfiguration+  where+  toJSON UpdateGatewayCapabilityConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("capabilityNamespace" Data..= capabilityNamespace),+            Prelude.Just+              ( "capabilityConfiguration"+                  Data..= capabilityConfiguration+              )+          ]+      )++instance+  Data.ToPath+    UpdateGatewayCapabilityConfiguration+  where+  toPath UpdateGatewayCapabilityConfiguration' {..} =+    Prelude.mconcat+      [ "/20200301/gateways/",+        Data.toBS gatewayId,+        "/capability"+      ]++instance+  Data.ToQuery+    UpdateGatewayCapabilityConfiguration+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateGatewayCapabilityConfigurationResponse' smart constructor.+data UpdateGatewayCapabilityConfigurationResponse = UpdateGatewayCapabilityConfigurationResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The namespace of the gateway capability.+    capabilityNamespace :: Prelude.Text,+    -- | The synchronization status of the capability configuration. The sync+    -- status can be one of the following:+    --+    -- -   @IN_SYNC@ – The gateway is running the capability configuration.+    --+    -- -   @OUT_OF_SYNC@ – The gateway hasn\'t received the capability+    --     configuration.+    --+    -- -   @SYNC_FAILED@ – The gateway rejected the capability configuration.+    --+    -- After you update a capability configuration, its sync status is+    -- @OUT_OF_SYNC@ until the gateway receives and applies or rejects the+    -- updated configuration.+    capabilitySyncStatus :: CapabilitySyncStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateGatewayCapabilityConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateGatewayCapabilityConfigurationResponse_httpStatus' - The response's http status code.+--+-- 'capabilityNamespace', 'updateGatewayCapabilityConfigurationResponse_capabilityNamespace' - The namespace of the gateway capability.+--+-- 'capabilitySyncStatus', 'updateGatewayCapabilityConfigurationResponse_capabilitySyncStatus' - The synchronization status of the capability configuration. The sync+-- status can be one of the following:+--+-- -   @IN_SYNC@ – The gateway is running the capability configuration.+--+-- -   @OUT_OF_SYNC@ – The gateway hasn\'t received the capability+--     configuration.+--+-- -   @SYNC_FAILED@ – The gateway rejected the capability configuration.+--+-- After you update a capability configuration, its sync status is+-- @OUT_OF_SYNC@ until the gateway receives and applies or rejects the+-- updated configuration.+newUpdateGatewayCapabilityConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'capabilityNamespace'+  Prelude.Text ->+  -- | 'capabilitySyncStatus'+  CapabilitySyncStatus ->+  UpdateGatewayCapabilityConfigurationResponse+newUpdateGatewayCapabilityConfigurationResponse+  pHttpStatus_+  pCapabilityNamespace_+  pCapabilitySyncStatus_ =+    UpdateGatewayCapabilityConfigurationResponse'+      { httpStatus =+          pHttpStatus_,+        capabilityNamespace =+          pCapabilityNamespace_,+        capabilitySyncStatus =+          pCapabilitySyncStatus_+      }++-- | The response's http status code.+updateGatewayCapabilityConfigurationResponse_httpStatus :: Lens.Lens' UpdateGatewayCapabilityConfigurationResponse Prelude.Int+updateGatewayCapabilityConfigurationResponse_httpStatus = Lens.lens (\UpdateGatewayCapabilityConfigurationResponse' {httpStatus} -> httpStatus) (\s@UpdateGatewayCapabilityConfigurationResponse' {} a -> s {httpStatus = a} :: UpdateGatewayCapabilityConfigurationResponse)++-- | The namespace of the gateway capability.+updateGatewayCapabilityConfigurationResponse_capabilityNamespace :: Lens.Lens' UpdateGatewayCapabilityConfigurationResponse Prelude.Text+updateGatewayCapabilityConfigurationResponse_capabilityNamespace = Lens.lens (\UpdateGatewayCapabilityConfigurationResponse' {capabilityNamespace} -> capabilityNamespace) (\s@UpdateGatewayCapabilityConfigurationResponse' {} a -> s {capabilityNamespace = a} :: UpdateGatewayCapabilityConfigurationResponse)++-- | The synchronization status of the capability configuration. The sync+-- status can be one of the following:+--+-- -   @IN_SYNC@ – The gateway is running the capability configuration.+--+-- -   @OUT_OF_SYNC@ – The gateway hasn\'t received the capability+--     configuration.+--+-- -   @SYNC_FAILED@ – The gateway rejected the capability configuration.+--+-- After you update a capability configuration, its sync status is+-- @OUT_OF_SYNC@ until the gateway receives and applies or rejects the+-- updated configuration.+updateGatewayCapabilityConfigurationResponse_capabilitySyncStatus :: Lens.Lens' UpdateGatewayCapabilityConfigurationResponse CapabilitySyncStatus+updateGatewayCapabilityConfigurationResponse_capabilitySyncStatus = Lens.lens (\UpdateGatewayCapabilityConfigurationResponse' {capabilitySyncStatus} -> capabilitySyncStatus) (\s@UpdateGatewayCapabilityConfigurationResponse' {} a -> s {capabilitySyncStatus = a} :: UpdateGatewayCapabilityConfigurationResponse)++instance+  Prelude.NFData+    UpdateGatewayCapabilityConfigurationResponse+  where+  rnf UpdateGatewayCapabilityConfigurationResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf capabilityNamespace+      `Prelude.seq` Prelude.rnf capabilitySyncStatus
+ gen/Amazonka/IoTSiteWise/UpdatePortal.hs view
@@ -0,0 +1,324 @@+{-# 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.IoTSiteWise.UpdatePortal+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an IoT SiteWise Monitor portal.+module Amazonka.IoTSiteWise.UpdatePortal+  ( -- * Creating a Request+    UpdatePortal (..),+    newUpdatePortal,++    -- * Request Lenses+    updatePortal_alarms,+    updatePortal_clientToken,+    updatePortal_notificationSenderEmail,+    updatePortal_portalDescription,+    updatePortal_portalLogoImage,+    updatePortal_portalId,+    updatePortal_portalName,+    updatePortal_portalContactEmail,+    updatePortal_roleArn,++    -- * Destructuring the Response+    UpdatePortalResponse (..),+    newUpdatePortalResponse,++    -- * Response Lenses+    updatePortalResponse_httpStatus,+    updatePortalResponse_portalStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdatePortal' smart constructor.+data UpdatePortal = UpdatePortal'+  { -- | Contains the configuration information of an alarm created in an IoT+    -- SiteWise Monitor portal. You can use the alarm to monitor an asset+    -- property and get notified when the asset property value is outside a+    -- specified range. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html Monitoring with alarms>+    -- in the /IoT SiteWise Application Guide/.+    alarms :: Prelude.Maybe Alarms,+    -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The email address that sends alarm notifications.+    notificationSenderEmail :: Prelude.Maybe Prelude.Text,+    -- | A new description for the portal.+    portalDescription :: Prelude.Maybe Prelude.Text,+    portalLogoImage :: Prelude.Maybe Image,+    -- | The ID of the portal to update.+    portalId :: Prelude.Text,+    -- | A new friendly name for the portal.+    portalName :: Prelude.Text,+    -- | The Amazon Web Services administrator\'s contact email address.+    portalContactEmail :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of a service role that allows the portal\'s users to access your IoT+    -- SiteWise resources on your behalf. For more information, see+    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+    -- in the /IoT SiteWise User Guide/.+    roleArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdatePortal' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'alarms', 'updatePortal_alarms' - Contains the configuration information of an alarm created in an IoT+-- SiteWise Monitor portal. You can use the alarm to monitor an asset+-- property and get notified when the asset property value is outside a+-- specified range. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html Monitoring with alarms>+-- in the /IoT SiteWise Application Guide/.+--+-- 'clientToken', 'updatePortal_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'notificationSenderEmail', 'updatePortal_notificationSenderEmail' - The email address that sends alarm notifications.+--+-- 'portalDescription', 'updatePortal_portalDescription' - A new description for the portal.+--+-- 'portalLogoImage', 'updatePortal_portalLogoImage' - Undocumented member.+--+-- 'portalId', 'updatePortal_portalId' - The ID of the portal to update.+--+-- 'portalName', 'updatePortal_portalName' - A new friendly name for the portal.+--+-- 'portalContactEmail', 'updatePortal_portalContactEmail' - The Amazon Web Services administrator\'s contact email address.+--+-- 'roleArn', 'updatePortal_roleArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of a service role that allows the portal\'s users to access your IoT+-- SiteWise resources on your behalf. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+-- in the /IoT SiteWise User Guide/.+newUpdatePortal ::+  -- | 'portalId'+  Prelude.Text ->+  -- | 'portalName'+  Prelude.Text ->+  -- | 'portalContactEmail'+  Prelude.Text ->+  -- | 'roleArn'+  Prelude.Text ->+  UpdatePortal+newUpdatePortal+  pPortalId_+  pPortalName_+  pPortalContactEmail_+  pRoleArn_ =+    UpdatePortal'+      { alarms = Prelude.Nothing,+        clientToken = Prelude.Nothing,+        notificationSenderEmail = Prelude.Nothing,+        portalDescription = Prelude.Nothing,+        portalLogoImage = Prelude.Nothing,+        portalId = pPortalId_,+        portalName = pPortalName_,+        portalContactEmail = pPortalContactEmail_,+        roleArn = pRoleArn_+      }++-- | Contains the configuration information of an alarm created in an IoT+-- SiteWise Monitor portal. You can use the alarm to monitor an asset+-- property and get notified when the asset property value is outside a+-- specified range. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html Monitoring with alarms>+-- in the /IoT SiteWise Application Guide/.+updatePortal_alarms :: Lens.Lens' UpdatePortal (Prelude.Maybe Alarms)+updatePortal_alarms = Lens.lens (\UpdatePortal' {alarms} -> alarms) (\s@UpdatePortal' {} a -> s {alarms = a} :: UpdatePortal)++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+updatePortal_clientToken :: Lens.Lens' UpdatePortal (Prelude.Maybe Prelude.Text)+updatePortal_clientToken = Lens.lens (\UpdatePortal' {clientToken} -> clientToken) (\s@UpdatePortal' {} a -> s {clientToken = a} :: UpdatePortal)++-- | The email address that sends alarm notifications.+updatePortal_notificationSenderEmail :: Lens.Lens' UpdatePortal (Prelude.Maybe Prelude.Text)+updatePortal_notificationSenderEmail = Lens.lens (\UpdatePortal' {notificationSenderEmail} -> notificationSenderEmail) (\s@UpdatePortal' {} a -> s {notificationSenderEmail = a} :: UpdatePortal)++-- | A new description for the portal.+updatePortal_portalDescription :: Lens.Lens' UpdatePortal (Prelude.Maybe Prelude.Text)+updatePortal_portalDescription = Lens.lens (\UpdatePortal' {portalDescription} -> portalDescription) (\s@UpdatePortal' {} a -> s {portalDescription = a} :: UpdatePortal)++-- | Undocumented member.+updatePortal_portalLogoImage :: Lens.Lens' UpdatePortal (Prelude.Maybe Image)+updatePortal_portalLogoImage = Lens.lens (\UpdatePortal' {portalLogoImage} -> portalLogoImage) (\s@UpdatePortal' {} a -> s {portalLogoImage = a} :: UpdatePortal)++-- | The ID of the portal to update.+updatePortal_portalId :: Lens.Lens' UpdatePortal Prelude.Text+updatePortal_portalId = Lens.lens (\UpdatePortal' {portalId} -> portalId) (\s@UpdatePortal' {} a -> s {portalId = a} :: UpdatePortal)++-- | A new friendly name for the portal.+updatePortal_portalName :: Lens.Lens' UpdatePortal Prelude.Text+updatePortal_portalName = Lens.lens (\UpdatePortal' {portalName} -> portalName) (\s@UpdatePortal' {} a -> s {portalName = a} :: UpdatePortal)++-- | The Amazon Web Services administrator\'s contact email address.+updatePortal_portalContactEmail :: Lens.Lens' UpdatePortal Prelude.Text+updatePortal_portalContactEmail = Lens.lens (\UpdatePortal' {portalContactEmail} -> portalContactEmail) (\s@UpdatePortal' {} a -> s {portalContactEmail = a} :: UpdatePortal)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of a service role that allows the portal\'s users to access your IoT+-- SiteWise resources on your behalf. For more information, see+-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/monitor-service-role.html Using service roles for IoT SiteWise Monitor>+-- in the /IoT SiteWise User Guide/.+updatePortal_roleArn :: Lens.Lens' UpdatePortal Prelude.Text+updatePortal_roleArn = Lens.lens (\UpdatePortal' {roleArn} -> roleArn) (\s@UpdatePortal' {} a -> s {roleArn = a} :: UpdatePortal)++instance Core.AWSRequest UpdatePortal where+  type AWSResponse UpdatePortal = UpdatePortalResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdatePortalResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "portalStatus")+      )++instance Prelude.Hashable UpdatePortal where+  hashWithSalt _salt UpdatePortal' {..} =+    _salt+      `Prelude.hashWithSalt` alarms+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` notificationSenderEmail+      `Prelude.hashWithSalt` portalDescription+      `Prelude.hashWithSalt` portalLogoImage+      `Prelude.hashWithSalt` portalId+      `Prelude.hashWithSalt` portalName+      `Prelude.hashWithSalt` portalContactEmail+      `Prelude.hashWithSalt` roleArn++instance Prelude.NFData UpdatePortal where+  rnf UpdatePortal' {..} =+    Prelude.rnf alarms+      `Prelude.seq` Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf notificationSenderEmail+      `Prelude.seq` Prelude.rnf portalDescription+      `Prelude.seq` Prelude.rnf portalLogoImage+      `Prelude.seq` Prelude.rnf portalId+      `Prelude.seq` Prelude.rnf portalName+      `Prelude.seq` Prelude.rnf portalContactEmail+      `Prelude.seq` Prelude.rnf roleArn++instance Data.ToHeaders UpdatePortal where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdatePortal where+  toJSON UpdatePortal' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("alarms" Data..=) Prelude.<$> alarms,+            ("clientToken" Data..=) Prelude.<$> clientToken,+            ("notificationSenderEmail" Data..=)+              Prelude.<$> notificationSenderEmail,+            ("portalDescription" Data..=)+              Prelude.<$> portalDescription,+            ("portalLogoImage" Data..=)+              Prelude.<$> portalLogoImage,+            Prelude.Just ("portalName" Data..= portalName),+            Prelude.Just+              ("portalContactEmail" Data..= portalContactEmail),+            Prelude.Just ("roleArn" Data..= roleArn)+          ]+      )++instance Data.ToPath UpdatePortal where+  toPath UpdatePortal' {..} =+    Prelude.mconcat ["/portals/", Data.toBS portalId]++instance Data.ToQuery UpdatePortal where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdatePortalResponse' smart constructor.+data UpdatePortalResponse = UpdatePortalResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The status of the portal, which contains a state (@UPDATING@ after+    -- successfully calling this operation) and any error message.+    portalStatus :: PortalStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdatePortalResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updatePortalResponse_httpStatus' - The response's http status code.+--+-- 'portalStatus', 'updatePortalResponse_portalStatus' - The status of the portal, which contains a state (@UPDATING@ after+-- successfully calling this operation) and any error message.+newUpdatePortalResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'portalStatus'+  PortalStatus ->+  UpdatePortalResponse+newUpdatePortalResponse pHttpStatus_ pPortalStatus_ =+  UpdatePortalResponse'+    { httpStatus = pHttpStatus_,+      portalStatus = pPortalStatus_+    }++-- | The response's http status code.+updatePortalResponse_httpStatus :: Lens.Lens' UpdatePortalResponse Prelude.Int+updatePortalResponse_httpStatus = Lens.lens (\UpdatePortalResponse' {httpStatus} -> httpStatus) (\s@UpdatePortalResponse' {} a -> s {httpStatus = a} :: UpdatePortalResponse)++-- | The status of the portal, which contains a state (@UPDATING@ after+-- successfully calling this operation) and any error message.+updatePortalResponse_portalStatus :: Lens.Lens' UpdatePortalResponse PortalStatus+updatePortalResponse_portalStatus = Lens.lens (\UpdatePortalResponse' {portalStatus} -> portalStatus) (\s@UpdatePortalResponse' {} a -> s {portalStatus = a} :: UpdatePortalResponse)++instance Prelude.NFData UpdatePortalResponse where+  rnf UpdatePortalResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf portalStatus
+ gen/Amazonka/IoTSiteWise/UpdateProject.hs view
@@ -0,0 +1,202 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IoTSiteWise.UpdateProject+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates an IoT SiteWise Monitor project.+module Amazonka.IoTSiteWise.UpdateProject+  ( -- * Creating a Request+    UpdateProject (..),+    newUpdateProject,++    -- * Request Lenses+    updateProject_clientToken,+    updateProject_projectDescription,+    updateProject_projectId,+    updateProject_projectName,++    -- * Destructuring the Response+    UpdateProjectResponse (..),+    newUpdateProjectResponse,++    -- * Response Lenses+    updateProjectResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateProject' smart constructor.+data UpdateProject = UpdateProject'+  { -- | A unique case-sensitive identifier that you can provide to ensure the+    -- idempotency of the request. Don\'t reuse this client token if a new+    -- idempotent request is required.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | A new description for the project.+    projectDescription :: Prelude.Maybe Prelude.Text,+    -- | The ID of the project to update.+    projectId :: Prelude.Text,+    -- | A new friendly name for the project.+    projectName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateProject' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'clientToken', 'updateProject_clientToken' - A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+--+-- 'projectDescription', 'updateProject_projectDescription' - A new description for the project.+--+-- 'projectId', 'updateProject_projectId' - The ID of the project to update.+--+-- 'projectName', 'updateProject_projectName' - A new friendly name for the project.+newUpdateProject ::+  -- | 'projectId'+  Prelude.Text ->+  -- | 'projectName'+  Prelude.Text ->+  UpdateProject+newUpdateProject pProjectId_ pProjectName_ =+  UpdateProject'+    { clientToken = Prelude.Nothing,+      projectDescription = Prelude.Nothing,+      projectId = pProjectId_,+      projectName = pProjectName_+    }++-- | A unique case-sensitive identifier that you can provide to ensure the+-- idempotency of the request. Don\'t reuse this client token if a new+-- idempotent request is required.+updateProject_clientToken :: Lens.Lens' UpdateProject (Prelude.Maybe Prelude.Text)+updateProject_clientToken = Lens.lens (\UpdateProject' {clientToken} -> clientToken) (\s@UpdateProject' {} a -> s {clientToken = a} :: UpdateProject)++-- | A new description for the project.+updateProject_projectDescription :: Lens.Lens' UpdateProject (Prelude.Maybe Prelude.Text)+updateProject_projectDescription = Lens.lens (\UpdateProject' {projectDescription} -> projectDescription) (\s@UpdateProject' {} a -> s {projectDescription = a} :: UpdateProject)++-- | The ID of the project to update.+updateProject_projectId :: Lens.Lens' UpdateProject Prelude.Text+updateProject_projectId = Lens.lens (\UpdateProject' {projectId} -> projectId) (\s@UpdateProject' {} a -> s {projectId = a} :: UpdateProject)++-- | A new friendly name for the project.+updateProject_projectName :: Lens.Lens' UpdateProject Prelude.Text+updateProject_projectName = Lens.lens (\UpdateProject' {projectName} -> projectName) (\s@UpdateProject' {} a -> s {projectName = a} :: UpdateProject)++instance Core.AWSRequest UpdateProject where+  type+    AWSResponse UpdateProject =+      UpdateProjectResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateProjectResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateProject where+  hashWithSalt _salt UpdateProject' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` projectDescription+      `Prelude.hashWithSalt` projectId+      `Prelude.hashWithSalt` projectName++instance Prelude.NFData UpdateProject where+  rnf UpdateProject' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf projectDescription+      `Prelude.seq` Prelude.rnf projectId+      `Prelude.seq` Prelude.rnf projectName++instance Data.ToHeaders UpdateProject where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateProject where+  toJSON UpdateProject' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("projectDescription" Data..=)+              Prelude.<$> projectDescription,+            Prelude.Just ("projectName" Data..= projectName)+          ]+      )++instance Data.ToPath UpdateProject where+  toPath UpdateProject' {..} =+    Prelude.mconcat ["/projects/", Data.toBS projectId]++instance Data.ToQuery UpdateProject where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateProjectResponse' smart constructor.+data UpdateProjectResponse = UpdateProjectResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateProjectResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'updateProjectResponse_httpStatus' - The response's http status code.+newUpdateProjectResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateProjectResponse+newUpdateProjectResponse pHttpStatus_ =+  UpdateProjectResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+updateProjectResponse_httpStatus :: Lens.Lens' UpdateProjectResponse Prelude.Int+updateProjectResponse_httpStatus = Lens.lens (\UpdateProjectResponse' {httpStatus} -> httpStatus) (\s@UpdateProjectResponse' {} a -> s {httpStatus = a} :: UpdateProjectResponse)++instance Prelude.NFData UpdateProjectResponse where+  rnf UpdateProjectResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/IoTSiteWise/Waiters.hs view
@@ -0,0 +1,137 @@+{-# 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.IoTSiteWise.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.IoTSiteWise.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IoTSiteWise.DescribeAsset+import Amazonka.IoTSiteWise.DescribeAssetModel+import Amazonka.IoTSiteWise.DescribePortal+import Amazonka.IoTSiteWise.Lens+import Amazonka.IoTSiteWise.Types+import qualified Amazonka.Prelude as Prelude++-- | Polls 'Amazonka.IoTSiteWise.DescribeAsset' every 3 seconds until a successful state is reached. An error is returned after 20 failed checks.+newAssetActive :: Core.Wait DescribeAsset+newAssetActive =+  Core.Wait+    { Core.name = "AssetActive",+      Core.attempts = 20,+      Core.delay = 3,+      Core.acceptors =+        [ Core.matchAll+            "ACTIVE"+            Core.AcceptSuccess+            ( describeAssetResponse_assetStatus+                Prelude.. assetStatus_state+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchAll+            "FAILED"+            Core.AcceptFailure+            ( describeAssetResponse_assetStatus+                Prelude.. assetStatus_state+                Prelude.. Lens.to Data.toTextCI+            )+        ]+    }++-- | Polls 'Amazonka.IoTSiteWise.DescribeAssetModel' every 3 seconds until a successful state is reached. An error is returned after 20 failed checks.+newAssetModelActive :: Core.Wait DescribeAssetModel+newAssetModelActive =+  Core.Wait+    { Core.name = "AssetModelActive",+      Core.attempts = 20,+      Core.delay = 3,+      Core.acceptors =+        [ Core.matchAll+            "ACTIVE"+            Core.AcceptSuccess+            ( describeAssetModelResponse_assetModelStatus+                Prelude.. assetModelStatus_state+                Prelude.. Lens.to Data.toTextCI+            ),+          Core.matchAll+            "FAILED"+            Core.AcceptFailure+            ( describeAssetModelResponse_assetModelStatus+                Prelude.. assetModelStatus_state+                Prelude.. Lens.to Data.toTextCI+            )+        ]+    }++-- | Polls 'Amazonka.IoTSiteWise.DescribeAssetModel' every 3 seconds until a successful state is reached. An error is returned after 20 failed checks.+newAssetModelNotExists :: Core.Wait DescribeAssetModel+newAssetModelNotExists =+  Core.Wait+    { Core.name = "AssetModelNotExists",+      Core.attempts = 20,+      Core.delay = 3,+      Core.acceptors =+        [ Core.matchError+            "ResourceNotFoundException"+            Core.AcceptSuccess+        ]+    }++-- | Polls 'Amazonka.IoTSiteWise.DescribeAsset' every 3 seconds until a successful state is reached. An error is returned after 20 failed checks.+newAssetNotExists :: Core.Wait DescribeAsset+newAssetNotExists =+  Core.Wait+    { Core.name = "AssetNotExists",+      Core.attempts = 20,+      Core.delay = 3,+      Core.acceptors =+        [ Core.matchError+            "ResourceNotFoundException"+            Core.AcceptSuccess+        ]+    }++-- | Polls 'Amazonka.IoTSiteWise.DescribePortal' every 3 seconds until a successful state is reached. An error is returned after 20 failed checks.+newPortalActive :: Core.Wait DescribePortal+newPortalActive =+  Core.Wait+    { Core.name = "PortalActive",+      Core.attempts = 20,+      Core.delay = 3,+      Core.acceptors =+        [ Core.matchAll+            "ACTIVE"+            Core.AcceptSuccess+            ( describePortalResponse_portalStatus+                Prelude.. portalStatus_state+                Prelude.. Lens.to Data.toTextCI+            )+        ]+    }++-- | Polls 'Amazonka.IoTSiteWise.DescribePortal' every 3 seconds until a successful state is reached. An error is returned after 20 failed checks.+newPortalNotExists :: Core.Wait DescribePortal+newPortalNotExists =+  Core.Wait+    { Core.name = "PortalNotExists",+      Core.attempts = 20,+      Core.delay = 3,+      Core.acceptors =+        [ Core.matchError+            "ResourceNotFoundException"+            Core.AcceptSuccess+        ]+    }
+ 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.IoTSiteWise+import Test.Amazonka.IoTSiteWise.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "IoTSiteWise"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/IoTSiteWise.hs view
@@ -0,0 +1,1498 @@+{-# 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.IoTSiteWise+-- Copyright   : (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.IoTSiteWise where++import Amazonka.IoTSiteWise+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.IoTSiteWise.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"+--         [ requestAssociateAssets $+--             newAssociateAssets+--+--         , requestAssociateTimeSeriesToAssetProperty $+--             newAssociateTimeSeriesToAssetProperty+--+--         , requestBatchAssociateProjectAssets $+--             newBatchAssociateProjectAssets+--+--         , requestBatchDisassociateProjectAssets $+--             newBatchDisassociateProjectAssets+--+--         , requestBatchGetAssetPropertyAggregates $+--             newBatchGetAssetPropertyAggregates+--+--         , requestBatchGetAssetPropertyValue $+--             newBatchGetAssetPropertyValue+--+--         , requestBatchGetAssetPropertyValueHistory $+--             newBatchGetAssetPropertyValueHistory+--+--         , requestBatchPutAssetPropertyValue $+--             newBatchPutAssetPropertyValue+--+--         , requestCreateAccessPolicy $+--             newCreateAccessPolicy+--+--         , requestCreateAsset $+--             newCreateAsset+--+--         , requestCreateAssetModel $+--             newCreateAssetModel+--+--         , requestCreateBulkImportJob $+--             newCreateBulkImportJob+--+--         , requestCreateDashboard $+--             newCreateDashboard+--+--         , requestCreateGateway $+--             newCreateGateway+--+--         , requestCreatePortal $+--             newCreatePortal+--+--         , requestCreateProject $+--             newCreateProject+--+--         , requestDeleteAccessPolicy $+--             newDeleteAccessPolicy+--+--         , requestDeleteAsset $+--             newDeleteAsset+--+--         , requestDeleteAssetModel $+--             newDeleteAssetModel+--+--         , requestDeleteDashboard $+--             newDeleteDashboard+--+--         , requestDeleteGateway $+--             newDeleteGateway+--+--         , requestDeletePortal $+--             newDeletePortal+--+--         , requestDeleteProject $+--             newDeleteProject+--+--         , requestDeleteTimeSeries $+--             newDeleteTimeSeries+--+--         , requestDescribeAccessPolicy $+--             newDescribeAccessPolicy+--+--         , requestDescribeAsset $+--             newDescribeAsset+--+--         , requestDescribeAssetModel $+--             newDescribeAssetModel+--+--         , requestDescribeAssetProperty $+--             newDescribeAssetProperty+--+--         , requestDescribeBulkImportJob $+--             newDescribeBulkImportJob+--+--         , requestDescribeDashboard $+--             newDescribeDashboard+--+--         , requestDescribeDefaultEncryptionConfiguration $+--             newDescribeDefaultEncryptionConfiguration+--+--         , requestDescribeGateway $+--             newDescribeGateway+--+--         , requestDescribeGatewayCapabilityConfiguration $+--             newDescribeGatewayCapabilityConfiguration+--+--         , requestDescribeLoggingOptions $+--             newDescribeLoggingOptions+--+--         , requestDescribePortal $+--             newDescribePortal+--+--         , requestDescribeProject $+--             newDescribeProject+--+--         , requestDescribeStorageConfiguration $+--             newDescribeStorageConfiguration+--+--         , requestDescribeTimeSeries $+--             newDescribeTimeSeries+--+--         , requestDisassociateAssets $+--             newDisassociateAssets+--+--         , requestDisassociateTimeSeriesFromAssetProperty $+--             newDisassociateTimeSeriesFromAssetProperty+--+--         , requestGetAssetPropertyAggregates $+--             newGetAssetPropertyAggregates+--+--         , requestGetAssetPropertyValue $+--             newGetAssetPropertyValue+--+--         , requestGetAssetPropertyValueHistory $+--             newGetAssetPropertyValueHistory+--+--         , requestGetInterpolatedAssetPropertyValues $+--             newGetInterpolatedAssetPropertyValues+--+--         , requestListAccessPolicies $+--             newListAccessPolicies+--+--         , requestListAssetModelProperties $+--             newListAssetModelProperties+--+--         , requestListAssetModels $+--             newListAssetModels+--+--         , requestListAssetProperties $+--             newListAssetProperties+--+--         , requestListAssetRelationships $+--             newListAssetRelationships+--+--         , requestListAssets $+--             newListAssets+--+--         , requestListAssociatedAssets $+--             newListAssociatedAssets+--+--         , requestListBulkImportJobs $+--             newListBulkImportJobs+--+--         , requestListDashboards $+--             newListDashboards+--+--         , requestListGateways $+--             newListGateways+--+--         , requestListPortals $+--             newListPortals+--+--         , requestListProjectAssets $+--             newListProjectAssets+--+--         , requestListProjects $+--             newListProjects+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestListTimeSeries $+--             newListTimeSeries+--+--         , requestPutDefaultEncryptionConfiguration $+--             newPutDefaultEncryptionConfiguration+--+--         , requestPutLoggingOptions $+--             newPutLoggingOptions+--+--         , requestPutStorageConfiguration $+--             newPutStorageConfiguration+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateAccessPolicy $+--             newUpdateAccessPolicy+--+--         , requestUpdateAsset $+--             newUpdateAsset+--+--         , requestUpdateAssetModel $+--             newUpdateAssetModel+--+--         , requestUpdateAssetProperty $+--             newUpdateAssetProperty+--+--         , requestUpdateDashboard $+--             newUpdateDashboard+--+--         , requestUpdateGateway $+--             newUpdateGateway+--+--         , requestUpdateGatewayCapabilityConfiguration $+--             newUpdateGatewayCapabilityConfiguration+--+--         , requestUpdatePortal $+--             newUpdatePortal+--+--         , requestUpdateProject $+--             newUpdateProject+--+--           ]++--     , testGroup "response"+--         [ responseAssociateAssets $+--             newAssociateAssetsResponse+--+--         , responseAssociateTimeSeriesToAssetProperty $+--             newAssociateTimeSeriesToAssetPropertyResponse+--+--         , responseBatchAssociateProjectAssets $+--             newBatchAssociateProjectAssetsResponse+--+--         , responseBatchDisassociateProjectAssets $+--             newBatchDisassociateProjectAssetsResponse+--+--         , responseBatchGetAssetPropertyAggregates $+--             newBatchGetAssetPropertyAggregatesResponse+--+--         , responseBatchGetAssetPropertyValue $+--             newBatchGetAssetPropertyValueResponse+--+--         , responseBatchGetAssetPropertyValueHistory $+--             newBatchGetAssetPropertyValueHistoryResponse+--+--         , responseBatchPutAssetPropertyValue $+--             newBatchPutAssetPropertyValueResponse+--+--         , responseCreateAccessPolicy $+--             newCreateAccessPolicyResponse+--+--         , responseCreateAsset $+--             newCreateAssetResponse+--+--         , responseCreateAssetModel $+--             newCreateAssetModelResponse+--+--         , responseCreateBulkImportJob $+--             newCreateBulkImportJobResponse+--+--         , responseCreateDashboard $+--             newCreateDashboardResponse+--+--         , responseCreateGateway $+--             newCreateGatewayResponse+--+--         , responseCreatePortal $+--             newCreatePortalResponse+--+--         , responseCreateProject $+--             newCreateProjectResponse+--+--         , responseDeleteAccessPolicy $+--             newDeleteAccessPolicyResponse+--+--         , responseDeleteAsset $+--             newDeleteAssetResponse+--+--         , responseDeleteAssetModel $+--             newDeleteAssetModelResponse+--+--         , responseDeleteDashboard $+--             newDeleteDashboardResponse+--+--         , responseDeleteGateway $+--             newDeleteGatewayResponse+--+--         , responseDeletePortal $+--             newDeletePortalResponse+--+--         , responseDeleteProject $+--             newDeleteProjectResponse+--+--         , responseDeleteTimeSeries $+--             newDeleteTimeSeriesResponse+--+--         , responseDescribeAccessPolicy $+--             newDescribeAccessPolicyResponse+--+--         , responseDescribeAsset $+--             newDescribeAssetResponse+--+--         , responseDescribeAssetModel $+--             newDescribeAssetModelResponse+--+--         , responseDescribeAssetProperty $+--             newDescribeAssetPropertyResponse+--+--         , responseDescribeBulkImportJob $+--             newDescribeBulkImportJobResponse+--+--         , responseDescribeDashboard $+--             newDescribeDashboardResponse+--+--         , responseDescribeDefaultEncryptionConfiguration $+--             newDescribeDefaultEncryptionConfigurationResponse+--+--         , responseDescribeGateway $+--             newDescribeGatewayResponse+--+--         , responseDescribeGatewayCapabilityConfiguration $+--             newDescribeGatewayCapabilityConfigurationResponse+--+--         , responseDescribeLoggingOptions $+--             newDescribeLoggingOptionsResponse+--+--         , responseDescribePortal $+--             newDescribePortalResponse+--+--         , responseDescribeProject $+--             newDescribeProjectResponse+--+--         , responseDescribeStorageConfiguration $+--             newDescribeStorageConfigurationResponse+--+--         , responseDescribeTimeSeries $+--             newDescribeTimeSeriesResponse+--+--         , responseDisassociateAssets $+--             newDisassociateAssetsResponse+--+--         , responseDisassociateTimeSeriesFromAssetProperty $+--             newDisassociateTimeSeriesFromAssetPropertyResponse+--+--         , responseGetAssetPropertyAggregates $+--             newGetAssetPropertyAggregatesResponse+--+--         , responseGetAssetPropertyValue $+--             newGetAssetPropertyValueResponse+--+--         , responseGetAssetPropertyValueHistory $+--             newGetAssetPropertyValueHistoryResponse+--+--         , responseGetInterpolatedAssetPropertyValues $+--             newGetInterpolatedAssetPropertyValuesResponse+--+--         , responseListAccessPolicies $+--             newListAccessPoliciesResponse+--+--         , responseListAssetModelProperties $+--             newListAssetModelPropertiesResponse+--+--         , responseListAssetModels $+--             newListAssetModelsResponse+--+--         , responseListAssetProperties $+--             newListAssetPropertiesResponse+--+--         , responseListAssetRelationships $+--             newListAssetRelationshipsResponse+--+--         , responseListAssets $+--             newListAssetsResponse+--+--         , responseListAssociatedAssets $+--             newListAssociatedAssetsResponse+--+--         , responseListBulkImportJobs $+--             newListBulkImportJobsResponse+--+--         , responseListDashboards $+--             newListDashboardsResponse+--+--         , responseListGateways $+--             newListGatewaysResponse+--+--         , responseListPortals $+--             newListPortalsResponse+--+--         , responseListProjectAssets $+--             newListProjectAssetsResponse+--+--         , responseListProjects $+--             newListProjectsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responseListTimeSeries $+--             newListTimeSeriesResponse+--+--         , responsePutDefaultEncryptionConfiguration $+--             newPutDefaultEncryptionConfigurationResponse+--+--         , responsePutLoggingOptions $+--             newPutLoggingOptionsResponse+--+--         , responsePutStorageConfiguration $+--             newPutStorageConfigurationResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateAccessPolicy $+--             newUpdateAccessPolicyResponse+--+--         , responseUpdateAsset $+--             newUpdateAssetResponse+--+--         , responseUpdateAssetModel $+--             newUpdateAssetModelResponse+--+--         , responseUpdateAssetProperty $+--             newUpdateAssetPropertyResponse+--+--         , responseUpdateDashboard $+--             newUpdateDashboardResponse+--+--         , responseUpdateGateway $+--             newUpdateGatewayResponse+--+--         , responseUpdateGatewayCapabilityConfiguration $+--             newUpdateGatewayCapabilityConfigurationResponse+--+--         , responseUpdatePortal $+--             newUpdatePortalResponse+--+--         , responseUpdateProject $+--             newUpdateProjectResponse+--+--           ]+--     ]++-- Requests++requestAssociateAssets :: AssociateAssets -> TestTree+requestAssociateAssets =+  req+    "AssociateAssets"+    "fixture/AssociateAssets.yaml"++requestAssociateTimeSeriesToAssetProperty :: AssociateTimeSeriesToAssetProperty -> TestTree+requestAssociateTimeSeriesToAssetProperty =+  req+    "AssociateTimeSeriesToAssetProperty"+    "fixture/AssociateTimeSeriesToAssetProperty.yaml"++requestBatchAssociateProjectAssets :: BatchAssociateProjectAssets -> TestTree+requestBatchAssociateProjectAssets =+  req+    "BatchAssociateProjectAssets"+    "fixture/BatchAssociateProjectAssets.yaml"++requestBatchDisassociateProjectAssets :: BatchDisassociateProjectAssets -> TestTree+requestBatchDisassociateProjectAssets =+  req+    "BatchDisassociateProjectAssets"+    "fixture/BatchDisassociateProjectAssets.yaml"++requestBatchGetAssetPropertyAggregates :: BatchGetAssetPropertyAggregates -> TestTree+requestBatchGetAssetPropertyAggregates =+  req+    "BatchGetAssetPropertyAggregates"+    "fixture/BatchGetAssetPropertyAggregates.yaml"++requestBatchGetAssetPropertyValue :: BatchGetAssetPropertyValue -> TestTree+requestBatchGetAssetPropertyValue =+  req+    "BatchGetAssetPropertyValue"+    "fixture/BatchGetAssetPropertyValue.yaml"++requestBatchGetAssetPropertyValueHistory :: BatchGetAssetPropertyValueHistory -> TestTree+requestBatchGetAssetPropertyValueHistory =+  req+    "BatchGetAssetPropertyValueHistory"+    "fixture/BatchGetAssetPropertyValueHistory.yaml"++requestBatchPutAssetPropertyValue :: BatchPutAssetPropertyValue -> TestTree+requestBatchPutAssetPropertyValue =+  req+    "BatchPutAssetPropertyValue"+    "fixture/BatchPutAssetPropertyValue.yaml"++requestCreateAccessPolicy :: CreateAccessPolicy -> TestTree+requestCreateAccessPolicy =+  req+    "CreateAccessPolicy"+    "fixture/CreateAccessPolicy.yaml"++requestCreateAsset :: CreateAsset -> TestTree+requestCreateAsset =+  req+    "CreateAsset"+    "fixture/CreateAsset.yaml"++requestCreateAssetModel :: CreateAssetModel -> TestTree+requestCreateAssetModel =+  req+    "CreateAssetModel"+    "fixture/CreateAssetModel.yaml"++requestCreateBulkImportJob :: CreateBulkImportJob -> TestTree+requestCreateBulkImportJob =+  req+    "CreateBulkImportJob"+    "fixture/CreateBulkImportJob.yaml"++requestCreateDashboard :: CreateDashboard -> TestTree+requestCreateDashboard =+  req+    "CreateDashboard"+    "fixture/CreateDashboard.yaml"++requestCreateGateway :: CreateGateway -> TestTree+requestCreateGateway =+  req+    "CreateGateway"+    "fixture/CreateGateway.yaml"++requestCreatePortal :: CreatePortal -> TestTree+requestCreatePortal =+  req+    "CreatePortal"+    "fixture/CreatePortal.yaml"++requestCreateProject :: CreateProject -> TestTree+requestCreateProject =+  req+    "CreateProject"+    "fixture/CreateProject.yaml"++requestDeleteAccessPolicy :: DeleteAccessPolicy -> TestTree+requestDeleteAccessPolicy =+  req+    "DeleteAccessPolicy"+    "fixture/DeleteAccessPolicy.yaml"++requestDeleteAsset :: DeleteAsset -> TestTree+requestDeleteAsset =+  req+    "DeleteAsset"+    "fixture/DeleteAsset.yaml"++requestDeleteAssetModel :: DeleteAssetModel -> TestTree+requestDeleteAssetModel =+  req+    "DeleteAssetModel"+    "fixture/DeleteAssetModel.yaml"++requestDeleteDashboard :: DeleteDashboard -> TestTree+requestDeleteDashboard =+  req+    "DeleteDashboard"+    "fixture/DeleteDashboard.yaml"++requestDeleteGateway :: DeleteGateway -> TestTree+requestDeleteGateway =+  req+    "DeleteGateway"+    "fixture/DeleteGateway.yaml"++requestDeletePortal :: DeletePortal -> TestTree+requestDeletePortal =+  req+    "DeletePortal"+    "fixture/DeletePortal.yaml"++requestDeleteProject :: DeleteProject -> TestTree+requestDeleteProject =+  req+    "DeleteProject"+    "fixture/DeleteProject.yaml"++requestDeleteTimeSeries :: DeleteTimeSeries -> TestTree+requestDeleteTimeSeries =+  req+    "DeleteTimeSeries"+    "fixture/DeleteTimeSeries.yaml"++requestDescribeAccessPolicy :: DescribeAccessPolicy -> TestTree+requestDescribeAccessPolicy =+  req+    "DescribeAccessPolicy"+    "fixture/DescribeAccessPolicy.yaml"++requestDescribeAsset :: DescribeAsset -> TestTree+requestDescribeAsset =+  req+    "DescribeAsset"+    "fixture/DescribeAsset.yaml"++requestDescribeAssetModel :: DescribeAssetModel -> TestTree+requestDescribeAssetModel =+  req+    "DescribeAssetModel"+    "fixture/DescribeAssetModel.yaml"++requestDescribeAssetProperty :: DescribeAssetProperty -> TestTree+requestDescribeAssetProperty =+  req+    "DescribeAssetProperty"+    "fixture/DescribeAssetProperty.yaml"++requestDescribeBulkImportJob :: DescribeBulkImportJob -> TestTree+requestDescribeBulkImportJob =+  req+    "DescribeBulkImportJob"+    "fixture/DescribeBulkImportJob.yaml"++requestDescribeDashboard :: DescribeDashboard -> TestTree+requestDescribeDashboard =+  req+    "DescribeDashboard"+    "fixture/DescribeDashboard.yaml"++requestDescribeDefaultEncryptionConfiguration :: DescribeDefaultEncryptionConfiguration -> TestTree+requestDescribeDefaultEncryptionConfiguration =+  req+    "DescribeDefaultEncryptionConfiguration"+    "fixture/DescribeDefaultEncryptionConfiguration.yaml"++requestDescribeGateway :: DescribeGateway -> TestTree+requestDescribeGateway =+  req+    "DescribeGateway"+    "fixture/DescribeGateway.yaml"++requestDescribeGatewayCapabilityConfiguration :: DescribeGatewayCapabilityConfiguration -> TestTree+requestDescribeGatewayCapabilityConfiguration =+  req+    "DescribeGatewayCapabilityConfiguration"+    "fixture/DescribeGatewayCapabilityConfiguration.yaml"++requestDescribeLoggingOptions :: DescribeLoggingOptions -> TestTree+requestDescribeLoggingOptions =+  req+    "DescribeLoggingOptions"+    "fixture/DescribeLoggingOptions.yaml"++requestDescribePortal :: DescribePortal -> TestTree+requestDescribePortal =+  req+    "DescribePortal"+    "fixture/DescribePortal.yaml"++requestDescribeProject :: DescribeProject -> TestTree+requestDescribeProject =+  req+    "DescribeProject"+    "fixture/DescribeProject.yaml"++requestDescribeStorageConfiguration :: DescribeStorageConfiguration -> TestTree+requestDescribeStorageConfiguration =+  req+    "DescribeStorageConfiguration"+    "fixture/DescribeStorageConfiguration.yaml"++requestDescribeTimeSeries :: DescribeTimeSeries -> TestTree+requestDescribeTimeSeries =+  req+    "DescribeTimeSeries"+    "fixture/DescribeTimeSeries.yaml"++requestDisassociateAssets :: DisassociateAssets -> TestTree+requestDisassociateAssets =+  req+    "DisassociateAssets"+    "fixture/DisassociateAssets.yaml"++requestDisassociateTimeSeriesFromAssetProperty :: DisassociateTimeSeriesFromAssetProperty -> TestTree+requestDisassociateTimeSeriesFromAssetProperty =+  req+    "DisassociateTimeSeriesFromAssetProperty"+    "fixture/DisassociateTimeSeriesFromAssetProperty.yaml"++requestGetAssetPropertyAggregates :: GetAssetPropertyAggregates -> TestTree+requestGetAssetPropertyAggregates =+  req+    "GetAssetPropertyAggregates"+    "fixture/GetAssetPropertyAggregates.yaml"++requestGetAssetPropertyValue :: GetAssetPropertyValue -> TestTree+requestGetAssetPropertyValue =+  req+    "GetAssetPropertyValue"+    "fixture/GetAssetPropertyValue.yaml"++requestGetAssetPropertyValueHistory :: GetAssetPropertyValueHistory -> TestTree+requestGetAssetPropertyValueHistory =+  req+    "GetAssetPropertyValueHistory"+    "fixture/GetAssetPropertyValueHistory.yaml"++requestGetInterpolatedAssetPropertyValues :: GetInterpolatedAssetPropertyValues -> TestTree+requestGetInterpolatedAssetPropertyValues =+  req+    "GetInterpolatedAssetPropertyValues"+    "fixture/GetInterpolatedAssetPropertyValues.yaml"++requestListAccessPolicies :: ListAccessPolicies -> TestTree+requestListAccessPolicies =+  req+    "ListAccessPolicies"+    "fixture/ListAccessPolicies.yaml"++requestListAssetModelProperties :: ListAssetModelProperties -> TestTree+requestListAssetModelProperties =+  req+    "ListAssetModelProperties"+    "fixture/ListAssetModelProperties.yaml"++requestListAssetModels :: ListAssetModels -> TestTree+requestListAssetModels =+  req+    "ListAssetModels"+    "fixture/ListAssetModels.yaml"++requestListAssetProperties :: ListAssetProperties -> TestTree+requestListAssetProperties =+  req+    "ListAssetProperties"+    "fixture/ListAssetProperties.yaml"++requestListAssetRelationships :: ListAssetRelationships -> TestTree+requestListAssetRelationships =+  req+    "ListAssetRelationships"+    "fixture/ListAssetRelationships.yaml"++requestListAssets :: ListAssets -> TestTree+requestListAssets =+  req+    "ListAssets"+    "fixture/ListAssets.yaml"++requestListAssociatedAssets :: ListAssociatedAssets -> TestTree+requestListAssociatedAssets =+  req+    "ListAssociatedAssets"+    "fixture/ListAssociatedAssets.yaml"++requestListBulkImportJobs :: ListBulkImportJobs -> TestTree+requestListBulkImportJobs =+  req+    "ListBulkImportJobs"+    "fixture/ListBulkImportJobs.yaml"++requestListDashboards :: ListDashboards -> TestTree+requestListDashboards =+  req+    "ListDashboards"+    "fixture/ListDashboards.yaml"++requestListGateways :: ListGateways -> TestTree+requestListGateways =+  req+    "ListGateways"+    "fixture/ListGateways.yaml"++requestListPortals :: ListPortals -> TestTree+requestListPortals =+  req+    "ListPortals"+    "fixture/ListPortals.yaml"++requestListProjectAssets :: ListProjectAssets -> TestTree+requestListProjectAssets =+  req+    "ListProjectAssets"+    "fixture/ListProjectAssets.yaml"++requestListProjects :: ListProjects -> TestTree+requestListProjects =+  req+    "ListProjects"+    "fixture/ListProjects.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestListTimeSeries :: ListTimeSeries -> TestTree+requestListTimeSeries =+  req+    "ListTimeSeries"+    "fixture/ListTimeSeries.yaml"++requestPutDefaultEncryptionConfiguration :: PutDefaultEncryptionConfiguration -> TestTree+requestPutDefaultEncryptionConfiguration =+  req+    "PutDefaultEncryptionConfiguration"+    "fixture/PutDefaultEncryptionConfiguration.yaml"++requestPutLoggingOptions :: PutLoggingOptions -> TestTree+requestPutLoggingOptions =+  req+    "PutLoggingOptions"+    "fixture/PutLoggingOptions.yaml"++requestPutStorageConfiguration :: PutStorageConfiguration -> TestTree+requestPutStorageConfiguration =+  req+    "PutStorageConfiguration"+    "fixture/PutStorageConfiguration.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateAccessPolicy :: UpdateAccessPolicy -> TestTree+requestUpdateAccessPolicy =+  req+    "UpdateAccessPolicy"+    "fixture/UpdateAccessPolicy.yaml"++requestUpdateAsset :: UpdateAsset -> TestTree+requestUpdateAsset =+  req+    "UpdateAsset"+    "fixture/UpdateAsset.yaml"++requestUpdateAssetModel :: UpdateAssetModel -> TestTree+requestUpdateAssetModel =+  req+    "UpdateAssetModel"+    "fixture/UpdateAssetModel.yaml"++requestUpdateAssetProperty :: UpdateAssetProperty -> TestTree+requestUpdateAssetProperty =+  req+    "UpdateAssetProperty"+    "fixture/UpdateAssetProperty.yaml"++requestUpdateDashboard :: UpdateDashboard -> TestTree+requestUpdateDashboard =+  req+    "UpdateDashboard"+    "fixture/UpdateDashboard.yaml"++requestUpdateGateway :: UpdateGateway -> TestTree+requestUpdateGateway =+  req+    "UpdateGateway"+    "fixture/UpdateGateway.yaml"++requestUpdateGatewayCapabilityConfiguration :: UpdateGatewayCapabilityConfiguration -> TestTree+requestUpdateGatewayCapabilityConfiguration =+  req+    "UpdateGatewayCapabilityConfiguration"+    "fixture/UpdateGatewayCapabilityConfiguration.yaml"++requestUpdatePortal :: UpdatePortal -> TestTree+requestUpdatePortal =+  req+    "UpdatePortal"+    "fixture/UpdatePortal.yaml"++requestUpdateProject :: UpdateProject -> TestTree+requestUpdateProject =+  req+    "UpdateProject"+    "fixture/UpdateProject.yaml"++-- Responses++responseAssociateAssets :: AssociateAssetsResponse -> TestTree+responseAssociateAssets =+  res+    "AssociateAssetsResponse"+    "fixture/AssociateAssetsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AssociateAssets)++responseAssociateTimeSeriesToAssetProperty :: AssociateTimeSeriesToAssetPropertyResponse -> TestTree+responseAssociateTimeSeriesToAssetProperty =+  res+    "AssociateTimeSeriesToAssetPropertyResponse"+    "fixture/AssociateTimeSeriesToAssetPropertyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AssociateTimeSeriesToAssetProperty)++responseBatchAssociateProjectAssets :: BatchAssociateProjectAssetsResponse -> TestTree+responseBatchAssociateProjectAssets =+  res+    "BatchAssociateProjectAssetsResponse"+    "fixture/BatchAssociateProjectAssetsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchAssociateProjectAssets)++responseBatchDisassociateProjectAssets :: BatchDisassociateProjectAssetsResponse -> TestTree+responseBatchDisassociateProjectAssets =+  res+    "BatchDisassociateProjectAssetsResponse"+    "fixture/BatchDisassociateProjectAssetsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchDisassociateProjectAssets)++responseBatchGetAssetPropertyAggregates :: BatchGetAssetPropertyAggregatesResponse -> TestTree+responseBatchGetAssetPropertyAggregates =+  res+    "BatchGetAssetPropertyAggregatesResponse"+    "fixture/BatchGetAssetPropertyAggregatesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchGetAssetPropertyAggregates)++responseBatchGetAssetPropertyValue :: BatchGetAssetPropertyValueResponse -> TestTree+responseBatchGetAssetPropertyValue =+  res+    "BatchGetAssetPropertyValueResponse"+    "fixture/BatchGetAssetPropertyValueResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchGetAssetPropertyValue)++responseBatchGetAssetPropertyValueHistory :: BatchGetAssetPropertyValueHistoryResponse -> TestTree+responseBatchGetAssetPropertyValueHistory =+  res+    "BatchGetAssetPropertyValueHistoryResponse"+    "fixture/BatchGetAssetPropertyValueHistoryResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchGetAssetPropertyValueHistory)++responseBatchPutAssetPropertyValue :: BatchPutAssetPropertyValueResponse -> TestTree+responseBatchPutAssetPropertyValue =+  res+    "BatchPutAssetPropertyValueResponse"+    "fixture/BatchPutAssetPropertyValueResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchPutAssetPropertyValue)++responseCreateAccessPolicy :: CreateAccessPolicyResponse -> TestTree+responseCreateAccessPolicy =+  res+    "CreateAccessPolicyResponse"+    "fixture/CreateAccessPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateAccessPolicy)++responseCreateAsset :: CreateAssetResponse -> TestTree+responseCreateAsset =+  res+    "CreateAssetResponse"+    "fixture/CreateAssetResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateAsset)++responseCreateAssetModel :: CreateAssetModelResponse -> TestTree+responseCreateAssetModel =+  res+    "CreateAssetModelResponse"+    "fixture/CreateAssetModelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateAssetModel)++responseCreateBulkImportJob :: CreateBulkImportJobResponse -> TestTree+responseCreateBulkImportJob =+  res+    "CreateBulkImportJobResponse"+    "fixture/CreateBulkImportJobResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateBulkImportJob)++responseCreateDashboard :: CreateDashboardResponse -> TestTree+responseCreateDashboard =+  res+    "CreateDashboardResponse"+    "fixture/CreateDashboardResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateDashboard)++responseCreateGateway :: CreateGatewayResponse -> TestTree+responseCreateGateway =+  res+    "CreateGatewayResponse"+    "fixture/CreateGatewayResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateGateway)++responseCreatePortal :: CreatePortalResponse -> TestTree+responseCreatePortal =+  res+    "CreatePortalResponse"+    "fixture/CreatePortalResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreatePortal)++responseCreateProject :: CreateProjectResponse -> TestTree+responseCreateProject =+  res+    "CreateProjectResponse"+    "fixture/CreateProjectResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateProject)++responseDeleteAccessPolicy :: DeleteAccessPolicyResponse -> TestTree+responseDeleteAccessPolicy =+  res+    "DeleteAccessPolicyResponse"+    "fixture/DeleteAccessPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteAccessPolicy)++responseDeleteAsset :: DeleteAssetResponse -> TestTree+responseDeleteAsset =+  res+    "DeleteAssetResponse"+    "fixture/DeleteAssetResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteAsset)++responseDeleteAssetModel :: DeleteAssetModelResponse -> TestTree+responseDeleteAssetModel =+  res+    "DeleteAssetModelResponse"+    "fixture/DeleteAssetModelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteAssetModel)++responseDeleteDashboard :: DeleteDashboardResponse -> TestTree+responseDeleteDashboard =+  res+    "DeleteDashboardResponse"+    "fixture/DeleteDashboardResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteDashboard)++responseDeleteGateway :: DeleteGatewayResponse -> TestTree+responseDeleteGateway =+  res+    "DeleteGatewayResponse"+    "fixture/DeleteGatewayResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteGateway)++responseDeletePortal :: DeletePortalResponse -> TestTree+responseDeletePortal =+  res+    "DeletePortalResponse"+    "fixture/DeletePortalResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeletePortal)++responseDeleteProject :: DeleteProjectResponse -> TestTree+responseDeleteProject =+  res+    "DeleteProjectResponse"+    "fixture/DeleteProjectResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteProject)++responseDeleteTimeSeries :: DeleteTimeSeriesResponse -> TestTree+responseDeleteTimeSeries =+  res+    "DeleteTimeSeriesResponse"+    "fixture/DeleteTimeSeriesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteTimeSeries)++responseDescribeAccessPolicy :: DescribeAccessPolicyResponse -> TestTree+responseDescribeAccessPolicy =+  res+    "DescribeAccessPolicyResponse"+    "fixture/DescribeAccessPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAccessPolicy)++responseDescribeAsset :: DescribeAssetResponse -> TestTree+responseDescribeAsset =+  res+    "DescribeAssetResponse"+    "fixture/DescribeAssetResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAsset)++responseDescribeAssetModel :: DescribeAssetModelResponse -> TestTree+responseDescribeAssetModel =+  res+    "DescribeAssetModelResponse"+    "fixture/DescribeAssetModelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAssetModel)++responseDescribeAssetProperty :: DescribeAssetPropertyResponse -> TestTree+responseDescribeAssetProperty =+  res+    "DescribeAssetPropertyResponse"+    "fixture/DescribeAssetPropertyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeAssetProperty)++responseDescribeBulkImportJob :: DescribeBulkImportJobResponse -> TestTree+responseDescribeBulkImportJob =+  res+    "DescribeBulkImportJobResponse"+    "fixture/DescribeBulkImportJobResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeBulkImportJob)++responseDescribeDashboard :: DescribeDashboardResponse -> TestTree+responseDescribeDashboard =+  res+    "DescribeDashboardResponse"+    "fixture/DescribeDashboardResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeDashboard)++responseDescribeDefaultEncryptionConfiguration :: DescribeDefaultEncryptionConfigurationResponse -> TestTree+responseDescribeDefaultEncryptionConfiguration =+  res+    "DescribeDefaultEncryptionConfigurationResponse"+    "fixture/DescribeDefaultEncryptionConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeDefaultEncryptionConfiguration)++responseDescribeGateway :: DescribeGatewayResponse -> TestTree+responseDescribeGateway =+  res+    "DescribeGatewayResponse"+    "fixture/DescribeGatewayResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeGateway)++responseDescribeGatewayCapabilityConfiguration :: DescribeGatewayCapabilityConfigurationResponse -> TestTree+responseDescribeGatewayCapabilityConfiguration =+  res+    "DescribeGatewayCapabilityConfigurationResponse"+    "fixture/DescribeGatewayCapabilityConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeGatewayCapabilityConfiguration)++responseDescribeLoggingOptions :: DescribeLoggingOptionsResponse -> TestTree+responseDescribeLoggingOptions =+  res+    "DescribeLoggingOptionsResponse"+    "fixture/DescribeLoggingOptionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeLoggingOptions)++responseDescribePortal :: DescribePortalResponse -> TestTree+responseDescribePortal =+  res+    "DescribePortalResponse"+    "fixture/DescribePortalResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribePortal)++responseDescribeProject :: DescribeProjectResponse -> TestTree+responseDescribeProject =+  res+    "DescribeProjectResponse"+    "fixture/DescribeProjectResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeProject)++responseDescribeStorageConfiguration :: DescribeStorageConfigurationResponse -> TestTree+responseDescribeStorageConfiguration =+  res+    "DescribeStorageConfigurationResponse"+    "fixture/DescribeStorageConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeStorageConfiguration)++responseDescribeTimeSeries :: DescribeTimeSeriesResponse -> TestTree+responseDescribeTimeSeries =+  res+    "DescribeTimeSeriesResponse"+    "fixture/DescribeTimeSeriesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeTimeSeries)++responseDisassociateAssets :: DisassociateAssetsResponse -> TestTree+responseDisassociateAssets =+  res+    "DisassociateAssetsResponse"+    "fixture/DisassociateAssetsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DisassociateAssets)++responseDisassociateTimeSeriesFromAssetProperty :: DisassociateTimeSeriesFromAssetPropertyResponse -> TestTree+responseDisassociateTimeSeriesFromAssetProperty =+  res+    "DisassociateTimeSeriesFromAssetPropertyResponse"+    "fixture/DisassociateTimeSeriesFromAssetPropertyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DisassociateTimeSeriesFromAssetProperty)++responseGetAssetPropertyAggregates :: GetAssetPropertyAggregatesResponse -> TestTree+responseGetAssetPropertyAggregates =+  res+    "GetAssetPropertyAggregatesResponse"+    "fixture/GetAssetPropertyAggregatesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetAssetPropertyAggregates)++responseGetAssetPropertyValue :: GetAssetPropertyValueResponse -> TestTree+responseGetAssetPropertyValue =+  res+    "GetAssetPropertyValueResponse"+    "fixture/GetAssetPropertyValueResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetAssetPropertyValue)++responseGetAssetPropertyValueHistory :: GetAssetPropertyValueHistoryResponse -> TestTree+responseGetAssetPropertyValueHistory =+  res+    "GetAssetPropertyValueHistoryResponse"+    "fixture/GetAssetPropertyValueHistoryResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetAssetPropertyValueHistory)++responseGetInterpolatedAssetPropertyValues :: GetInterpolatedAssetPropertyValuesResponse -> TestTree+responseGetInterpolatedAssetPropertyValues =+  res+    "GetInterpolatedAssetPropertyValuesResponse"+    "fixture/GetInterpolatedAssetPropertyValuesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetInterpolatedAssetPropertyValues)++responseListAccessPolicies :: ListAccessPoliciesResponse -> TestTree+responseListAccessPolicies =+  res+    "ListAccessPoliciesResponse"+    "fixture/ListAccessPoliciesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAccessPolicies)++responseListAssetModelProperties :: ListAssetModelPropertiesResponse -> TestTree+responseListAssetModelProperties =+  res+    "ListAssetModelPropertiesResponse"+    "fixture/ListAssetModelPropertiesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAssetModelProperties)++responseListAssetModels :: ListAssetModelsResponse -> TestTree+responseListAssetModels =+  res+    "ListAssetModelsResponse"+    "fixture/ListAssetModelsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAssetModels)++responseListAssetProperties :: ListAssetPropertiesResponse -> TestTree+responseListAssetProperties =+  res+    "ListAssetPropertiesResponse"+    "fixture/ListAssetPropertiesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAssetProperties)++responseListAssetRelationships :: ListAssetRelationshipsResponse -> TestTree+responseListAssetRelationships =+  res+    "ListAssetRelationshipsResponse"+    "fixture/ListAssetRelationshipsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAssetRelationships)++responseListAssets :: ListAssetsResponse -> TestTree+responseListAssets =+  res+    "ListAssetsResponse"+    "fixture/ListAssetsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAssets)++responseListAssociatedAssets :: ListAssociatedAssetsResponse -> TestTree+responseListAssociatedAssets =+  res+    "ListAssociatedAssetsResponse"+    "fixture/ListAssociatedAssetsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListAssociatedAssets)++responseListBulkImportJobs :: ListBulkImportJobsResponse -> TestTree+responseListBulkImportJobs =+  res+    "ListBulkImportJobsResponse"+    "fixture/ListBulkImportJobsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListBulkImportJobs)++responseListDashboards :: ListDashboardsResponse -> TestTree+responseListDashboards =+  res+    "ListDashboardsResponse"+    "fixture/ListDashboardsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListDashboards)++responseListGateways :: ListGatewaysResponse -> TestTree+responseListGateways =+  res+    "ListGatewaysResponse"+    "fixture/ListGatewaysResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListGateways)++responseListPortals :: ListPortalsResponse -> TestTree+responseListPortals =+  res+    "ListPortalsResponse"+    "fixture/ListPortalsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListPortals)++responseListProjectAssets :: ListProjectAssetsResponse -> TestTree+responseListProjectAssets =+  res+    "ListProjectAssetsResponse"+    "fixture/ListProjectAssetsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListProjectAssets)++responseListProjects :: ListProjectsResponse -> TestTree+responseListProjects =+  res+    "ListProjectsResponse"+    "fixture/ListProjectsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListProjects)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responseListTimeSeries :: ListTimeSeriesResponse -> TestTree+responseListTimeSeries =+  res+    "ListTimeSeriesResponse"+    "fixture/ListTimeSeriesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTimeSeries)++responsePutDefaultEncryptionConfiguration :: PutDefaultEncryptionConfigurationResponse -> TestTree+responsePutDefaultEncryptionConfiguration =+  res+    "PutDefaultEncryptionConfigurationResponse"+    "fixture/PutDefaultEncryptionConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutDefaultEncryptionConfiguration)++responsePutLoggingOptions :: PutLoggingOptionsResponse -> TestTree+responsePutLoggingOptions =+  res+    "PutLoggingOptionsResponse"+    "fixture/PutLoggingOptionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutLoggingOptions)++responsePutStorageConfiguration :: PutStorageConfigurationResponse -> TestTree+responsePutStorageConfiguration =+  res+    "PutStorageConfigurationResponse"+    "fixture/PutStorageConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutStorageConfiguration)++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)++responseUpdateAccessPolicy :: UpdateAccessPolicyResponse -> TestTree+responseUpdateAccessPolicy =+  res+    "UpdateAccessPolicyResponse"+    "fixture/UpdateAccessPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateAccessPolicy)++responseUpdateAsset :: UpdateAssetResponse -> TestTree+responseUpdateAsset =+  res+    "UpdateAssetResponse"+    "fixture/UpdateAssetResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateAsset)++responseUpdateAssetModel :: UpdateAssetModelResponse -> TestTree+responseUpdateAssetModel =+  res+    "UpdateAssetModelResponse"+    "fixture/UpdateAssetModelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateAssetModel)++responseUpdateAssetProperty :: UpdateAssetPropertyResponse -> TestTree+responseUpdateAssetProperty =+  res+    "UpdateAssetPropertyResponse"+    "fixture/UpdateAssetPropertyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateAssetProperty)++responseUpdateDashboard :: UpdateDashboardResponse -> TestTree+responseUpdateDashboard =+  res+    "UpdateDashboardResponse"+    "fixture/UpdateDashboardResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateDashboard)++responseUpdateGateway :: UpdateGatewayResponse -> TestTree+responseUpdateGateway =+  res+    "UpdateGatewayResponse"+    "fixture/UpdateGatewayResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateGateway)++responseUpdateGatewayCapabilityConfiguration :: UpdateGatewayCapabilityConfigurationResponse -> TestTree+responseUpdateGatewayCapabilityConfiguration =+  res+    "UpdateGatewayCapabilityConfigurationResponse"+    "fixture/UpdateGatewayCapabilityConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateGatewayCapabilityConfiguration)++responseUpdatePortal :: UpdatePortalResponse -> TestTree+responseUpdatePortal =+  res+    "UpdatePortalResponse"+    "fixture/UpdatePortalResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdatePortal)++responseUpdateProject :: UpdateProjectResponse -> TestTree+responseUpdateProject =+  res+    "UpdateProjectResponse"+    "fixture/UpdateProjectResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateProject)
+ test/Test/Amazonka/IoTSiteWise.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.IoTSiteWise+-- Copyright   : (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.IoTSiteWise+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/IoTSiteWise/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.IoTSiteWise.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.IoTSiteWise.Internal where