packages feed

amazonka-greengrassv2 (empty) → 2.0

raw patch · 158 files changed

+16673/−0 lines, 158 filesdep +amazonka-coredep +amazonka-greengrassv2dep +amazonka-test

Dependencies added: amazonka-core, amazonka-greengrassv2, 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 Greengrass V2 SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2020-11-30@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-greengrassv2)+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.GreengrassV2](http://hackage.haskell.org/package/amazonka-greengrassv2/docs/Amazonka-GreengrassV2.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-greengrassv2` 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-greengrassv2.cabal view
@@ -0,0 +1,171 @@+cabal-version:      2.2+name:               amazonka-greengrassv2+version:            2.0+synopsis:           Amazon IoT Greengrass V2 SDK.+homepage:           https://github.com/brendanhay/amazonka+bug-reports:        https://github.com/brendanhay/amazonka/issues+license:            MPL-2.0+license-file:       LICENSE+author:             Brendan Hay+maintainer:+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>++copyright:          Copyright (c) 2013-2023 Brendan Hay+category:           AWS+build-type:         Simple+extra-source-files:+  fixture/*.proto+  fixture/*.yaml+  README.md+  src/.gitkeep++description:+  Derived from API version @2020-11-30@ 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.GreengrassV2.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.GreengrassV2" 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-greengrassv2++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.GreengrassV2+    Amazonka.GreengrassV2.AssociateServiceRoleToAccount+    Amazonka.GreengrassV2.BatchAssociateClientDeviceWithCoreDevice+    Amazonka.GreengrassV2.BatchDisassociateClientDeviceFromCoreDevice+    Amazonka.GreengrassV2.CancelDeployment+    Amazonka.GreengrassV2.CreateComponentVersion+    Amazonka.GreengrassV2.CreateDeployment+    Amazonka.GreengrassV2.DeleteComponent+    Amazonka.GreengrassV2.DeleteCoreDevice+    Amazonka.GreengrassV2.DeleteDeployment+    Amazonka.GreengrassV2.DescribeComponent+    Amazonka.GreengrassV2.DisassociateServiceRoleFromAccount+    Amazonka.GreengrassV2.GetComponent+    Amazonka.GreengrassV2.GetComponentVersionArtifact+    Amazonka.GreengrassV2.GetConnectivityInfo+    Amazonka.GreengrassV2.GetCoreDevice+    Amazonka.GreengrassV2.GetDeployment+    Amazonka.GreengrassV2.GetServiceRoleForAccount+    Amazonka.GreengrassV2.Lens+    Amazonka.GreengrassV2.ListClientDevicesAssociatedWithCoreDevice+    Amazonka.GreengrassV2.ListComponents+    Amazonka.GreengrassV2.ListComponentVersions+    Amazonka.GreengrassV2.ListCoreDevices+    Amazonka.GreengrassV2.ListDeployments+    Amazonka.GreengrassV2.ListEffectiveDeployments+    Amazonka.GreengrassV2.ListInstalledComponents+    Amazonka.GreengrassV2.ListTagsForResource+    Amazonka.GreengrassV2.ResolveComponentCandidates+    Amazonka.GreengrassV2.TagResource+    Amazonka.GreengrassV2.Types+    Amazonka.GreengrassV2.Types.AssociateClientDeviceWithCoreDeviceEntry+    Amazonka.GreengrassV2.Types.AssociateClientDeviceWithCoreDeviceErrorEntry+    Amazonka.GreengrassV2.Types.AssociatedClientDevice+    Amazonka.GreengrassV2.Types.CloudComponentState+    Amazonka.GreengrassV2.Types.CloudComponentStatus+    Amazonka.GreengrassV2.Types.Component+    Amazonka.GreengrassV2.Types.ComponentCandidate+    Amazonka.GreengrassV2.Types.ComponentConfigurationUpdate+    Amazonka.GreengrassV2.Types.ComponentDependencyRequirement+    Amazonka.GreengrassV2.Types.ComponentDependencyType+    Amazonka.GreengrassV2.Types.ComponentDeploymentSpecification+    Amazonka.GreengrassV2.Types.ComponentLatestVersion+    Amazonka.GreengrassV2.Types.ComponentPlatform+    Amazonka.GreengrassV2.Types.ComponentRunWith+    Amazonka.GreengrassV2.Types.ComponentVersionListItem+    Amazonka.GreengrassV2.Types.ComponentVisibilityScope+    Amazonka.GreengrassV2.Types.ConnectivityInfo+    Amazonka.GreengrassV2.Types.CoreDevice+    Amazonka.GreengrassV2.Types.CoreDeviceStatus+    Amazonka.GreengrassV2.Types.Deployment+    Amazonka.GreengrassV2.Types.DeploymentComponentUpdatePolicy+    Amazonka.GreengrassV2.Types.DeploymentComponentUpdatePolicyAction+    Amazonka.GreengrassV2.Types.DeploymentConfigurationValidationPolicy+    Amazonka.GreengrassV2.Types.DeploymentFailureHandlingPolicy+    Amazonka.GreengrassV2.Types.DeploymentHistoryFilter+    Amazonka.GreengrassV2.Types.DeploymentIoTJobConfiguration+    Amazonka.GreengrassV2.Types.DeploymentPolicies+    Amazonka.GreengrassV2.Types.DeploymentStatus+    Amazonka.GreengrassV2.Types.DisassociateClientDeviceFromCoreDeviceEntry+    Amazonka.GreengrassV2.Types.DisassociateClientDeviceFromCoreDeviceErrorEntry+    Amazonka.GreengrassV2.Types.EffectiveDeployment+    Amazonka.GreengrassV2.Types.EffectiveDeploymentExecutionStatus+    Amazonka.GreengrassV2.Types.EffectiveDeploymentStatusDetails+    Amazonka.GreengrassV2.Types.InstalledComponent+    Amazonka.GreengrassV2.Types.InstalledComponentLifecycleState+    Amazonka.GreengrassV2.Types.InstalledComponentTopologyFilter+    Amazonka.GreengrassV2.Types.IoTJobAbortAction+    Amazonka.GreengrassV2.Types.IoTJobAbortConfig+    Amazonka.GreengrassV2.Types.IoTJobAbortCriteria+    Amazonka.GreengrassV2.Types.IoTJobExecutionFailureType+    Amazonka.GreengrassV2.Types.IoTJobExecutionsRolloutConfig+    Amazonka.GreengrassV2.Types.IoTJobExponentialRolloutRate+    Amazonka.GreengrassV2.Types.IoTJobRateIncreaseCriteria+    Amazonka.GreengrassV2.Types.IoTJobTimeoutConfig+    Amazonka.GreengrassV2.Types.LambdaContainerParams+    Amazonka.GreengrassV2.Types.LambdaDeviceMount+    Amazonka.GreengrassV2.Types.LambdaEventSource+    Amazonka.GreengrassV2.Types.LambdaEventSourceType+    Amazonka.GreengrassV2.Types.LambdaExecutionParameters+    Amazonka.GreengrassV2.Types.LambdaFilesystemPermission+    Amazonka.GreengrassV2.Types.LambdaFunctionRecipeSource+    Amazonka.GreengrassV2.Types.LambdaInputPayloadEncodingType+    Amazonka.GreengrassV2.Types.LambdaIsolationMode+    Amazonka.GreengrassV2.Types.LambdaLinuxProcessParams+    Amazonka.GreengrassV2.Types.LambdaVolumeMount+    Amazonka.GreengrassV2.Types.RecipeOutputFormat+    Amazonka.GreengrassV2.Types.ResolvedComponentVersion+    Amazonka.GreengrassV2.Types.SystemResourceLimits+    Amazonka.GreengrassV2.Types.VendorGuidance+    Amazonka.GreengrassV2.UntagResource+    Amazonka.GreengrassV2.UpdateConnectivityInfo+    Amazonka.GreengrassV2.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-greengrassv2-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.GreengrassV2+    Test.Amazonka.GreengrassV2+    Test.Amazonka.GreengrassV2.Internal++  build-depends:+    , amazonka-core          >=2.0 && <2.1+    , amazonka-greengrassv2+    , amazonka-test          >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/AssociateServiceRoleToAccount.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/AssociateServiceRoleToAccountResponse.proto view
+ fixture/BatchAssociateClientDeviceWithCoreDevice.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/BatchAssociateClientDeviceWithCoreDeviceResponse.proto view
+ fixture/BatchDisassociateClientDeviceFromCoreDevice.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/BatchDisassociateClientDeviceFromCoreDeviceResponse.proto view
+ fixture/CancelDeployment.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/CancelDeploymentResponse.proto view
+ fixture/CreateComponentVersion.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/CreateComponentVersionResponse.proto view
+ fixture/CreateDeployment.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/CreateDeploymentResponse.proto view
+ fixture/DeleteComponent.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/DeleteComponentResponse.proto view
+ fixture/DeleteCoreDevice.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/DeleteCoreDeviceResponse.proto view
+ fixture/DeleteDeployment.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/DeleteDeploymentResponse.proto view
+ fixture/DescribeComponent.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/DescribeComponentResponse.proto view
+ fixture/DisassociateServiceRoleFromAccount.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/DisassociateServiceRoleFromAccountResponse.proto view
+ fixture/GetComponent.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/GetComponentResponse.proto view
+ fixture/GetComponentVersionArtifact.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/GetComponentVersionArtifactResponse.proto view
+ fixture/GetConnectivityInfo.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/GetConnectivityInfoResponse.proto view
+ fixture/GetCoreDevice.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/GetCoreDeviceResponse.proto view
+ fixture/GetDeployment.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/GetDeploymentResponse.proto view
+ fixture/GetServiceRoleForAccount.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/GetServiceRoleForAccountResponse.proto view
+ fixture/ListClientDevicesAssociatedWithCoreDevice.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/ListClientDevicesAssociatedWithCoreDeviceResponse.proto view
+ fixture/ListComponentVersions.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/ListComponentVersionsResponse.proto view
+ fixture/ListComponents.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/ListComponentsResponse.proto view
+ fixture/ListCoreDevices.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/ListCoreDevicesResponse.proto view
+ fixture/ListDeployments.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/ListDeploymentsResponse.proto view
+ fixture/ListEffectiveDeployments.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/ListEffectiveDeploymentsResponse.proto view
+ fixture/ListInstalledComponents.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/ListInstalledComponentsResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/ResolveComponentCandidates.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/ResolveComponentCandidatesResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/UpdateConnectivityInfo.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/greengrass/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  greengrass.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/UpdateConnectivityInfoResponse.proto view
+ gen/Amazonka/GreengrassV2.hs view
@@ -0,0 +1,522 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.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)+--+-- Derived from API version @2020-11-30@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- IoT Greengrass brings local compute, messaging, data management, sync,+-- and ML inference capabilities to edge devices. This enables devices to+-- collect and analyze data closer to the source of information, react+-- autonomously to local events, and communicate securely with each other+-- on local networks. Local devices can also communicate securely with+-- Amazon Web Services IoT Core and export IoT data to the Amazon Web+-- Services Cloud. IoT Greengrass developers can use Lambda functions and+-- components to create and deploy applications to fleets of edge devices+-- for local operation.+--+-- IoT Greengrass Version 2 provides a new major version of the IoT+-- Greengrass Core software, new APIs, and a new console. Use this API+-- reference to learn how to use the IoT Greengrass V2 API operations to+-- manage components, manage deployments, and core devices.+--+-- For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html What is IoT Greengrass?>+-- in the /IoT Greengrass V2 Developer Guide/.+module Amazonka.GreengrassV2+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** ConflictException+    _ConflictException,++    -- ** InternalServerException+    _InternalServerException,++    -- ** RequestAlreadyInProgressException+    _RequestAlreadyInProgressException,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ServiceQuotaExceededException+    _ServiceQuotaExceededException,++    -- ** ThrottlingException+    _ThrottlingException,++    -- ** ValidationException+    _ValidationException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** AssociateServiceRoleToAccount+    AssociateServiceRoleToAccount (AssociateServiceRoleToAccount'),+    newAssociateServiceRoleToAccount,+    AssociateServiceRoleToAccountResponse (AssociateServiceRoleToAccountResponse'),+    newAssociateServiceRoleToAccountResponse,++    -- ** BatchAssociateClientDeviceWithCoreDevice+    BatchAssociateClientDeviceWithCoreDevice (BatchAssociateClientDeviceWithCoreDevice'),+    newBatchAssociateClientDeviceWithCoreDevice,+    BatchAssociateClientDeviceWithCoreDeviceResponse (BatchAssociateClientDeviceWithCoreDeviceResponse'),+    newBatchAssociateClientDeviceWithCoreDeviceResponse,++    -- ** BatchDisassociateClientDeviceFromCoreDevice+    BatchDisassociateClientDeviceFromCoreDevice (BatchDisassociateClientDeviceFromCoreDevice'),+    newBatchDisassociateClientDeviceFromCoreDevice,+    BatchDisassociateClientDeviceFromCoreDeviceResponse (BatchDisassociateClientDeviceFromCoreDeviceResponse'),+    newBatchDisassociateClientDeviceFromCoreDeviceResponse,++    -- ** CancelDeployment+    CancelDeployment (CancelDeployment'),+    newCancelDeployment,+    CancelDeploymentResponse (CancelDeploymentResponse'),+    newCancelDeploymentResponse,++    -- ** CreateComponentVersion+    CreateComponentVersion (CreateComponentVersion'),+    newCreateComponentVersion,+    CreateComponentVersionResponse (CreateComponentVersionResponse'),+    newCreateComponentVersionResponse,++    -- ** CreateDeployment+    CreateDeployment (CreateDeployment'),+    newCreateDeployment,+    CreateDeploymentResponse (CreateDeploymentResponse'),+    newCreateDeploymentResponse,++    -- ** DeleteComponent+    DeleteComponent (DeleteComponent'),+    newDeleteComponent,+    DeleteComponentResponse (DeleteComponentResponse'),+    newDeleteComponentResponse,++    -- ** DeleteCoreDevice+    DeleteCoreDevice (DeleteCoreDevice'),+    newDeleteCoreDevice,+    DeleteCoreDeviceResponse (DeleteCoreDeviceResponse'),+    newDeleteCoreDeviceResponse,++    -- ** DeleteDeployment+    DeleteDeployment (DeleteDeployment'),+    newDeleteDeployment,+    DeleteDeploymentResponse (DeleteDeploymentResponse'),+    newDeleteDeploymentResponse,++    -- ** DescribeComponent+    DescribeComponent (DescribeComponent'),+    newDescribeComponent,+    DescribeComponentResponse (DescribeComponentResponse'),+    newDescribeComponentResponse,++    -- ** DisassociateServiceRoleFromAccount+    DisassociateServiceRoleFromAccount (DisassociateServiceRoleFromAccount'),+    newDisassociateServiceRoleFromAccount,+    DisassociateServiceRoleFromAccountResponse (DisassociateServiceRoleFromAccountResponse'),+    newDisassociateServiceRoleFromAccountResponse,++    -- ** GetComponent+    GetComponent (GetComponent'),+    newGetComponent,+    GetComponentResponse (GetComponentResponse'),+    newGetComponentResponse,++    -- ** GetComponentVersionArtifact+    GetComponentVersionArtifact (GetComponentVersionArtifact'),+    newGetComponentVersionArtifact,+    GetComponentVersionArtifactResponse (GetComponentVersionArtifactResponse'),+    newGetComponentVersionArtifactResponse,++    -- ** GetConnectivityInfo+    GetConnectivityInfo (GetConnectivityInfo'),+    newGetConnectivityInfo,+    GetConnectivityInfoResponse (GetConnectivityInfoResponse'),+    newGetConnectivityInfoResponse,++    -- ** GetCoreDevice+    GetCoreDevice (GetCoreDevice'),+    newGetCoreDevice,+    GetCoreDeviceResponse (GetCoreDeviceResponse'),+    newGetCoreDeviceResponse,++    -- ** GetDeployment+    GetDeployment (GetDeployment'),+    newGetDeployment,+    GetDeploymentResponse (GetDeploymentResponse'),+    newGetDeploymentResponse,++    -- ** GetServiceRoleForAccount+    GetServiceRoleForAccount (GetServiceRoleForAccount'),+    newGetServiceRoleForAccount,+    GetServiceRoleForAccountResponse (GetServiceRoleForAccountResponse'),+    newGetServiceRoleForAccountResponse,++    -- ** ListClientDevicesAssociatedWithCoreDevice (Paginated)+    ListClientDevicesAssociatedWithCoreDevice (ListClientDevicesAssociatedWithCoreDevice'),+    newListClientDevicesAssociatedWithCoreDevice,+    ListClientDevicesAssociatedWithCoreDeviceResponse (ListClientDevicesAssociatedWithCoreDeviceResponse'),+    newListClientDevicesAssociatedWithCoreDeviceResponse,++    -- ** ListComponentVersions (Paginated)+    ListComponentVersions (ListComponentVersions'),+    newListComponentVersions,+    ListComponentVersionsResponse (ListComponentVersionsResponse'),+    newListComponentVersionsResponse,++    -- ** ListComponents (Paginated)+    ListComponents (ListComponents'),+    newListComponents,+    ListComponentsResponse (ListComponentsResponse'),+    newListComponentsResponse,++    -- ** ListCoreDevices (Paginated)+    ListCoreDevices (ListCoreDevices'),+    newListCoreDevices,+    ListCoreDevicesResponse (ListCoreDevicesResponse'),+    newListCoreDevicesResponse,++    -- ** ListDeployments (Paginated)+    ListDeployments (ListDeployments'),+    newListDeployments,+    ListDeploymentsResponse (ListDeploymentsResponse'),+    newListDeploymentsResponse,++    -- ** ListEffectiveDeployments (Paginated)+    ListEffectiveDeployments (ListEffectiveDeployments'),+    newListEffectiveDeployments,+    ListEffectiveDeploymentsResponse (ListEffectiveDeploymentsResponse'),+    newListEffectiveDeploymentsResponse,++    -- ** ListInstalledComponents (Paginated)+    ListInstalledComponents (ListInstalledComponents'),+    newListInstalledComponents,+    ListInstalledComponentsResponse (ListInstalledComponentsResponse'),+    newListInstalledComponentsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** ResolveComponentCandidates+    ResolveComponentCandidates (ResolveComponentCandidates'),+    newResolveComponentCandidates,+    ResolveComponentCandidatesResponse (ResolveComponentCandidatesResponse'),+    newResolveComponentCandidatesResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateConnectivityInfo+    UpdateConnectivityInfo (UpdateConnectivityInfo'),+    newUpdateConnectivityInfo,+    UpdateConnectivityInfoResponse (UpdateConnectivityInfoResponse'),+    newUpdateConnectivityInfoResponse,++    -- * Types++    -- ** CloudComponentState+    CloudComponentState (..),++    -- ** ComponentDependencyType+    ComponentDependencyType (..),++    -- ** ComponentVisibilityScope+    ComponentVisibilityScope (..),++    -- ** CoreDeviceStatus+    CoreDeviceStatus (..),++    -- ** DeploymentComponentUpdatePolicyAction+    DeploymentComponentUpdatePolicyAction (..),++    -- ** DeploymentFailureHandlingPolicy+    DeploymentFailureHandlingPolicy (..),++    -- ** DeploymentHistoryFilter+    DeploymentHistoryFilter (..),++    -- ** DeploymentStatus+    DeploymentStatus (..),++    -- ** EffectiveDeploymentExecutionStatus+    EffectiveDeploymentExecutionStatus (..),++    -- ** InstalledComponentLifecycleState+    InstalledComponentLifecycleState (..),++    -- ** InstalledComponentTopologyFilter+    InstalledComponentTopologyFilter (..),++    -- ** IoTJobAbortAction+    IoTJobAbortAction (..),++    -- ** IoTJobExecutionFailureType+    IoTJobExecutionFailureType (..),++    -- ** LambdaEventSourceType+    LambdaEventSourceType (..),++    -- ** LambdaFilesystemPermission+    LambdaFilesystemPermission (..),++    -- ** LambdaInputPayloadEncodingType+    LambdaInputPayloadEncodingType (..),++    -- ** LambdaIsolationMode+    LambdaIsolationMode (..),++    -- ** RecipeOutputFormat+    RecipeOutputFormat (..),++    -- ** VendorGuidance+    VendorGuidance (..),++    -- ** AssociateClientDeviceWithCoreDeviceEntry+    AssociateClientDeviceWithCoreDeviceEntry (AssociateClientDeviceWithCoreDeviceEntry'),+    newAssociateClientDeviceWithCoreDeviceEntry,++    -- ** AssociateClientDeviceWithCoreDeviceErrorEntry+    AssociateClientDeviceWithCoreDeviceErrorEntry (AssociateClientDeviceWithCoreDeviceErrorEntry'),+    newAssociateClientDeviceWithCoreDeviceErrorEntry,++    -- ** AssociatedClientDevice+    AssociatedClientDevice (AssociatedClientDevice'),+    newAssociatedClientDevice,++    -- ** CloudComponentStatus+    CloudComponentStatus (CloudComponentStatus'),+    newCloudComponentStatus,++    -- ** Component+    Component (Component'),+    newComponent,++    -- ** ComponentCandidate+    ComponentCandidate (ComponentCandidate'),+    newComponentCandidate,++    -- ** ComponentConfigurationUpdate+    ComponentConfigurationUpdate (ComponentConfigurationUpdate'),+    newComponentConfigurationUpdate,++    -- ** ComponentDependencyRequirement+    ComponentDependencyRequirement (ComponentDependencyRequirement'),+    newComponentDependencyRequirement,++    -- ** ComponentDeploymentSpecification+    ComponentDeploymentSpecification (ComponentDeploymentSpecification'),+    newComponentDeploymentSpecification,++    -- ** ComponentLatestVersion+    ComponentLatestVersion (ComponentLatestVersion'),+    newComponentLatestVersion,++    -- ** ComponentPlatform+    ComponentPlatform (ComponentPlatform'),+    newComponentPlatform,++    -- ** ComponentRunWith+    ComponentRunWith (ComponentRunWith'),+    newComponentRunWith,++    -- ** ComponentVersionListItem+    ComponentVersionListItem (ComponentVersionListItem'),+    newComponentVersionListItem,++    -- ** ConnectivityInfo+    ConnectivityInfo (ConnectivityInfo'),+    newConnectivityInfo,++    -- ** CoreDevice+    CoreDevice (CoreDevice'),+    newCoreDevice,++    -- ** Deployment+    Deployment (Deployment'),+    newDeployment,++    -- ** DeploymentComponentUpdatePolicy+    DeploymentComponentUpdatePolicy (DeploymentComponentUpdatePolicy'),+    newDeploymentComponentUpdatePolicy,++    -- ** DeploymentConfigurationValidationPolicy+    DeploymentConfigurationValidationPolicy (DeploymentConfigurationValidationPolicy'),+    newDeploymentConfigurationValidationPolicy,++    -- ** DeploymentIoTJobConfiguration+    DeploymentIoTJobConfiguration (DeploymentIoTJobConfiguration'),+    newDeploymentIoTJobConfiguration,++    -- ** DeploymentPolicies+    DeploymentPolicies (DeploymentPolicies'),+    newDeploymentPolicies,++    -- ** DisassociateClientDeviceFromCoreDeviceEntry+    DisassociateClientDeviceFromCoreDeviceEntry (DisassociateClientDeviceFromCoreDeviceEntry'),+    newDisassociateClientDeviceFromCoreDeviceEntry,++    -- ** DisassociateClientDeviceFromCoreDeviceErrorEntry+    DisassociateClientDeviceFromCoreDeviceErrorEntry (DisassociateClientDeviceFromCoreDeviceErrorEntry'),+    newDisassociateClientDeviceFromCoreDeviceErrorEntry,++    -- ** EffectiveDeployment+    EffectiveDeployment (EffectiveDeployment'),+    newEffectiveDeployment,++    -- ** EffectiveDeploymentStatusDetails+    EffectiveDeploymentStatusDetails (EffectiveDeploymentStatusDetails'),+    newEffectiveDeploymentStatusDetails,++    -- ** InstalledComponent+    InstalledComponent (InstalledComponent'),+    newInstalledComponent,++    -- ** IoTJobAbortConfig+    IoTJobAbortConfig (IoTJobAbortConfig'),+    newIoTJobAbortConfig,++    -- ** IoTJobAbortCriteria+    IoTJobAbortCriteria (IoTJobAbortCriteria'),+    newIoTJobAbortCriteria,++    -- ** IoTJobExecutionsRolloutConfig+    IoTJobExecutionsRolloutConfig (IoTJobExecutionsRolloutConfig'),+    newIoTJobExecutionsRolloutConfig,++    -- ** IoTJobExponentialRolloutRate+    IoTJobExponentialRolloutRate (IoTJobExponentialRolloutRate'),+    newIoTJobExponentialRolloutRate,++    -- ** IoTJobRateIncreaseCriteria+    IoTJobRateIncreaseCriteria (IoTJobRateIncreaseCriteria'),+    newIoTJobRateIncreaseCriteria,++    -- ** IoTJobTimeoutConfig+    IoTJobTimeoutConfig (IoTJobTimeoutConfig'),+    newIoTJobTimeoutConfig,++    -- ** LambdaContainerParams+    LambdaContainerParams (LambdaContainerParams'),+    newLambdaContainerParams,++    -- ** LambdaDeviceMount+    LambdaDeviceMount (LambdaDeviceMount'),+    newLambdaDeviceMount,++    -- ** LambdaEventSource+    LambdaEventSource (LambdaEventSource'),+    newLambdaEventSource,++    -- ** LambdaExecutionParameters+    LambdaExecutionParameters (LambdaExecutionParameters'),+    newLambdaExecutionParameters,++    -- ** LambdaFunctionRecipeSource+    LambdaFunctionRecipeSource (LambdaFunctionRecipeSource'),+    newLambdaFunctionRecipeSource,++    -- ** LambdaLinuxProcessParams+    LambdaLinuxProcessParams (LambdaLinuxProcessParams'),+    newLambdaLinuxProcessParams,++    -- ** LambdaVolumeMount+    LambdaVolumeMount (LambdaVolumeMount'),+    newLambdaVolumeMount,++    -- ** ResolvedComponentVersion+    ResolvedComponentVersion (ResolvedComponentVersion'),+    newResolvedComponentVersion,++    -- ** SystemResourceLimits+    SystemResourceLimits (SystemResourceLimits'),+    newSystemResourceLimits,+  )+where++import Amazonka.GreengrassV2.AssociateServiceRoleToAccount+import Amazonka.GreengrassV2.BatchAssociateClientDeviceWithCoreDevice+import Amazonka.GreengrassV2.BatchDisassociateClientDeviceFromCoreDevice+import Amazonka.GreengrassV2.CancelDeployment+import Amazonka.GreengrassV2.CreateComponentVersion+import Amazonka.GreengrassV2.CreateDeployment+import Amazonka.GreengrassV2.DeleteComponent+import Amazonka.GreengrassV2.DeleteCoreDevice+import Amazonka.GreengrassV2.DeleteDeployment+import Amazonka.GreengrassV2.DescribeComponent+import Amazonka.GreengrassV2.DisassociateServiceRoleFromAccount+import Amazonka.GreengrassV2.GetComponent+import Amazonka.GreengrassV2.GetComponentVersionArtifact+import Amazonka.GreengrassV2.GetConnectivityInfo+import Amazonka.GreengrassV2.GetCoreDevice+import Amazonka.GreengrassV2.GetDeployment+import Amazonka.GreengrassV2.GetServiceRoleForAccount+import Amazonka.GreengrassV2.Lens+import Amazonka.GreengrassV2.ListClientDevicesAssociatedWithCoreDevice+import Amazonka.GreengrassV2.ListComponentVersions+import Amazonka.GreengrassV2.ListComponents+import Amazonka.GreengrassV2.ListCoreDevices+import Amazonka.GreengrassV2.ListDeployments+import Amazonka.GreengrassV2.ListEffectiveDeployments+import Amazonka.GreengrassV2.ListInstalledComponents+import Amazonka.GreengrassV2.ListTagsForResource+import Amazonka.GreengrassV2.ResolveComponentCandidates+import Amazonka.GreengrassV2.TagResource+import Amazonka.GreengrassV2.Types+import Amazonka.GreengrassV2.UntagResource+import Amazonka.GreengrassV2.UpdateConnectivityInfo+import Amazonka.GreengrassV2.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 'GreengrassV2'.++-- $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/GreengrassV2/AssociateServiceRoleToAccount.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.GreengrassV2.AssociateServiceRoleToAccount+-- 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 Greengrass service role with IoT Greengrass for your Amazon+-- Web Services account in this Amazon Web Services Region. IoT Greengrass+-- uses this role to verify the identity of client devices and manage core+-- device connectivity information. The role must include the+-- <https://console.aws.amazon.com/iam/home#/policies/arn:awsiam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy AWSGreengrassResourceAccessRolePolicy>+-- managed policy or a custom policy that defines equivalent permissions+-- for the IoT Greengrass features that you use. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-service-role.html Greengrass service role>+-- in the /IoT Greengrass Version 2 Developer Guide/.+module Amazonka.GreengrassV2.AssociateServiceRoleToAccount+  ( -- * Creating a Request+    AssociateServiceRoleToAccount (..),+    newAssociateServiceRoleToAccount,++    -- * Request Lenses+    associateServiceRoleToAccount_roleArn,++    -- * Destructuring the Response+    AssociateServiceRoleToAccountResponse (..),+    newAssociateServiceRoleToAccountResponse,++    -- * Response Lenses+    associateServiceRoleToAccountResponse_associatedAt,+    associateServiceRoleToAccountResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newAssociateServiceRoleToAccount' smart constructor.+data AssociateServiceRoleToAccount = AssociateServiceRoleToAccount'+  { -- | The Amazon Resource Name (ARN) of the service role to associate with IoT+    -- Greengrass for your Amazon Web Services account in this Amazon Web+    -- Services Region.+    roleArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateServiceRoleToAccount' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'roleArn', 'associateServiceRoleToAccount_roleArn' - The Amazon Resource Name (ARN) of the service role to associate with IoT+-- Greengrass for your Amazon Web Services account in this Amazon Web+-- Services Region.+newAssociateServiceRoleToAccount ::+  -- | 'roleArn'+  Prelude.Text ->+  AssociateServiceRoleToAccount+newAssociateServiceRoleToAccount pRoleArn_ =+  AssociateServiceRoleToAccount' {roleArn = pRoleArn_}++-- | The Amazon Resource Name (ARN) of the service role to associate with IoT+-- Greengrass for your Amazon Web Services account in this Amazon Web+-- Services Region.+associateServiceRoleToAccount_roleArn :: Lens.Lens' AssociateServiceRoleToAccount Prelude.Text+associateServiceRoleToAccount_roleArn = Lens.lens (\AssociateServiceRoleToAccount' {roleArn} -> roleArn) (\s@AssociateServiceRoleToAccount' {} a -> s {roleArn = a} :: AssociateServiceRoleToAccount)++instance+  Core.AWSRequest+    AssociateServiceRoleToAccount+  where+  type+    AWSResponse AssociateServiceRoleToAccount =+      AssociateServiceRoleToAccountResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          AssociateServiceRoleToAccountResponse'+            Prelude.<$> (x Data..?> "AssociatedAt")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    AssociateServiceRoleToAccount+  where+  hashWithSalt _salt AssociateServiceRoleToAccount' {..} =+    _salt `Prelude.hashWithSalt` roleArn++instance Prelude.NFData AssociateServiceRoleToAccount where+  rnf AssociateServiceRoleToAccount' {..} =+    Prelude.rnf roleArn++instance Data.ToHeaders AssociateServiceRoleToAccount where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToJSON AssociateServiceRoleToAccount where+  toJSON AssociateServiceRoleToAccount' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("RoleArn" Data..= roleArn)]+      )++instance Data.ToPath AssociateServiceRoleToAccount where+  toPath = Prelude.const "/greengrass/servicerole"++instance Data.ToQuery AssociateServiceRoleToAccount where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newAssociateServiceRoleToAccountResponse' smart constructor.+data AssociateServiceRoleToAccountResponse = AssociateServiceRoleToAccountResponse'+  { -- | The time when the service role was associated with IoT Greengrass for+    -- your Amazon Web Services account in this Amazon Web Services Region.+    associatedAt :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateServiceRoleToAccountResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'associatedAt', 'associateServiceRoleToAccountResponse_associatedAt' - The time when the service role was associated with IoT Greengrass for+-- your Amazon Web Services account in this Amazon Web Services Region.+--+-- 'httpStatus', 'associateServiceRoleToAccountResponse_httpStatus' - The response's http status code.+newAssociateServiceRoleToAccountResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  AssociateServiceRoleToAccountResponse+newAssociateServiceRoleToAccountResponse pHttpStatus_ =+  AssociateServiceRoleToAccountResponse'+    { associatedAt =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The time when the service role was associated with IoT Greengrass for+-- your Amazon Web Services account in this Amazon Web Services Region.+associateServiceRoleToAccountResponse_associatedAt :: Lens.Lens' AssociateServiceRoleToAccountResponse (Prelude.Maybe Prelude.Text)+associateServiceRoleToAccountResponse_associatedAt = Lens.lens (\AssociateServiceRoleToAccountResponse' {associatedAt} -> associatedAt) (\s@AssociateServiceRoleToAccountResponse' {} a -> s {associatedAt = a} :: AssociateServiceRoleToAccountResponse)++-- | The response's http status code.+associateServiceRoleToAccountResponse_httpStatus :: Lens.Lens' AssociateServiceRoleToAccountResponse Prelude.Int+associateServiceRoleToAccountResponse_httpStatus = Lens.lens (\AssociateServiceRoleToAccountResponse' {httpStatus} -> httpStatus) (\s@AssociateServiceRoleToAccountResponse' {} a -> s {httpStatus = a} :: AssociateServiceRoleToAccountResponse)++instance+  Prelude.NFData+    AssociateServiceRoleToAccountResponse+  where+  rnf AssociateServiceRoleToAccountResponse' {..} =+    Prelude.rnf associatedAt+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/BatchAssociateClientDeviceWithCoreDevice.hs view
@@ -0,0 +1,226 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.BatchAssociateClientDeviceWithCoreDevice+-- 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 list of client devices with a core device. Use this API+-- operation to specify which client devices can discover a core device+-- through cloud discovery. With cloud discovery, client devices connect to+-- IoT Greengrass to retrieve associated core devices\' connectivity+-- information and certificates. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-cloud-discovery.html Configure cloud discovery>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- Client devices are local IoT devices that connect to and communicate+-- with an IoT Greengrass core device over MQTT. You can connect client+-- devices to a core device to sync MQTT messages and data to Amazon Web+-- Services IoT Core and interact with client devices in Greengrass+-- components. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/interact-with-local-iot-devices.html Interact with local IoT devices>+-- in the /IoT Greengrass V2 Developer Guide/.+module Amazonka.GreengrassV2.BatchAssociateClientDeviceWithCoreDevice+  ( -- * Creating a Request+    BatchAssociateClientDeviceWithCoreDevice (..),+    newBatchAssociateClientDeviceWithCoreDevice,++    -- * Request Lenses+    batchAssociateClientDeviceWithCoreDevice_entries,+    batchAssociateClientDeviceWithCoreDevice_coreDeviceThingName,++    -- * Destructuring the Response+    BatchAssociateClientDeviceWithCoreDeviceResponse (..),+    newBatchAssociateClientDeviceWithCoreDeviceResponse,++    -- * Response Lenses+    batchAssociateClientDeviceWithCoreDeviceResponse_errorEntries,+    batchAssociateClientDeviceWithCoreDeviceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchAssociateClientDeviceWithCoreDevice' smart constructor.+data BatchAssociateClientDeviceWithCoreDevice = BatchAssociateClientDeviceWithCoreDevice'+  { -- | The list of client devices to associate.+    entries :: Prelude.Maybe (Prelude.NonEmpty AssociateClientDeviceWithCoreDeviceEntry),+    -- | The name of the core device. This is also the name of the IoT thing.+    coreDeviceThingName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchAssociateClientDeviceWithCoreDevice' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchAssociateClientDeviceWithCoreDevice_entries' - The list of client devices to associate.+--+-- 'coreDeviceThingName', 'batchAssociateClientDeviceWithCoreDevice_coreDeviceThingName' - The name of the core device. This is also the name of the IoT thing.+newBatchAssociateClientDeviceWithCoreDevice ::+  -- | 'coreDeviceThingName'+  Prelude.Text ->+  BatchAssociateClientDeviceWithCoreDevice+newBatchAssociateClientDeviceWithCoreDevice+  pCoreDeviceThingName_ =+    BatchAssociateClientDeviceWithCoreDevice'+      { entries =+          Prelude.Nothing,+        coreDeviceThingName =+          pCoreDeviceThingName_+      }++-- | The list of client devices to associate.+batchAssociateClientDeviceWithCoreDevice_entries :: Lens.Lens' BatchAssociateClientDeviceWithCoreDevice (Prelude.Maybe (Prelude.NonEmpty AssociateClientDeviceWithCoreDeviceEntry))+batchAssociateClientDeviceWithCoreDevice_entries = Lens.lens (\BatchAssociateClientDeviceWithCoreDevice' {entries} -> entries) (\s@BatchAssociateClientDeviceWithCoreDevice' {} a -> s {entries = a} :: BatchAssociateClientDeviceWithCoreDevice) Prelude.. Lens.mapping Lens.coerced++-- | The name of the core device. This is also the name of the IoT thing.+batchAssociateClientDeviceWithCoreDevice_coreDeviceThingName :: Lens.Lens' BatchAssociateClientDeviceWithCoreDevice Prelude.Text+batchAssociateClientDeviceWithCoreDevice_coreDeviceThingName = Lens.lens (\BatchAssociateClientDeviceWithCoreDevice' {coreDeviceThingName} -> coreDeviceThingName) (\s@BatchAssociateClientDeviceWithCoreDevice' {} a -> s {coreDeviceThingName = a} :: BatchAssociateClientDeviceWithCoreDevice)++instance+  Core.AWSRequest+    BatchAssociateClientDeviceWithCoreDevice+  where+  type+    AWSResponse+      BatchAssociateClientDeviceWithCoreDevice =+      BatchAssociateClientDeviceWithCoreDeviceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchAssociateClientDeviceWithCoreDeviceResponse'+            Prelude.<$> (x Data..?> "errorEntries" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    BatchAssociateClientDeviceWithCoreDevice+  where+  hashWithSalt+    _salt+    BatchAssociateClientDeviceWithCoreDevice' {..} =+      _salt+        `Prelude.hashWithSalt` entries+        `Prelude.hashWithSalt` coreDeviceThingName++instance+  Prelude.NFData+    BatchAssociateClientDeviceWithCoreDevice+  where+  rnf BatchAssociateClientDeviceWithCoreDevice' {..} =+    Prelude.rnf entries+      `Prelude.seq` Prelude.rnf coreDeviceThingName++instance+  Data.ToHeaders+    BatchAssociateClientDeviceWithCoreDevice+  where+  toHeaders = Prelude.const Prelude.mempty++instance+  Data.ToJSON+    BatchAssociateClientDeviceWithCoreDevice+  where+  toJSON BatchAssociateClientDeviceWithCoreDevice' {..} =+    Data.object+      ( Prelude.catMaybes+          [("entries" Data..=) Prelude.<$> entries]+      )++instance+  Data.ToPath+    BatchAssociateClientDeviceWithCoreDevice+  where+  toPath BatchAssociateClientDeviceWithCoreDevice' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/coreDevices/",+        Data.toBS coreDeviceThingName,+        "/associateClientDevices"+      ]++instance+  Data.ToQuery+    BatchAssociateClientDeviceWithCoreDevice+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchAssociateClientDeviceWithCoreDeviceResponse' smart constructor.+data BatchAssociateClientDeviceWithCoreDeviceResponse = BatchAssociateClientDeviceWithCoreDeviceResponse'+  { -- | The list of any errors for the entries in the request. Each error entry+    -- contains the name of the IoT thing that failed to associate.+    errorEntries :: Prelude.Maybe [AssociateClientDeviceWithCoreDeviceErrorEntry],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchAssociateClientDeviceWithCoreDeviceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorEntries', 'batchAssociateClientDeviceWithCoreDeviceResponse_errorEntries' - The list of any errors for the entries in the request. Each error entry+-- contains the name of the IoT thing that failed to associate.+--+-- 'httpStatus', 'batchAssociateClientDeviceWithCoreDeviceResponse_httpStatus' - The response's http status code.+newBatchAssociateClientDeviceWithCoreDeviceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchAssociateClientDeviceWithCoreDeviceResponse+newBatchAssociateClientDeviceWithCoreDeviceResponse+  pHttpStatus_ =+    BatchAssociateClientDeviceWithCoreDeviceResponse'+      { errorEntries =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The list of any errors for the entries in the request. Each error entry+-- contains the name of the IoT thing that failed to associate.+batchAssociateClientDeviceWithCoreDeviceResponse_errorEntries :: Lens.Lens' BatchAssociateClientDeviceWithCoreDeviceResponse (Prelude.Maybe [AssociateClientDeviceWithCoreDeviceErrorEntry])+batchAssociateClientDeviceWithCoreDeviceResponse_errorEntries = Lens.lens (\BatchAssociateClientDeviceWithCoreDeviceResponse' {errorEntries} -> errorEntries) (\s@BatchAssociateClientDeviceWithCoreDeviceResponse' {} a -> s {errorEntries = a} :: BatchAssociateClientDeviceWithCoreDeviceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchAssociateClientDeviceWithCoreDeviceResponse_httpStatus :: Lens.Lens' BatchAssociateClientDeviceWithCoreDeviceResponse Prelude.Int+batchAssociateClientDeviceWithCoreDeviceResponse_httpStatus = Lens.lens (\BatchAssociateClientDeviceWithCoreDeviceResponse' {httpStatus} -> httpStatus) (\s@BatchAssociateClientDeviceWithCoreDeviceResponse' {} a -> s {httpStatus = a} :: BatchAssociateClientDeviceWithCoreDeviceResponse)++instance+  Prelude.NFData+    BatchAssociateClientDeviceWithCoreDeviceResponse+  where+  rnf+    BatchAssociateClientDeviceWithCoreDeviceResponse' {..} =+      Prelude.rnf errorEntries+        `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/BatchDisassociateClientDeviceFromCoreDevice.hs view
@@ -0,0 +1,218 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.BatchDisassociateClientDeviceFromCoreDevice+-- 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 list of client devices from a core device. After you+-- disassociate a client device from a core device, the client device+-- won\'t be able to use cloud discovery to retrieve the core device\'s+-- connectivity information and certificates.+module Amazonka.GreengrassV2.BatchDisassociateClientDeviceFromCoreDevice+  ( -- * Creating a Request+    BatchDisassociateClientDeviceFromCoreDevice (..),+    newBatchDisassociateClientDeviceFromCoreDevice,++    -- * Request Lenses+    batchDisassociateClientDeviceFromCoreDevice_entries,+    batchDisassociateClientDeviceFromCoreDevice_coreDeviceThingName,++    -- * Destructuring the Response+    BatchDisassociateClientDeviceFromCoreDeviceResponse (..),+    newBatchDisassociateClientDeviceFromCoreDeviceResponse,++    -- * Response Lenses+    batchDisassociateClientDeviceFromCoreDeviceResponse_errorEntries,+    batchDisassociateClientDeviceFromCoreDeviceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchDisassociateClientDeviceFromCoreDevice' smart constructor.+data BatchDisassociateClientDeviceFromCoreDevice = BatchDisassociateClientDeviceFromCoreDevice'+  { -- | The list of client devices to disassociate.+    entries :: Prelude.Maybe (Prelude.NonEmpty DisassociateClientDeviceFromCoreDeviceEntry),+    -- | The name of the core device. This is also the name of the IoT thing.+    coreDeviceThingName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDisassociateClientDeviceFromCoreDevice' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchDisassociateClientDeviceFromCoreDevice_entries' - The list of client devices to disassociate.+--+-- 'coreDeviceThingName', 'batchDisassociateClientDeviceFromCoreDevice_coreDeviceThingName' - The name of the core device. This is also the name of the IoT thing.+newBatchDisassociateClientDeviceFromCoreDevice ::+  -- | 'coreDeviceThingName'+  Prelude.Text ->+  BatchDisassociateClientDeviceFromCoreDevice+newBatchDisassociateClientDeviceFromCoreDevice+  pCoreDeviceThingName_ =+    BatchDisassociateClientDeviceFromCoreDevice'+      { entries =+          Prelude.Nothing,+        coreDeviceThingName =+          pCoreDeviceThingName_+      }++-- | The list of client devices to disassociate.+batchDisassociateClientDeviceFromCoreDevice_entries :: Lens.Lens' BatchDisassociateClientDeviceFromCoreDevice (Prelude.Maybe (Prelude.NonEmpty DisassociateClientDeviceFromCoreDeviceEntry))+batchDisassociateClientDeviceFromCoreDevice_entries = Lens.lens (\BatchDisassociateClientDeviceFromCoreDevice' {entries} -> entries) (\s@BatchDisassociateClientDeviceFromCoreDevice' {} a -> s {entries = a} :: BatchDisassociateClientDeviceFromCoreDevice) Prelude.. Lens.mapping Lens.coerced++-- | The name of the core device. This is also the name of the IoT thing.+batchDisassociateClientDeviceFromCoreDevice_coreDeviceThingName :: Lens.Lens' BatchDisassociateClientDeviceFromCoreDevice Prelude.Text+batchDisassociateClientDeviceFromCoreDevice_coreDeviceThingName = Lens.lens (\BatchDisassociateClientDeviceFromCoreDevice' {coreDeviceThingName} -> coreDeviceThingName) (\s@BatchDisassociateClientDeviceFromCoreDevice' {} a -> s {coreDeviceThingName = a} :: BatchDisassociateClientDeviceFromCoreDevice)++instance+  Core.AWSRequest+    BatchDisassociateClientDeviceFromCoreDevice+  where+  type+    AWSResponse+      BatchDisassociateClientDeviceFromCoreDevice =+      BatchDisassociateClientDeviceFromCoreDeviceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchDisassociateClientDeviceFromCoreDeviceResponse'+            Prelude.<$> (x Data..?> "errorEntries" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    BatchDisassociateClientDeviceFromCoreDevice+  where+  hashWithSalt+    _salt+    BatchDisassociateClientDeviceFromCoreDevice' {..} =+      _salt+        `Prelude.hashWithSalt` entries+        `Prelude.hashWithSalt` coreDeviceThingName++instance+  Prelude.NFData+    BatchDisassociateClientDeviceFromCoreDevice+  where+  rnf BatchDisassociateClientDeviceFromCoreDevice' {..} =+    Prelude.rnf entries+      `Prelude.seq` Prelude.rnf coreDeviceThingName++instance+  Data.ToHeaders+    BatchDisassociateClientDeviceFromCoreDevice+  where+  toHeaders = Prelude.const Prelude.mempty++instance+  Data.ToJSON+    BatchDisassociateClientDeviceFromCoreDevice+  where+  toJSON+    BatchDisassociateClientDeviceFromCoreDevice' {..} =+      Data.object+        ( Prelude.catMaybes+            [("entries" Data..=) Prelude.<$> entries]+        )++instance+  Data.ToPath+    BatchDisassociateClientDeviceFromCoreDevice+  where+  toPath+    BatchDisassociateClientDeviceFromCoreDevice' {..} =+      Prelude.mconcat+        [ "/greengrass/v2/coreDevices/",+          Data.toBS coreDeviceThingName,+          "/disassociateClientDevices"+        ]++instance+  Data.ToQuery+    BatchDisassociateClientDeviceFromCoreDevice+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchDisassociateClientDeviceFromCoreDeviceResponse' smart constructor.+data BatchDisassociateClientDeviceFromCoreDeviceResponse = BatchDisassociateClientDeviceFromCoreDeviceResponse'+  { -- | The list of any errors for the entries in the request. Each error entry+    -- contains the name of the IoT thing that failed to disassociate.+    errorEntries :: Prelude.Maybe [DisassociateClientDeviceFromCoreDeviceErrorEntry],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDisassociateClientDeviceFromCoreDeviceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorEntries', 'batchDisassociateClientDeviceFromCoreDeviceResponse_errorEntries' - The list of any errors for the entries in the request. Each error entry+-- contains the name of the IoT thing that failed to disassociate.+--+-- 'httpStatus', 'batchDisassociateClientDeviceFromCoreDeviceResponse_httpStatus' - The response's http status code.+newBatchDisassociateClientDeviceFromCoreDeviceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchDisassociateClientDeviceFromCoreDeviceResponse+newBatchDisassociateClientDeviceFromCoreDeviceResponse+  pHttpStatus_ =+    BatchDisassociateClientDeviceFromCoreDeviceResponse'+      { errorEntries =+          Prelude.Nothing,+        httpStatus =+          pHttpStatus_+      }++-- | The list of any errors for the entries in the request. Each error entry+-- contains the name of the IoT thing that failed to disassociate.+batchDisassociateClientDeviceFromCoreDeviceResponse_errorEntries :: Lens.Lens' BatchDisassociateClientDeviceFromCoreDeviceResponse (Prelude.Maybe [DisassociateClientDeviceFromCoreDeviceErrorEntry])+batchDisassociateClientDeviceFromCoreDeviceResponse_errorEntries = Lens.lens (\BatchDisassociateClientDeviceFromCoreDeviceResponse' {errorEntries} -> errorEntries) (\s@BatchDisassociateClientDeviceFromCoreDeviceResponse' {} a -> s {errorEntries = a} :: BatchDisassociateClientDeviceFromCoreDeviceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchDisassociateClientDeviceFromCoreDeviceResponse_httpStatus :: Lens.Lens' BatchDisassociateClientDeviceFromCoreDeviceResponse Prelude.Int+batchDisassociateClientDeviceFromCoreDeviceResponse_httpStatus = Lens.lens (\BatchDisassociateClientDeviceFromCoreDeviceResponse' {httpStatus} -> httpStatus) (\s@BatchDisassociateClientDeviceFromCoreDeviceResponse' {} a -> s {httpStatus = a} :: BatchDisassociateClientDeviceFromCoreDeviceResponse)++instance+  Prelude.NFData+    BatchDisassociateClientDeviceFromCoreDeviceResponse+  where+  rnf+    BatchDisassociateClientDeviceFromCoreDeviceResponse' {..} =+      Prelude.rnf errorEntries+        `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/CancelDeployment.hs view
@@ -0,0 +1,159 @@+{-# 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.GreengrassV2.CancelDeployment+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Cancels a deployment. This operation cancels the deployment for devices+-- that haven\'t yet received it. If a device already received the+-- deployment, this operation doesn\'t change anything for that device.+module Amazonka.GreengrassV2.CancelDeployment+  ( -- * Creating a Request+    CancelDeployment (..),+    newCancelDeployment,++    -- * Request Lenses+    cancelDeployment_deploymentId,++    -- * Destructuring the Response+    CancelDeploymentResponse (..),+    newCancelDeploymentResponse,++    -- * Response Lenses+    cancelDeploymentResponse_message,+    cancelDeploymentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCancelDeployment' smart constructor.+data CancelDeployment = CancelDeployment'+  { -- | The ID of the deployment.+    deploymentId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CancelDeployment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deploymentId', 'cancelDeployment_deploymentId' - The ID of the deployment.+newCancelDeployment ::+  -- | 'deploymentId'+  Prelude.Text ->+  CancelDeployment+newCancelDeployment pDeploymentId_ =+  CancelDeployment' {deploymentId = pDeploymentId_}++-- | The ID of the deployment.+cancelDeployment_deploymentId :: Lens.Lens' CancelDeployment Prelude.Text+cancelDeployment_deploymentId = Lens.lens (\CancelDeployment' {deploymentId} -> deploymentId) (\s@CancelDeployment' {} a -> s {deploymentId = a} :: CancelDeployment)++instance Core.AWSRequest CancelDeployment where+  type+    AWSResponse CancelDeployment =+      CancelDeploymentResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CancelDeploymentResponse'+            Prelude.<$> (x Data..?> "message")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CancelDeployment where+  hashWithSalt _salt CancelDeployment' {..} =+    _salt `Prelude.hashWithSalt` deploymentId++instance Prelude.NFData CancelDeployment where+  rnf CancelDeployment' {..} = Prelude.rnf deploymentId++instance Data.ToHeaders CancelDeployment where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToJSON CancelDeployment where+  toJSON = Prelude.const (Data.Object Prelude.mempty)++instance Data.ToPath CancelDeployment where+  toPath CancelDeployment' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/deployments/",+        Data.toBS deploymentId,+        "/cancel"+      ]++instance Data.ToQuery CancelDeployment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCancelDeploymentResponse' smart constructor.+data CancelDeploymentResponse = CancelDeploymentResponse'+  { -- | A message that communicates if the cancel was successful.+    message :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CancelDeploymentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'message', 'cancelDeploymentResponse_message' - A message that communicates if the cancel was successful.+--+-- 'httpStatus', 'cancelDeploymentResponse_httpStatus' - The response's http status code.+newCancelDeploymentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CancelDeploymentResponse+newCancelDeploymentResponse pHttpStatus_ =+  CancelDeploymentResponse'+    { message =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A message that communicates if the cancel was successful.+cancelDeploymentResponse_message :: Lens.Lens' CancelDeploymentResponse (Prelude.Maybe Prelude.Text)+cancelDeploymentResponse_message = Lens.lens (\CancelDeploymentResponse' {message} -> message) (\s@CancelDeploymentResponse' {} a -> s {message = a} :: CancelDeploymentResponse)++-- | The response's http status code.+cancelDeploymentResponse_httpStatus :: Lens.Lens' CancelDeploymentResponse Prelude.Int+cancelDeploymentResponse_httpStatus = Lens.lens (\CancelDeploymentResponse' {httpStatus} -> httpStatus) (\s@CancelDeploymentResponse' {} a -> s {httpStatus = a} :: CancelDeploymentResponse)++instance Prelude.NFData CancelDeploymentResponse where+  rnf CancelDeploymentResponse' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/CreateComponentVersion.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.GreengrassV2.CreateComponentVersion+-- 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 component. Components are software that run on Greengrass core+-- devices. After you develop and test a component on your core device, you+-- can use this operation to upload your component to IoT Greengrass. Then,+-- you can deploy the component to other core devices.+--+-- You can use this operation to do the following:+--+-- -   __Create components from recipes__+--+--     Create a component from a recipe, which is a file that defines the+--     component\'s metadata, parameters, dependencies, lifecycle,+--     artifacts, and platform capability. For more information, see+--     <https://docs.aws.amazon.com/greengrass/v2/developerguide/component-recipe-reference.html IoT Greengrass component recipe reference>+--     in the /IoT Greengrass V2 Developer Guide/.+--+--     To create a component from a recipe, specify @inlineRecipe@ when you+--     call this operation.+--+-- -   __Create components from Lambda functions__+--+--     Create a component from an Lambda function that runs on IoT+--     Greengrass. This creates a recipe and artifacts from the Lambda+--     function\'s deployment package. You can use this operation to+--     migrate Lambda functions from IoT Greengrass V1 to IoT Greengrass+--     V2.+--+--     This function only accepts Lambda functions that use the following+--     runtimes:+--+--     -   Python 2.7 – @python2.7@+--+--     -   Python 3.7 – @python3.7@+--+--     -   Python 3.8 – @python3.8@+--+--     -   Python 3.9 – @python3.9@+--+--     -   Java 8 – @java8@+--+--     -   Java 11 – @java11@+--+--     -   Node.js 10 – @nodejs10.x@+--+--     -   Node.js 12 – @nodejs12.x@+--+--     -   Node.js 14 – @nodejs14.x@+--+--     To create a component from a Lambda function, specify+--     @lambdaFunction@ when you call this operation.+--+--     IoT Greengrass currently supports Lambda functions on only Linux+--     core devices.+module Amazonka.GreengrassV2.CreateComponentVersion+  ( -- * Creating a Request+    CreateComponentVersion (..),+    newCreateComponentVersion,++    -- * Request Lenses+    createComponentVersion_clientToken,+    createComponentVersion_inlineRecipe,+    createComponentVersion_lambdaFunction,+    createComponentVersion_tags,++    -- * Destructuring the Response+    CreateComponentVersionResponse (..),+    newCreateComponentVersionResponse,++    -- * Response Lenses+    createComponentVersionResponse_arn,+    createComponentVersionResponse_httpStatus,+    createComponentVersionResponse_componentName,+    createComponentVersionResponse_componentVersion,+    createComponentVersionResponse_creationTimestamp,+    createComponentVersionResponse_status,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateComponentVersion' smart constructor.+data CreateComponentVersion = CreateComponentVersion'+  { -- | A unique, case-sensitive identifier that you can provide to ensure that+    -- the request is idempotent. Idempotency means that the request is+    -- successfully processed only once, even if you send the request multiple+    -- times. When a request succeeds, and you specify the same client token+    -- for subsequent successful requests, the IoT Greengrass V2 service+    -- returns the successful response that it caches from the previous+    -- request. IoT Greengrass V2 caches successful responses for idempotent+    -- requests for up to 8 hours.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The recipe to use to create the component. The recipe defines the+    -- component\'s metadata, parameters, dependencies, lifecycle, artifacts,+    -- and platform compatibility.+    --+    -- You must specify either @inlineRecipe@ or @lambdaFunction@.+    inlineRecipe :: Prelude.Maybe Data.Base64,+    -- | The parameters to create a component from a Lambda function.+    --+    -- You must specify either @inlineRecipe@ or @lambdaFunction@.+    lambdaFunction :: Prelude.Maybe LambdaFunctionRecipeSource,+    -- | A list of key-value pairs that contain metadata for the resource. For+    -- more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+    -- in the /IoT Greengrass V2 Developer Guide/.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateComponentVersion' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createComponentVersion_clientToken' - A unique, case-sensitive identifier that you can provide to ensure that+-- the request is idempotent. Idempotency means that the request is+-- successfully processed only once, even if you send the request multiple+-- times. When a request succeeds, and you specify the same client token+-- for subsequent successful requests, the IoT Greengrass V2 service+-- returns the successful response that it caches from the previous+-- request. IoT Greengrass V2 caches successful responses for idempotent+-- requests for up to 8 hours.+--+-- 'inlineRecipe', 'createComponentVersion_inlineRecipe' - The recipe to use to create the component. The recipe defines the+-- component\'s metadata, parameters, dependencies, lifecycle, artifacts,+-- and platform compatibility.+--+-- You must specify either @inlineRecipe@ or @lambdaFunction@.--+-- -- /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.+--+-- 'lambdaFunction', 'createComponentVersion_lambdaFunction' - The parameters to create a component from a Lambda function.+--+-- You must specify either @inlineRecipe@ or @lambdaFunction@.+--+-- 'tags', 'createComponentVersion_tags' - A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+newCreateComponentVersion ::+  CreateComponentVersion+newCreateComponentVersion =+  CreateComponentVersion'+    { clientToken =+        Prelude.Nothing,+      inlineRecipe = Prelude.Nothing,+      lambdaFunction = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | A unique, case-sensitive identifier that you can provide to ensure that+-- the request is idempotent. Idempotency means that the request is+-- successfully processed only once, even if you send the request multiple+-- times. When a request succeeds, and you specify the same client token+-- for subsequent successful requests, the IoT Greengrass V2 service+-- returns the successful response that it caches from the previous+-- request. IoT Greengrass V2 caches successful responses for idempotent+-- requests for up to 8 hours.+createComponentVersion_clientToken :: Lens.Lens' CreateComponentVersion (Prelude.Maybe Prelude.Text)+createComponentVersion_clientToken = Lens.lens (\CreateComponentVersion' {clientToken} -> clientToken) (\s@CreateComponentVersion' {} a -> s {clientToken = a} :: CreateComponentVersion)++-- | The recipe to use to create the component. The recipe defines the+-- component\'s metadata, parameters, dependencies, lifecycle, artifacts,+-- and platform compatibility.+--+-- You must specify either @inlineRecipe@ or @lambdaFunction@.--+-- -- /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.+createComponentVersion_inlineRecipe :: Lens.Lens' CreateComponentVersion (Prelude.Maybe Prelude.ByteString)+createComponentVersion_inlineRecipe = Lens.lens (\CreateComponentVersion' {inlineRecipe} -> inlineRecipe) (\s@CreateComponentVersion' {} a -> s {inlineRecipe = a} :: CreateComponentVersion) Prelude.. Lens.mapping Data._Base64++-- | The parameters to create a component from a Lambda function.+--+-- You must specify either @inlineRecipe@ or @lambdaFunction@.+createComponentVersion_lambdaFunction :: Lens.Lens' CreateComponentVersion (Prelude.Maybe LambdaFunctionRecipeSource)+createComponentVersion_lambdaFunction = Lens.lens (\CreateComponentVersion' {lambdaFunction} -> lambdaFunction) (\s@CreateComponentVersion' {} a -> s {lambdaFunction = a} :: CreateComponentVersion)++-- | A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+createComponentVersion_tags :: Lens.Lens' CreateComponentVersion (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createComponentVersion_tags = Lens.lens (\CreateComponentVersion' {tags} -> tags) (\s@CreateComponentVersion' {} a -> s {tags = a} :: CreateComponentVersion) Prelude.. Lens.mapping Lens.coerced++instance Core.AWSRequest CreateComponentVersion where+  type+    AWSResponse CreateComponentVersion =+      CreateComponentVersionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateComponentVersionResponse'+            Prelude.<$> (x Data..?> "arn")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "componentName")+            Prelude.<*> (x Data..:> "componentVersion")+            Prelude.<*> (x Data..:> "creationTimestamp")+            Prelude.<*> (x Data..:> "status")+      )++instance Prelude.Hashable CreateComponentVersion where+  hashWithSalt _salt CreateComponentVersion' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` inlineRecipe+      `Prelude.hashWithSalt` lambdaFunction+      `Prelude.hashWithSalt` tags++instance Prelude.NFData CreateComponentVersion where+  rnf CreateComponentVersion' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf inlineRecipe+      `Prelude.seq` Prelude.rnf lambdaFunction+      `Prelude.seq` Prelude.rnf tags++instance Data.ToHeaders CreateComponentVersion where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToJSON CreateComponentVersion where+  toJSON CreateComponentVersion' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("inlineRecipe" Data..=) Prelude.<$> inlineRecipe,+            ("lambdaFunction" Data..=)+              Prelude.<$> lambdaFunction,+            ("tags" Data..=) Prelude.<$> tags+          ]+      )++instance Data.ToPath CreateComponentVersion where+  toPath =+    Prelude.const+      "/greengrass/v2/createComponentVersion"++instance Data.ToQuery CreateComponentVersion where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateComponentVersionResponse' smart constructor.+data CreateComponentVersionResponse = CreateComponentVersionResponse'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the component version.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The name of the component.+    componentName :: Prelude.Text,+    -- | The version of the component.+    componentVersion :: Prelude.Text,+    -- | The time at which the component was created, expressed in ISO 8601+    -- format.+    creationTimestamp :: Data.POSIX,+    -- | The status of the component version in IoT Greengrass V2. This status is+    -- different from the status of the component on a core device.+    status :: CloudComponentStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateComponentVersionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createComponentVersionResponse_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+--+-- 'httpStatus', 'createComponentVersionResponse_httpStatus' - The response's http status code.+--+-- 'componentName', 'createComponentVersionResponse_componentName' - The name of the component.+--+-- 'componentVersion', 'createComponentVersionResponse_componentVersion' - The version of the component.+--+-- 'creationTimestamp', 'createComponentVersionResponse_creationTimestamp' - The time at which the component was created, expressed in ISO 8601+-- format.+--+-- 'status', 'createComponentVersionResponse_status' - The status of the component version in IoT Greengrass V2. This status is+-- different from the status of the component on a core device.+newCreateComponentVersionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'componentName'+  Prelude.Text ->+  -- | 'componentVersion'+  Prelude.Text ->+  -- | 'creationTimestamp'+  Prelude.UTCTime ->+  -- | 'status'+  CloudComponentStatus ->+  CreateComponentVersionResponse+newCreateComponentVersionResponse+  pHttpStatus_+  pComponentName_+  pComponentVersion_+  pCreationTimestamp_+  pStatus_ =+    CreateComponentVersionResponse'+      { arn =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        componentName = pComponentName_,+        componentVersion = pComponentVersion_,+        creationTimestamp =+          Data._Time Lens.# pCreationTimestamp_,+        status = pStatus_+      }++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+createComponentVersionResponse_arn :: Lens.Lens' CreateComponentVersionResponse (Prelude.Maybe Prelude.Text)+createComponentVersionResponse_arn = Lens.lens (\CreateComponentVersionResponse' {arn} -> arn) (\s@CreateComponentVersionResponse' {} a -> s {arn = a} :: CreateComponentVersionResponse)++-- | The response's http status code.+createComponentVersionResponse_httpStatus :: Lens.Lens' CreateComponentVersionResponse Prelude.Int+createComponentVersionResponse_httpStatus = Lens.lens (\CreateComponentVersionResponse' {httpStatus} -> httpStatus) (\s@CreateComponentVersionResponse' {} a -> s {httpStatus = a} :: CreateComponentVersionResponse)++-- | The name of the component.+createComponentVersionResponse_componentName :: Lens.Lens' CreateComponentVersionResponse Prelude.Text+createComponentVersionResponse_componentName = Lens.lens (\CreateComponentVersionResponse' {componentName} -> componentName) (\s@CreateComponentVersionResponse' {} a -> s {componentName = a} :: CreateComponentVersionResponse)++-- | The version of the component.+createComponentVersionResponse_componentVersion :: Lens.Lens' CreateComponentVersionResponse Prelude.Text+createComponentVersionResponse_componentVersion = Lens.lens (\CreateComponentVersionResponse' {componentVersion} -> componentVersion) (\s@CreateComponentVersionResponse' {} a -> s {componentVersion = a} :: CreateComponentVersionResponse)++-- | The time at which the component was created, expressed in ISO 8601+-- format.+createComponentVersionResponse_creationTimestamp :: Lens.Lens' CreateComponentVersionResponse Prelude.UTCTime+createComponentVersionResponse_creationTimestamp = Lens.lens (\CreateComponentVersionResponse' {creationTimestamp} -> creationTimestamp) (\s@CreateComponentVersionResponse' {} a -> s {creationTimestamp = a} :: CreateComponentVersionResponse) Prelude.. Data._Time++-- | The status of the component version in IoT Greengrass V2. This status is+-- different from the status of the component on a core device.+createComponentVersionResponse_status :: Lens.Lens' CreateComponentVersionResponse CloudComponentStatus+createComponentVersionResponse_status = Lens.lens (\CreateComponentVersionResponse' {status} -> status) (\s@CreateComponentVersionResponse' {} a -> s {status = a} :: CreateComponentVersionResponse)++instance+  Prelude.NFData+    CreateComponentVersionResponse+  where+  rnf CreateComponentVersionResponse' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf componentName+      `Prelude.seq` Prelude.rnf componentVersion+      `Prelude.seq` Prelude.rnf creationTimestamp+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/GreengrassV2/CreateDeployment.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.GreengrassV2.CreateDeployment+-- 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 continuous deployment for a target, which is a Greengrass core+-- device or group of core devices. When you add a new core device to a+-- group of core devices that has a deployment, IoT Greengrass deploys that+-- group\'s deployment to the new device.+--+-- You can define one deployment for each target. When you create a new+-- deployment for a target that has an existing deployment, you replace the+-- previous deployment. IoT Greengrass applies the new deployment to the+-- target devices.+--+-- Every deployment has a revision number that indicates how many+-- deployment revisions you define for a target. Use this operation to+-- create a new revision of an existing deployment.+--+-- For more information, see the+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html Create deployments>+-- in the /IoT Greengrass V2 Developer Guide/.+module Amazonka.GreengrassV2.CreateDeployment+  ( -- * Creating a Request+    CreateDeployment (..),+    newCreateDeployment,++    -- * Request Lenses+    createDeployment_clientToken,+    createDeployment_components,+    createDeployment_deploymentName,+    createDeployment_deploymentPolicies,+    createDeployment_iotJobConfiguration,+    createDeployment_parentTargetArn,+    createDeployment_tags,+    createDeployment_targetArn,++    -- * Destructuring the Response+    CreateDeploymentResponse (..),+    newCreateDeploymentResponse,++    -- * Response Lenses+    createDeploymentResponse_deploymentId,+    createDeploymentResponse_iotJobArn,+    createDeploymentResponse_iotJobId,+    createDeploymentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateDeployment' smart constructor.+data CreateDeployment = CreateDeployment'+  { -- | A unique, case-sensitive identifier that you can provide to ensure that+    -- the request is idempotent. Idempotency means that the request is+    -- successfully processed only once, even if you send the request multiple+    -- times. When a request succeeds, and you specify the same client token+    -- for subsequent successful requests, the IoT Greengrass V2 service+    -- returns the successful response that it caches from the previous+    -- request. IoT Greengrass V2 caches successful responses for idempotent+    -- requests for up to 8 hours.+    clientToken :: Prelude.Maybe Prelude.Text,+    -- | The components to deploy. This is a dictionary, where each key is the+    -- name of a component, and each key\'s value is the version and+    -- configuration to deploy for that component.+    components :: Prelude.Maybe (Prelude.HashMap Prelude.Text ComponentDeploymentSpecification),+    -- | The name of the deployment.+    deploymentName :: Prelude.Maybe Prelude.Text,+    -- | The deployment policies for the deployment. These policies define how+    -- the deployment updates components and handles failure.+    deploymentPolicies :: Prelude.Maybe DeploymentPolicies,+    -- | The job configuration for the deployment configuration. The job+    -- configuration specifies the rollout, timeout, and stop configurations+    -- for the deployment configuration.+    iotJobConfiguration :: Prelude.Maybe DeploymentIoTJobConfiguration,+    -- | The parent deployment\'s target+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- within a subdeployment.+    parentTargetArn :: Prelude.Maybe Prelude.Text,+    -- | A list of key-value pairs that contain metadata for the resource. For+    -- more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+    -- in the /IoT Greengrass V2 Developer Guide/.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the target IoT thing or thing group. When creating a subdeployment,+    -- the targetARN can only be a thing group.+    targetArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDeployment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createDeployment_clientToken' - A unique, case-sensitive identifier that you can provide to ensure that+-- the request is idempotent. Idempotency means that the request is+-- successfully processed only once, even if you send the request multiple+-- times. When a request succeeds, and you specify the same client token+-- for subsequent successful requests, the IoT Greengrass V2 service+-- returns the successful response that it caches from the previous+-- request. IoT Greengrass V2 caches successful responses for idempotent+-- requests for up to 8 hours.+--+-- 'components', 'createDeployment_components' - The components to deploy. This is a dictionary, where each key is the+-- name of a component, and each key\'s value is the version and+-- configuration to deploy for that component.+--+-- 'deploymentName', 'createDeployment_deploymentName' - The name of the deployment.+--+-- 'deploymentPolicies', 'createDeployment_deploymentPolicies' - The deployment policies for the deployment. These policies define how+-- the deployment updates components and handles failure.+--+-- 'iotJobConfiguration', 'createDeployment_iotJobConfiguration' - The job configuration for the deployment configuration. The job+-- configuration specifies the rollout, timeout, and stop configurations+-- for the deployment configuration.+--+-- 'parentTargetArn', 'createDeployment_parentTargetArn' - The parent deployment\'s target+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- within a subdeployment.+--+-- 'tags', 'createDeployment_tags' - A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- 'targetArn', 'createDeployment_targetArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the target IoT thing or thing group. When creating a subdeployment,+-- the targetARN can only be a thing group.+newCreateDeployment ::+  -- | 'targetArn'+  Prelude.Text ->+  CreateDeployment+newCreateDeployment pTargetArn_ =+  CreateDeployment'+    { clientToken = Prelude.Nothing,+      components = Prelude.Nothing,+      deploymentName = Prelude.Nothing,+      deploymentPolicies = Prelude.Nothing,+      iotJobConfiguration = Prelude.Nothing,+      parentTargetArn = Prelude.Nothing,+      tags = Prelude.Nothing,+      targetArn = pTargetArn_+    }++-- | A unique, case-sensitive identifier that you can provide to ensure that+-- the request is idempotent. Idempotency means that the request is+-- successfully processed only once, even if you send the request multiple+-- times. When a request succeeds, and you specify the same client token+-- for subsequent successful requests, the IoT Greengrass V2 service+-- returns the successful response that it caches from the previous+-- request. IoT Greengrass V2 caches successful responses for idempotent+-- requests for up to 8 hours.+createDeployment_clientToken :: Lens.Lens' CreateDeployment (Prelude.Maybe Prelude.Text)+createDeployment_clientToken = Lens.lens (\CreateDeployment' {clientToken} -> clientToken) (\s@CreateDeployment' {} a -> s {clientToken = a} :: CreateDeployment)++-- | The components to deploy. This is a dictionary, where each key is the+-- name of a component, and each key\'s value is the version and+-- configuration to deploy for that component.+createDeployment_components :: Lens.Lens' CreateDeployment (Prelude.Maybe (Prelude.HashMap Prelude.Text ComponentDeploymentSpecification))+createDeployment_components = Lens.lens (\CreateDeployment' {components} -> components) (\s@CreateDeployment' {} a -> s {components = a} :: CreateDeployment) Prelude.. Lens.mapping Lens.coerced++-- | The name of the deployment.+createDeployment_deploymentName :: Lens.Lens' CreateDeployment (Prelude.Maybe Prelude.Text)+createDeployment_deploymentName = Lens.lens (\CreateDeployment' {deploymentName} -> deploymentName) (\s@CreateDeployment' {} a -> s {deploymentName = a} :: CreateDeployment)++-- | The deployment policies for the deployment. These policies define how+-- the deployment updates components and handles failure.+createDeployment_deploymentPolicies :: Lens.Lens' CreateDeployment (Prelude.Maybe DeploymentPolicies)+createDeployment_deploymentPolicies = Lens.lens (\CreateDeployment' {deploymentPolicies} -> deploymentPolicies) (\s@CreateDeployment' {} a -> s {deploymentPolicies = a} :: CreateDeployment)++-- | The job configuration for the deployment configuration. The job+-- configuration specifies the rollout, timeout, and stop configurations+-- for the deployment configuration.+createDeployment_iotJobConfiguration :: Lens.Lens' CreateDeployment (Prelude.Maybe DeploymentIoTJobConfiguration)+createDeployment_iotJobConfiguration = Lens.lens (\CreateDeployment' {iotJobConfiguration} -> iotJobConfiguration) (\s@CreateDeployment' {} a -> s {iotJobConfiguration = a} :: CreateDeployment)++-- | The parent deployment\'s target+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- within a subdeployment.+createDeployment_parentTargetArn :: Lens.Lens' CreateDeployment (Prelude.Maybe Prelude.Text)+createDeployment_parentTargetArn = Lens.lens (\CreateDeployment' {parentTargetArn} -> parentTargetArn) (\s@CreateDeployment' {} a -> s {parentTargetArn = a} :: CreateDeployment)++-- | A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+createDeployment_tags :: Lens.Lens' CreateDeployment (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createDeployment_tags = Lens.lens (\CreateDeployment' {tags} -> tags) (\s@CreateDeployment' {} a -> s {tags = a} :: CreateDeployment) Prelude.. Lens.mapping Lens.coerced++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the target IoT thing or thing group. When creating a subdeployment,+-- the targetARN can only be a thing group.+createDeployment_targetArn :: Lens.Lens' CreateDeployment Prelude.Text+createDeployment_targetArn = Lens.lens (\CreateDeployment' {targetArn} -> targetArn) (\s@CreateDeployment' {} a -> s {targetArn = a} :: CreateDeployment)++instance Core.AWSRequest CreateDeployment where+  type+    AWSResponse CreateDeployment =+      CreateDeploymentResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateDeploymentResponse'+            Prelude.<$> (x Data..?> "deploymentId")+            Prelude.<*> (x Data..?> "iotJobArn")+            Prelude.<*> (x Data..?> "iotJobId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateDeployment where+  hashWithSalt _salt CreateDeployment' {..} =+    _salt+      `Prelude.hashWithSalt` clientToken+      `Prelude.hashWithSalt` components+      `Prelude.hashWithSalt` deploymentName+      `Prelude.hashWithSalt` deploymentPolicies+      `Prelude.hashWithSalt` iotJobConfiguration+      `Prelude.hashWithSalt` parentTargetArn+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` targetArn++instance Prelude.NFData CreateDeployment where+  rnf CreateDeployment' {..} =+    Prelude.rnf clientToken+      `Prelude.seq` Prelude.rnf components+      `Prelude.seq` Prelude.rnf deploymentName+      `Prelude.seq` Prelude.rnf deploymentPolicies+      `Prelude.seq` Prelude.rnf iotJobConfiguration+      `Prelude.seq` Prelude.rnf parentTargetArn+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf targetArn++instance Data.ToHeaders CreateDeployment where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToJSON CreateDeployment where+  toJSON CreateDeployment' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("clientToken" Data..=) Prelude.<$> clientToken,+            ("components" Data..=) Prelude.<$> components,+            ("deploymentName" Data..=)+              Prelude.<$> deploymentName,+            ("deploymentPolicies" Data..=)+              Prelude.<$> deploymentPolicies,+            ("iotJobConfiguration" Data..=)+              Prelude.<$> iotJobConfiguration,+            ("parentTargetArn" Data..=)+              Prelude.<$> parentTargetArn,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("targetArn" Data..= targetArn)+          ]+      )++instance Data.ToPath CreateDeployment where+  toPath = Prelude.const "/greengrass/v2/deployments"++instance Data.ToQuery CreateDeployment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateDeploymentResponse' smart constructor.+data CreateDeploymentResponse = CreateDeploymentResponse'+  { -- | The ID of the deployment.+    deploymentId :: Prelude.Maybe Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the IoT job that applies the deployment to target devices.+    iotJobArn :: Prelude.Maybe Prelude.Text,+    -- | The ID of the IoT job that applies the deployment to target devices.+    iotJobId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDeploymentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deploymentId', 'createDeploymentResponse_deploymentId' - The ID of the deployment.+--+-- 'iotJobArn', 'createDeploymentResponse_iotJobArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IoT job that applies the deployment to target devices.+--+-- 'iotJobId', 'createDeploymentResponse_iotJobId' - The ID of the IoT job that applies the deployment to target devices.+--+-- 'httpStatus', 'createDeploymentResponse_httpStatus' - The response's http status code.+newCreateDeploymentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateDeploymentResponse+newCreateDeploymentResponse pHttpStatus_ =+  CreateDeploymentResponse'+    { deploymentId =+        Prelude.Nothing,+      iotJobArn = Prelude.Nothing,+      iotJobId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The ID of the deployment.+createDeploymentResponse_deploymentId :: Lens.Lens' CreateDeploymentResponse (Prelude.Maybe Prelude.Text)+createDeploymentResponse_deploymentId = Lens.lens (\CreateDeploymentResponse' {deploymentId} -> deploymentId) (\s@CreateDeploymentResponse' {} a -> s {deploymentId = a} :: CreateDeploymentResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IoT job that applies the deployment to target devices.+createDeploymentResponse_iotJobArn :: Lens.Lens' CreateDeploymentResponse (Prelude.Maybe Prelude.Text)+createDeploymentResponse_iotJobArn = Lens.lens (\CreateDeploymentResponse' {iotJobArn} -> iotJobArn) (\s@CreateDeploymentResponse' {} a -> s {iotJobArn = a} :: CreateDeploymentResponse)++-- | The ID of the IoT job that applies the deployment to target devices.+createDeploymentResponse_iotJobId :: Lens.Lens' CreateDeploymentResponse (Prelude.Maybe Prelude.Text)+createDeploymentResponse_iotJobId = Lens.lens (\CreateDeploymentResponse' {iotJobId} -> iotJobId) (\s@CreateDeploymentResponse' {} a -> s {iotJobId = a} :: CreateDeploymentResponse)++-- | The response's http status code.+createDeploymentResponse_httpStatus :: Lens.Lens' CreateDeploymentResponse Prelude.Int+createDeploymentResponse_httpStatus = Lens.lens (\CreateDeploymentResponse' {httpStatus} -> httpStatus) (\s@CreateDeploymentResponse' {} a -> s {httpStatus = a} :: CreateDeploymentResponse)++instance Prelude.NFData CreateDeploymentResponse where+  rnf CreateDeploymentResponse' {..} =+    Prelude.rnf deploymentId+      `Prelude.seq` Prelude.rnf iotJobArn+      `Prelude.seq` Prelude.rnf iotJobId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/DeleteComponent.hs view
@@ -0,0 +1,127 @@+{-# 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.GreengrassV2.DeleteComponent+-- 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 version of a component from IoT Greengrass.+--+-- This operation deletes the component\'s recipe and artifacts. As a+-- result, deployments that refer to this component version will fail. If+-- you have deployments that use this component version, you can remove the+-- component from the deployment or update the deployment to use a valid+-- version.+module Amazonka.GreengrassV2.DeleteComponent+  ( -- * Creating a Request+    DeleteComponent (..),+    newDeleteComponent,++    -- * Request Lenses+    deleteComponent_arn,++    -- * Destructuring the Response+    DeleteComponentResponse (..),+    newDeleteComponentResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteComponent' smart constructor.+data DeleteComponent = DeleteComponent'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the component version.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteComponent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteComponent_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+newDeleteComponent ::+  -- | 'arn'+  Prelude.Text ->+  DeleteComponent+newDeleteComponent pArn_ =+  DeleteComponent' {arn = pArn_}++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+deleteComponent_arn :: Lens.Lens' DeleteComponent Prelude.Text+deleteComponent_arn = Lens.lens (\DeleteComponent' {arn} -> arn) (\s@DeleteComponent' {} a -> s {arn = a} :: DeleteComponent)++instance Core.AWSRequest DeleteComponent where+  type+    AWSResponse DeleteComponent =+      DeleteComponentResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveNull DeleteComponentResponse'++instance Prelude.Hashable DeleteComponent where+  hashWithSalt _salt DeleteComponent' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData DeleteComponent where+  rnf DeleteComponent' {..} = Prelude.rnf arn++instance Data.ToHeaders DeleteComponent where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath DeleteComponent where+  toPath DeleteComponent' {..} =+    Prelude.mconcat+      ["/greengrass/v2/components/", Data.toBS arn]++instance Data.ToQuery DeleteComponent where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteComponentResponse' smart constructor.+data DeleteComponentResponse = DeleteComponentResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteComponentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteComponentResponse ::+  DeleteComponentResponse+newDeleteComponentResponse = DeleteComponentResponse'++instance Prelude.NFData DeleteComponentResponse where+  rnf _ = ()
+ gen/Amazonka/GreengrassV2/DeleteCoreDevice.hs view
@@ -0,0 +1,127 @@+{-# 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.GreengrassV2.DeleteCoreDevice+-- 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 Greengrass core device, which is an IoT thing. This operation+-- removes the core device from the list of core devices. This operation+-- doesn\'t delete the IoT thing. For more information about how to delete+-- the IoT thing, see+-- <https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteThing.html DeleteThing>+-- in the /IoT API Reference/.+module Amazonka.GreengrassV2.DeleteCoreDevice+  ( -- * Creating a Request+    DeleteCoreDevice (..),+    newDeleteCoreDevice,++    -- * Request Lenses+    deleteCoreDevice_coreDeviceThingName,++    -- * Destructuring the Response+    DeleteCoreDeviceResponse (..),+    newDeleteCoreDeviceResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteCoreDevice' smart constructor.+data DeleteCoreDevice = DeleteCoreDevice'+  { -- | The name of the core device. This is also the name of the IoT thing.+    coreDeviceThingName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteCoreDevice' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteCoreDevice_coreDeviceThingName' - The name of the core device. This is also the name of the IoT thing.+newDeleteCoreDevice ::+  -- | 'coreDeviceThingName'+  Prelude.Text ->+  DeleteCoreDevice+newDeleteCoreDevice pCoreDeviceThingName_ =+  DeleteCoreDevice'+    { coreDeviceThingName =+        pCoreDeviceThingName_+    }++-- | The name of the core device. This is also the name of the IoT thing.+deleteCoreDevice_coreDeviceThingName :: Lens.Lens' DeleteCoreDevice Prelude.Text+deleteCoreDevice_coreDeviceThingName = Lens.lens (\DeleteCoreDevice' {coreDeviceThingName} -> coreDeviceThingName) (\s@DeleteCoreDevice' {} a -> s {coreDeviceThingName = a} :: DeleteCoreDevice)++instance Core.AWSRequest DeleteCoreDevice where+  type+    AWSResponse DeleteCoreDevice =+      DeleteCoreDeviceResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveNull DeleteCoreDeviceResponse'++instance Prelude.Hashable DeleteCoreDevice where+  hashWithSalt _salt DeleteCoreDevice' {..} =+    _salt `Prelude.hashWithSalt` coreDeviceThingName++instance Prelude.NFData DeleteCoreDevice where+  rnf DeleteCoreDevice' {..} =+    Prelude.rnf coreDeviceThingName++instance Data.ToHeaders DeleteCoreDevice where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath DeleteCoreDevice where+  toPath DeleteCoreDevice' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/coreDevices/",+        Data.toBS coreDeviceThingName+      ]++instance Data.ToQuery DeleteCoreDevice where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteCoreDeviceResponse' smart constructor.+data DeleteCoreDeviceResponse = DeleteCoreDeviceResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteCoreDeviceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteCoreDeviceResponse ::+  DeleteCoreDeviceResponse+newDeleteCoreDeviceResponse =+  DeleteCoreDeviceResponse'++instance Prelude.NFData DeleteCoreDeviceResponse where+  rnf _ = ()
+ gen/Amazonka/GreengrassV2/DeleteDeployment.hs view
@@ -0,0 +1,125 @@+{-# 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.GreengrassV2.DeleteDeployment+-- 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 deployment. To delete an active deployment, you must first+-- cancel it. For more information, see+-- <https://docs.aws.amazon.com/iot/latest/apireference/API_CancelDeployment.html CancelDeployment>.+--+-- Deleting a deployment doesn\'t affect core devices that run that+-- deployment, because core devices store the deployment\'s configuration+-- on the device. Additionally, core devices can roll back to a previous+-- deployment that has been deleted.+module Amazonka.GreengrassV2.DeleteDeployment+  ( -- * Creating a Request+    DeleteDeployment (..),+    newDeleteDeployment,++    -- * Request Lenses+    deleteDeployment_deploymentId,++    -- * Destructuring the Response+    DeleteDeploymentResponse (..),+    newDeleteDeploymentResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteDeployment' smart constructor.+data DeleteDeployment = DeleteDeployment'+  { -- | The ID of the deployment.+    deploymentId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDeployment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deploymentId', 'deleteDeployment_deploymentId' - The ID of the deployment.+newDeleteDeployment ::+  -- | 'deploymentId'+  Prelude.Text ->+  DeleteDeployment+newDeleteDeployment pDeploymentId_ =+  DeleteDeployment' {deploymentId = pDeploymentId_}++-- | The ID of the deployment.+deleteDeployment_deploymentId :: Lens.Lens' DeleteDeployment Prelude.Text+deleteDeployment_deploymentId = Lens.lens (\DeleteDeployment' {deploymentId} -> deploymentId) (\s@DeleteDeployment' {} a -> s {deploymentId = a} :: DeleteDeployment)++instance Core.AWSRequest DeleteDeployment where+  type+    AWSResponse DeleteDeployment =+      DeleteDeploymentResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveNull DeleteDeploymentResponse'++instance Prelude.Hashable DeleteDeployment where+  hashWithSalt _salt DeleteDeployment' {..} =+    _salt `Prelude.hashWithSalt` deploymentId++instance Prelude.NFData DeleteDeployment where+  rnf DeleteDeployment' {..} = Prelude.rnf deploymentId++instance Data.ToHeaders DeleteDeployment where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath DeleteDeployment where+  toPath DeleteDeployment' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/deployments/",+        Data.toBS deploymentId+      ]++instance Data.ToQuery DeleteDeployment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteDeploymentResponse' smart constructor.+data DeleteDeploymentResponse = DeleteDeploymentResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDeploymentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteDeploymentResponse ::+  DeleteDeploymentResponse+newDeleteDeploymentResponse =+  DeleteDeploymentResponse'++instance Prelude.NFData DeleteDeploymentResponse where+  rnf _ = ()
+ gen/Amazonka/GreengrassV2/DescribeComponent.hs view
@@ -0,0 +1,276 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.DescribeComponent+-- 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 metadata for a version of a component.+module Amazonka.GreengrassV2.DescribeComponent+  ( -- * Creating a Request+    DescribeComponent (..),+    newDescribeComponent,++    -- * Request Lenses+    describeComponent_arn,++    -- * Destructuring the Response+    DescribeComponentResponse (..),+    newDescribeComponentResponse,++    -- * Response Lenses+    describeComponentResponse_arn,+    describeComponentResponse_componentName,+    describeComponentResponse_componentVersion,+    describeComponentResponse_creationTimestamp,+    describeComponentResponse_description,+    describeComponentResponse_platforms,+    describeComponentResponse_publisher,+    describeComponentResponse_status,+    describeComponentResponse_tags,+    describeComponentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeComponent' smart constructor.+data DescribeComponent = DescribeComponent'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the component version.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeComponent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeComponent_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+newDescribeComponent ::+  -- | 'arn'+  Prelude.Text ->+  DescribeComponent+newDescribeComponent pArn_ =+  DescribeComponent' {arn = pArn_}++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+describeComponent_arn :: Lens.Lens' DescribeComponent Prelude.Text+describeComponent_arn = Lens.lens (\DescribeComponent' {arn} -> arn) (\s@DescribeComponent' {} a -> s {arn = a} :: DescribeComponent)++instance Core.AWSRequest DescribeComponent where+  type+    AWSResponse DescribeComponent =+      DescribeComponentResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeComponentResponse'+            Prelude.<$> (x Data..?> "arn")+            Prelude.<*> (x Data..?> "componentName")+            Prelude.<*> (x Data..?> "componentVersion")+            Prelude.<*> (x Data..?> "creationTimestamp")+            Prelude.<*> (x Data..?> "description")+            Prelude.<*> (x Data..?> "platforms" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "publisher")+            Prelude.<*> (x Data..?> "status")+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeComponent where+  hashWithSalt _salt DescribeComponent' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData DescribeComponent where+  rnf DescribeComponent' {..} = Prelude.rnf arn++instance Data.ToHeaders DescribeComponent where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath DescribeComponent where+  toPath DescribeComponent' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/components/",+        Data.toBS arn,+        "/metadata"+      ]++instance Data.ToQuery DescribeComponent where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeComponentResponse' smart constructor.+data DescribeComponentResponse = DescribeComponentResponse'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the component version.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The name of the component.+    componentName :: Prelude.Maybe Prelude.Text,+    -- | The version of the component.+    componentVersion :: Prelude.Maybe Prelude.Text,+    -- | The time at which the component was created, expressed in ISO 8601+    -- format.+    creationTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The description of the component version.+    description :: Prelude.Maybe Prelude.Text,+    -- | The platforms that the component version supports.+    platforms :: Prelude.Maybe [ComponentPlatform],+    -- | The publisher of the component version.+    publisher :: Prelude.Maybe Prelude.Text,+    -- | The status of the component version in IoT Greengrass V2. This status is+    -- different from the status of the component on a core device.+    status :: Prelude.Maybe CloudComponentStatus,+    -- | A list of key-value pairs that contain metadata for the resource. For+    -- more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+    -- in the /IoT Greengrass V2 Developer 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 'DescribeComponentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeComponentResponse_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+--+-- 'componentName', 'describeComponentResponse_componentName' - The name of the component.+--+-- 'componentVersion', 'describeComponentResponse_componentVersion' - The version of the component.+--+-- 'creationTimestamp', 'describeComponentResponse_creationTimestamp' - The time at which the component was created, expressed in ISO 8601+-- format.+--+-- 'description', 'describeComponentResponse_description' - The description of the component version.+--+-- 'platforms', 'describeComponentResponse_platforms' - The platforms that the component version supports.+--+-- 'publisher', 'describeComponentResponse_publisher' - The publisher of the component version.+--+-- 'status', 'describeComponentResponse_status' - The status of the component version in IoT Greengrass V2. This status is+-- different from the status of the component on a core device.+--+-- 'tags', 'describeComponentResponse_tags' - A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- 'httpStatus', 'describeComponentResponse_httpStatus' - The response's http status code.+newDescribeComponentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeComponentResponse+newDescribeComponentResponse pHttpStatus_ =+  DescribeComponentResponse'+    { arn = Prelude.Nothing,+      componentName = Prelude.Nothing,+      componentVersion = Prelude.Nothing,+      creationTimestamp = Prelude.Nothing,+      description = Prelude.Nothing,+      platforms = Prelude.Nothing,+      publisher = Prelude.Nothing,+      status = Prelude.Nothing,+      tags = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+describeComponentResponse_arn :: Lens.Lens' DescribeComponentResponse (Prelude.Maybe Prelude.Text)+describeComponentResponse_arn = Lens.lens (\DescribeComponentResponse' {arn} -> arn) (\s@DescribeComponentResponse' {} a -> s {arn = a} :: DescribeComponentResponse)++-- | The name of the component.+describeComponentResponse_componentName :: Lens.Lens' DescribeComponentResponse (Prelude.Maybe Prelude.Text)+describeComponentResponse_componentName = Lens.lens (\DescribeComponentResponse' {componentName} -> componentName) (\s@DescribeComponentResponse' {} a -> s {componentName = a} :: DescribeComponentResponse)++-- | The version of the component.+describeComponentResponse_componentVersion :: Lens.Lens' DescribeComponentResponse (Prelude.Maybe Prelude.Text)+describeComponentResponse_componentVersion = Lens.lens (\DescribeComponentResponse' {componentVersion} -> componentVersion) (\s@DescribeComponentResponse' {} a -> s {componentVersion = a} :: DescribeComponentResponse)++-- | The time at which the component was created, expressed in ISO 8601+-- format.+describeComponentResponse_creationTimestamp :: Lens.Lens' DescribeComponentResponse (Prelude.Maybe Prelude.UTCTime)+describeComponentResponse_creationTimestamp = Lens.lens (\DescribeComponentResponse' {creationTimestamp} -> creationTimestamp) (\s@DescribeComponentResponse' {} a -> s {creationTimestamp = a} :: DescribeComponentResponse) Prelude.. Lens.mapping Data._Time++-- | The description of the component version.+describeComponentResponse_description :: Lens.Lens' DescribeComponentResponse (Prelude.Maybe Prelude.Text)+describeComponentResponse_description = Lens.lens (\DescribeComponentResponse' {description} -> description) (\s@DescribeComponentResponse' {} a -> s {description = a} :: DescribeComponentResponse)++-- | The platforms that the component version supports.+describeComponentResponse_platforms :: Lens.Lens' DescribeComponentResponse (Prelude.Maybe [ComponentPlatform])+describeComponentResponse_platforms = Lens.lens (\DescribeComponentResponse' {platforms} -> platforms) (\s@DescribeComponentResponse' {} a -> s {platforms = a} :: DescribeComponentResponse) Prelude.. Lens.mapping Lens.coerced++-- | The publisher of the component version.+describeComponentResponse_publisher :: Lens.Lens' DescribeComponentResponse (Prelude.Maybe Prelude.Text)+describeComponentResponse_publisher = Lens.lens (\DescribeComponentResponse' {publisher} -> publisher) (\s@DescribeComponentResponse' {} a -> s {publisher = a} :: DescribeComponentResponse)++-- | The status of the component version in IoT Greengrass V2. This status is+-- different from the status of the component on a core device.+describeComponentResponse_status :: Lens.Lens' DescribeComponentResponse (Prelude.Maybe CloudComponentStatus)+describeComponentResponse_status = Lens.lens (\DescribeComponentResponse' {status} -> status) (\s@DescribeComponentResponse' {} a -> s {status = a} :: DescribeComponentResponse)++-- | A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+describeComponentResponse_tags :: Lens.Lens' DescribeComponentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+describeComponentResponse_tags = Lens.lens (\DescribeComponentResponse' {tags} -> tags) (\s@DescribeComponentResponse' {} a -> s {tags = a} :: DescribeComponentResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeComponentResponse_httpStatus :: Lens.Lens' DescribeComponentResponse Prelude.Int+describeComponentResponse_httpStatus = Lens.lens (\DescribeComponentResponse' {httpStatus} -> httpStatus) (\s@DescribeComponentResponse' {} a -> s {httpStatus = a} :: DescribeComponentResponse)++instance Prelude.NFData DescribeComponentResponse where+  rnf DescribeComponentResponse' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf componentName+      `Prelude.seq` Prelude.rnf componentVersion+      `Prelude.seq` Prelude.rnf creationTimestamp+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf platforms+      `Prelude.seq` Prelude.rnf publisher+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/DisassociateServiceRoleFromAccount.hs view
@@ -0,0 +1,165 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.DisassociateServiceRoleFromAccount+-- 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 the Greengrass service role from IoT Greengrass for your+-- Amazon Web Services account in this Amazon Web Services Region. Without+-- a service role, IoT Greengrass can\'t verify the identity of client+-- devices or manage core device connectivity information. For more+-- information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-service-role.html Greengrass service role>+-- in the /IoT Greengrass Version 2 Developer Guide/.+module Amazonka.GreengrassV2.DisassociateServiceRoleFromAccount+  ( -- * Creating a Request+    DisassociateServiceRoleFromAccount (..),+    newDisassociateServiceRoleFromAccount,++    -- * Destructuring the Response+    DisassociateServiceRoleFromAccountResponse (..),+    newDisassociateServiceRoleFromAccountResponse,++    -- * Response Lenses+    disassociateServiceRoleFromAccountResponse_disassociatedAt,+    disassociateServiceRoleFromAccountResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDisassociateServiceRoleFromAccount' smart constructor.+data DisassociateServiceRoleFromAccount = DisassociateServiceRoleFromAccount'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateServiceRoleFromAccount' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDisassociateServiceRoleFromAccount ::+  DisassociateServiceRoleFromAccount+newDisassociateServiceRoleFromAccount =+  DisassociateServiceRoleFromAccount'++instance+  Core.AWSRequest+    DisassociateServiceRoleFromAccount+  where+  type+    AWSResponse DisassociateServiceRoleFromAccount =+      DisassociateServiceRoleFromAccountResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DisassociateServiceRoleFromAccountResponse'+            Prelude.<$> (x Data..?> "DisassociatedAt")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    DisassociateServiceRoleFromAccount+  where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance+  Prelude.NFData+    DisassociateServiceRoleFromAccount+  where+  rnf _ = ()++instance+  Data.ToHeaders+    DisassociateServiceRoleFromAccount+  where+  toHeaders = Prelude.const Prelude.mempty++instance+  Data.ToPath+    DisassociateServiceRoleFromAccount+  where+  toPath = Prelude.const "/greengrass/servicerole"++instance+  Data.ToQuery+    DisassociateServiceRoleFromAccount+  where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDisassociateServiceRoleFromAccountResponse' smart constructor.+data DisassociateServiceRoleFromAccountResponse = DisassociateServiceRoleFromAccountResponse'+  { -- | The time when the service role was disassociated from IoT Greengrass for+    -- your Amazon Web Services account in this Amazon Web Services Region.+    disassociatedAt :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateServiceRoleFromAccountResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'disassociatedAt', 'disassociateServiceRoleFromAccountResponse_disassociatedAt' - The time when the service role was disassociated from IoT Greengrass for+-- your Amazon Web Services account in this Amazon Web Services Region.+--+-- 'httpStatus', 'disassociateServiceRoleFromAccountResponse_httpStatus' - The response's http status code.+newDisassociateServiceRoleFromAccountResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DisassociateServiceRoleFromAccountResponse+newDisassociateServiceRoleFromAccountResponse+  pHttpStatus_ =+    DisassociateServiceRoleFromAccountResponse'+      { disassociatedAt =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The time when the service role was disassociated from IoT Greengrass for+-- your Amazon Web Services account in this Amazon Web Services Region.+disassociateServiceRoleFromAccountResponse_disassociatedAt :: Lens.Lens' DisassociateServiceRoleFromAccountResponse (Prelude.Maybe Prelude.Text)+disassociateServiceRoleFromAccountResponse_disassociatedAt = Lens.lens (\DisassociateServiceRoleFromAccountResponse' {disassociatedAt} -> disassociatedAt) (\s@DisassociateServiceRoleFromAccountResponse' {} a -> s {disassociatedAt = a} :: DisassociateServiceRoleFromAccountResponse)++-- | The response's http status code.+disassociateServiceRoleFromAccountResponse_httpStatus :: Lens.Lens' DisassociateServiceRoleFromAccountResponse Prelude.Int+disassociateServiceRoleFromAccountResponse_httpStatus = Lens.lens (\DisassociateServiceRoleFromAccountResponse' {httpStatus} -> httpStatus) (\s@DisassociateServiceRoleFromAccountResponse' {} a -> s {httpStatus = a} :: DisassociateServiceRoleFromAccountResponse)++instance+  Prelude.NFData+    DisassociateServiceRoleFromAccountResponse+  where+  rnf DisassociateServiceRoleFromAccountResponse' {..} =+    Prelude.rnf disassociatedAt+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/GetComponent.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.GreengrassV2.GetComponent+-- 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 recipe for a version of a component.+module Amazonka.GreengrassV2.GetComponent+  ( -- * Creating a Request+    GetComponent (..),+    newGetComponent,++    -- * Request Lenses+    getComponent_recipeOutputFormat,+    getComponent_arn,++    -- * Destructuring the Response+    GetComponentResponse (..),+    newGetComponentResponse,++    -- * Response Lenses+    getComponentResponse_tags,+    getComponentResponse_httpStatus,+    getComponentResponse_recipeOutputFormat,+    getComponentResponse_recipe,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetComponent' smart constructor.+data GetComponent = GetComponent'+  { -- | The format of the recipe.+    recipeOutputFormat :: Prelude.Maybe RecipeOutputFormat,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the component version.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetComponent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'recipeOutputFormat', 'getComponent_recipeOutputFormat' - The format of the recipe.+--+-- 'arn', 'getComponent_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+newGetComponent ::+  -- | 'arn'+  Prelude.Text ->+  GetComponent+newGetComponent pArn_ =+  GetComponent'+    { recipeOutputFormat = Prelude.Nothing,+      arn = pArn_+    }++-- | The format of the recipe.+getComponent_recipeOutputFormat :: Lens.Lens' GetComponent (Prelude.Maybe RecipeOutputFormat)+getComponent_recipeOutputFormat = Lens.lens (\GetComponent' {recipeOutputFormat} -> recipeOutputFormat) (\s@GetComponent' {} a -> s {recipeOutputFormat = a} :: GetComponent)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+getComponent_arn :: Lens.Lens' GetComponent Prelude.Text+getComponent_arn = Lens.lens (\GetComponent' {arn} -> arn) (\s@GetComponent' {} a -> s {arn = a} :: GetComponent)++instance Core.AWSRequest GetComponent where+  type AWSResponse GetComponent = GetComponentResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetComponentResponse'+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "recipeOutputFormat")+            Prelude.<*> (x Data..:> "recipe")+      )++instance Prelude.Hashable GetComponent where+  hashWithSalt _salt GetComponent' {..} =+    _salt+      `Prelude.hashWithSalt` recipeOutputFormat+      `Prelude.hashWithSalt` arn++instance Prelude.NFData GetComponent where+  rnf GetComponent' {..} =+    Prelude.rnf recipeOutputFormat+      `Prelude.seq` Prelude.rnf arn++instance Data.ToHeaders GetComponent where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath GetComponent where+  toPath GetComponent' {..} =+    Prelude.mconcat+      ["/greengrass/v2/components/", Data.toBS arn]++instance Data.ToQuery GetComponent where+  toQuery GetComponent' {..} =+    Prelude.mconcat+      ["recipeOutputFormat" Data.=: recipeOutputFormat]++-- | /See:/ 'newGetComponentResponse' smart constructor.+data GetComponentResponse = GetComponentResponse'+  { -- | A list of key-value pairs that contain metadata for the resource. For+    -- more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+    -- in the /IoT Greengrass V2 Developer Guide/.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The format of the recipe.+    recipeOutputFormat :: RecipeOutputFormat,+    -- | The recipe of the component version.+    recipe :: Data.Base64+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetComponentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getComponentResponse_tags' - A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- 'httpStatus', 'getComponentResponse_httpStatus' - The response's http status code.+--+-- 'recipeOutputFormat', 'getComponentResponse_recipeOutputFormat' - The format of the recipe.+--+-- 'recipe', 'getComponentResponse_recipe' - The recipe of the component version.--+-- -- /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.+newGetComponentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'recipeOutputFormat'+  RecipeOutputFormat ->+  -- | 'recipe'+  Prelude.ByteString ->+  GetComponentResponse+newGetComponentResponse+  pHttpStatus_+  pRecipeOutputFormat_+  pRecipe_ =+    GetComponentResponse'+      { tags = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        recipeOutputFormat = pRecipeOutputFormat_,+        recipe = Data._Base64 Lens.# pRecipe_+      }++-- | A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+getComponentResponse_tags :: Lens.Lens' GetComponentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+getComponentResponse_tags = Lens.lens (\GetComponentResponse' {tags} -> tags) (\s@GetComponentResponse' {} a -> s {tags = a} :: GetComponentResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getComponentResponse_httpStatus :: Lens.Lens' GetComponentResponse Prelude.Int+getComponentResponse_httpStatus = Lens.lens (\GetComponentResponse' {httpStatus} -> httpStatus) (\s@GetComponentResponse' {} a -> s {httpStatus = a} :: GetComponentResponse)++-- | The format of the recipe.+getComponentResponse_recipeOutputFormat :: Lens.Lens' GetComponentResponse RecipeOutputFormat+getComponentResponse_recipeOutputFormat = Lens.lens (\GetComponentResponse' {recipeOutputFormat} -> recipeOutputFormat) (\s@GetComponentResponse' {} a -> s {recipeOutputFormat = a} :: GetComponentResponse)++-- | The recipe of the component version.--+-- -- /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.+getComponentResponse_recipe :: Lens.Lens' GetComponentResponse Prelude.ByteString+getComponentResponse_recipe = Lens.lens (\GetComponentResponse' {recipe} -> recipe) (\s@GetComponentResponse' {} a -> s {recipe = a} :: GetComponentResponse) Prelude.. Data._Base64++instance Prelude.NFData GetComponentResponse where+  rnf GetComponentResponse' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf recipeOutputFormat+      `Prelude.seq` Prelude.rnf recipe
+ gen/Amazonka/GreengrassV2/GetComponentVersionArtifact.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.GreengrassV2.GetComponentVersionArtifact+-- 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 pre-signed URL to download a public or a Lambda component+-- artifact. Core devices call this operation to identify the URL that they+-- can use to download an artifact to install.+module Amazonka.GreengrassV2.GetComponentVersionArtifact+  ( -- * Creating a Request+    GetComponentVersionArtifact (..),+    newGetComponentVersionArtifact,++    -- * Request Lenses+    getComponentVersionArtifact_arn,+    getComponentVersionArtifact_artifactName,++    -- * Destructuring the Response+    GetComponentVersionArtifactResponse (..),+    newGetComponentVersionArtifactResponse,++    -- * Response Lenses+    getComponentVersionArtifactResponse_httpStatus,+    getComponentVersionArtifactResponse_preSignedUrl,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetComponentVersionArtifact' smart constructor.+data GetComponentVersionArtifact = GetComponentVersionArtifact'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the component version. Specify the ARN of a public or a Lambda+    -- component version.+    arn :: Prelude.Text,+    -- | The name of the artifact.+    --+    -- You can use the+    -- <https://docs.aws.amazon.com/greengrass/v2/APIReference/API_GetComponent.html GetComponent>+    -- operation to download the component recipe, which includes the URI of+    -- the artifact. The artifact name is the section of the URI after the+    -- scheme. For example, in the artifact URI @greengrass:SomeArtifact.zip@,+    -- the artifact name is @SomeArtifact.zip@.+    artifactName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetComponentVersionArtifact' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getComponentVersionArtifact_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version. Specify the ARN of a public or a Lambda+-- component version.+--+-- 'artifactName', 'getComponentVersionArtifact_artifactName' - The name of the artifact.+--+-- You can use the+-- <https://docs.aws.amazon.com/greengrass/v2/APIReference/API_GetComponent.html GetComponent>+-- operation to download the component recipe, which includes the URI of+-- the artifact. The artifact name is the section of the URI after the+-- scheme. For example, in the artifact URI @greengrass:SomeArtifact.zip@,+-- the artifact name is @SomeArtifact.zip@.+newGetComponentVersionArtifact ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'artifactName'+  Prelude.Text ->+  GetComponentVersionArtifact+newGetComponentVersionArtifact pArn_ pArtifactName_ =+  GetComponentVersionArtifact'+    { arn = pArn_,+      artifactName = pArtifactName_+    }++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version. Specify the ARN of a public or a Lambda+-- component version.+getComponentVersionArtifact_arn :: Lens.Lens' GetComponentVersionArtifact Prelude.Text+getComponentVersionArtifact_arn = Lens.lens (\GetComponentVersionArtifact' {arn} -> arn) (\s@GetComponentVersionArtifact' {} a -> s {arn = a} :: GetComponentVersionArtifact)++-- | The name of the artifact.+--+-- You can use the+-- <https://docs.aws.amazon.com/greengrass/v2/APIReference/API_GetComponent.html GetComponent>+-- operation to download the component recipe, which includes the URI of+-- the artifact. The artifact name is the section of the URI after the+-- scheme. For example, in the artifact URI @greengrass:SomeArtifact.zip@,+-- the artifact name is @SomeArtifact.zip@.+getComponentVersionArtifact_artifactName :: Lens.Lens' GetComponentVersionArtifact Prelude.Text+getComponentVersionArtifact_artifactName = Lens.lens (\GetComponentVersionArtifact' {artifactName} -> artifactName) (\s@GetComponentVersionArtifact' {} a -> s {artifactName = a} :: GetComponentVersionArtifact)++instance Core.AWSRequest GetComponentVersionArtifact where+  type+    AWSResponse GetComponentVersionArtifact =+      GetComponentVersionArtifactResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetComponentVersionArtifactResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "preSignedUrl")+      )++instance Prelude.Hashable GetComponentVersionArtifact where+  hashWithSalt _salt GetComponentVersionArtifact' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` artifactName++instance Prelude.NFData GetComponentVersionArtifact where+  rnf GetComponentVersionArtifact' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf artifactName++instance Data.ToHeaders GetComponentVersionArtifact where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath GetComponentVersionArtifact where+  toPath GetComponentVersionArtifact' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/components/",+        Data.toBS arn,+        "/artifacts/",+        Data.toBS artifactName+      ]++instance Data.ToQuery GetComponentVersionArtifact where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetComponentVersionArtifactResponse' smart constructor.+data GetComponentVersionArtifactResponse = GetComponentVersionArtifactResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The URL of the artifact.+    preSignedUrl :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetComponentVersionArtifactResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getComponentVersionArtifactResponse_httpStatus' - The response's http status code.+--+-- 'preSignedUrl', 'getComponentVersionArtifactResponse_preSignedUrl' - The URL of the artifact.+newGetComponentVersionArtifactResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'preSignedUrl'+  Prelude.Text ->+  GetComponentVersionArtifactResponse+newGetComponentVersionArtifactResponse+  pHttpStatus_+  pPreSignedUrl_ =+    GetComponentVersionArtifactResponse'+      { httpStatus =+          pHttpStatus_,+        preSignedUrl = pPreSignedUrl_+      }++-- | The response's http status code.+getComponentVersionArtifactResponse_httpStatus :: Lens.Lens' GetComponentVersionArtifactResponse Prelude.Int+getComponentVersionArtifactResponse_httpStatus = Lens.lens (\GetComponentVersionArtifactResponse' {httpStatus} -> httpStatus) (\s@GetComponentVersionArtifactResponse' {} a -> s {httpStatus = a} :: GetComponentVersionArtifactResponse)++-- | The URL of the artifact.+getComponentVersionArtifactResponse_preSignedUrl :: Lens.Lens' GetComponentVersionArtifactResponse Prelude.Text+getComponentVersionArtifactResponse_preSignedUrl = Lens.lens (\GetComponentVersionArtifactResponse' {preSignedUrl} -> preSignedUrl) (\s@GetComponentVersionArtifactResponse' {} a -> s {preSignedUrl = a} :: GetComponentVersionArtifactResponse)++instance+  Prelude.NFData+    GetComponentVersionArtifactResponse+  where+  rnf GetComponentVersionArtifactResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf preSignedUrl
+ gen/Amazonka/GreengrassV2/GetConnectivityInfo.hs view
@@ -0,0 +1,178 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.GetConnectivityInfo+-- 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 connectivity information for a Greengrass core device.+--+-- Connectivity information includes endpoints and ports where client+-- devices can connect to an MQTT broker on the core device. When a client+-- device calls the+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-discover-api.html IoT Greengrass discovery API>,+-- IoT Greengrass returns connectivity information for all of the core+-- devices where the client device can connect. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/connect-client-devices.html Connect client devices to core devices>+-- in the /IoT Greengrass Version 2 Developer Guide/.+module Amazonka.GreengrassV2.GetConnectivityInfo+  ( -- * Creating a Request+    GetConnectivityInfo (..),+    newGetConnectivityInfo,++    -- * Request Lenses+    getConnectivityInfo_thingName,++    -- * Destructuring the Response+    GetConnectivityInfoResponse (..),+    newGetConnectivityInfoResponse,++    -- * Response Lenses+    getConnectivityInfoResponse_connectivityInfo,+    getConnectivityInfoResponse_message,+    getConnectivityInfoResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetConnectivityInfo' smart constructor.+data GetConnectivityInfo = GetConnectivityInfo'+  { -- | The name of the core device. This is also the name of the IoT thing.+    thingName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetConnectivityInfo' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'thingName', 'getConnectivityInfo_thingName' - The name of the core device. This is also the name of the IoT thing.+newGetConnectivityInfo ::+  -- | 'thingName'+  Prelude.Text ->+  GetConnectivityInfo+newGetConnectivityInfo pThingName_ =+  GetConnectivityInfo' {thingName = pThingName_}++-- | The name of the core device. This is also the name of the IoT thing.+getConnectivityInfo_thingName :: Lens.Lens' GetConnectivityInfo Prelude.Text+getConnectivityInfo_thingName = Lens.lens (\GetConnectivityInfo' {thingName} -> thingName) (\s@GetConnectivityInfo' {} a -> s {thingName = a} :: GetConnectivityInfo)++instance Core.AWSRequest GetConnectivityInfo where+  type+    AWSResponse GetConnectivityInfo =+      GetConnectivityInfoResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetConnectivityInfoResponse'+            Prelude.<$> ( x+                            Data..?> "ConnectivityInfo"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "Message")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetConnectivityInfo where+  hashWithSalt _salt GetConnectivityInfo' {..} =+    _salt `Prelude.hashWithSalt` thingName++instance Prelude.NFData GetConnectivityInfo where+  rnf GetConnectivityInfo' {..} = Prelude.rnf thingName++instance Data.ToHeaders GetConnectivityInfo where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath GetConnectivityInfo where+  toPath GetConnectivityInfo' {..} =+    Prelude.mconcat+      [ "/greengrass/things/",+        Data.toBS thingName,+        "/connectivityInfo"+      ]++instance Data.ToQuery GetConnectivityInfo where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetConnectivityInfoResponse' smart constructor.+data GetConnectivityInfoResponse = GetConnectivityInfoResponse'+  { -- | The connectivity information for the core device.+    connectivityInfo :: Prelude.Maybe [ConnectivityInfo],+    -- | A message about the connectivity information request.+    message :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetConnectivityInfoResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'connectivityInfo', 'getConnectivityInfoResponse_connectivityInfo' - The connectivity information for the core device.+--+-- 'message', 'getConnectivityInfoResponse_message' - A message about the connectivity information request.+--+-- 'httpStatus', 'getConnectivityInfoResponse_httpStatus' - The response's http status code.+newGetConnectivityInfoResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetConnectivityInfoResponse+newGetConnectivityInfoResponse pHttpStatus_ =+  GetConnectivityInfoResponse'+    { connectivityInfo =+        Prelude.Nothing,+      message = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The connectivity information for the core device.+getConnectivityInfoResponse_connectivityInfo :: Lens.Lens' GetConnectivityInfoResponse (Prelude.Maybe [ConnectivityInfo])+getConnectivityInfoResponse_connectivityInfo = Lens.lens (\GetConnectivityInfoResponse' {connectivityInfo} -> connectivityInfo) (\s@GetConnectivityInfoResponse' {} a -> s {connectivityInfo = a} :: GetConnectivityInfoResponse) Prelude.. Lens.mapping Lens.coerced++-- | A message about the connectivity information request.+getConnectivityInfoResponse_message :: Lens.Lens' GetConnectivityInfoResponse (Prelude.Maybe Prelude.Text)+getConnectivityInfoResponse_message = Lens.lens (\GetConnectivityInfoResponse' {message} -> message) (\s@GetConnectivityInfoResponse' {} a -> s {message = a} :: GetConnectivityInfoResponse)++-- | The response's http status code.+getConnectivityInfoResponse_httpStatus :: Lens.Lens' GetConnectivityInfoResponse Prelude.Int+getConnectivityInfoResponse_httpStatus = Lens.lens (\GetConnectivityInfoResponse' {httpStatus} -> httpStatus) (\s@GetConnectivityInfoResponse' {} a -> s {httpStatus = a} :: GetConnectivityInfoResponse)++instance Prelude.NFData GetConnectivityInfoResponse where+  rnf GetConnectivityInfoResponse' {..} =+    Prelude.rnf connectivityInfo+      `Prelude.seq` Prelude.rnf message+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/GetCoreDevice.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.GreengrassV2.GetCoreDevice+-- 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 metadata for a Greengrass core device.+--+-- IoT Greengrass relies on individual devices to send status updates to+-- the Amazon Web Services Cloud. If the IoT Greengrass Core software+-- isn\'t running on the device, or if device isn\'t connected to the+-- Amazon Web Services Cloud, then the reported status of that device might+-- not reflect its current status. The status timestamp indicates when the+-- device status was last updated.+--+-- Core devices send status updates at the following times:+--+-- -   When the IoT Greengrass Core software starts+--+-- -   When the core device receives a deployment from the Amazon Web+--     Services Cloud+--+-- -   When the status of any component on the core device becomes @BROKEN@+--+-- -   At a+--     <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html#greengrass-nucleus-component-configuration-fss regular interval that you can configure>,+--     which defaults to 24 hours+--+-- -   For IoT Greengrass Core v2.7.0, the core device sends status updates+--     upon local deployment and cloud deployment+module Amazonka.GreengrassV2.GetCoreDevice+  ( -- * Creating a Request+    GetCoreDevice (..),+    newGetCoreDevice,++    -- * Request Lenses+    getCoreDevice_coreDeviceThingName,++    -- * Destructuring the Response+    GetCoreDeviceResponse (..),+    newGetCoreDeviceResponse,++    -- * Response Lenses+    getCoreDeviceResponse_architecture,+    getCoreDeviceResponse_coreDeviceThingName,+    getCoreDeviceResponse_coreVersion,+    getCoreDeviceResponse_lastStatusUpdateTimestamp,+    getCoreDeviceResponse_platform,+    getCoreDeviceResponse_status,+    getCoreDeviceResponse_tags,+    getCoreDeviceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetCoreDevice' smart constructor.+data GetCoreDevice = GetCoreDevice'+  { -- | The name of the core device. This is also the name of the IoT thing.+    coreDeviceThingName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetCoreDevice' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getCoreDevice_coreDeviceThingName' - The name of the core device. This is also the name of the IoT thing.+newGetCoreDevice ::+  -- | 'coreDeviceThingName'+  Prelude.Text ->+  GetCoreDevice+newGetCoreDevice pCoreDeviceThingName_ =+  GetCoreDevice'+    { coreDeviceThingName =+        pCoreDeviceThingName_+    }++-- | The name of the core device. This is also the name of the IoT thing.+getCoreDevice_coreDeviceThingName :: Lens.Lens' GetCoreDevice Prelude.Text+getCoreDevice_coreDeviceThingName = Lens.lens (\GetCoreDevice' {coreDeviceThingName} -> coreDeviceThingName) (\s@GetCoreDevice' {} a -> s {coreDeviceThingName = a} :: GetCoreDevice)++instance Core.AWSRequest GetCoreDevice where+  type+    AWSResponse GetCoreDevice =+      GetCoreDeviceResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetCoreDeviceResponse'+            Prelude.<$> (x Data..?> "architecture")+            Prelude.<*> (x Data..?> "coreDeviceThingName")+            Prelude.<*> (x Data..?> "coreVersion")+            Prelude.<*> (x Data..?> "lastStatusUpdateTimestamp")+            Prelude.<*> (x Data..?> "platform")+            Prelude.<*> (x Data..?> "status")+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetCoreDevice where+  hashWithSalt _salt GetCoreDevice' {..} =+    _salt `Prelude.hashWithSalt` coreDeviceThingName++instance Prelude.NFData GetCoreDevice where+  rnf GetCoreDevice' {..} =+    Prelude.rnf coreDeviceThingName++instance Data.ToHeaders GetCoreDevice where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath GetCoreDevice where+  toPath GetCoreDevice' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/coreDevices/",+        Data.toBS coreDeviceThingName+      ]++instance Data.ToQuery GetCoreDevice where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetCoreDeviceResponse' smart constructor.+data GetCoreDeviceResponse = GetCoreDeviceResponse'+  { -- | The computer architecture of the core device.+    architecture :: Prelude.Maybe Prelude.Text,+    -- | The name of the core device. This is also the name of the IoT thing.+    coreDeviceThingName :: Prelude.Maybe Prelude.Text,+    -- | The version of the IoT Greengrass Core software that the core device+    -- runs. This version is equivalent to the version of the Greengrass+    -- nucleus component that runs on the core device. For more information,+    -- see the+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html Greengrass nucleus component>+    -- in the /IoT Greengrass V2 Developer Guide/.+    coreVersion :: Prelude.Maybe Prelude.Text,+    -- | The time at which the core device\'s status last updated, expressed in+    -- ISO 8601 format.+    lastStatusUpdateTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The operating system platform that the core device runs.+    platform :: Prelude.Maybe Prelude.Text,+    -- | The status of the core device. The core device status can be:+    --+    -- -   @HEALTHY@ – The IoT Greengrass Core software and all components run+    --     on the core device without issue.+    --+    -- -   @UNHEALTHY@ – The IoT Greengrass Core software or a component is in+    --     a failed state on the core device.+    status :: Prelude.Maybe CoreDeviceStatus,+    -- | A list of key-value pairs that contain metadata for the resource. For+    -- more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+    -- in the /IoT Greengrass V2 Developer 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 'GetCoreDeviceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'architecture', 'getCoreDeviceResponse_architecture' - The computer architecture of the core device.+--+-- 'coreDeviceThingName', 'getCoreDeviceResponse_coreDeviceThingName' - The name of the core device. This is also the name of the IoT thing.+--+-- 'coreVersion', 'getCoreDeviceResponse_coreVersion' - The version of the IoT Greengrass Core software that the core device+-- runs. This version is equivalent to the version of the Greengrass+-- nucleus component that runs on the core device. For more information,+-- see the+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html Greengrass nucleus component>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- 'lastStatusUpdateTimestamp', 'getCoreDeviceResponse_lastStatusUpdateTimestamp' - The time at which the core device\'s status last updated, expressed in+-- ISO 8601 format.+--+-- 'platform', 'getCoreDeviceResponse_platform' - The operating system platform that the core device runs.+--+-- 'status', 'getCoreDeviceResponse_status' - The status of the core device. The core device status can be:+--+-- -   @HEALTHY@ – The IoT Greengrass Core software and all components run+--     on the core device without issue.+--+-- -   @UNHEALTHY@ – The IoT Greengrass Core software or a component is in+--     a failed state on the core device.+--+-- 'tags', 'getCoreDeviceResponse_tags' - A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- 'httpStatus', 'getCoreDeviceResponse_httpStatus' - The response's http status code.+newGetCoreDeviceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetCoreDeviceResponse+newGetCoreDeviceResponse pHttpStatus_ =+  GetCoreDeviceResponse'+    { architecture =+        Prelude.Nothing,+      coreDeviceThingName = Prelude.Nothing,+      coreVersion = Prelude.Nothing,+      lastStatusUpdateTimestamp = Prelude.Nothing,+      platform = Prelude.Nothing,+      status = Prelude.Nothing,+      tags = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The computer architecture of the core device.+getCoreDeviceResponse_architecture :: Lens.Lens' GetCoreDeviceResponse (Prelude.Maybe Prelude.Text)+getCoreDeviceResponse_architecture = Lens.lens (\GetCoreDeviceResponse' {architecture} -> architecture) (\s@GetCoreDeviceResponse' {} a -> s {architecture = a} :: GetCoreDeviceResponse)++-- | The name of the core device. This is also the name of the IoT thing.+getCoreDeviceResponse_coreDeviceThingName :: Lens.Lens' GetCoreDeviceResponse (Prelude.Maybe Prelude.Text)+getCoreDeviceResponse_coreDeviceThingName = Lens.lens (\GetCoreDeviceResponse' {coreDeviceThingName} -> coreDeviceThingName) (\s@GetCoreDeviceResponse' {} a -> s {coreDeviceThingName = a} :: GetCoreDeviceResponse)++-- | The version of the IoT Greengrass Core software that the core device+-- runs. This version is equivalent to the version of the Greengrass+-- nucleus component that runs on the core device. For more information,+-- see the+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html Greengrass nucleus component>+-- in the /IoT Greengrass V2 Developer Guide/.+getCoreDeviceResponse_coreVersion :: Lens.Lens' GetCoreDeviceResponse (Prelude.Maybe Prelude.Text)+getCoreDeviceResponse_coreVersion = Lens.lens (\GetCoreDeviceResponse' {coreVersion} -> coreVersion) (\s@GetCoreDeviceResponse' {} a -> s {coreVersion = a} :: GetCoreDeviceResponse)++-- | The time at which the core device\'s status last updated, expressed in+-- ISO 8601 format.+getCoreDeviceResponse_lastStatusUpdateTimestamp :: Lens.Lens' GetCoreDeviceResponse (Prelude.Maybe Prelude.UTCTime)+getCoreDeviceResponse_lastStatusUpdateTimestamp = Lens.lens (\GetCoreDeviceResponse' {lastStatusUpdateTimestamp} -> lastStatusUpdateTimestamp) (\s@GetCoreDeviceResponse' {} a -> s {lastStatusUpdateTimestamp = a} :: GetCoreDeviceResponse) Prelude.. Lens.mapping Data._Time++-- | The operating system platform that the core device runs.+getCoreDeviceResponse_platform :: Lens.Lens' GetCoreDeviceResponse (Prelude.Maybe Prelude.Text)+getCoreDeviceResponse_platform = Lens.lens (\GetCoreDeviceResponse' {platform} -> platform) (\s@GetCoreDeviceResponse' {} a -> s {platform = a} :: GetCoreDeviceResponse)++-- | The status of the core device. The core device status can be:+--+-- -   @HEALTHY@ – The IoT Greengrass Core software and all components run+--     on the core device without issue.+--+-- -   @UNHEALTHY@ – The IoT Greengrass Core software or a component is in+--     a failed state on the core device.+getCoreDeviceResponse_status :: Lens.Lens' GetCoreDeviceResponse (Prelude.Maybe CoreDeviceStatus)+getCoreDeviceResponse_status = Lens.lens (\GetCoreDeviceResponse' {status} -> status) (\s@GetCoreDeviceResponse' {} a -> s {status = a} :: GetCoreDeviceResponse)++-- | A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+getCoreDeviceResponse_tags :: Lens.Lens' GetCoreDeviceResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+getCoreDeviceResponse_tags = Lens.lens (\GetCoreDeviceResponse' {tags} -> tags) (\s@GetCoreDeviceResponse' {} a -> s {tags = a} :: GetCoreDeviceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getCoreDeviceResponse_httpStatus :: Lens.Lens' GetCoreDeviceResponse Prelude.Int+getCoreDeviceResponse_httpStatus = Lens.lens (\GetCoreDeviceResponse' {httpStatus} -> httpStatus) (\s@GetCoreDeviceResponse' {} a -> s {httpStatus = a} :: GetCoreDeviceResponse)++instance Prelude.NFData GetCoreDeviceResponse where+  rnf GetCoreDeviceResponse' {..} =+    Prelude.rnf architecture+      `Prelude.seq` Prelude.rnf coreDeviceThingName+      `Prelude.seq` Prelude.rnf coreVersion+      `Prelude.seq` Prelude.rnf lastStatusUpdateTimestamp+      `Prelude.seq` Prelude.rnf platform+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/GetDeployment.hs view
@@ -0,0 +1,355 @@+{-# 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.GreengrassV2.GetDeployment+-- 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 a deployment. Deployments define the components that run on+-- Greengrass core devices.+module Amazonka.GreengrassV2.GetDeployment+  ( -- * Creating a Request+    GetDeployment (..),+    newGetDeployment,++    -- * Request Lenses+    getDeployment_deploymentId,++    -- * Destructuring the Response+    GetDeploymentResponse (..),+    newGetDeploymentResponse,++    -- * Response Lenses+    getDeploymentResponse_components,+    getDeploymentResponse_creationTimestamp,+    getDeploymentResponse_deploymentId,+    getDeploymentResponse_deploymentName,+    getDeploymentResponse_deploymentPolicies,+    getDeploymentResponse_deploymentStatus,+    getDeploymentResponse_iotJobArn,+    getDeploymentResponse_iotJobConfiguration,+    getDeploymentResponse_iotJobId,+    getDeploymentResponse_isLatestForTarget,+    getDeploymentResponse_parentTargetArn,+    getDeploymentResponse_revisionId,+    getDeploymentResponse_tags,+    getDeploymentResponse_targetArn,+    getDeploymentResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetDeployment' smart constructor.+data GetDeployment = GetDeployment'+  { -- | The ID of the deployment.+    deploymentId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDeployment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deploymentId', 'getDeployment_deploymentId' - The ID of the deployment.+newGetDeployment ::+  -- | 'deploymentId'+  Prelude.Text ->+  GetDeployment+newGetDeployment pDeploymentId_ =+  GetDeployment' {deploymentId = pDeploymentId_}++-- | The ID of the deployment.+getDeployment_deploymentId :: Lens.Lens' GetDeployment Prelude.Text+getDeployment_deploymentId = Lens.lens (\GetDeployment' {deploymentId} -> deploymentId) (\s@GetDeployment' {} a -> s {deploymentId = a} :: GetDeployment)++instance Core.AWSRequest GetDeployment where+  type+    AWSResponse GetDeployment =+      GetDeploymentResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDeploymentResponse'+            Prelude.<$> (x Data..?> "components" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "creationTimestamp")+            Prelude.<*> (x Data..?> "deploymentId")+            Prelude.<*> (x Data..?> "deploymentName")+            Prelude.<*> (x Data..?> "deploymentPolicies")+            Prelude.<*> (x Data..?> "deploymentStatus")+            Prelude.<*> (x Data..?> "iotJobArn")+            Prelude.<*> (x Data..?> "iotJobConfiguration")+            Prelude.<*> (x Data..?> "iotJobId")+            Prelude.<*> (x Data..?> "isLatestForTarget")+            Prelude.<*> (x Data..?> "parentTargetArn")+            Prelude.<*> (x Data..?> "revisionId")+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "targetArn")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetDeployment where+  hashWithSalt _salt GetDeployment' {..} =+    _salt `Prelude.hashWithSalt` deploymentId++instance Prelude.NFData GetDeployment where+  rnf GetDeployment' {..} = Prelude.rnf deploymentId++instance Data.ToHeaders GetDeployment where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath GetDeployment where+  toPath GetDeployment' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/deployments/",+        Data.toBS deploymentId+      ]++instance Data.ToQuery GetDeployment where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetDeploymentResponse' smart constructor.+data GetDeploymentResponse = GetDeploymentResponse'+  { -- | The components to deploy. This is a dictionary, where each key is the+    -- name of a component, and each key\'s value is the version and+    -- configuration to deploy for that component.+    components :: Prelude.Maybe (Prelude.HashMap Prelude.Text ComponentDeploymentSpecification),+    -- | The time at which the deployment was created, expressed in ISO 8601+    -- format.+    creationTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The ID of the deployment.+    deploymentId :: Prelude.Maybe Prelude.Text,+    -- | The name of the deployment.+    deploymentName :: Prelude.Maybe Prelude.Text,+    -- | The deployment policies for the deployment. These policies define how+    -- the deployment updates components and handles failure.+    deploymentPolicies :: Prelude.Maybe DeploymentPolicies,+    -- | The status of the deployment.+    deploymentStatus :: Prelude.Maybe DeploymentStatus,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the IoT job that applies the deployment to target devices.+    iotJobArn :: Prelude.Maybe Prelude.Text,+    -- | The job configuration for the deployment configuration. The job+    -- configuration specifies the rollout, timeout, and stop configurations+    -- for the deployment configuration.+    iotJobConfiguration :: Prelude.Maybe DeploymentIoTJobConfiguration,+    -- | The ID of the IoT job that applies the deployment to target devices.+    iotJobId :: Prelude.Maybe Prelude.Text,+    -- | Whether or not the deployment is the latest revision for its target.+    isLatestForTarget :: Prelude.Maybe Prelude.Bool,+    -- | The parent deployment\'s target+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- within a subdeployment.+    parentTargetArn :: Prelude.Maybe Prelude.Text,+    -- | The revision number of the deployment.+    revisionId :: Prelude.Maybe Prelude.Text,+    -- | A list of key-value pairs that contain metadata for the resource. For+    -- more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+    -- in the /IoT Greengrass V2 Developer Guide/.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the target IoT thing or thing group.+    targetArn :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDeploymentResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'components', 'getDeploymentResponse_components' - The components to deploy. This is a dictionary, where each key is the+-- name of a component, and each key\'s value is the version and+-- configuration to deploy for that component.+--+-- 'creationTimestamp', 'getDeploymentResponse_creationTimestamp' - The time at which the deployment was created, expressed in ISO 8601+-- format.+--+-- 'deploymentId', 'getDeploymentResponse_deploymentId' - The ID of the deployment.+--+-- 'deploymentName', 'getDeploymentResponse_deploymentName' - The name of the deployment.+--+-- 'deploymentPolicies', 'getDeploymentResponse_deploymentPolicies' - The deployment policies for the deployment. These policies define how+-- the deployment updates components and handles failure.+--+-- 'deploymentStatus', 'getDeploymentResponse_deploymentStatus' - The status of the deployment.+--+-- 'iotJobArn', 'getDeploymentResponse_iotJobArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IoT job that applies the deployment to target devices.+--+-- 'iotJobConfiguration', 'getDeploymentResponse_iotJobConfiguration' - The job configuration for the deployment configuration. The job+-- configuration specifies the rollout, timeout, and stop configurations+-- for the deployment configuration.+--+-- 'iotJobId', 'getDeploymentResponse_iotJobId' - The ID of the IoT job that applies the deployment to target devices.+--+-- 'isLatestForTarget', 'getDeploymentResponse_isLatestForTarget' - Whether or not the deployment is the latest revision for its target.+--+-- 'parentTargetArn', 'getDeploymentResponse_parentTargetArn' - The parent deployment\'s target+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- within a subdeployment.+--+-- 'revisionId', 'getDeploymentResponse_revisionId' - The revision number of the deployment.+--+-- 'tags', 'getDeploymentResponse_tags' - A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- 'targetArn', 'getDeploymentResponse_targetArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the target IoT thing or thing group.+--+-- 'httpStatus', 'getDeploymentResponse_httpStatus' - The response's http status code.+newGetDeploymentResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetDeploymentResponse+newGetDeploymentResponse pHttpStatus_ =+  GetDeploymentResponse'+    { components =+        Prelude.Nothing,+      creationTimestamp = Prelude.Nothing,+      deploymentId = Prelude.Nothing,+      deploymentName = Prelude.Nothing,+      deploymentPolicies = Prelude.Nothing,+      deploymentStatus = Prelude.Nothing,+      iotJobArn = Prelude.Nothing,+      iotJobConfiguration = Prelude.Nothing,+      iotJobId = Prelude.Nothing,+      isLatestForTarget = Prelude.Nothing,+      parentTargetArn = Prelude.Nothing,+      revisionId = Prelude.Nothing,+      tags = Prelude.Nothing,+      targetArn = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The components to deploy. This is a dictionary, where each key is the+-- name of a component, and each key\'s value is the version and+-- configuration to deploy for that component.+getDeploymentResponse_components :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text ComponentDeploymentSpecification))+getDeploymentResponse_components = Lens.lens (\GetDeploymentResponse' {components} -> components) (\s@GetDeploymentResponse' {} a -> s {components = a} :: GetDeploymentResponse) Prelude.. Lens.mapping Lens.coerced++-- | The time at which the deployment was created, expressed in ISO 8601+-- format.+getDeploymentResponse_creationTimestamp :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe Prelude.UTCTime)+getDeploymentResponse_creationTimestamp = Lens.lens (\GetDeploymentResponse' {creationTimestamp} -> creationTimestamp) (\s@GetDeploymentResponse' {} a -> s {creationTimestamp = a} :: GetDeploymentResponse) Prelude.. Lens.mapping Data._Time++-- | The ID of the deployment.+getDeploymentResponse_deploymentId :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe Prelude.Text)+getDeploymentResponse_deploymentId = Lens.lens (\GetDeploymentResponse' {deploymentId} -> deploymentId) (\s@GetDeploymentResponse' {} a -> s {deploymentId = a} :: GetDeploymentResponse)++-- | The name of the deployment.+getDeploymentResponse_deploymentName :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe Prelude.Text)+getDeploymentResponse_deploymentName = Lens.lens (\GetDeploymentResponse' {deploymentName} -> deploymentName) (\s@GetDeploymentResponse' {} a -> s {deploymentName = a} :: GetDeploymentResponse)++-- | The deployment policies for the deployment. These policies define how+-- the deployment updates components and handles failure.+getDeploymentResponse_deploymentPolicies :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe DeploymentPolicies)+getDeploymentResponse_deploymentPolicies = Lens.lens (\GetDeploymentResponse' {deploymentPolicies} -> deploymentPolicies) (\s@GetDeploymentResponse' {} a -> s {deploymentPolicies = a} :: GetDeploymentResponse)++-- | The status of the deployment.+getDeploymentResponse_deploymentStatus :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe DeploymentStatus)+getDeploymentResponse_deploymentStatus = Lens.lens (\GetDeploymentResponse' {deploymentStatus} -> deploymentStatus) (\s@GetDeploymentResponse' {} a -> s {deploymentStatus = a} :: GetDeploymentResponse)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IoT job that applies the deployment to target devices.+getDeploymentResponse_iotJobArn :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe Prelude.Text)+getDeploymentResponse_iotJobArn = Lens.lens (\GetDeploymentResponse' {iotJobArn} -> iotJobArn) (\s@GetDeploymentResponse' {} a -> s {iotJobArn = a} :: GetDeploymentResponse)++-- | The job configuration for the deployment configuration. The job+-- configuration specifies the rollout, timeout, and stop configurations+-- for the deployment configuration.+getDeploymentResponse_iotJobConfiguration :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe DeploymentIoTJobConfiguration)+getDeploymentResponse_iotJobConfiguration = Lens.lens (\GetDeploymentResponse' {iotJobConfiguration} -> iotJobConfiguration) (\s@GetDeploymentResponse' {} a -> s {iotJobConfiguration = a} :: GetDeploymentResponse)++-- | The ID of the IoT job that applies the deployment to target devices.+getDeploymentResponse_iotJobId :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe Prelude.Text)+getDeploymentResponse_iotJobId = Lens.lens (\GetDeploymentResponse' {iotJobId} -> iotJobId) (\s@GetDeploymentResponse' {} a -> s {iotJobId = a} :: GetDeploymentResponse)++-- | Whether or not the deployment is the latest revision for its target.+getDeploymentResponse_isLatestForTarget :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe Prelude.Bool)+getDeploymentResponse_isLatestForTarget = Lens.lens (\GetDeploymentResponse' {isLatestForTarget} -> isLatestForTarget) (\s@GetDeploymentResponse' {} a -> s {isLatestForTarget = a} :: GetDeploymentResponse)++-- | The parent deployment\'s target+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- within a subdeployment.+getDeploymentResponse_parentTargetArn :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe Prelude.Text)+getDeploymentResponse_parentTargetArn = Lens.lens (\GetDeploymentResponse' {parentTargetArn} -> parentTargetArn) (\s@GetDeploymentResponse' {} a -> s {parentTargetArn = a} :: GetDeploymentResponse)++-- | The revision number of the deployment.+getDeploymentResponse_revisionId :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe Prelude.Text)+getDeploymentResponse_revisionId = Lens.lens (\GetDeploymentResponse' {revisionId} -> revisionId) (\s@GetDeploymentResponse' {} a -> s {revisionId = a} :: GetDeploymentResponse)++-- | A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+getDeploymentResponse_tags :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+getDeploymentResponse_tags = Lens.lens (\GetDeploymentResponse' {tags} -> tags) (\s@GetDeploymentResponse' {} a -> s {tags = a} :: GetDeploymentResponse) Prelude.. Lens.mapping Lens.coerced++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the target IoT thing or thing group.+getDeploymentResponse_targetArn :: Lens.Lens' GetDeploymentResponse (Prelude.Maybe Prelude.Text)+getDeploymentResponse_targetArn = Lens.lens (\GetDeploymentResponse' {targetArn} -> targetArn) (\s@GetDeploymentResponse' {} a -> s {targetArn = a} :: GetDeploymentResponse)++-- | The response's http status code.+getDeploymentResponse_httpStatus :: Lens.Lens' GetDeploymentResponse Prelude.Int+getDeploymentResponse_httpStatus = Lens.lens (\GetDeploymentResponse' {httpStatus} -> httpStatus) (\s@GetDeploymentResponse' {} a -> s {httpStatus = a} :: GetDeploymentResponse)++instance Prelude.NFData GetDeploymentResponse where+  rnf GetDeploymentResponse' {..} =+    Prelude.rnf components+      `Prelude.seq` Prelude.rnf creationTimestamp+      `Prelude.seq` Prelude.rnf deploymentId+      `Prelude.seq` Prelude.rnf deploymentName+      `Prelude.seq` Prelude.rnf deploymentPolicies+      `Prelude.seq` Prelude.rnf deploymentStatus+      `Prelude.seq` Prelude.rnf iotJobArn+      `Prelude.seq` Prelude.rnf iotJobConfiguration+      `Prelude.seq` Prelude.rnf iotJobId+      `Prelude.seq` Prelude.rnf isLatestForTarget+      `Prelude.seq` Prelude.rnf parentTargetArn+      `Prelude.seq` Prelude.rnf revisionId+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf targetArn+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/GetServiceRoleForAccount.hs view
@@ -0,0 +1,160 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.GetServiceRoleForAccount+-- 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 service role associated with IoT Greengrass for your Amazon Web+-- Services account in this Amazon Web Services Region. IoT Greengrass uses+-- this role to verify the identity of client devices and manage core+-- device connectivity information. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-service-role.html Greengrass service role>+-- in the /IoT Greengrass Version 2 Developer Guide/.+module Amazonka.GreengrassV2.GetServiceRoleForAccount+  ( -- * Creating a Request+    GetServiceRoleForAccount (..),+    newGetServiceRoleForAccount,++    -- * Destructuring the Response+    GetServiceRoleForAccountResponse (..),+    newGetServiceRoleForAccountResponse,++    -- * Response Lenses+    getServiceRoleForAccountResponse_associatedAt,+    getServiceRoleForAccountResponse_roleArn,+    getServiceRoleForAccountResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetServiceRoleForAccount' smart constructor.+data GetServiceRoleForAccount = GetServiceRoleForAccount'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetServiceRoleForAccount' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newGetServiceRoleForAccount ::+  GetServiceRoleForAccount+newGetServiceRoleForAccount =+  GetServiceRoleForAccount'++instance Core.AWSRequest GetServiceRoleForAccount where+  type+    AWSResponse GetServiceRoleForAccount =+      GetServiceRoleForAccountResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetServiceRoleForAccountResponse'+            Prelude.<$> (x Data..?> "AssociatedAt")+            Prelude.<*> (x Data..?> "RoleArn")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetServiceRoleForAccount where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData GetServiceRoleForAccount where+  rnf _ = ()++instance Data.ToHeaders GetServiceRoleForAccount where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath GetServiceRoleForAccount where+  toPath = Prelude.const "/greengrass/servicerole"++instance Data.ToQuery GetServiceRoleForAccount where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetServiceRoleForAccountResponse' smart constructor.+data GetServiceRoleForAccountResponse = GetServiceRoleForAccountResponse'+  { -- | The time when the service role was associated with IoT Greengrass for+    -- your Amazon Web Services account in this Amazon Web Services Region.+    associatedAt :: Prelude.Maybe Prelude.Text,+    -- | The ARN of the service role that is associated with IoT Greengrass for+    -- your Amazon Web Services account in this Amazon Web Services Region.+    roleArn :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetServiceRoleForAccountResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'associatedAt', 'getServiceRoleForAccountResponse_associatedAt' - The time when the service role was associated with IoT Greengrass for+-- your Amazon Web Services account in this Amazon Web Services Region.+--+-- 'roleArn', 'getServiceRoleForAccountResponse_roleArn' - The ARN of the service role that is associated with IoT Greengrass for+-- your Amazon Web Services account in this Amazon Web Services Region.+--+-- 'httpStatus', 'getServiceRoleForAccountResponse_httpStatus' - The response's http status code.+newGetServiceRoleForAccountResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetServiceRoleForAccountResponse+newGetServiceRoleForAccountResponse pHttpStatus_ =+  GetServiceRoleForAccountResponse'+    { associatedAt =+        Prelude.Nothing,+      roleArn = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The time when the service role was associated with IoT Greengrass for+-- your Amazon Web Services account in this Amazon Web Services Region.+getServiceRoleForAccountResponse_associatedAt :: Lens.Lens' GetServiceRoleForAccountResponse (Prelude.Maybe Prelude.Text)+getServiceRoleForAccountResponse_associatedAt = Lens.lens (\GetServiceRoleForAccountResponse' {associatedAt} -> associatedAt) (\s@GetServiceRoleForAccountResponse' {} a -> s {associatedAt = a} :: GetServiceRoleForAccountResponse)++-- | The ARN of the service role that is associated with IoT Greengrass for+-- your Amazon Web Services account in this Amazon Web Services Region.+getServiceRoleForAccountResponse_roleArn :: Lens.Lens' GetServiceRoleForAccountResponse (Prelude.Maybe Prelude.Text)+getServiceRoleForAccountResponse_roleArn = Lens.lens (\GetServiceRoleForAccountResponse' {roleArn} -> roleArn) (\s@GetServiceRoleForAccountResponse' {} a -> s {roleArn = a} :: GetServiceRoleForAccountResponse)++-- | The response's http status code.+getServiceRoleForAccountResponse_httpStatus :: Lens.Lens' GetServiceRoleForAccountResponse Prelude.Int+getServiceRoleForAccountResponse_httpStatus = Lens.lens (\GetServiceRoleForAccountResponse' {httpStatus} -> httpStatus) (\s@GetServiceRoleForAccountResponse' {} a -> s {httpStatus = a} :: GetServiceRoleForAccountResponse)++instance+  Prelude.NFData+    GetServiceRoleForAccountResponse+  where+  rnf GetServiceRoleForAccountResponse' {..} =+    Prelude.rnf associatedAt+      `Prelude.seq` Prelude.rnf roleArn+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/Lens.hs view
@@ -0,0 +1,526 @@+{-# 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.GreengrassV2.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.GreengrassV2.Lens+  ( -- * Operations++    -- ** AssociateServiceRoleToAccount+    associateServiceRoleToAccount_roleArn,+    associateServiceRoleToAccountResponse_associatedAt,+    associateServiceRoleToAccountResponse_httpStatus,++    -- ** BatchAssociateClientDeviceWithCoreDevice+    batchAssociateClientDeviceWithCoreDevice_entries,+    batchAssociateClientDeviceWithCoreDevice_coreDeviceThingName,+    batchAssociateClientDeviceWithCoreDeviceResponse_errorEntries,+    batchAssociateClientDeviceWithCoreDeviceResponse_httpStatus,++    -- ** BatchDisassociateClientDeviceFromCoreDevice+    batchDisassociateClientDeviceFromCoreDevice_entries,+    batchDisassociateClientDeviceFromCoreDevice_coreDeviceThingName,+    batchDisassociateClientDeviceFromCoreDeviceResponse_errorEntries,+    batchDisassociateClientDeviceFromCoreDeviceResponse_httpStatus,++    -- ** CancelDeployment+    cancelDeployment_deploymentId,+    cancelDeploymentResponse_message,+    cancelDeploymentResponse_httpStatus,++    -- ** CreateComponentVersion+    createComponentVersion_clientToken,+    createComponentVersion_inlineRecipe,+    createComponentVersion_lambdaFunction,+    createComponentVersion_tags,+    createComponentVersionResponse_arn,+    createComponentVersionResponse_httpStatus,+    createComponentVersionResponse_componentName,+    createComponentVersionResponse_componentVersion,+    createComponentVersionResponse_creationTimestamp,+    createComponentVersionResponse_status,++    -- ** CreateDeployment+    createDeployment_clientToken,+    createDeployment_components,+    createDeployment_deploymentName,+    createDeployment_deploymentPolicies,+    createDeployment_iotJobConfiguration,+    createDeployment_parentTargetArn,+    createDeployment_tags,+    createDeployment_targetArn,+    createDeploymentResponse_deploymentId,+    createDeploymentResponse_iotJobArn,+    createDeploymentResponse_iotJobId,+    createDeploymentResponse_httpStatus,++    -- ** DeleteComponent+    deleteComponent_arn,++    -- ** DeleteCoreDevice+    deleteCoreDevice_coreDeviceThingName,++    -- ** DeleteDeployment+    deleteDeployment_deploymentId,++    -- ** DescribeComponent+    describeComponent_arn,+    describeComponentResponse_arn,+    describeComponentResponse_componentName,+    describeComponentResponse_componentVersion,+    describeComponentResponse_creationTimestamp,+    describeComponentResponse_description,+    describeComponentResponse_platforms,+    describeComponentResponse_publisher,+    describeComponentResponse_status,+    describeComponentResponse_tags,+    describeComponentResponse_httpStatus,++    -- ** DisassociateServiceRoleFromAccount+    disassociateServiceRoleFromAccountResponse_disassociatedAt,+    disassociateServiceRoleFromAccountResponse_httpStatus,++    -- ** GetComponent+    getComponent_recipeOutputFormat,+    getComponent_arn,+    getComponentResponse_tags,+    getComponentResponse_httpStatus,+    getComponentResponse_recipeOutputFormat,+    getComponentResponse_recipe,++    -- ** GetComponentVersionArtifact+    getComponentVersionArtifact_arn,+    getComponentVersionArtifact_artifactName,+    getComponentVersionArtifactResponse_httpStatus,+    getComponentVersionArtifactResponse_preSignedUrl,++    -- ** GetConnectivityInfo+    getConnectivityInfo_thingName,+    getConnectivityInfoResponse_connectivityInfo,+    getConnectivityInfoResponse_message,+    getConnectivityInfoResponse_httpStatus,++    -- ** GetCoreDevice+    getCoreDevice_coreDeviceThingName,+    getCoreDeviceResponse_architecture,+    getCoreDeviceResponse_coreDeviceThingName,+    getCoreDeviceResponse_coreVersion,+    getCoreDeviceResponse_lastStatusUpdateTimestamp,+    getCoreDeviceResponse_platform,+    getCoreDeviceResponse_status,+    getCoreDeviceResponse_tags,+    getCoreDeviceResponse_httpStatus,++    -- ** GetDeployment+    getDeployment_deploymentId,+    getDeploymentResponse_components,+    getDeploymentResponse_creationTimestamp,+    getDeploymentResponse_deploymentId,+    getDeploymentResponse_deploymentName,+    getDeploymentResponse_deploymentPolicies,+    getDeploymentResponse_deploymentStatus,+    getDeploymentResponse_iotJobArn,+    getDeploymentResponse_iotJobConfiguration,+    getDeploymentResponse_iotJobId,+    getDeploymentResponse_isLatestForTarget,+    getDeploymentResponse_parentTargetArn,+    getDeploymentResponse_revisionId,+    getDeploymentResponse_tags,+    getDeploymentResponse_targetArn,+    getDeploymentResponse_httpStatus,++    -- ** GetServiceRoleForAccount+    getServiceRoleForAccountResponse_associatedAt,+    getServiceRoleForAccountResponse_roleArn,+    getServiceRoleForAccountResponse_httpStatus,++    -- ** ListClientDevicesAssociatedWithCoreDevice+    listClientDevicesAssociatedWithCoreDevice_maxResults,+    listClientDevicesAssociatedWithCoreDevice_nextToken,+    listClientDevicesAssociatedWithCoreDevice_coreDeviceThingName,+    listClientDevicesAssociatedWithCoreDeviceResponse_associatedClientDevices,+    listClientDevicesAssociatedWithCoreDeviceResponse_nextToken,+    listClientDevicesAssociatedWithCoreDeviceResponse_httpStatus,++    -- ** ListComponentVersions+    listComponentVersions_maxResults,+    listComponentVersions_nextToken,+    listComponentVersions_arn,+    listComponentVersionsResponse_componentVersions,+    listComponentVersionsResponse_nextToken,+    listComponentVersionsResponse_httpStatus,++    -- ** ListComponents+    listComponents_maxResults,+    listComponents_nextToken,+    listComponents_scope,+    listComponentsResponse_components,+    listComponentsResponse_nextToken,+    listComponentsResponse_httpStatus,++    -- ** ListCoreDevices+    listCoreDevices_maxResults,+    listCoreDevices_nextToken,+    listCoreDevices_status,+    listCoreDevices_thingGroupArn,+    listCoreDevicesResponse_coreDevices,+    listCoreDevicesResponse_nextToken,+    listCoreDevicesResponse_httpStatus,++    -- ** ListDeployments+    listDeployments_historyFilter,+    listDeployments_maxResults,+    listDeployments_nextToken,+    listDeployments_parentTargetArn,+    listDeployments_targetArn,+    listDeploymentsResponse_deployments,+    listDeploymentsResponse_nextToken,+    listDeploymentsResponse_httpStatus,++    -- ** ListEffectiveDeployments+    listEffectiveDeployments_maxResults,+    listEffectiveDeployments_nextToken,+    listEffectiveDeployments_coreDeviceThingName,+    listEffectiveDeploymentsResponse_effectiveDeployments,+    listEffectiveDeploymentsResponse_nextToken,+    listEffectiveDeploymentsResponse_httpStatus,++    -- ** ListInstalledComponents+    listInstalledComponents_maxResults,+    listInstalledComponents_nextToken,+    listInstalledComponents_topologyFilter,+    listInstalledComponents_coreDeviceThingName,+    listInstalledComponentsResponse_installedComponents,+    listInstalledComponentsResponse_nextToken,+    listInstalledComponentsResponse_httpStatus,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** ResolveComponentCandidates+    resolveComponentCandidates_componentCandidates,+    resolveComponentCandidates_platform,+    resolveComponentCandidatesResponse_resolvedComponentVersions,+    resolveComponentCandidatesResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateConnectivityInfo+    updateConnectivityInfo_thingName,+    updateConnectivityInfo_connectivityInfo,+    updateConnectivityInfoResponse_message,+    updateConnectivityInfoResponse_version,+    updateConnectivityInfoResponse_httpStatus,++    -- * Types++    -- ** AssociateClientDeviceWithCoreDeviceEntry+    associateClientDeviceWithCoreDeviceEntry_thingName,++    -- ** AssociateClientDeviceWithCoreDeviceErrorEntry+    associateClientDeviceWithCoreDeviceErrorEntry_code,+    associateClientDeviceWithCoreDeviceErrorEntry_message,+    associateClientDeviceWithCoreDeviceErrorEntry_thingName,++    -- ** AssociatedClientDevice+    associatedClientDevice_associationTimestamp,+    associatedClientDevice_thingName,++    -- ** CloudComponentStatus+    cloudComponentStatus_componentState,+    cloudComponentStatus_errors,+    cloudComponentStatus_message,+    cloudComponentStatus_vendorGuidance,+    cloudComponentStatus_vendorGuidanceMessage,++    -- ** Component+    component_arn,+    component_componentName,+    component_latestVersion,++    -- ** ComponentCandidate+    componentCandidate_componentName,+    componentCandidate_componentVersion,+    componentCandidate_versionRequirements,++    -- ** ComponentConfigurationUpdate+    componentConfigurationUpdate_merge,+    componentConfigurationUpdate_reset,++    -- ** ComponentDependencyRequirement+    componentDependencyRequirement_dependencyType,+    componentDependencyRequirement_versionRequirement,++    -- ** ComponentDeploymentSpecification+    componentDeploymentSpecification_componentVersion,+    componentDeploymentSpecification_configurationUpdate,+    componentDeploymentSpecification_runWith,++    -- ** ComponentLatestVersion+    componentLatestVersion_arn,+    componentLatestVersion_componentVersion,+    componentLatestVersion_creationTimestamp,+    componentLatestVersion_description,+    componentLatestVersion_platforms,+    componentLatestVersion_publisher,++    -- ** ComponentPlatform+    componentPlatform_attributes,+    componentPlatform_name,++    -- ** ComponentRunWith+    componentRunWith_posixUser,+    componentRunWith_systemResourceLimits,+    componentRunWith_windowsUser,++    -- ** ComponentVersionListItem+    componentVersionListItem_arn,+    componentVersionListItem_componentName,+    componentVersionListItem_componentVersion,++    -- ** ConnectivityInfo+    connectivityInfo_hostAddress,+    connectivityInfo_id,+    connectivityInfo_metadata,+    connectivityInfo_portNumber,++    -- ** CoreDevice+    coreDevice_coreDeviceThingName,+    coreDevice_lastStatusUpdateTimestamp,+    coreDevice_status,++    -- ** Deployment+    deployment_creationTimestamp,+    deployment_deploymentId,+    deployment_deploymentName,+    deployment_deploymentStatus,+    deployment_isLatestForTarget,+    deployment_parentTargetArn,+    deployment_revisionId,+    deployment_targetArn,++    -- ** DeploymentComponentUpdatePolicy+    deploymentComponentUpdatePolicy_action,+    deploymentComponentUpdatePolicy_timeoutInSeconds,++    -- ** DeploymentConfigurationValidationPolicy+    deploymentConfigurationValidationPolicy_timeoutInSeconds,++    -- ** DeploymentIoTJobConfiguration+    deploymentIoTJobConfiguration_abortConfig,+    deploymentIoTJobConfiguration_jobExecutionsRolloutConfig,+    deploymentIoTJobConfiguration_timeoutConfig,++    -- ** DeploymentPolicies+    deploymentPolicies_componentUpdatePolicy,+    deploymentPolicies_configurationValidationPolicy,+    deploymentPolicies_failureHandlingPolicy,++    -- ** DisassociateClientDeviceFromCoreDeviceEntry+    disassociateClientDeviceFromCoreDeviceEntry_thingName,++    -- ** DisassociateClientDeviceFromCoreDeviceErrorEntry+    disassociateClientDeviceFromCoreDeviceErrorEntry_code,+    disassociateClientDeviceFromCoreDeviceErrorEntry_message,+    disassociateClientDeviceFromCoreDeviceErrorEntry_thingName,++    -- ** EffectiveDeployment+    effectiveDeployment_description,+    effectiveDeployment_iotJobArn,+    effectiveDeployment_iotJobId,+    effectiveDeployment_reason,+    effectiveDeployment_statusDetails,+    effectiveDeployment_deploymentId,+    effectiveDeployment_deploymentName,+    effectiveDeployment_targetArn,+    effectiveDeployment_coreDeviceExecutionStatus,+    effectiveDeployment_creationTimestamp,+    effectiveDeployment_modifiedTimestamp,++    -- ** EffectiveDeploymentStatusDetails+    effectiveDeploymentStatusDetails_errorStack,+    effectiveDeploymentStatusDetails_errorTypes,++    -- ** InstalledComponent+    installedComponent_componentName,+    installedComponent_componentVersion,+    installedComponent_isRoot,+    installedComponent_lastInstallationSource,+    installedComponent_lastReportedTimestamp,+    installedComponent_lastStatusChangeTimestamp,+    installedComponent_lifecycleState,+    installedComponent_lifecycleStateDetails,+    installedComponent_lifecycleStatusCodes,++    -- ** IoTJobAbortConfig+    ioTJobAbortConfig_criteriaList,++    -- ** IoTJobAbortCriteria+    ioTJobAbortCriteria_failureType,+    ioTJobAbortCriteria_action,+    ioTJobAbortCriteria_thresholdPercentage,+    ioTJobAbortCriteria_minNumberOfExecutedThings,++    -- ** IoTJobExecutionsRolloutConfig+    ioTJobExecutionsRolloutConfig_exponentialRate,+    ioTJobExecutionsRolloutConfig_maximumPerMinute,++    -- ** IoTJobExponentialRolloutRate+    ioTJobExponentialRolloutRate_baseRatePerMinute,+    ioTJobExponentialRolloutRate_incrementFactor,+    ioTJobExponentialRolloutRate_rateIncreaseCriteria,++    -- ** IoTJobRateIncreaseCriteria+    ioTJobRateIncreaseCriteria_numberOfNotifiedThings,+    ioTJobRateIncreaseCriteria_numberOfSucceededThings,++    -- ** IoTJobTimeoutConfig+    ioTJobTimeoutConfig_inProgressTimeoutInMinutes,++    -- ** LambdaContainerParams+    lambdaContainerParams_devices,+    lambdaContainerParams_memorySizeInKB,+    lambdaContainerParams_mountROSysfs,+    lambdaContainerParams_volumes,++    -- ** LambdaDeviceMount+    lambdaDeviceMount_addGroupOwner,+    lambdaDeviceMount_permission,+    lambdaDeviceMount_path,++    -- ** LambdaEventSource+    lambdaEventSource_topic,+    lambdaEventSource_type,++    -- ** LambdaExecutionParameters+    lambdaExecutionParameters_environmentVariables,+    lambdaExecutionParameters_eventSources,+    lambdaExecutionParameters_execArgs,+    lambdaExecutionParameters_inputPayloadEncodingType,+    lambdaExecutionParameters_linuxProcessParams,+    lambdaExecutionParameters_maxIdleTimeInSeconds,+    lambdaExecutionParameters_maxInstancesCount,+    lambdaExecutionParameters_maxQueueSize,+    lambdaExecutionParameters_pinned,+    lambdaExecutionParameters_statusTimeoutInSeconds,+    lambdaExecutionParameters_timeoutInSeconds,++    -- ** LambdaFunctionRecipeSource+    lambdaFunctionRecipeSource_componentDependencies,+    lambdaFunctionRecipeSource_componentLambdaParameters,+    lambdaFunctionRecipeSource_componentName,+    lambdaFunctionRecipeSource_componentPlatforms,+    lambdaFunctionRecipeSource_componentVersion,+    lambdaFunctionRecipeSource_lambdaArn,++    -- ** LambdaLinuxProcessParams+    lambdaLinuxProcessParams_containerParams,+    lambdaLinuxProcessParams_isolationMode,++    -- ** LambdaVolumeMount+    lambdaVolumeMount_addGroupOwner,+    lambdaVolumeMount_permission,+    lambdaVolumeMount_sourcePath,+    lambdaVolumeMount_destinationPath,++    -- ** ResolvedComponentVersion+    resolvedComponentVersion_arn,+    resolvedComponentVersion_componentName,+    resolvedComponentVersion_componentVersion,+    resolvedComponentVersion_message,+    resolvedComponentVersion_recipe,+    resolvedComponentVersion_vendorGuidance,++    -- ** SystemResourceLimits+    systemResourceLimits_cpus,+    systemResourceLimits_memory,+  )+where++import Amazonka.GreengrassV2.AssociateServiceRoleToAccount+import Amazonka.GreengrassV2.BatchAssociateClientDeviceWithCoreDevice+import Amazonka.GreengrassV2.BatchDisassociateClientDeviceFromCoreDevice+import Amazonka.GreengrassV2.CancelDeployment+import Amazonka.GreengrassV2.CreateComponentVersion+import Amazonka.GreengrassV2.CreateDeployment+import Amazonka.GreengrassV2.DeleteComponent+import Amazonka.GreengrassV2.DeleteCoreDevice+import Amazonka.GreengrassV2.DeleteDeployment+import Amazonka.GreengrassV2.DescribeComponent+import Amazonka.GreengrassV2.DisassociateServiceRoleFromAccount+import Amazonka.GreengrassV2.GetComponent+import Amazonka.GreengrassV2.GetComponentVersionArtifact+import Amazonka.GreengrassV2.GetConnectivityInfo+import Amazonka.GreengrassV2.GetCoreDevice+import Amazonka.GreengrassV2.GetDeployment+import Amazonka.GreengrassV2.GetServiceRoleForAccount+import Amazonka.GreengrassV2.ListClientDevicesAssociatedWithCoreDevice+import Amazonka.GreengrassV2.ListComponentVersions+import Amazonka.GreengrassV2.ListComponents+import Amazonka.GreengrassV2.ListCoreDevices+import Amazonka.GreengrassV2.ListDeployments+import Amazonka.GreengrassV2.ListEffectiveDeployments+import Amazonka.GreengrassV2.ListInstalledComponents+import Amazonka.GreengrassV2.ListTagsForResource+import Amazonka.GreengrassV2.ResolveComponentCandidates+import Amazonka.GreengrassV2.TagResource+import Amazonka.GreengrassV2.Types.AssociateClientDeviceWithCoreDeviceEntry+import Amazonka.GreengrassV2.Types.AssociateClientDeviceWithCoreDeviceErrorEntry+import Amazonka.GreengrassV2.Types.AssociatedClientDevice+import Amazonka.GreengrassV2.Types.CloudComponentStatus+import Amazonka.GreengrassV2.Types.Component+import Amazonka.GreengrassV2.Types.ComponentCandidate+import Amazonka.GreengrassV2.Types.ComponentConfigurationUpdate+import Amazonka.GreengrassV2.Types.ComponentDependencyRequirement+import Amazonka.GreengrassV2.Types.ComponentDeploymentSpecification+import Amazonka.GreengrassV2.Types.ComponentLatestVersion+import Amazonka.GreengrassV2.Types.ComponentPlatform+import Amazonka.GreengrassV2.Types.ComponentRunWith+import Amazonka.GreengrassV2.Types.ComponentVersionListItem+import Amazonka.GreengrassV2.Types.ConnectivityInfo+import Amazonka.GreengrassV2.Types.CoreDevice+import Amazonka.GreengrassV2.Types.Deployment+import Amazonka.GreengrassV2.Types.DeploymentComponentUpdatePolicy+import Amazonka.GreengrassV2.Types.DeploymentConfigurationValidationPolicy+import Amazonka.GreengrassV2.Types.DeploymentIoTJobConfiguration+import Amazonka.GreengrassV2.Types.DeploymentPolicies+import Amazonka.GreengrassV2.Types.DisassociateClientDeviceFromCoreDeviceEntry+import Amazonka.GreengrassV2.Types.DisassociateClientDeviceFromCoreDeviceErrorEntry+import Amazonka.GreengrassV2.Types.EffectiveDeployment+import Amazonka.GreengrassV2.Types.EffectiveDeploymentStatusDetails+import Amazonka.GreengrassV2.Types.InstalledComponent+import Amazonka.GreengrassV2.Types.IoTJobAbortConfig+import Amazonka.GreengrassV2.Types.IoTJobAbortCriteria+import Amazonka.GreengrassV2.Types.IoTJobExecutionsRolloutConfig+import Amazonka.GreengrassV2.Types.IoTJobExponentialRolloutRate+import Amazonka.GreengrassV2.Types.IoTJobRateIncreaseCriteria+import Amazonka.GreengrassV2.Types.IoTJobTimeoutConfig+import Amazonka.GreengrassV2.Types.LambdaContainerParams+import Amazonka.GreengrassV2.Types.LambdaDeviceMount+import Amazonka.GreengrassV2.Types.LambdaEventSource+import Amazonka.GreengrassV2.Types.LambdaExecutionParameters+import Amazonka.GreengrassV2.Types.LambdaFunctionRecipeSource+import Amazonka.GreengrassV2.Types.LambdaLinuxProcessParams+import Amazonka.GreengrassV2.Types.LambdaVolumeMount+import Amazonka.GreengrassV2.Types.ResolvedComponentVersion+import Amazonka.GreengrassV2.Types.SystemResourceLimits+import Amazonka.GreengrassV2.UntagResource+import Amazonka.GreengrassV2.UpdateConnectivityInfo
+ gen/Amazonka/GreengrassV2/ListClientDevicesAssociatedWithCoreDevice.hs view
@@ -0,0 +1,265 @@+{-# 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.GreengrassV2.ListClientDevicesAssociatedWithCoreDevice+-- 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 client devices that are associated with a+-- core device.+--+-- This operation returns paginated results.+module Amazonka.GreengrassV2.ListClientDevicesAssociatedWithCoreDevice+  ( -- * Creating a Request+    ListClientDevicesAssociatedWithCoreDevice (..),+    newListClientDevicesAssociatedWithCoreDevice,++    -- * Request Lenses+    listClientDevicesAssociatedWithCoreDevice_maxResults,+    listClientDevicesAssociatedWithCoreDevice_nextToken,+    listClientDevicesAssociatedWithCoreDevice_coreDeviceThingName,++    -- * Destructuring the Response+    ListClientDevicesAssociatedWithCoreDeviceResponse (..),+    newListClientDevicesAssociatedWithCoreDeviceResponse,++    -- * Response Lenses+    listClientDevicesAssociatedWithCoreDeviceResponse_associatedClientDevices,+    listClientDevicesAssociatedWithCoreDeviceResponse_nextToken,+    listClientDevicesAssociatedWithCoreDeviceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListClientDevicesAssociatedWithCoreDevice' smart constructor.+data ListClientDevicesAssociatedWithCoreDevice = ListClientDevicesAssociatedWithCoreDevice'+  { -- | The maximum number of results to be returned per 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 name of the core device. This is also the name of the IoT thing.+    coreDeviceThingName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListClientDevicesAssociatedWithCoreDevice' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listClientDevicesAssociatedWithCoreDevice_maxResults' - The maximum number of results to be returned per paginated request.+--+-- 'nextToken', 'listClientDevicesAssociatedWithCoreDevice_nextToken' - The token to be used for the next set of paginated results.+--+-- 'coreDeviceThingName', 'listClientDevicesAssociatedWithCoreDevice_coreDeviceThingName' - The name of the core device. This is also the name of the IoT thing.+newListClientDevicesAssociatedWithCoreDevice ::+  -- | 'coreDeviceThingName'+  Prelude.Text ->+  ListClientDevicesAssociatedWithCoreDevice+newListClientDevicesAssociatedWithCoreDevice+  pCoreDeviceThingName_ =+    ListClientDevicesAssociatedWithCoreDevice'+      { maxResults =+          Prelude.Nothing,+        nextToken = Prelude.Nothing,+        coreDeviceThingName =+          pCoreDeviceThingName_+      }++-- | The maximum number of results to be returned per paginated request.+listClientDevicesAssociatedWithCoreDevice_maxResults :: Lens.Lens' ListClientDevicesAssociatedWithCoreDevice (Prelude.Maybe Prelude.Natural)+listClientDevicesAssociatedWithCoreDevice_maxResults = Lens.lens (\ListClientDevicesAssociatedWithCoreDevice' {maxResults} -> maxResults) (\s@ListClientDevicesAssociatedWithCoreDevice' {} a -> s {maxResults = a} :: ListClientDevicesAssociatedWithCoreDevice)++-- | The token to be used for the next set of paginated results.+listClientDevicesAssociatedWithCoreDevice_nextToken :: Lens.Lens' ListClientDevicesAssociatedWithCoreDevice (Prelude.Maybe Prelude.Text)+listClientDevicesAssociatedWithCoreDevice_nextToken = Lens.lens (\ListClientDevicesAssociatedWithCoreDevice' {nextToken} -> nextToken) (\s@ListClientDevicesAssociatedWithCoreDevice' {} a -> s {nextToken = a} :: ListClientDevicesAssociatedWithCoreDevice)++-- | The name of the core device. This is also the name of the IoT thing.+listClientDevicesAssociatedWithCoreDevice_coreDeviceThingName :: Lens.Lens' ListClientDevicesAssociatedWithCoreDevice Prelude.Text+listClientDevicesAssociatedWithCoreDevice_coreDeviceThingName = Lens.lens (\ListClientDevicesAssociatedWithCoreDevice' {coreDeviceThingName} -> coreDeviceThingName) (\s@ListClientDevicesAssociatedWithCoreDevice' {} a -> s {coreDeviceThingName = a} :: ListClientDevicesAssociatedWithCoreDevice)++instance+  Core.AWSPager+    ListClientDevicesAssociatedWithCoreDevice+  where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listClientDevicesAssociatedWithCoreDeviceResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listClientDevicesAssociatedWithCoreDeviceResponse_associatedClientDevices+            Prelude.. Lens._Just+            Prelude.. Lens.to Prelude.toList+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listClientDevicesAssociatedWithCoreDevice_nextToken+          Lens..~ rs+          Lens.^? listClientDevicesAssociatedWithCoreDeviceResponse_nextToken+          Prelude.. Lens._Just++instance+  Core.AWSRequest+    ListClientDevicesAssociatedWithCoreDevice+  where+  type+    AWSResponse+      ListClientDevicesAssociatedWithCoreDevice =+      ListClientDevicesAssociatedWithCoreDeviceResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListClientDevicesAssociatedWithCoreDeviceResponse'+            Prelude.<$> (x Data..?> "associatedClientDevices")+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    ListClientDevicesAssociatedWithCoreDevice+  where+  hashWithSalt+    _salt+    ListClientDevicesAssociatedWithCoreDevice' {..} =+      _salt+        `Prelude.hashWithSalt` maxResults+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` coreDeviceThingName++instance+  Prelude.NFData+    ListClientDevicesAssociatedWithCoreDevice+  where+  rnf ListClientDevicesAssociatedWithCoreDevice' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf coreDeviceThingName++instance+  Data.ToHeaders+    ListClientDevicesAssociatedWithCoreDevice+  where+  toHeaders = Prelude.const Prelude.mempty++instance+  Data.ToPath+    ListClientDevicesAssociatedWithCoreDevice+  where+  toPath ListClientDevicesAssociatedWithCoreDevice' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/coreDevices/",+        Data.toBS coreDeviceThingName,+        "/associatedClientDevices"+      ]++instance+  Data.ToQuery+    ListClientDevicesAssociatedWithCoreDevice+  where+  toQuery+    ListClientDevicesAssociatedWithCoreDevice' {..} =+      Prelude.mconcat+        [ "maxResults" Data.=: maxResults,+          "nextToken" Data.=: nextToken+        ]++-- | /See:/ 'newListClientDevicesAssociatedWithCoreDeviceResponse' smart constructor.+data ListClientDevicesAssociatedWithCoreDeviceResponse = ListClientDevicesAssociatedWithCoreDeviceResponse'+  { -- | A list that describes the client devices that are associated with the+    -- core device.+    associatedClientDevices :: Prelude.Maybe (Prelude.NonEmpty AssociatedClientDevice),+    -- | 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+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListClientDevicesAssociatedWithCoreDeviceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'associatedClientDevices', 'listClientDevicesAssociatedWithCoreDeviceResponse_associatedClientDevices' - A list that describes the client devices that are associated with the+-- core device.+--+-- 'nextToken', 'listClientDevicesAssociatedWithCoreDeviceResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listClientDevicesAssociatedWithCoreDeviceResponse_httpStatus' - The response's http status code.+newListClientDevicesAssociatedWithCoreDeviceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListClientDevicesAssociatedWithCoreDeviceResponse+newListClientDevicesAssociatedWithCoreDeviceResponse+  pHttpStatus_ =+    ListClientDevicesAssociatedWithCoreDeviceResponse'+      { associatedClientDevices =+          Prelude.Nothing,+        nextToken =+          Prelude.Nothing,+        httpStatus =+          pHttpStatus_+      }++-- | A list that describes the client devices that are associated with the+-- core device.+listClientDevicesAssociatedWithCoreDeviceResponse_associatedClientDevices :: Lens.Lens' ListClientDevicesAssociatedWithCoreDeviceResponse (Prelude.Maybe (Prelude.NonEmpty AssociatedClientDevice))+listClientDevicesAssociatedWithCoreDeviceResponse_associatedClientDevices = Lens.lens (\ListClientDevicesAssociatedWithCoreDeviceResponse' {associatedClientDevices} -> associatedClientDevices) (\s@ListClientDevicesAssociatedWithCoreDeviceResponse' {} a -> s {associatedClientDevices = a} :: ListClientDevicesAssociatedWithCoreDeviceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results, or null if there are no+-- additional results.+listClientDevicesAssociatedWithCoreDeviceResponse_nextToken :: Lens.Lens' ListClientDevicesAssociatedWithCoreDeviceResponse (Prelude.Maybe Prelude.Text)+listClientDevicesAssociatedWithCoreDeviceResponse_nextToken = Lens.lens (\ListClientDevicesAssociatedWithCoreDeviceResponse' {nextToken} -> nextToken) (\s@ListClientDevicesAssociatedWithCoreDeviceResponse' {} a -> s {nextToken = a} :: ListClientDevicesAssociatedWithCoreDeviceResponse)++-- | The response's http status code.+listClientDevicesAssociatedWithCoreDeviceResponse_httpStatus :: Lens.Lens' ListClientDevicesAssociatedWithCoreDeviceResponse Prelude.Int+listClientDevicesAssociatedWithCoreDeviceResponse_httpStatus = Lens.lens (\ListClientDevicesAssociatedWithCoreDeviceResponse' {httpStatus} -> httpStatus) (\s@ListClientDevicesAssociatedWithCoreDeviceResponse' {} a -> s {httpStatus = a} :: ListClientDevicesAssociatedWithCoreDeviceResponse)++instance+  Prelude.NFData+    ListClientDevicesAssociatedWithCoreDeviceResponse+  where+  rnf+    ListClientDevicesAssociatedWithCoreDeviceResponse' {..} =+      Prelude.rnf associatedClientDevices+        `Prelude.seq` Prelude.rnf nextToken+        `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/ListComponentVersions.hs view
@@ -0,0 +1,236 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.ListComponentVersions+-- 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 all versions for a component. Greater+-- versions are listed first.+--+-- This operation returns paginated results.+module Amazonka.GreengrassV2.ListComponentVersions+  ( -- * Creating a Request+    ListComponentVersions (..),+    newListComponentVersions,++    -- * Request Lenses+    listComponentVersions_maxResults,+    listComponentVersions_nextToken,+    listComponentVersions_arn,++    -- * Destructuring the Response+    ListComponentVersionsResponse (..),+    newListComponentVersionsResponse,++    -- * Response Lenses+    listComponentVersionsResponse_componentVersions,+    listComponentVersionsResponse_nextToken,+    listComponentVersionsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListComponentVersions' smart constructor.+data ListComponentVersions = ListComponentVersions'+  { -- | The maximum number of results to be returned per 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+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the component.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListComponentVersions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listComponentVersions_maxResults' - The maximum number of results to be returned per paginated request.+--+-- 'nextToken', 'listComponentVersions_nextToken' - The token to be used for the next set of paginated results.+--+-- 'arn', 'listComponentVersions_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component.+newListComponentVersions ::+  -- | 'arn'+  Prelude.Text ->+  ListComponentVersions+newListComponentVersions pArn_ =+  ListComponentVersions'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      arn = pArn_+    }++-- | The maximum number of results to be returned per paginated request.+listComponentVersions_maxResults :: Lens.Lens' ListComponentVersions (Prelude.Maybe Prelude.Natural)+listComponentVersions_maxResults = Lens.lens (\ListComponentVersions' {maxResults} -> maxResults) (\s@ListComponentVersions' {} a -> s {maxResults = a} :: ListComponentVersions)++-- | The token to be used for the next set of paginated results.+listComponentVersions_nextToken :: Lens.Lens' ListComponentVersions (Prelude.Maybe Prelude.Text)+listComponentVersions_nextToken = Lens.lens (\ListComponentVersions' {nextToken} -> nextToken) (\s@ListComponentVersions' {} a -> s {nextToken = a} :: ListComponentVersions)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component.+listComponentVersions_arn :: Lens.Lens' ListComponentVersions Prelude.Text+listComponentVersions_arn = Lens.lens (\ListComponentVersions' {arn} -> arn) (\s@ListComponentVersions' {} a -> s {arn = a} :: ListComponentVersions)++instance Core.AWSPager ListComponentVersions where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listComponentVersionsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listComponentVersionsResponse_componentVersions+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listComponentVersions_nextToken+          Lens..~ rs+          Lens.^? listComponentVersionsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListComponentVersions where+  type+    AWSResponse ListComponentVersions =+      ListComponentVersionsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListComponentVersionsResponse'+            Prelude.<$> ( x+                            Data..?> "componentVersions"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListComponentVersions where+  hashWithSalt _salt ListComponentVersions' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` arn++instance Prelude.NFData ListComponentVersions where+  rnf ListComponentVersions' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf arn++instance Data.ToHeaders ListComponentVersions where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath ListComponentVersions where+  toPath ListComponentVersions' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/components/",+        Data.toBS arn,+        "/versions"+      ]++instance Data.ToQuery ListComponentVersions where+  toQuery ListComponentVersions' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListComponentVersionsResponse' smart constructor.+data ListComponentVersionsResponse = ListComponentVersionsResponse'+  { -- | A list of versions that exist for the component.+    componentVersions :: Prelude.Maybe [ComponentVersionListItem],+    -- | 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+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListComponentVersionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentVersions', 'listComponentVersionsResponse_componentVersions' - A list of versions that exist for the component.+--+-- 'nextToken', 'listComponentVersionsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listComponentVersionsResponse_httpStatus' - The response's http status code.+newListComponentVersionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListComponentVersionsResponse+newListComponentVersionsResponse pHttpStatus_ =+  ListComponentVersionsResponse'+    { componentVersions =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of versions that exist for the component.+listComponentVersionsResponse_componentVersions :: Lens.Lens' ListComponentVersionsResponse (Prelude.Maybe [ComponentVersionListItem])+listComponentVersionsResponse_componentVersions = Lens.lens (\ListComponentVersionsResponse' {componentVersions} -> componentVersions) (\s@ListComponentVersionsResponse' {} a -> s {componentVersions = a} :: ListComponentVersionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results, or null if there are no+-- additional results.+listComponentVersionsResponse_nextToken :: Lens.Lens' ListComponentVersionsResponse (Prelude.Maybe Prelude.Text)+listComponentVersionsResponse_nextToken = Lens.lens (\ListComponentVersionsResponse' {nextToken} -> nextToken) (\s@ListComponentVersionsResponse' {} a -> s {nextToken = a} :: ListComponentVersionsResponse)++-- | The response's http status code.+listComponentVersionsResponse_httpStatus :: Lens.Lens' ListComponentVersionsResponse Prelude.Int+listComponentVersionsResponse_httpStatus = Lens.lens (\ListComponentVersionsResponse' {httpStatus} -> httpStatus) (\s@ListComponentVersionsResponse' {} a -> s {httpStatus = a} :: ListComponentVersionsResponse)++instance Prelude.NFData ListComponentVersionsResponse where+  rnf ListComponentVersionsResponse' {..} =+    Prelude.rnf componentVersions+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/ListComponents.hs view
@@ -0,0 +1,226 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.ListComponents+-- 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 component summaries. This list includes+-- components that you have permission to view.+--+-- This operation returns paginated results.+module Amazonka.GreengrassV2.ListComponents+  ( -- * Creating a Request+    ListComponents (..),+    newListComponents,++    -- * Request Lenses+    listComponents_maxResults,+    listComponents_nextToken,+    listComponents_scope,++    -- * Destructuring the Response+    ListComponentsResponse (..),+    newListComponentsResponse,++    -- * Response Lenses+    listComponentsResponse_components,+    listComponentsResponse_nextToken,+    listComponentsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListComponents' smart constructor.+data ListComponents = ListComponents'+  { -- | The maximum number of results to be returned per 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 scope of the components to list.+    --+    -- Default: @PRIVATE@+    scope :: Prelude.Maybe ComponentVisibilityScope+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListComponents' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listComponents_maxResults' - The maximum number of results to be returned per paginated request.+--+-- 'nextToken', 'listComponents_nextToken' - The token to be used for the next set of paginated results.+--+-- 'scope', 'listComponents_scope' - The scope of the components to list.+--+-- Default: @PRIVATE@+newListComponents ::+  ListComponents+newListComponents =+  ListComponents'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      scope = Prelude.Nothing+    }++-- | The maximum number of results to be returned per paginated request.+listComponents_maxResults :: Lens.Lens' ListComponents (Prelude.Maybe Prelude.Natural)+listComponents_maxResults = Lens.lens (\ListComponents' {maxResults} -> maxResults) (\s@ListComponents' {} a -> s {maxResults = a} :: ListComponents)++-- | The token to be used for the next set of paginated results.+listComponents_nextToken :: Lens.Lens' ListComponents (Prelude.Maybe Prelude.Text)+listComponents_nextToken = Lens.lens (\ListComponents' {nextToken} -> nextToken) (\s@ListComponents' {} a -> s {nextToken = a} :: ListComponents)++-- | The scope of the components to list.+--+-- Default: @PRIVATE@+listComponents_scope :: Lens.Lens' ListComponents (Prelude.Maybe ComponentVisibilityScope)+listComponents_scope = Lens.lens (\ListComponents' {scope} -> scope) (\s@ListComponents' {} a -> s {scope = a} :: ListComponents)++instance Core.AWSPager ListComponents where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listComponentsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listComponentsResponse_components+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listComponents_nextToken+          Lens..~ rs+          Lens.^? listComponentsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListComponents where+  type+    AWSResponse ListComponents =+      ListComponentsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListComponentsResponse'+            Prelude.<$> (x Data..?> "components" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListComponents where+  hashWithSalt _salt ListComponents' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` scope++instance Prelude.NFData ListComponents where+  rnf ListComponents' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf scope++instance Data.ToHeaders ListComponents where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath ListComponents where+  toPath = Prelude.const "/greengrass/v2/components"++instance Data.ToQuery ListComponents where+  toQuery ListComponents' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "scope" Data.=: scope+      ]++-- | /See:/ 'newListComponentsResponse' smart constructor.+data ListComponentsResponse = ListComponentsResponse'+  { -- | A list that summarizes each component.+    components :: Prelude.Maybe [Component],+    -- | 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+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListComponentsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'components', 'listComponentsResponse_components' - A list that summarizes each component.+--+-- 'nextToken', 'listComponentsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listComponentsResponse_httpStatus' - The response's http status code.+newListComponentsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListComponentsResponse+newListComponentsResponse pHttpStatus_ =+  ListComponentsResponse'+    { components =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list that summarizes each component.+listComponentsResponse_components :: Lens.Lens' ListComponentsResponse (Prelude.Maybe [Component])+listComponentsResponse_components = Lens.lens (\ListComponentsResponse' {components} -> components) (\s@ListComponentsResponse' {} a -> s {components = a} :: ListComponentsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results, or null if there are no+-- additional results.+listComponentsResponse_nextToken :: Lens.Lens' ListComponentsResponse (Prelude.Maybe Prelude.Text)+listComponentsResponse_nextToken = Lens.lens (\ListComponentsResponse' {nextToken} -> nextToken) (\s@ListComponentsResponse' {} a -> s {nextToken = a} :: ListComponentsResponse)++-- | The response's http status code.+listComponentsResponse_httpStatus :: Lens.Lens' ListComponentsResponse Prelude.Int+listComponentsResponse_httpStatus = Lens.lens (\ListComponentsResponse' {httpStatus} -> httpStatus) (\s@ListComponentsResponse' {} a -> s {httpStatus = a} :: ListComponentsResponse)++instance Prelude.NFData ListComponentsResponse where+  rnf ListComponentsResponse' {..} =+    Prelude.rnf components+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/ListCoreDevices.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.GreengrassV2.ListCoreDevices+-- 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 Greengrass core devices.+--+-- IoT Greengrass relies on individual devices to send status updates to+-- the Amazon Web Services Cloud. If the IoT Greengrass Core software+-- isn\'t running on the device, or if device isn\'t connected to the+-- Amazon Web Services Cloud, then the reported status of that device might+-- not reflect its current status. The status timestamp indicates when the+-- device status was last updated.+--+-- Core devices send status updates at the following times:+--+-- -   When the IoT Greengrass Core software starts+--+-- -   When the core device receives a deployment from the Amazon Web+--     Services Cloud+--+-- -   When the status of any component on the core device becomes @BROKEN@+--+-- -   At a+--     <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html#greengrass-nucleus-component-configuration-fss regular interval that you can configure>,+--     which defaults to 24 hours+--+-- -   For IoT Greengrass Core v2.7.0, the core device sends status updates+--     upon local deployment and cloud deployment+--+-- This operation returns paginated results.+module Amazonka.GreengrassV2.ListCoreDevices+  ( -- * Creating a Request+    ListCoreDevices (..),+    newListCoreDevices,++    -- * Request Lenses+    listCoreDevices_maxResults,+    listCoreDevices_nextToken,+    listCoreDevices_status,+    listCoreDevices_thingGroupArn,++    -- * Destructuring the Response+    ListCoreDevicesResponse (..),+    newListCoreDevicesResponse,++    -- * Response Lenses+    listCoreDevicesResponse_coreDevices,+    listCoreDevicesResponse_nextToken,+    listCoreDevicesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListCoreDevices' smart constructor.+data ListCoreDevices = ListCoreDevices'+  { -- | The maximum number of results to be returned per 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 core device status by which to filter. If you specify this+    -- parameter, the list includes only core devices that have this status.+    -- Choose one of the following options:+    --+    -- -   @HEALTHY@ – The IoT Greengrass Core software and all components run+    --     on the core device without issue.+    --+    -- -   @UNHEALTHY@ – The IoT Greengrass Core software or a component is in+    --     a failed state on the core device.+    status :: Prelude.Maybe CoreDeviceStatus,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the IoT thing group by which to filter. If you specify this+    -- parameter, the list includes only core devices that have successfully+    -- deployed a deployment that targets the thing group. When you remove a+    -- core device from a thing group, the list continues to include that core+    -- device.+    thingGroupArn :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCoreDevices' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listCoreDevices_maxResults' - The maximum number of results to be returned per paginated request.+--+-- 'nextToken', 'listCoreDevices_nextToken' - The token to be used for the next set of paginated results.+--+-- 'status', 'listCoreDevices_status' - The core device status by which to filter. If you specify this+-- parameter, the list includes only core devices that have this status.+-- Choose one of the following options:+--+-- -   @HEALTHY@ – The IoT Greengrass Core software and all components run+--     on the core device without issue.+--+-- -   @UNHEALTHY@ – The IoT Greengrass Core software or a component is in+--     a failed state on the core device.+--+-- 'thingGroupArn', 'listCoreDevices_thingGroupArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IoT thing group by which to filter. If you specify this+-- parameter, the list includes only core devices that have successfully+-- deployed a deployment that targets the thing group. When you remove a+-- core device from a thing group, the list continues to include that core+-- device.+newListCoreDevices ::+  ListCoreDevices+newListCoreDevices =+  ListCoreDevices'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      status = Prelude.Nothing,+      thingGroupArn = Prelude.Nothing+    }++-- | The maximum number of results to be returned per paginated request.+listCoreDevices_maxResults :: Lens.Lens' ListCoreDevices (Prelude.Maybe Prelude.Natural)+listCoreDevices_maxResults = Lens.lens (\ListCoreDevices' {maxResults} -> maxResults) (\s@ListCoreDevices' {} a -> s {maxResults = a} :: ListCoreDevices)++-- | The token to be used for the next set of paginated results.+listCoreDevices_nextToken :: Lens.Lens' ListCoreDevices (Prelude.Maybe Prelude.Text)+listCoreDevices_nextToken = Lens.lens (\ListCoreDevices' {nextToken} -> nextToken) (\s@ListCoreDevices' {} a -> s {nextToken = a} :: ListCoreDevices)++-- | The core device status by which to filter. If you specify this+-- parameter, the list includes only core devices that have this status.+-- Choose one of the following options:+--+-- -   @HEALTHY@ – The IoT Greengrass Core software and all components run+--     on the core device without issue.+--+-- -   @UNHEALTHY@ – The IoT Greengrass Core software or a component is in+--     a failed state on the core device.+listCoreDevices_status :: Lens.Lens' ListCoreDevices (Prelude.Maybe CoreDeviceStatus)+listCoreDevices_status = Lens.lens (\ListCoreDevices' {status} -> status) (\s@ListCoreDevices' {} a -> s {status = a} :: ListCoreDevices)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IoT thing group by which to filter. If you specify this+-- parameter, the list includes only core devices that have successfully+-- deployed a deployment that targets the thing group. When you remove a+-- core device from a thing group, the list continues to include that core+-- device.+listCoreDevices_thingGroupArn :: Lens.Lens' ListCoreDevices (Prelude.Maybe Prelude.Text)+listCoreDevices_thingGroupArn = Lens.lens (\ListCoreDevices' {thingGroupArn} -> thingGroupArn) (\s@ListCoreDevices' {} a -> s {thingGroupArn = a} :: ListCoreDevices)++instance Core.AWSPager ListCoreDevices where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listCoreDevicesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listCoreDevicesResponse_coreDevices+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listCoreDevices_nextToken+          Lens..~ rs+          Lens.^? listCoreDevicesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListCoreDevices where+  type+    AWSResponse ListCoreDevices =+      ListCoreDevicesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListCoreDevicesResponse'+            Prelude.<$> (x Data..?> "coreDevices" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListCoreDevices where+  hashWithSalt _salt ListCoreDevices' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` thingGroupArn++instance Prelude.NFData ListCoreDevices where+  rnf ListCoreDevices' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf thingGroupArn++instance Data.ToHeaders ListCoreDevices where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath ListCoreDevices where+  toPath = Prelude.const "/greengrass/v2/coreDevices"++instance Data.ToQuery ListCoreDevices where+  toQuery ListCoreDevices' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "status" Data.=: status,+        "thingGroupArn" Data.=: thingGroupArn+      ]++-- | /See:/ 'newListCoreDevicesResponse' smart constructor.+data ListCoreDevicesResponse = ListCoreDevicesResponse'+  { -- | A list that summarizes each core device.+    coreDevices :: Prelude.Maybe [CoreDevice],+    -- | 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+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListCoreDevicesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'coreDevices', 'listCoreDevicesResponse_coreDevices' - A list that summarizes each core device.+--+-- 'nextToken', 'listCoreDevicesResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listCoreDevicesResponse_httpStatus' - The response's http status code.+newListCoreDevicesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListCoreDevicesResponse+newListCoreDevicesResponse pHttpStatus_ =+  ListCoreDevicesResponse'+    { coreDevices =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list that summarizes each core device.+listCoreDevicesResponse_coreDevices :: Lens.Lens' ListCoreDevicesResponse (Prelude.Maybe [CoreDevice])+listCoreDevicesResponse_coreDevices = Lens.lens (\ListCoreDevicesResponse' {coreDevices} -> coreDevices) (\s@ListCoreDevicesResponse' {} a -> s {coreDevices = a} :: ListCoreDevicesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results, or null if there are no+-- additional results.+listCoreDevicesResponse_nextToken :: Lens.Lens' ListCoreDevicesResponse (Prelude.Maybe Prelude.Text)+listCoreDevicesResponse_nextToken = Lens.lens (\ListCoreDevicesResponse' {nextToken} -> nextToken) (\s@ListCoreDevicesResponse' {} a -> s {nextToken = a} :: ListCoreDevicesResponse)++-- | The response's http status code.+listCoreDevicesResponse_httpStatus :: Lens.Lens' ListCoreDevicesResponse Prelude.Int+listCoreDevicesResponse_httpStatus = Lens.lens (\ListCoreDevicesResponse' {httpStatus} -> httpStatus) (\s@ListCoreDevicesResponse' {} a -> s {httpStatus = a} :: ListCoreDevicesResponse)++instance Prelude.NFData ListCoreDevicesResponse where+  rnf ListCoreDevicesResponse' {..} =+    Prelude.rnf coreDevices+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/ListDeployments.hs view
@@ -0,0 +1,281 @@+{-# 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.GreengrassV2.ListDeployments+-- 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 deployments.+--+-- This operation returns paginated results.+module Amazonka.GreengrassV2.ListDeployments+  ( -- * Creating a Request+    ListDeployments (..),+    newListDeployments,++    -- * Request Lenses+    listDeployments_historyFilter,+    listDeployments_maxResults,+    listDeployments_nextToken,+    listDeployments_parentTargetArn,+    listDeployments_targetArn,++    -- * Destructuring the Response+    ListDeploymentsResponse (..),+    newListDeploymentsResponse,++    -- * Response Lenses+    listDeploymentsResponse_deployments,+    listDeploymentsResponse_nextToken,+    listDeploymentsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListDeployments' smart constructor.+data ListDeployments = ListDeployments'+  { -- | The filter for the list of deployments. Choose one of the following+    -- options:+    --+    -- -   @ALL@ – The list includes all deployments.+    --+    -- -   @LATEST_ONLY@ – The list includes only the latest revision of each+    --     deployment.+    --+    -- Default: @LATEST_ONLY@+    historyFilter :: Prelude.Maybe DeploymentHistoryFilter,+    -- | The maximum number of results to be returned per 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 parent deployment\'s target+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- within a subdeployment.+    parentTargetArn :: Prelude.Maybe Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the target IoT thing or thing group.+    targetArn :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDeployments' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'historyFilter', 'listDeployments_historyFilter' - The filter for the list of deployments. Choose one of the following+-- options:+--+-- -   @ALL@ – The list includes all deployments.+--+-- -   @LATEST_ONLY@ – The list includes only the latest revision of each+--     deployment.+--+-- Default: @LATEST_ONLY@+--+-- 'maxResults', 'listDeployments_maxResults' - The maximum number of results to be returned per paginated request.+--+-- 'nextToken', 'listDeployments_nextToken' - The token to be used for the next set of paginated results.+--+-- 'parentTargetArn', 'listDeployments_parentTargetArn' - The parent deployment\'s target+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- within a subdeployment.+--+-- 'targetArn', 'listDeployments_targetArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the target IoT thing or thing group.+newListDeployments ::+  ListDeployments+newListDeployments =+  ListDeployments'+    { historyFilter = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      parentTargetArn = Prelude.Nothing,+      targetArn = Prelude.Nothing+    }++-- | The filter for the list of deployments. Choose one of the following+-- options:+--+-- -   @ALL@ – The list includes all deployments.+--+-- -   @LATEST_ONLY@ – The list includes only the latest revision of each+--     deployment.+--+-- Default: @LATEST_ONLY@+listDeployments_historyFilter :: Lens.Lens' ListDeployments (Prelude.Maybe DeploymentHistoryFilter)+listDeployments_historyFilter = Lens.lens (\ListDeployments' {historyFilter} -> historyFilter) (\s@ListDeployments' {} a -> s {historyFilter = a} :: ListDeployments)++-- | The maximum number of results to be returned per paginated request.+listDeployments_maxResults :: Lens.Lens' ListDeployments (Prelude.Maybe Prelude.Natural)+listDeployments_maxResults = Lens.lens (\ListDeployments' {maxResults} -> maxResults) (\s@ListDeployments' {} a -> s {maxResults = a} :: ListDeployments)++-- | The token to be used for the next set of paginated results.+listDeployments_nextToken :: Lens.Lens' ListDeployments (Prelude.Maybe Prelude.Text)+listDeployments_nextToken = Lens.lens (\ListDeployments' {nextToken} -> nextToken) (\s@ListDeployments' {} a -> s {nextToken = a} :: ListDeployments)++-- | The parent deployment\'s target+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- within a subdeployment.+listDeployments_parentTargetArn :: Lens.Lens' ListDeployments (Prelude.Maybe Prelude.Text)+listDeployments_parentTargetArn = Lens.lens (\ListDeployments' {parentTargetArn} -> parentTargetArn) (\s@ListDeployments' {} a -> s {parentTargetArn = a} :: ListDeployments)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the target IoT thing or thing group.+listDeployments_targetArn :: Lens.Lens' ListDeployments (Prelude.Maybe Prelude.Text)+listDeployments_targetArn = Lens.lens (\ListDeployments' {targetArn} -> targetArn) (\s@ListDeployments' {} a -> s {targetArn = a} :: ListDeployments)++instance Core.AWSPager ListDeployments where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listDeploymentsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listDeploymentsResponse_deployments+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listDeployments_nextToken+          Lens..~ rs+          Lens.^? listDeploymentsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListDeployments where+  type+    AWSResponse ListDeployments =+      ListDeploymentsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListDeploymentsResponse'+            Prelude.<$> (x Data..?> "deployments" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListDeployments where+  hashWithSalt _salt ListDeployments' {..} =+    _salt+      `Prelude.hashWithSalt` historyFilter+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` parentTargetArn+      `Prelude.hashWithSalt` targetArn++instance Prelude.NFData ListDeployments where+  rnf ListDeployments' {..} =+    Prelude.rnf historyFilter+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf parentTargetArn+      `Prelude.seq` Prelude.rnf targetArn++instance Data.ToHeaders ListDeployments where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath ListDeployments where+  toPath = Prelude.const "/greengrass/v2/deployments"++instance Data.ToQuery ListDeployments where+  toQuery ListDeployments' {..} =+    Prelude.mconcat+      [ "historyFilter" Data.=: historyFilter,+        "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "parentTargetArn" Data.=: parentTargetArn,+        "targetArn" Data.=: targetArn+      ]++-- | /See:/ 'newListDeploymentsResponse' smart constructor.+data ListDeploymentsResponse = ListDeploymentsResponse'+  { -- | A list that summarizes each deployment.+    deployments :: Prelude.Maybe [Deployment],+    -- | 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+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDeploymentsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'deployments', 'listDeploymentsResponse_deployments' - A list that summarizes each deployment.+--+-- 'nextToken', 'listDeploymentsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listDeploymentsResponse_httpStatus' - The response's http status code.+newListDeploymentsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListDeploymentsResponse+newListDeploymentsResponse pHttpStatus_ =+  ListDeploymentsResponse'+    { deployments =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list that summarizes each deployment.+listDeploymentsResponse_deployments :: Lens.Lens' ListDeploymentsResponse (Prelude.Maybe [Deployment])+listDeploymentsResponse_deployments = Lens.lens (\ListDeploymentsResponse' {deployments} -> deployments) (\s@ListDeploymentsResponse' {} a -> s {deployments = a} :: ListDeploymentsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results, or null if there are no+-- additional results.+listDeploymentsResponse_nextToken :: Lens.Lens' ListDeploymentsResponse (Prelude.Maybe Prelude.Text)+listDeploymentsResponse_nextToken = Lens.lens (\ListDeploymentsResponse' {nextToken} -> nextToken) (\s@ListDeploymentsResponse' {} a -> s {nextToken = a} :: ListDeploymentsResponse)++-- | The response's http status code.+listDeploymentsResponse_httpStatus :: Lens.Lens' ListDeploymentsResponse Prelude.Int+listDeploymentsResponse_httpStatus = Lens.lens (\ListDeploymentsResponse' {httpStatus} -> httpStatus) (\s@ListDeploymentsResponse' {} a -> s {httpStatus = a} :: ListDeploymentsResponse)++instance Prelude.NFData ListDeploymentsResponse where+  rnf ListDeploymentsResponse' {..} =+    Prelude.rnf deployments+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/ListEffectiveDeployments.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.GreengrassV2.ListEffectiveDeployments+-- 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 deployment jobs that IoT Greengrass sends+-- to Greengrass core devices.+--+-- This operation returns paginated results.+module Amazonka.GreengrassV2.ListEffectiveDeployments+  ( -- * Creating a Request+    ListEffectiveDeployments (..),+    newListEffectiveDeployments,++    -- * Request Lenses+    listEffectiveDeployments_maxResults,+    listEffectiveDeployments_nextToken,+    listEffectiveDeployments_coreDeviceThingName,++    -- * Destructuring the Response+    ListEffectiveDeploymentsResponse (..),+    newListEffectiveDeploymentsResponse,++    -- * Response Lenses+    listEffectiveDeploymentsResponse_effectiveDeployments,+    listEffectiveDeploymentsResponse_nextToken,+    listEffectiveDeploymentsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListEffectiveDeployments' smart constructor.+data ListEffectiveDeployments = ListEffectiveDeployments'+  { -- | The maximum number of results to be returned per 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 name of the core device. This is also the name of the IoT thing.+    coreDeviceThingName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListEffectiveDeployments' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listEffectiveDeployments_maxResults' - The maximum number of results to be returned per paginated request.+--+-- 'nextToken', 'listEffectiveDeployments_nextToken' - The token to be used for the next set of paginated results.+--+-- 'coreDeviceThingName', 'listEffectiveDeployments_coreDeviceThingName' - The name of the core device. This is also the name of the IoT thing.+newListEffectiveDeployments ::+  -- | 'coreDeviceThingName'+  Prelude.Text ->+  ListEffectiveDeployments+newListEffectiveDeployments pCoreDeviceThingName_ =+  ListEffectiveDeployments'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      coreDeviceThingName = pCoreDeviceThingName_+    }++-- | The maximum number of results to be returned per paginated request.+listEffectiveDeployments_maxResults :: Lens.Lens' ListEffectiveDeployments (Prelude.Maybe Prelude.Natural)+listEffectiveDeployments_maxResults = Lens.lens (\ListEffectiveDeployments' {maxResults} -> maxResults) (\s@ListEffectiveDeployments' {} a -> s {maxResults = a} :: ListEffectiveDeployments)++-- | The token to be used for the next set of paginated results.+listEffectiveDeployments_nextToken :: Lens.Lens' ListEffectiveDeployments (Prelude.Maybe Prelude.Text)+listEffectiveDeployments_nextToken = Lens.lens (\ListEffectiveDeployments' {nextToken} -> nextToken) (\s@ListEffectiveDeployments' {} a -> s {nextToken = a} :: ListEffectiveDeployments)++-- | The name of the core device. This is also the name of the IoT thing.+listEffectiveDeployments_coreDeviceThingName :: Lens.Lens' ListEffectiveDeployments Prelude.Text+listEffectiveDeployments_coreDeviceThingName = Lens.lens (\ListEffectiveDeployments' {coreDeviceThingName} -> coreDeviceThingName) (\s@ListEffectiveDeployments' {} a -> s {coreDeviceThingName = a} :: ListEffectiveDeployments)++instance Core.AWSPager ListEffectiveDeployments where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listEffectiveDeploymentsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listEffectiveDeploymentsResponse_effectiveDeployments+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listEffectiveDeployments_nextToken+          Lens..~ rs+          Lens.^? listEffectiveDeploymentsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListEffectiveDeployments where+  type+    AWSResponse ListEffectiveDeployments =+      ListEffectiveDeploymentsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListEffectiveDeploymentsResponse'+            Prelude.<$> ( x+                            Data..?> "effectiveDeployments"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListEffectiveDeployments where+  hashWithSalt _salt ListEffectiveDeployments' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` coreDeviceThingName++instance Prelude.NFData ListEffectiveDeployments where+  rnf ListEffectiveDeployments' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf coreDeviceThingName++instance Data.ToHeaders ListEffectiveDeployments where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath ListEffectiveDeployments where+  toPath ListEffectiveDeployments' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/coreDevices/",+        Data.toBS coreDeviceThingName,+        "/effectiveDeployments"+      ]++instance Data.ToQuery ListEffectiveDeployments where+  toQuery ListEffectiveDeployments' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken+      ]++-- | /See:/ 'newListEffectiveDeploymentsResponse' smart constructor.+data ListEffectiveDeploymentsResponse = ListEffectiveDeploymentsResponse'+  { -- | A list that summarizes each deployment on the core device.+    effectiveDeployments :: Prelude.Maybe [EffectiveDeployment],+    -- | 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+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListEffectiveDeploymentsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'effectiveDeployments', 'listEffectiveDeploymentsResponse_effectiveDeployments' - A list that summarizes each deployment on the core device.+--+-- 'nextToken', 'listEffectiveDeploymentsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listEffectiveDeploymentsResponse_httpStatus' - The response's http status code.+newListEffectiveDeploymentsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListEffectiveDeploymentsResponse+newListEffectiveDeploymentsResponse pHttpStatus_ =+  ListEffectiveDeploymentsResponse'+    { effectiveDeployments =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list that summarizes each deployment on the core device.+listEffectiveDeploymentsResponse_effectiveDeployments :: Lens.Lens' ListEffectiveDeploymentsResponse (Prelude.Maybe [EffectiveDeployment])+listEffectiveDeploymentsResponse_effectiveDeployments = Lens.lens (\ListEffectiveDeploymentsResponse' {effectiveDeployments} -> effectiveDeployments) (\s@ListEffectiveDeploymentsResponse' {} a -> s {effectiveDeployments = a} :: ListEffectiveDeploymentsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results, or null if there are no+-- additional results.+listEffectiveDeploymentsResponse_nextToken :: Lens.Lens' ListEffectiveDeploymentsResponse (Prelude.Maybe Prelude.Text)+listEffectiveDeploymentsResponse_nextToken = Lens.lens (\ListEffectiveDeploymentsResponse' {nextToken} -> nextToken) (\s@ListEffectiveDeploymentsResponse' {} a -> s {nextToken = a} :: ListEffectiveDeploymentsResponse)++-- | The response's http status code.+listEffectiveDeploymentsResponse_httpStatus :: Lens.Lens' ListEffectiveDeploymentsResponse Prelude.Int+listEffectiveDeploymentsResponse_httpStatus = Lens.lens (\ListEffectiveDeploymentsResponse' {httpStatus} -> httpStatus) (\s@ListEffectiveDeploymentsResponse' {} a -> s {httpStatus = a} :: ListEffectiveDeploymentsResponse)++instance+  Prelude.NFData+    ListEffectiveDeploymentsResponse+  where+  rnf ListEffectiveDeploymentsResponse' {..} =+    Prelude.rnf effectiveDeployments+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/ListInstalledComponents.hs view
@@ -0,0 +1,331 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.ListInstalledComponents+-- 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 the components that a Greengrass core+-- device runs. By default, this list doesn\'t include components that are+-- deployed as dependencies of other components. To include dependencies in+-- the response, set the @topologyFilter@ parameter to @ALL@.+--+-- IoT Greengrass relies on individual devices to send status updates to+-- the Amazon Web Services Cloud. If the IoT Greengrass Core software+-- isn\'t running on the device, or if device isn\'t connected to the+-- Amazon Web Services Cloud, then the reported status of that device might+-- not reflect its current status. The status timestamp indicates when the+-- device status was last updated.+--+-- Core devices send status updates at the following times:+--+-- -   When the IoT Greengrass Core software starts+--+-- -   When the core device receives a deployment from the Amazon Web+--     Services Cloud+--+-- -   When the status of any component on the core device becomes @BROKEN@+--+-- -   At a+--     <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html#greengrass-nucleus-component-configuration-fss regular interval that you can configure>,+--     which defaults to 24 hours+--+-- -   For IoT Greengrass Core v2.7.0, the core device sends status updates+--     upon local deployment and cloud deployment+--+-- This operation returns paginated results.+module Amazonka.GreengrassV2.ListInstalledComponents+  ( -- * Creating a Request+    ListInstalledComponents (..),+    newListInstalledComponents,++    -- * Request Lenses+    listInstalledComponents_maxResults,+    listInstalledComponents_nextToken,+    listInstalledComponents_topologyFilter,+    listInstalledComponents_coreDeviceThingName,++    -- * Destructuring the Response+    ListInstalledComponentsResponse (..),+    newListInstalledComponentsResponse,++    -- * Response Lenses+    listInstalledComponentsResponse_installedComponents,+    listInstalledComponentsResponse_nextToken,+    listInstalledComponentsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListInstalledComponents' smart constructor.+data ListInstalledComponents = ListInstalledComponents'+  { -- | The maximum number of results to be returned per 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 filter for the list of components. Choose from the following+    -- options:+    --+    -- -   @ALL@ – The list includes all components installed on the core+    --     device.+    --+    -- -   @ROOT@ – The list includes only /root/ components, which are+    --     components that you specify in a deployment. When you choose this+    --     option, the list doesn\'t include components that the core device+    --     installs as dependencies of other components.+    --+    -- Default: @ROOT@+    topologyFilter :: Prelude.Maybe InstalledComponentTopologyFilter,+    -- | The name of the core device. This is also the name of the IoT thing.+    coreDeviceThingName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListInstalledComponents' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listInstalledComponents_maxResults' - The maximum number of results to be returned per paginated request.+--+-- 'nextToken', 'listInstalledComponents_nextToken' - The token to be used for the next set of paginated results.+--+-- 'topologyFilter', 'listInstalledComponents_topologyFilter' - The filter for the list of components. Choose from the following+-- options:+--+-- -   @ALL@ – The list includes all components installed on the core+--     device.+--+-- -   @ROOT@ – The list includes only /root/ components, which are+--     components that you specify in a deployment. When you choose this+--     option, the list doesn\'t include components that the core device+--     installs as dependencies of other components.+--+-- Default: @ROOT@+--+-- 'coreDeviceThingName', 'listInstalledComponents_coreDeviceThingName' - The name of the core device. This is also the name of the IoT thing.+newListInstalledComponents ::+  -- | 'coreDeviceThingName'+  Prelude.Text ->+  ListInstalledComponents+newListInstalledComponents pCoreDeviceThingName_ =+  ListInstalledComponents'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      topologyFilter = Prelude.Nothing,+      coreDeviceThingName = pCoreDeviceThingName_+    }++-- | The maximum number of results to be returned per paginated request.+listInstalledComponents_maxResults :: Lens.Lens' ListInstalledComponents (Prelude.Maybe Prelude.Natural)+listInstalledComponents_maxResults = Lens.lens (\ListInstalledComponents' {maxResults} -> maxResults) (\s@ListInstalledComponents' {} a -> s {maxResults = a} :: ListInstalledComponents)++-- | The token to be used for the next set of paginated results.+listInstalledComponents_nextToken :: Lens.Lens' ListInstalledComponents (Prelude.Maybe Prelude.Text)+listInstalledComponents_nextToken = Lens.lens (\ListInstalledComponents' {nextToken} -> nextToken) (\s@ListInstalledComponents' {} a -> s {nextToken = a} :: ListInstalledComponents)++-- | The filter for the list of components. Choose from the following+-- options:+--+-- -   @ALL@ – The list includes all components installed on the core+--     device.+--+-- -   @ROOT@ – The list includes only /root/ components, which are+--     components that you specify in a deployment. When you choose this+--     option, the list doesn\'t include components that the core device+--     installs as dependencies of other components.+--+-- Default: @ROOT@+listInstalledComponents_topologyFilter :: Lens.Lens' ListInstalledComponents (Prelude.Maybe InstalledComponentTopologyFilter)+listInstalledComponents_topologyFilter = Lens.lens (\ListInstalledComponents' {topologyFilter} -> topologyFilter) (\s@ListInstalledComponents' {} a -> s {topologyFilter = a} :: ListInstalledComponents)++-- | The name of the core device. This is also the name of the IoT thing.+listInstalledComponents_coreDeviceThingName :: Lens.Lens' ListInstalledComponents Prelude.Text+listInstalledComponents_coreDeviceThingName = Lens.lens (\ListInstalledComponents' {coreDeviceThingName} -> coreDeviceThingName) (\s@ListInstalledComponents' {} a -> s {coreDeviceThingName = a} :: ListInstalledComponents)++instance Core.AWSPager ListInstalledComponents where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listInstalledComponentsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listInstalledComponentsResponse_installedComponents+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listInstalledComponents_nextToken+          Lens..~ rs+          Lens.^? listInstalledComponentsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListInstalledComponents where+  type+    AWSResponse ListInstalledComponents =+      ListInstalledComponentsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListInstalledComponentsResponse'+            Prelude.<$> ( x+                            Data..?> "installedComponents"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListInstalledComponents where+  hashWithSalt _salt ListInstalledComponents' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` topologyFilter+      `Prelude.hashWithSalt` coreDeviceThingName++instance Prelude.NFData ListInstalledComponents where+  rnf ListInstalledComponents' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf topologyFilter+      `Prelude.seq` Prelude.rnf coreDeviceThingName++instance Data.ToHeaders ListInstalledComponents where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath ListInstalledComponents where+  toPath ListInstalledComponents' {..} =+    Prelude.mconcat+      [ "/greengrass/v2/coreDevices/",+        Data.toBS coreDeviceThingName,+        "/installedComponents"+      ]++instance Data.ToQuery ListInstalledComponents where+  toQuery ListInstalledComponents' {..} =+    Prelude.mconcat+      [ "maxResults" Data.=: maxResults,+        "nextToken" Data.=: nextToken,+        "topologyFilter" Data.=: topologyFilter+      ]++-- | /See:/ 'newListInstalledComponentsResponse' smart constructor.+data ListInstalledComponentsResponse = ListInstalledComponentsResponse'+  { -- | A list that summarizes each component on the core device.+    --+    -- Greengrass nucleus v2.7.0 or later is required to get an accurate+    -- @lastStatusChangeTimestamp@ response. This response can be inaccurate in+    -- earlier Greengrass nucleus versions.+    --+    -- Greengrass nucleus v2.8.0 or later is required to get an accurate+    -- @lastInstallationSource@ and @lastReportedTimestamp@ response. This+    -- response can be inaccurate or null in earlier Greengrass nucleus+    -- versions.+    installedComponents :: Prelude.Maybe [InstalledComponent],+    -- | 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+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListInstalledComponentsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'installedComponents', 'listInstalledComponentsResponse_installedComponents' - A list that summarizes each component on the core device.+--+-- Greengrass nucleus v2.7.0 or later is required to get an accurate+-- @lastStatusChangeTimestamp@ response. This response can be inaccurate in+-- earlier Greengrass nucleus versions.+--+-- Greengrass nucleus v2.8.0 or later is required to get an accurate+-- @lastInstallationSource@ and @lastReportedTimestamp@ response. This+-- response can be inaccurate or null in earlier Greengrass nucleus+-- versions.+--+-- 'nextToken', 'listInstalledComponentsResponse_nextToken' - The token for the next set of results, or null if there are no+-- additional results.+--+-- 'httpStatus', 'listInstalledComponentsResponse_httpStatus' - The response's http status code.+newListInstalledComponentsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListInstalledComponentsResponse+newListInstalledComponentsResponse pHttpStatus_ =+  ListInstalledComponentsResponse'+    { installedComponents =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list that summarizes each component on the core device.+--+-- Greengrass nucleus v2.7.0 or later is required to get an accurate+-- @lastStatusChangeTimestamp@ response. This response can be inaccurate in+-- earlier Greengrass nucleus versions.+--+-- Greengrass nucleus v2.8.0 or later is required to get an accurate+-- @lastInstallationSource@ and @lastReportedTimestamp@ response. This+-- response can be inaccurate or null in earlier Greengrass nucleus+-- versions.+listInstalledComponentsResponse_installedComponents :: Lens.Lens' ListInstalledComponentsResponse (Prelude.Maybe [InstalledComponent])+listInstalledComponentsResponse_installedComponents = Lens.lens (\ListInstalledComponentsResponse' {installedComponents} -> installedComponents) (\s@ListInstalledComponentsResponse' {} a -> s {installedComponents = a} :: ListInstalledComponentsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The token for the next set of results, or null if there are no+-- additional results.+listInstalledComponentsResponse_nextToken :: Lens.Lens' ListInstalledComponentsResponse (Prelude.Maybe Prelude.Text)+listInstalledComponentsResponse_nextToken = Lens.lens (\ListInstalledComponentsResponse' {nextToken} -> nextToken) (\s@ListInstalledComponentsResponse' {} a -> s {nextToken = a} :: ListInstalledComponentsResponse)++-- | The response's http status code.+listInstalledComponentsResponse_httpStatus :: Lens.Lens' ListInstalledComponentsResponse Prelude.Int+listInstalledComponentsResponse_httpStatus = Lens.lens (\ListInstalledComponentsResponse' {httpStatus} -> httpStatus) (\s@ListInstalledComponentsResponse' {} a -> s {httpStatus = a} :: ListInstalledComponentsResponse)++instance+  Prelude.NFData+    ListInstalledComponentsResponse+  where+  rnf ListInstalledComponentsResponse' {..} =+    Prelude.rnf installedComponents+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/ListTagsForResource.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.GreengrassV2.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 Greengrass resource.+module Amazonka.GreengrassV2.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.GreengrassV2.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.mempty++instance Data.ToPath ListTagsForResource where+  toPath ListTagsForResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery ListTagsForResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | A list of key-value pairs that contain metadata for the resource. For+    -- more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+    -- in the /IoT Greengrass V2 Developer 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' - A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of key-value pairs that contain metadata for the resource. For+-- more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer 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/GreengrassV2/ResolveComponentCandidates.hs view
@@ -0,0 +1,207 @@+{-# 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.GreengrassV2.ResolveComponentCandidates+-- 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 list of components that meet the component, version, and+-- platform requirements of a deployment. Greengrass core devices call this+-- operation when they receive a deployment to identify the components to+-- install.+--+-- This operation identifies components that meet all dependency+-- requirements for a deployment. If the requirements conflict, then this+-- operation returns an error and the deployment fails. For example, this+-- occurs if component @A@ requires version @>2.0.0@ and component @B@+-- requires version @\<2.0.0@ of a component dependency.+--+-- When you specify the component candidates to resolve, IoT Greengrass+-- compares each component\'s digest from the core device with the+-- component\'s digest in the Amazon Web Services Cloud. If the digests+-- don\'t match, then IoT Greengrass specifies to use the version from the+-- Amazon Web Services Cloud.+--+-- To use this operation, you must use the data plane API endpoint and+-- authenticate with an IoT device certificate. For more information, see+-- <https://docs.aws.amazon.com/general/latest/gr/greengrass.html IoT Greengrass endpoints and quotas>.+module Amazonka.GreengrassV2.ResolveComponentCandidates+  ( -- * Creating a Request+    ResolveComponentCandidates (..),+    newResolveComponentCandidates,++    -- * Request Lenses+    resolveComponentCandidates_componentCandidates,+    resolveComponentCandidates_platform,++    -- * Destructuring the Response+    ResolveComponentCandidatesResponse (..),+    newResolveComponentCandidatesResponse,++    -- * Response Lenses+    resolveComponentCandidatesResponse_resolvedComponentVersions,+    resolveComponentCandidatesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newResolveComponentCandidates' smart constructor.+data ResolveComponentCandidates = ResolveComponentCandidates'+  { -- | The list of components to resolve.+    componentCandidates :: Prelude.Maybe [ComponentCandidate],+    -- | The platform to use to resolve compatible components.+    platform :: Prelude.Maybe ComponentPlatform+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ResolveComponentCandidates' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentCandidates', 'resolveComponentCandidates_componentCandidates' - The list of components to resolve.+--+-- 'platform', 'resolveComponentCandidates_platform' - The platform to use to resolve compatible components.+newResolveComponentCandidates ::+  ResolveComponentCandidates+newResolveComponentCandidates =+  ResolveComponentCandidates'+    { componentCandidates =+        Prelude.Nothing,+      platform = Prelude.Nothing+    }++-- | The list of components to resolve.+resolveComponentCandidates_componentCandidates :: Lens.Lens' ResolveComponentCandidates (Prelude.Maybe [ComponentCandidate])+resolveComponentCandidates_componentCandidates = Lens.lens (\ResolveComponentCandidates' {componentCandidates} -> componentCandidates) (\s@ResolveComponentCandidates' {} a -> s {componentCandidates = a} :: ResolveComponentCandidates) Prelude.. Lens.mapping Lens.coerced++-- | The platform to use to resolve compatible components.+resolveComponentCandidates_platform :: Lens.Lens' ResolveComponentCandidates (Prelude.Maybe ComponentPlatform)+resolveComponentCandidates_platform = Lens.lens (\ResolveComponentCandidates' {platform} -> platform) (\s@ResolveComponentCandidates' {} a -> s {platform = a} :: ResolveComponentCandidates)++instance Core.AWSRequest ResolveComponentCandidates where+  type+    AWSResponse ResolveComponentCandidates =+      ResolveComponentCandidatesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ResolveComponentCandidatesResponse'+            Prelude.<$> ( x+                            Data..?> "resolvedComponentVersions"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ResolveComponentCandidates where+  hashWithSalt _salt ResolveComponentCandidates' {..} =+    _salt+      `Prelude.hashWithSalt` componentCandidates+      `Prelude.hashWithSalt` platform++instance Prelude.NFData ResolveComponentCandidates where+  rnf ResolveComponentCandidates' {..} =+    Prelude.rnf componentCandidates+      `Prelude.seq` Prelude.rnf platform++instance Data.ToHeaders ResolveComponentCandidates where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToJSON ResolveComponentCandidates where+  toJSON ResolveComponentCandidates' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("componentCandidates" Data..=)+              Prelude.<$> componentCandidates,+            ("platform" Data..=) Prelude.<$> platform+          ]+      )++instance Data.ToPath ResolveComponentCandidates where+  toPath =+    Prelude.const+      "/greengrass/v2/resolveComponentCandidates"++instance Data.ToQuery ResolveComponentCandidates where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newResolveComponentCandidatesResponse' smart constructor.+data ResolveComponentCandidatesResponse = ResolveComponentCandidatesResponse'+  { -- | A list of components that meet the requirements that you specify in the+    -- request. This list includes each component\'s recipe that you can use to+    -- install the component.+    resolvedComponentVersions :: Prelude.Maybe [ResolvedComponentVersion],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ResolveComponentCandidatesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resolvedComponentVersions', 'resolveComponentCandidatesResponse_resolvedComponentVersions' - A list of components that meet the requirements that you specify in the+-- request. This list includes each component\'s recipe that you can use to+-- install the component.+--+-- 'httpStatus', 'resolveComponentCandidatesResponse_httpStatus' - The response's http status code.+newResolveComponentCandidatesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ResolveComponentCandidatesResponse+newResolveComponentCandidatesResponse pHttpStatus_ =+  ResolveComponentCandidatesResponse'+    { resolvedComponentVersions =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of components that meet the requirements that you specify in the+-- request. This list includes each component\'s recipe that you can use to+-- install the component.+resolveComponentCandidatesResponse_resolvedComponentVersions :: Lens.Lens' ResolveComponentCandidatesResponse (Prelude.Maybe [ResolvedComponentVersion])+resolveComponentCandidatesResponse_resolvedComponentVersions = Lens.lens (\ResolveComponentCandidatesResponse' {resolvedComponentVersions} -> resolvedComponentVersions) (\s@ResolveComponentCandidatesResponse' {} a -> s {resolvedComponentVersions = a} :: ResolveComponentCandidatesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+resolveComponentCandidatesResponse_httpStatus :: Lens.Lens' ResolveComponentCandidatesResponse Prelude.Int+resolveComponentCandidatesResponse_httpStatus = Lens.lens (\ResolveComponentCandidatesResponse' {httpStatus} -> httpStatus) (\s@ResolveComponentCandidatesResponse' {} a -> s {httpStatus = a} :: ResolveComponentCandidatesResponse)++instance+  Prelude.NFData+    ResolveComponentCandidatesResponse+  where+  rnf ResolveComponentCandidatesResponse' {..} =+    Prelude.rnf resolvedComponentVersions+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/TagResource.hs view
@@ -0,0 +1,171 @@+{-# 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.GreengrassV2.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 Greengrass resource. If a tag already exists for the+-- resource, this operation updates the tag\'s value.+module Amazonka.GreengrassV2.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.GreengrassV2.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/greengrass/v2/developerguide/tag-resources.html Tag your resources>+    -- in the /IoT Greengrass V2 Developer 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/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer 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/greengrass/v2/developerguide/tag-resources.html Tag your resources>+-- in the /IoT Greengrass V2 Developer 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.mempty++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("tags" Data..= tags)]+      )++instance Data.ToPath TagResource where+  toPath TagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery TagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.+newTagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TagResourceResponse+newTagResourceResponse pHttpStatus_ =+  TagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)++instance Prelude.NFData TagResourceResponse where+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/Types.hs view
@@ -0,0 +1,594 @@+{-# 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.GreengrassV2.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.GreengrassV2.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccessDeniedException,+    _ConflictException,+    _InternalServerException,+    _RequestAlreadyInProgressException,+    _ResourceNotFoundException,+    _ServiceQuotaExceededException,+    _ThrottlingException,+    _ValidationException,++    -- * CloudComponentState+    CloudComponentState (..),++    -- * ComponentDependencyType+    ComponentDependencyType (..),++    -- * ComponentVisibilityScope+    ComponentVisibilityScope (..),++    -- * CoreDeviceStatus+    CoreDeviceStatus (..),++    -- * DeploymentComponentUpdatePolicyAction+    DeploymentComponentUpdatePolicyAction (..),++    -- * DeploymentFailureHandlingPolicy+    DeploymentFailureHandlingPolicy (..),++    -- * DeploymentHistoryFilter+    DeploymentHistoryFilter (..),++    -- * DeploymentStatus+    DeploymentStatus (..),++    -- * EffectiveDeploymentExecutionStatus+    EffectiveDeploymentExecutionStatus (..),++    -- * InstalledComponentLifecycleState+    InstalledComponentLifecycleState (..),++    -- * InstalledComponentTopologyFilter+    InstalledComponentTopologyFilter (..),++    -- * IoTJobAbortAction+    IoTJobAbortAction (..),++    -- * IoTJobExecutionFailureType+    IoTJobExecutionFailureType (..),++    -- * LambdaEventSourceType+    LambdaEventSourceType (..),++    -- * LambdaFilesystemPermission+    LambdaFilesystemPermission (..),++    -- * LambdaInputPayloadEncodingType+    LambdaInputPayloadEncodingType (..),++    -- * LambdaIsolationMode+    LambdaIsolationMode (..),++    -- * RecipeOutputFormat+    RecipeOutputFormat (..),++    -- * VendorGuidance+    VendorGuidance (..),++    -- * AssociateClientDeviceWithCoreDeviceEntry+    AssociateClientDeviceWithCoreDeviceEntry (..),+    newAssociateClientDeviceWithCoreDeviceEntry,+    associateClientDeviceWithCoreDeviceEntry_thingName,++    -- * AssociateClientDeviceWithCoreDeviceErrorEntry+    AssociateClientDeviceWithCoreDeviceErrorEntry (..),+    newAssociateClientDeviceWithCoreDeviceErrorEntry,+    associateClientDeviceWithCoreDeviceErrorEntry_code,+    associateClientDeviceWithCoreDeviceErrorEntry_message,+    associateClientDeviceWithCoreDeviceErrorEntry_thingName,++    -- * AssociatedClientDevice+    AssociatedClientDevice (..),+    newAssociatedClientDevice,+    associatedClientDevice_associationTimestamp,+    associatedClientDevice_thingName,++    -- * CloudComponentStatus+    CloudComponentStatus (..),+    newCloudComponentStatus,+    cloudComponentStatus_componentState,+    cloudComponentStatus_errors,+    cloudComponentStatus_message,+    cloudComponentStatus_vendorGuidance,+    cloudComponentStatus_vendorGuidanceMessage,++    -- * Component+    Component (..),+    newComponent,+    component_arn,+    component_componentName,+    component_latestVersion,++    -- * ComponentCandidate+    ComponentCandidate (..),+    newComponentCandidate,+    componentCandidate_componentName,+    componentCandidate_componentVersion,+    componentCandidate_versionRequirements,++    -- * ComponentConfigurationUpdate+    ComponentConfigurationUpdate (..),+    newComponentConfigurationUpdate,+    componentConfigurationUpdate_merge,+    componentConfigurationUpdate_reset,++    -- * ComponentDependencyRequirement+    ComponentDependencyRequirement (..),+    newComponentDependencyRequirement,+    componentDependencyRequirement_dependencyType,+    componentDependencyRequirement_versionRequirement,++    -- * ComponentDeploymentSpecification+    ComponentDeploymentSpecification (..),+    newComponentDeploymentSpecification,+    componentDeploymentSpecification_componentVersion,+    componentDeploymentSpecification_configurationUpdate,+    componentDeploymentSpecification_runWith,++    -- * ComponentLatestVersion+    ComponentLatestVersion (..),+    newComponentLatestVersion,+    componentLatestVersion_arn,+    componentLatestVersion_componentVersion,+    componentLatestVersion_creationTimestamp,+    componentLatestVersion_description,+    componentLatestVersion_platforms,+    componentLatestVersion_publisher,++    -- * ComponentPlatform+    ComponentPlatform (..),+    newComponentPlatform,+    componentPlatform_attributes,+    componentPlatform_name,++    -- * ComponentRunWith+    ComponentRunWith (..),+    newComponentRunWith,+    componentRunWith_posixUser,+    componentRunWith_systemResourceLimits,+    componentRunWith_windowsUser,++    -- * ComponentVersionListItem+    ComponentVersionListItem (..),+    newComponentVersionListItem,+    componentVersionListItem_arn,+    componentVersionListItem_componentName,+    componentVersionListItem_componentVersion,++    -- * ConnectivityInfo+    ConnectivityInfo (..),+    newConnectivityInfo,+    connectivityInfo_hostAddress,+    connectivityInfo_id,+    connectivityInfo_metadata,+    connectivityInfo_portNumber,++    -- * CoreDevice+    CoreDevice (..),+    newCoreDevice,+    coreDevice_coreDeviceThingName,+    coreDevice_lastStatusUpdateTimestamp,+    coreDevice_status,++    -- * Deployment+    Deployment (..),+    newDeployment,+    deployment_creationTimestamp,+    deployment_deploymentId,+    deployment_deploymentName,+    deployment_deploymentStatus,+    deployment_isLatestForTarget,+    deployment_parentTargetArn,+    deployment_revisionId,+    deployment_targetArn,++    -- * DeploymentComponentUpdatePolicy+    DeploymentComponentUpdatePolicy (..),+    newDeploymentComponentUpdatePolicy,+    deploymentComponentUpdatePolicy_action,+    deploymentComponentUpdatePolicy_timeoutInSeconds,++    -- * DeploymentConfigurationValidationPolicy+    DeploymentConfigurationValidationPolicy (..),+    newDeploymentConfigurationValidationPolicy,+    deploymentConfigurationValidationPolicy_timeoutInSeconds,++    -- * DeploymentIoTJobConfiguration+    DeploymentIoTJobConfiguration (..),+    newDeploymentIoTJobConfiguration,+    deploymentIoTJobConfiguration_abortConfig,+    deploymentIoTJobConfiguration_jobExecutionsRolloutConfig,+    deploymentIoTJobConfiguration_timeoutConfig,++    -- * DeploymentPolicies+    DeploymentPolicies (..),+    newDeploymentPolicies,+    deploymentPolicies_componentUpdatePolicy,+    deploymentPolicies_configurationValidationPolicy,+    deploymentPolicies_failureHandlingPolicy,++    -- * DisassociateClientDeviceFromCoreDeviceEntry+    DisassociateClientDeviceFromCoreDeviceEntry (..),+    newDisassociateClientDeviceFromCoreDeviceEntry,+    disassociateClientDeviceFromCoreDeviceEntry_thingName,++    -- * DisassociateClientDeviceFromCoreDeviceErrorEntry+    DisassociateClientDeviceFromCoreDeviceErrorEntry (..),+    newDisassociateClientDeviceFromCoreDeviceErrorEntry,+    disassociateClientDeviceFromCoreDeviceErrorEntry_code,+    disassociateClientDeviceFromCoreDeviceErrorEntry_message,+    disassociateClientDeviceFromCoreDeviceErrorEntry_thingName,++    -- * EffectiveDeployment+    EffectiveDeployment (..),+    newEffectiveDeployment,+    effectiveDeployment_description,+    effectiveDeployment_iotJobArn,+    effectiveDeployment_iotJobId,+    effectiveDeployment_reason,+    effectiveDeployment_statusDetails,+    effectiveDeployment_deploymentId,+    effectiveDeployment_deploymentName,+    effectiveDeployment_targetArn,+    effectiveDeployment_coreDeviceExecutionStatus,+    effectiveDeployment_creationTimestamp,+    effectiveDeployment_modifiedTimestamp,++    -- * EffectiveDeploymentStatusDetails+    EffectiveDeploymentStatusDetails (..),+    newEffectiveDeploymentStatusDetails,+    effectiveDeploymentStatusDetails_errorStack,+    effectiveDeploymentStatusDetails_errorTypes,++    -- * InstalledComponent+    InstalledComponent (..),+    newInstalledComponent,+    installedComponent_componentName,+    installedComponent_componentVersion,+    installedComponent_isRoot,+    installedComponent_lastInstallationSource,+    installedComponent_lastReportedTimestamp,+    installedComponent_lastStatusChangeTimestamp,+    installedComponent_lifecycleState,+    installedComponent_lifecycleStateDetails,+    installedComponent_lifecycleStatusCodes,++    -- * IoTJobAbortConfig+    IoTJobAbortConfig (..),+    newIoTJobAbortConfig,+    ioTJobAbortConfig_criteriaList,++    -- * IoTJobAbortCriteria+    IoTJobAbortCriteria (..),+    newIoTJobAbortCriteria,+    ioTJobAbortCriteria_failureType,+    ioTJobAbortCriteria_action,+    ioTJobAbortCriteria_thresholdPercentage,+    ioTJobAbortCriteria_minNumberOfExecutedThings,++    -- * IoTJobExecutionsRolloutConfig+    IoTJobExecutionsRolloutConfig (..),+    newIoTJobExecutionsRolloutConfig,+    ioTJobExecutionsRolloutConfig_exponentialRate,+    ioTJobExecutionsRolloutConfig_maximumPerMinute,++    -- * IoTJobExponentialRolloutRate+    IoTJobExponentialRolloutRate (..),+    newIoTJobExponentialRolloutRate,+    ioTJobExponentialRolloutRate_baseRatePerMinute,+    ioTJobExponentialRolloutRate_incrementFactor,+    ioTJobExponentialRolloutRate_rateIncreaseCriteria,++    -- * IoTJobRateIncreaseCriteria+    IoTJobRateIncreaseCriteria (..),+    newIoTJobRateIncreaseCriteria,+    ioTJobRateIncreaseCriteria_numberOfNotifiedThings,+    ioTJobRateIncreaseCriteria_numberOfSucceededThings,++    -- * IoTJobTimeoutConfig+    IoTJobTimeoutConfig (..),+    newIoTJobTimeoutConfig,+    ioTJobTimeoutConfig_inProgressTimeoutInMinutes,++    -- * LambdaContainerParams+    LambdaContainerParams (..),+    newLambdaContainerParams,+    lambdaContainerParams_devices,+    lambdaContainerParams_memorySizeInKB,+    lambdaContainerParams_mountROSysfs,+    lambdaContainerParams_volumes,++    -- * LambdaDeviceMount+    LambdaDeviceMount (..),+    newLambdaDeviceMount,+    lambdaDeviceMount_addGroupOwner,+    lambdaDeviceMount_permission,+    lambdaDeviceMount_path,++    -- * LambdaEventSource+    LambdaEventSource (..),+    newLambdaEventSource,+    lambdaEventSource_topic,+    lambdaEventSource_type,++    -- * LambdaExecutionParameters+    LambdaExecutionParameters (..),+    newLambdaExecutionParameters,+    lambdaExecutionParameters_environmentVariables,+    lambdaExecutionParameters_eventSources,+    lambdaExecutionParameters_execArgs,+    lambdaExecutionParameters_inputPayloadEncodingType,+    lambdaExecutionParameters_linuxProcessParams,+    lambdaExecutionParameters_maxIdleTimeInSeconds,+    lambdaExecutionParameters_maxInstancesCount,+    lambdaExecutionParameters_maxQueueSize,+    lambdaExecutionParameters_pinned,+    lambdaExecutionParameters_statusTimeoutInSeconds,+    lambdaExecutionParameters_timeoutInSeconds,++    -- * LambdaFunctionRecipeSource+    LambdaFunctionRecipeSource (..),+    newLambdaFunctionRecipeSource,+    lambdaFunctionRecipeSource_componentDependencies,+    lambdaFunctionRecipeSource_componentLambdaParameters,+    lambdaFunctionRecipeSource_componentName,+    lambdaFunctionRecipeSource_componentPlatforms,+    lambdaFunctionRecipeSource_componentVersion,+    lambdaFunctionRecipeSource_lambdaArn,++    -- * LambdaLinuxProcessParams+    LambdaLinuxProcessParams (..),+    newLambdaLinuxProcessParams,+    lambdaLinuxProcessParams_containerParams,+    lambdaLinuxProcessParams_isolationMode,++    -- * LambdaVolumeMount+    LambdaVolumeMount (..),+    newLambdaVolumeMount,+    lambdaVolumeMount_addGroupOwner,+    lambdaVolumeMount_permission,+    lambdaVolumeMount_sourcePath,+    lambdaVolumeMount_destinationPath,++    -- * ResolvedComponentVersion+    ResolvedComponentVersion (..),+    newResolvedComponentVersion,+    resolvedComponentVersion_arn,+    resolvedComponentVersion_componentName,+    resolvedComponentVersion_componentVersion,+    resolvedComponentVersion_message,+    resolvedComponentVersion_recipe,+    resolvedComponentVersion_vendorGuidance,++    -- * SystemResourceLimits+    SystemResourceLimits (..),+    newSystemResourceLimits,+    systemResourceLimits_cpus,+    systemResourceLimits_memory,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.GreengrassV2.Types.AssociateClientDeviceWithCoreDeviceEntry+import Amazonka.GreengrassV2.Types.AssociateClientDeviceWithCoreDeviceErrorEntry+import Amazonka.GreengrassV2.Types.AssociatedClientDevice+import Amazonka.GreengrassV2.Types.CloudComponentState+import Amazonka.GreengrassV2.Types.CloudComponentStatus+import Amazonka.GreengrassV2.Types.Component+import Amazonka.GreengrassV2.Types.ComponentCandidate+import Amazonka.GreengrassV2.Types.ComponentConfigurationUpdate+import Amazonka.GreengrassV2.Types.ComponentDependencyRequirement+import Amazonka.GreengrassV2.Types.ComponentDependencyType+import Amazonka.GreengrassV2.Types.ComponentDeploymentSpecification+import Amazonka.GreengrassV2.Types.ComponentLatestVersion+import Amazonka.GreengrassV2.Types.ComponentPlatform+import Amazonka.GreengrassV2.Types.ComponentRunWith+import Amazonka.GreengrassV2.Types.ComponentVersionListItem+import Amazonka.GreengrassV2.Types.ComponentVisibilityScope+import Amazonka.GreengrassV2.Types.ConnectivityInfo+import Amazonka.GreengrassV2.Types.CoreDevice+import Amazonka.GreengrassV2.Types.CoreDeviceStatus+import Amazonka.GreengrassV2.Types.Deployment+import Amazonka.GreengrassV2.Types.DeploymentComponentUpdatePolicy+import Amazonka.GreengrassV2.Types.DeploymentComponentUpdatePolicyAction+import Amazonka.GreengrassV2.Types.DeploymentConfigurationValidationPolicy+import Amazonka.GreengrassV2.Types.DeploymentFailureHandlingPolicy+import Amazonka.GreengrassV2.Types.DeploymentHistoryFilter+import Amazonka.GreengrassV2.Types.DeploymentIoTJobConfiguration+import Amazonka.GreengrassV2.Types.DeploymentPolicies+import Amazonka.GreengrassV2.Types.DeploymentStatus+import Amazonka.GreengrassV2.Types.DisassociateClientDeviceFromCoreDeviceEntry+import Amazonka.GreengrassV2.Types.DisassociateClientDeviceFromCoreDeviceErrorEntry+import Amazonka.GreengrassV2.Types.EffectiveDeployment+import Amazonka.GreengrassV2.Types.EffectiveDeploymentExecutionStatus+import Amazonka.GreengrassV2.Types.EffectiveDeploymentStatusDetails+import Amazonka.GreengrassV2.Types.InstalledComponent+import Amazonka.GreengrassV2.Types.InstalledComponentLifecycleState+import Amazonka.GreengrassV2.Types.InstalledComponentTopologyFilter+import Amazonka.GreengrassV2.Types.IoTJobAbortAction+import Amazonka.GreengrassV2.Types.IoTJobAbortConfig+import Amazonka.GreengrassV2.Types.IoTJobAbortCriteria+import Amazonka.GreengrassV2.Types.IoTJobExecutionFailureType+import Amazonka.GreengrassV2.Types.IoTJobExecutionsRolloutConfig+import Amazonka.GreengrassV2.Types.IoTJobExponentialRolloutRate+import Amazonka.GreengrassV2.Types.IoTJobRateIncreaseCriteria+import Amazonka.GreengrassV2.Types.IoTJobTimeoutConfig+import Amazonka.GreengrassV2.Types.LambdaContainerParams+import Amazonka.GreengrassV2.Types.LambdaDeviceMount+import Amazonka.GreengrassV2.Types.LambdaEventSource+import Amazonka.GreengrassV2.Types.LambdaEventSourceType+import Amazonka.GreengrassV2.Types.LambdaExecutionParameters+import Amazonka.GreengrassV2.Types.LambdaFilesystemPermission+import Amazonka.GreengrassV2.Types.LambdaFunctionRecipeSource+import Amazonka.GreengrassV2.Types.LambdaInputPayloadEncodingType+import Amazonka.GreengrassV2.Types.LambdaIsolationMode+import Amazonka.GreengrassV2.Types.LambdaLinuxProcessParams+import Amazonka.GreengrassV2.Types.LambdaVolumeMount+import Amazonka.GreengrassV2.Types.RecipeOutputFormat+import Amazonka.GreengrassV2.Types.ResolvedComponentVersion+import Amazonka.GreengrassV2.Types.SystemResourceLimits+import Amazonka.GreengrassV2.Types.VendorGuidance+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2020-11-30@ of the Amazon IoT Greengrass V2 SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "GreengrassV2",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "greengrass",+      Core.signingName = "greengrass",+      Core.version = "2020-11-30",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "GreengrassV2",+      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++-- | You don\'t have permission to perform the action.+_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"+    Prelude.. Core.hasStatus 403++-- | 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.+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"+    Prelude.. Core.hasStatus 409++-- | IoT Greengrass can\'t process your request right now. Try again later.+_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServerException =+  Core._MatchServiceError+    defaultService+    "InternalServerException"+    Prelude.. Core.hasStatus 500++-- | The request is already in progress. This exception occurs when you use a+-- client token for multiple requests while IoT Greengrass is still+-- processing an earlier request that uses the same client token.+_RequestAlreadyInProgressException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_RequestAlreadyInProgressException =+  Core._MatchServiceError+    defaultService+    "RequestAlreadyInProgressException"+    Prelude.. Core.hasStatus 400++-- | 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++-- | Your request exceeds a service quota. For example, you might have the+-- maximum number of components that you can create.+_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceQuotaExceededException =+  Core._MatchServiceError+    defaultService+    "ServiceQuotaExceededException"+    Prelude.. Core.hasStatus 402++-- | Your request exceeded a request rate quota. For example, you might have+-- exceeded the amount of times that you can retrieve device or deployment+-- status per second.+_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottlingException =+  Core._MatchServiceError+    defaultService+    "ThrottlingException"+    Prelude.. Core.hasStatus 429++-- | The request isn\'t valid. This can occur if your request contains+-- malformed JSON or unsupported characters.+_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ValidationException =+  Core._MatchServiceError+    defaultService+    "ValidationException"+    Prelude.. Core.hasStatus 400
+ gen/Amazonka/GreengrassV2/Types/AssociateClientDeviceWithCoreDeviceEntry.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.AssociateClientDeviceWithCoreDeviceEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.AssociateClientDeviceWithCoreDeviceEntry 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 request to associate a client device with a core device. The+-- <https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchAssociateClientDeviceWithCoreDevice.html BatchAssociateClientDeviceWithCoreDevice>+-- operation consumes a list of these requests.+--+-- /See:/ 'newAssociateClientDeviceWithCoreDeviceEntry' smart constructor.+data AssociateClientDeviceWithCoreDeviceEntry = AssociateClientDeviceWithCoreDeviceEntry'+  { -- | The name of the IoT thing that represents the client device to+    -- associate.+    thingName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateClientDeviceWithCoreDeviceEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'thingName', 'associateClientDeviceWithCoreDeviceEntry_thingName' - The name of the IoT thing that represents the client device to+-- associate.+newAssociateClientDeviceWithCoreDeviceEntry ::+  -- | 'thingName'+  Prelude.Text ->+  AssociateClientDeviceWithCoreDeviceEntry+newAssociateClientDeviceWithCoreDeviceEntry+  pThingName_ =+    AssociateClientDeviceWithCoreDeviceEntry'+      { thingName =+          pThingName_+      }++-- | The name of the IoT thing that represents the client device to+-- associate.+associateClientDeviceWithCoreDeviceEntry_thingName :: Lens.Lens' AssociateClientDeviceWithCoreDeviceEntry Prelude.Text+associateClientDeviceWithCoreDeviceEntry_thingName = Lens.lens (\AssociateClientDeviceWithCoreDeviceEntry' {thingName} -> thingName) (\s@AssociateClientDeviceWithCoreDeviceEntry' {} a -> s {thingName = a} :: AssociateClientDeviceWithCoreDeviceEntry)++instance+  Prelude.Hashable+    AssociateClientDeviceWithCoreDeviceEntry+  where+  hashWithSalt+    _salt+    AssociateClientDeviceWithCoreDeviceEntry' {..} =+      _salt `Prelude.hashWithSalt` thingName++instance+  Prelude.NFData+    AssociateClientDeviceWithCoreDeviceEntry+  where+  rnf AssociateClientDeviceWithCoreDeviceEntry' {..} =+    Prelude.rnf thingName++instance+  Data.ToJSON+    AssociateClientDeviceWithCoreDeviceEntry+  where+  toJSON AssociateClientDeviceWithCoreDeviceEntry' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("thingName" Data..= thingName)]+      )
+ gen/Amazonka/GreengrassV2/Types/AssociateClientDeviceWithCoreDeviceErrorEntry.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.GreengrassV2.Types.AssociateClientDeviceWithCoreDeviceErrorEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.AssociateClientDeviceWithCoreDeviceErrorEntry 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 error that occurs from a request to associate a client+-- device with a core device. The+-- <https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchAssociateClientDeviceWithCoreDevice.html BatchAssociateClientDeviceWithCoreDevice>+-- operation returns a list of these errors.+--+-- /See:/ 'newAssociateClientDeviceWithCoreDeviceErrorEntry' smart constructor.+data AssociateClientDeviceWithCoreDeviceErrorEntry = AssociateClientDeviceWithCoreDeviceErrorEntry'+  { -- | The error code for the request.+    code :: Prelude.Maybe Prelude.Text,+    -- | A message that provides additional information about the error.+    message :: Prelude.Maybe Prelude.Text,+    -- | The name of the IoT thing whose associate request failed.+    thingName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociateClientDeviceWithCoreDeviceErrorEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'associateClientDeviceWithCoreDeviceErrorEntry_code' - The error code for the request.+--+-- 'message', 'associateClientDeviceWithCoreDeviceErrorEntry_message' - A message that provides additional information about the error.+--+-- 'thingName', 'associateClientDeviceWithCoreDeviceErrorEntry_thingName' - The name of the IoT thing whose associate request failed.+newAssociateClientDeviceWithCoreDeviceErrorEntry ::+  AssociateClientDeviceWithCoreDeviceErrorEntry+newAssociateClientDeviceWithCoreDeviceErrorEntry =+  AssociateClientDeviceWithCoreDeviceErrorEntry'+    { code =+        Prelude.Nothing,+      message = Prelude.Nothing,+      thingName = Prelude.Nothing+    }++-- | The error code for the request.+associateClientDeviceWithCoreDeviceErrorEntry_code :: Lens.Lens' AssociateClientDeviceWithCoreDeviceErrorEntry (Prelude.Maybe Prelude.Text)+associateClientDeviceWithCoreDeviceErrorEntry_code = Lens.lens (\AssociateClientDeviceWithCoreDeviceErrorEntry' {code} -> code) (\s@AssociateClientDeviceWithCoreDeviceErrorEntry' {} a -> s {code = a} :: AssociateClientDeviceWithCoreDeviceErrorEntry)++-- | A message that provides additional information about the error.+associateClientDeviceWithCoreDeviceErrorEntry_message :: Lens.Lens' AssociateClientDeviceWithCoreDeviceErrorEntry (Prelude.Maybe Prelude.Text)+associateClientDeviceWithCoreDeviceErrorEntry_message = Lens.lens (\AssociateClientDeviceWithCoreDeviceErrorEntry' {message} -> message) (\s@AssociateClientDeviceWithCoreDeviceErrorEntry' {} a -> s {message = a} :: AssociateClientDeviceWithCoreDeviceErrorEntry)++-- | The name of the IoT thing whose associate request failed.+associateClientDeviceWithCoreDeviceErrorEntry_thingName :: Lens.Lens' AssociateClientDeviceWithCoreDeviceErrorEntry (Prelude.Maybe Prelude.Text)+associateClientDeviceWithCoreDeviceErrorEntry_thingName = Lens.lens (\AssociateClientDeviceWithCoreDeviceErrorEntry' {thingName} -> thingName) (\s@AssociateClientDeviceWithCoreDeviceErrorEntry' {} a -> s {thingName = a} :: AssociateClientDeviceWithCoreDeviceErrorEntry)++instance+  Data.FromJSON+    AssociateClientDeviceWithCoreDeviceErrorEntry+  where+  parseJSON =+    Data.withObject+      "AssociateClientDeviceWithCoreDeviceErrorEntry"+      ( \x ->+          AssociateClientDeviceWithCoreDeviceErrorEntry'+            Prelude.<$> (x Data..:? "code")+            Prelude.<*> (x Data..:? "message")+            Prelude.<*> (x Data..:? "thingName")+      )++instance+  Prelude.Hashable+    AssociateClientDeviceWithCoreDeviceErrorEntry+  where+  hashWithSalt+    _salt+    AssociateClientDeviceWithCoreDeviceErrorEntry' {..} =+      _salt+        `Prelude.hashWithSalt` code+        `Prelude.hashWithSalt` message+        `Prelude.hashWithSalt` thingName++instance+  Prelude.NFData+    AssociateClientDeviceWithCoreDeviceErrorEntry+  where+  rnf+    AssociateClientDeviceWithCoreDeviceErrorEntry' {..} =+      Prelude.rnf code+        `Prelude.seq` Prelude.rnf message+        `Prelude.seq` Prelude.rnf thingName
+ gen/Amazonka/GreengrassV2/Types/AssociatedClientDevice.hs view
@@ -0,0 +1,89 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.AssociatedClientDevice+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.AssociatedClientDevice 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 client device that is associated to a core+-- device for cloud discovery.+--+-- /See:/ 'newAssociatedClientDevice' smart constructor.+data AssociatedClientDevice = AssociatedClientDevice'+  { -- | The time that the client device was associated, expressed in ISO 8601+    -- format.+    associationTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The name of the IoT thing that represents the associated client device.+    thingName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AssociatedClientDevice' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'associationTimestamp', 'associatedClientDevice_associationTimestamp' - The time that the client device was associated, expressed in ISO 8601+-- format.+--+-- 'thingName', 'associatedClientDevice_thingName' - The name of the IoT thing that represents the associated client device.+newAssociatedClientDevice ::+  AssociatedClientDevice+newAssociatedClientDevice =+  AssociatedClientDevice'+    { associationTimestamp =+        Prelude.Nothing,+      thingName = Prelude.Nothing+    }++-- | The time that the client device was associated, expressed in ISO 8601+-- format.+associatedClientDevice_associationTimestamp :: Lens.Lens' AssociatedClientDevice (Prelude.Maybe Prelude.UTCTime)+associatedClientDevice_associationTimestamp = Lens.lens (\AssociatedClientDevice' {associationTimestamp} -> associationTimestamp) (\s@AssociatedClientDevice' {} a -> s {associationTimestamp = a} :: AssociatedClientDevice) Prelude.. Lens.mapping Data._Time++-- | The name of the IoT thing that represents the associated client device.+associatedClientDevice_thingName :: Lens.Lens' AssociatedClientDevice (Prelude.Maybe Prelude.Text)+associatedClientDevice_thingName = Lens.lens (\AssociatedClientDevice' {thingName} -> thingName) (\s@AssociatedClientDevice' {} a -> s {thingName = a} :: AssociatedClientDevice)++instance Data.FromJSON AssociatedClientDevice where+  parseJSON =+    Data.withObject+      "AssociatedClientDevice"+      ( \x ->+          AssociatedClientDevice'+            Prelude.<$> (x Data..:? "associationTimestamp")+            Prelude.<*> (x Data..:? "thingName")+      )++instance Prelude.Hashable AssociatedClientDevice where+  hashWithSalt _salt AssociatedClientDevice' {..} =+    _salt+      `Prelude.hashWithSalt` associationTimestamp+      `Prelude.hashWithSalt` thingName++instance Prelude.NFData AssociatedClientDevice where+  rnf AssociatedClientDevice' {..} =+    Prelude.rnf associationTimestamp+      `Prelude.seq` Prelude.rnf thingName
+ gen/Amazonka/GreengrassV2/Types/CloudComponentState.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.GreengrassV2.Types.CloudComponentState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.CloudComponentState+  ( CloudComponentState+      ( ..,+        CloudComponentState_DEPLOYABLE,+        CloudComponentState_DEPRECATED,+        CloudComponentState_FAILED,+        CloudComponentState_INITIATED,+        CloudComponentState_REQUESTED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype CloudComponentState = CloudComponentState'+  { fromCloudComponentState ::+      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 CloudComponentState_DEPLOYABLE :: CloudComponentState+pattern CloudComponentState_DEPLOYABLE = CloudComponentState' "DEPLOYABLE"++pattern CloudComponentState_DEPRECATED :: CloudComponentState+pattern CloudComponentState_DEPRECATED = CloudComponentState' "DEPRECATED"++pattern CloudComponentState_FAILED :: CloudComponentState+pattern CloudComponentState_FAILED = CloudComponentState' "FAILED"++pattern CloudComponentState_INITIATED :: CloudComponentState+pattern CloudComponentState_INITIATED = CloudComponentState' "INITIATED"++pattern CloudComponentState_REQUESTED :: CloudComponentState+pattern CloudComponentState_REQUESTED = CloudComponentState' "REQUESTED"++{-# COMPLETE+  CloudComponentState_DEPLOYABLE,+  CloudComponentState_DEPRECATED,+  CloudComponentState_FAILED,+  CloudComponentState_INITIATED,+  CloudComponentState_REQUESTED,+  CloudComponentState'+  #-}
+ gen/Amazonka/GreengrassV2/Types/CloudComponentStatus.hs view
@@ -0,0 +1,184 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.CloudComponentStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.CloudComponentStatus where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.CloudComponentState+import Amazonka.GreengrassV2.Types.VendorGuidance+import qualified Amazonka.Prelude as Prelude++-- | Contains the status of a component version in the IoT Greengrass+-- service.+--+-- /See:/ 'newCloudComponentStatus' smart constructor.+data CloudComponentStatus = CloudComponentStatus'+  { -- | The state of the component version.+    componentState :: Prelude.Maybe CloudComponentState,+    -- | A dictionary of errors that communicate why the component version is in+    -- an error state. For example, if IoT Greengrass can\'t access an artifact+    -- for the component version, then @errors@ contains the artifact\'s URI as+    -- a key, and the error message as the value for that key.+    errors :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A message that communicates details, such as errors, about the status of+    -- the component version.+    message :: Prelude.Maybe Prelude.Text,+    -- | The vendor guidance state for the component version. This state+    -- indicates whether the component version has any issues that you should+    -- consider before you deploy it. The vendor guidance state can be:+    --+    -- -   @ACTIVE@ – This component version is available and recommended for+    --     use.+    --+    -- -   @DISCONTINUED@ – This component version has been discontinued by its+    --     publisher. You can deploy this component version, but we recommend+    --     that you use a different version of this component.+    --+    -- -   @DELETED@ – This component version has been deleted by its+    --     publisher, so you can\'t deploy it. If you have any existing+    --     deployments that specify this component version, those deployments+    --     will fail.+    vendorGuidance :: Prelude.Maybe VendorGuidance,+    -- | A message that communicates details about the vendor guidance state of+    -- the component version. This message communicates why a component version+    -- is discontinued or deleted.+    vendorGuidanceMessage :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CloudComponentStatus' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentState', 'cloudComponentStatus_componentState' - The state of the component version.+--+-- 'errors', 'cloudComponentStatus_errors' - A dictionary of errors that communicate why the component version is in+-- an error state. For example, if IoT Greengrass can\'t access an artifact+-- for the component version, then @errors@ contains the artifact\'s URI as+-- a key, and the error message as the value for that key.+--+-- 'message', 'cloudComponentStatus_message' - A message that communicates details, such as errors, about the status of+-- the component version.+--+-- 'vendorGuidance', 'cloudComponentStatus_vendorGuidance' - The vendor guidance state for the component version. This state+-- indicates whether the component version has any issues that you should+-- consider before you deploy it. The vendor guidance state can be:+--+-- -   @ACTIVE@ – This component version is available and recommended for+--     use.+--+-- -   @DISCONTINUED@ – This component version has been discontinued by its+--     publisher. You can deploy this component version, but we recommend+--     that you use a different version of this component.+--+-- -   @DELETED@ – This component version has been deleted by its+--     publisher, so you can\'t deploy it. If you have any existing+--     deployments that specify this component version, those deployments+--     will fail.+--+-- 'vendorGuidanceMessage', 'cloudComponentStatus_vendorGuidanceMessage' - A message that communicates details about the vendor guidance state of+-- the component version. This message communicates why a component version+-- is discontinued or deleted.+newCloudComponentStatus ::+  CloudComponentStatus+newCloudComponentStatus =+  CloudComponentStatus'+    { componentState =+        Prelude.Nothing,+      errors = Prelude.Nothing,+      message = Prelude.Nothing,+      vendorGuidance = Prelude.Nothing,+      vendorGuidanceMessage = Prelude.Nothing+    }++-- | The state of the component version.+cloudComponentStatus_componentState :: Lens.Lens' CloudComponentStatus (Prelude.Maybe CloudComponentState)+cloudComponentStatus_componentState = Lens.lens (\CloudComponentStatus' {componentState} -> componentState) (\s@CloudComponentStatus' {} a -> s {componentState = a} :: CloudComponentStatus)++-- | A dictionary of errors that communicate why the component version is in+-- an error state. For example, if IoT Greengrass can\'t access an artifact+-- for the component version, then @errors@ contains the artifact\'s URI as+-- a key, and the error message as the value for that key.+cloudComponentStatus_errors :: Lens.Lens' CloudComponentStatus (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+cloudComponentStatus_errors = Lens.lens (\CloudComponentStatus' {errors} -> errors) (\s@CloudComponentStatus' {} a -> s {errors = a} :: CloudComponentStatus) Prelude.. Lens.mapping Lens.coerced++-- | A message that communicates details, such as errors, about the status of+-- the component version.+cloudComponentStatus_message :: Lens.Lens' CloudComponentStatus (Prelude.Maybe Prelude.Text)+cloudComponentStatus_message = Lens.lens (\CloudComponentStatus' {message} -> message) (\s@CloudComponentStatus' {} a -> s {message = a} :: CloudComponentStatus)++-- | The vendor guidance state for the component version. This state+-- indicates whether the component version has any issues that you should+-- consider before you deploy it. The vendor guidance state can be:+--+-- -   @ACTIVE@ – This component version is available and recommended for+--     use.+--+-- -   @DISCONTINUED@ – This component version has been discontinued by its+--     publisher. You can deploy this component version, but we recommend+--     that you use a different version of this component.+--+-- -   @DELETED@ – This component version has been deleted by its+--     publisher, so you can\'t deploy it. If you have any existing+--     deployments that specify this component version, those deployments+--     will fail.+cloudComponentStatus_vendorGuidance :: Lens.Lens' CloudComponentStatus (Prelude.Maybe VendorGuidance)+cloudComponentStatus_vendorGuidance = Lens.lens (\CloudComponentStatus' {vendorGuidance} -> vendorGuidance) (\s@CloudComponentStatus' {} a -> s {vendorGuidance = a} :: CloudComponentStatus)++-- | A message that communicates details about the vendor guidance state of+-- the component version. This message communicates why a component version+-- is discontinued or deleted.+cloudComponentStatus_vendorGuidanceMessage :: Lens.Lens' CloudComponentStatus (Prelude.Maybe Prelude.Text)+cloudComponentStatus_vendorGuidanceMessage = Lens.lens (\CloudComponentStatus' {vendorGuidanceMessage} -> vendorGuidanceMessage) (\s@CloudComponentStatus' {} a -> s {vendorGuidanceMessage = a} :: CloudComponentStatus)++instance Data.FromJSON CloudComponentStatus where+  parseJSON =+    Data.withObject+      "CloudComponentStatus"+      ( \x ->+          CloudComponentStatus'+            Prelude.<$> (x Data..:? "componentState")+            Prelude.<*> (x Data..:? "errors" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "message")+            Prelude.<*> (x Data..:? "vendorGuidance")+            Prelude.<*> (x Data..:? "vendorGuidanceMessage")+      )++instance Prelude.Hashable CloudComponentStatus where+  hashWithSalt _salt CloudComponentStatus' {..} =+    _salt+      `Prelude.hashWithSalt` componentState+      `Prelude.hashWithSalt` errors+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` vendorGuidance+      `Prelude.hashWithSalt` vendorGuidanceMessage++instance Prelude.NFData CloudComponentStatus where+  rnf CloudComponentStatus' {..} =+    Prelude.rnf componentState+      `Prelude.seq` Prelude.rnf errors+      `Prelude.seq` Prelude.rnf message+      `Prelude.seq` Prelude.rnf vendorGuidance+      `Prelude.seq` Prelude.rnf vendorGuidanceMessage
+ gen/Amazonka/GreengrassV2/Types/Component.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.GreengrassV2.Types.Component+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.Component where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.ComponentLatestVersion+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a component.+--+-- /See:/ 'newComponent' smart constructor.+data Component = Component'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the component version.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The name of the component.+    componentName :: Prelude.Maybe Prelude.Text,+    -- | The latest version of the component and its details.+    latestVersion :: Prelude.Maybe ComponentLatestVersion+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Component' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'component_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+--+-- 'componentName', 'component_componentName' - The name of the component.+--+-- 'latestVersion', 'component_latestVersion' - The latest version of the component and its details.+newComponent ::+  Component+newComponent =+  Component'+    { arn = Prelude.Nothing,+      componentName = Prelude.Nothing,+      latestVersion = Prelude.Nothing+    }++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+component_arn :: Lens.Lens' Component (Prelude.Maybe Prelude.Text)+component_arn = Lens.lens (\Component' {arn} -> arn) (\s@Component' {} a -> s {arn = a} :: Component)++-- | The name of the component.+component_componentName :: Lens.Lens' Component (Prelude.Maybe Prelude.Text)+component_componentName = Lens.lens (\Component' {componentName} -> componentName) (\s@Component' {} a -> s {componentName = a} :: Component)++-- | The latest version of the component and its details.+component_latestVersion :: Lens.Lens' Component (Prelude.Maybe ComponentLatestVersion)+component_latestVersion = Lens.lens (\Component' {latestVersion} -> latestVersion) (\s@Component' {} a -> s {latestVersion = a} :: Component)++instance Data.FromJSON Component where+  parseJSON =+    Data.withObject+      "Component"+      ( \x ->+          Component'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "componentName")+            Prelude.<*> (x Data..:? "latestVersion")+      )++instance Prelude.Hashable Component where+  hashWithSalt _salt Component' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` componentName+      `Prelude.hashWithSalt` latestVersion++instance Prelude.NFData Component where+  rnf Component' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf componentName+      `Prelude.seq` Prelude.rnf latestVersion
+ gen/Amazonka/GreengrassV2/Types/ComponentCandidate.hs view
@@ -0,0 +1,111 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.ComponentCandidate+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ComponentCandidate 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 component that is a candidate to deploy to+-- a Greengrass core device.+--+-- /See:/ 'newComponentCandidate' smart constructor.+data ComponentCandidate = ComponentCandidate'+  { -- | The name of the component.+    componentName :: Prelude.Maybe Prelude.Text,+    -- | The version of the component.+    componentVersion :: Prelude.Maybe Prelude.Text,+    -- | The version requirements for the component\'s dependencies. Greengrass+    -- core devices get the version requirements from component recipes.+    --+    -- IoT Greengrass V2 uses semantic version constraints. For more+    -- information, see <https://semver.org/ Semantic Versioning>.+    versionRequirements :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentCandidate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentName', 'componentCandidate_componentName' - The name of the component.+--+-- 'componentVersion', 'componentCandidate_componentVersion' - The version of the component.+--+-- 'versionRequirements', 'componentCandidate_versionRequirements' - The version requirements for the component\'s dependencies. Greengrass+-- core devices get the version requirements from component recipes.+--+-- IoT Greengrass V2 uses semantic version constraints. For more+-- information, see <https://semver.org/ Semantic Versioning>.+newComponentCandidate ::+  ComponentCandidate+newComponentCandidate =+  ComponentCandidate'+    { componentName =+        Prelude.Nothing,+      componentVersion = Prelude.Nothing,+      versionRequirements = Prelude.Nothing+    }++-- | The name of the component.+componentCandidate_componentName :: Lens.Lens' ComponentCandidate (Prelude.Maybe Prelude.Text)+componentCandidate_componentName = Lens.lens (\ComponentCandidate' {componentName} -> componentName) (\s@ComponentCandidate' {} a -> s {componentName = a} :: ComponentCandidate)++-- | The version of the component.+componentCandidate_componentVersion :: Lens.Lens' ComponentCandidate (Prelude.Maybe Prelude.Text)+componentCandidate_componentVersion = Lens.lens (\ComponentCandidate' {componentVersion} -> componentVersion) (\s@ComponentCandidate' {} a -> s {componentVersion = a} :: ComponentCandidate)++-- | The version requirements for the component\'s dependencies. Greengrass+-- core devices get the version requirements from component recipes.+--+-- IoT Greengrass V2 uses semantic version constraints. For more+-- information, see <https://semver.org/ Semantic Versioning>.+componentCandidate_versionRequirements :: Lens.Lens' ComponentCandidate (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+componentCandidate_versionRequirements = Lens.lens (\ComponentCandidate' {versionRequirements} -> versionRequirements) (\s@ComponentCandidate' {} a -> s {versionRequirements = a} :: ComponentCandidate) Prelude.. Lens.mapping Lens.coerced++instance Prelude.Hashable ComponentCandidate where+  hashWithSalt _salt ComponentCandidate' {..} =+    _salt+      `Prelude.hashWithSalt` componentName+      `Prelude.hashWithSalt` componentVersion+      `Prelude.hashWithSalt` versionRequirements++instance Prelude.NFData ComponentCandidate where+  rnf ComponentCandidate' {..} =+    Prelude.rnf componentName+      `Prelude.seq` Prelude.rnf componentVersion+      `Prelude.seq` Prelude.rnf versionRequirements++instance Data.ToJSON ComponentCandidate where+  toJSON ComponentCandidate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("componentName" Data..=) Prelude.<$> componentName,+            ("componentVersion" Data..=)+              Prelude.<$> componentVersion,+            ("versionRequirements" Data..=)+              Prelude.<$> versionRequirements+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/ComponentConfigurationUpdate.hs view
@@ -0,0 +1,141 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.ComponentConfigurationUpdate+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ComponentConfigurationUpdate 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 deployment\'s update to a component\'s+-- configuration on Greengrass core devices. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html Update component configurations>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- /See:/ 'newComponentConfigurationUpdate' smart constructor.+data ComponentConfigurationUpdate = ComponentConfigurationUpdate'+  { -- | A serialized JSON string that contains the configuration object to merge+    -- to target devices. The core device merges this configuration with the+    -- component\'s existing configuration. If this is the first time a+    -- component deploys on a device, the core device merges this configuration+    -- with the component\'s default configuration. This means that the core+    -- device keeps it\'s existing configuration for keys and values that you+    -- don\'t specify in this object. For more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html#merge-configuration-update Merge configuration updates>+    -- in the /IoT Greengrass V2 Developer Guide/.+    merge :: Prelude.Maybe Prelude.Text,+    -- | The list of configuration nodes to reset to default values on target+    -- devices. Use JSON pointers to specify each node to reset. JSON pointers+    -- start with a forward slash (@\/@) and use forward slashes to separate+    -- the key for each level in the object. For more information, see the+    -- <https://tools.ietf.org/html/rfc6901 JSON pointer specification> and+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html#reset-configuration-update Reset configuration updates>+    -- in the /IoT Greengrass V2 Developer Guide/.+    reset :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentConfigurationUpdate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'merge', 'componentConfigurationUpdate_merge' - A serialized JSON string that contains the configuration object to merge+-- to target devices. The core device merges this configuration with the+-- component\'s existing configuration. If this is the first time a+-- component deploys on a device, the core device merges this configuration+-- with the component\'s default configuration. This means that the core+-- device keeps it\'s existing configuration for keys and values that you+-- don\'t specify in this object. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html#merge-configuration-update Merge configuration updates>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- 'reset', 'componentConfigurationUpdate_reset' - The list of configuration nodes to reset to default values on target+-- devices. Use JSON pointers to specify each node to reset. JSON pointers+-- start with a forward slash (@\/@) and use forward slashes to separate+-- the key for each level in the object. For more information, see the+-- <https://tools.ietf.org/html/rfc6901 JSON pointer specification> and+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html#reset-configuration-update Reset configuration updates>+-- in the /IoT Greengrass V2 Developer Guide/.+newComponentConfigurationUpdate ::+  ComponentConfigurationUpdate+newComponentConfigurationUpdate =+  ComponentConfigurationUpdate'+    { merge =+        Prelude.Nothing,+      reset = Prelude.Nothing+    }++-- | A serialized JSON string that contains the configuration object to merge+-- to target devices. The core device merges this configuration with the+-- component\'s existing configuration. If this is the first time a+-- component deploys on a device, the core device merges this configuration+-- with the component\'s default configuration. This means that the core+-- device keeps it\'s existing configuration for keys and values that you+-- don\'t specify in this object. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html#merge-configuration-update Merge configuration updates>+-- in the /IoT Greengrass V2 Developer Guide/.+componentConfigurationUpdate_merge :: Lens.Lens' ComponentConfigurationUpdate (Prelude.Maybe Prelude.Text)+componentConfigurationUpdate_merge = Lens.lens (\ComponentConfigurationUpdate' {merge} -> merge) (\s@ComponentConfigurationUpdate' {} a -> s {merge = a} :: ComponentConfigurationUpdate)++-- | The list of configuration nodes to reset to default values on target+-- devices. Use JSON pointers to specify each node to reset. JSON pointers+-- start with a forward slash (@\/@) and use forward slashes to separate+-- the key for each level in the object. For more information, see the+-- <https://tools.ietf.org/html/rfc6901 JSON pointer specification> and+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html#reset-configuration-update Reset configuration updates>+-- in the /IoT Greengrass V2 Developer Guide/.+componentConfigurationUpdate_reset :: Lens.Lens' ComponentConfigurationUpdate (Prelude.Maybe [Prelude.Text])+componentConfigurationUpdate_reset = Lens.lens (\ComponentConfigurationUpdate' {reset} -> reset) (\s@ComponentConfigurationUpdate' {} a -> s {reset = a} :: ComponentConfigurationUpdate) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ComponentConfigurationUpdate where+  parseJSON =+    Data.withObject+      "ComponentConfigurationUpdate"+      ( \x ->+          ComponentConfigurationUpdate'+            Prelude.<$> (x Data..:? "merge")+            Prelude.<*> (x Data..:? "reset" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    ComponentConfigurationUpdate+  where+  hashWithSalt _salt ComponentConfigurationUpdate' {..} =+    _salt+      `Prelude.hashWithSalt` merge+      `Prelude.hashWithSalt` reset++instance Prelude.NFData ComponentConfigurationUpdate where+  rnf ComponentConfigurationUpdate' {..} =+    Prelude.rnf merge `Prelude.seq` Prelude.rnf reset++instance Data.ToJSON ComponentConfigurationUpdate where+  toJSON ComponentConfigurationUpdate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("merge" Data..=) Prelude.<$> merge,+            ("reset" Data..=) Prelude.<$> reset+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/ComponentDependencyRequirement.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.GreengrassV2.Types.ComponentDependencyRequirement+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ComponentDependencyRequirement where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.ComponentDependencyType+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a component dependency for a Lambda function+-- component.+--+-- /See:/ 'newComponentDependencyRequirement' smart constructor.+data ComponentDependencyRequirement = ComponentDependencyRequirement'+  { -- | The type of this dependency. Choose from the following options:+    --+    -- -   @SOFT@ – The component doesn\'t restart if the dependency changes+    --     state.+    --+    -- -   @HARD@ – The component restarts if the dependency changes state.+    --+    -- Default: @HARD@+    dependencyType :: Prelude.Maybe ComponentDependencyType,+    -- | The component version requirement for the component dependency.+    --+    -- IoT Greengrass V2 uses semantic version constraints. For more+    -- information, see <https://semver.org/ Semantic Versioning>.+    versionRequirement :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentDependencyRequirement' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'dependencyType', 'componentDependencyRequirement_dependencyType' - The type of this dependency. Choose from the following options:+--+-- -   @SOFT@ – The component doesn\'t restart if the dependency changes+--     state.+--+-- -   @HARD@ – The component restarts if the dependency changes state.+--+-- Default: @HARD@+--+-- 'versionRequirement', 'componentDependencyRequirement_versionRequirement' - The component version requirement for the component dependency.+--+-- IoT Greengrass V2 uses semantic version constraints. For more+-- information, see <https://semver.org/ Semantic Versioning>.+newComponentDependencyRequirement ::+  ComponentDependencyRequirement+newComponentDependencyRequirement =+  ComponentDependencyRequirement'+    { dependencyType =+        Prelude.Nothing,+      versionRequirement = Prelude.Nothing+    }++-- | The type of this dependency. Choose from the following options:+--+-- -   @SOFT@ – The component doesn\'t restart if the dependency changes+--     state.+--+-- -   @HARD@ – The component restarts if the dependency changes state.+--+-- Default: @HARD@+componentDependencyRequirement_dependencyType :: Lens.Lens' ComponentDependencyRequirement (Prelude.Maybe ComponentDependencyType)+componentDependencyRequirement_dependencyType = Lens.lens (\ComponentDependencyRequirement' {dependencyType} -> dependencyType) (\s@ComponentDependencyRequirement' {} a -> s {dependencyType = a} :: ComponentDependencyRequirement)++-- | The component version requirement for the component dependency.+--+-- IoT Greengrass V2 uses semantic version constraints. For more+-- information, see <https://semver.org/ Semantic Versioning>.+componentDependencyRequirement_versionRequirement :: Lens.Lens' ComponentDependencyRequirement (Prelude.Maybe Prelude.Text)+componentDependencyRequirement_versionRequirement = Lens.lens (\ComponentDependencyRequirement' {versionRequirement} -> versionRequirement) (\s@ComponentDependencyRequirement' {} a -> s {versionRequirement = a} :: ComponentDependencyRequirement)++instance+  Prelude.Hashable+    ComponentDependencyRequirement+  where+  hashWithSalt+    _salt+    ComponentDependencyRequirement' {..} =+      _salt+        `Prelude.hashWithSalt` dependencyType+        `Prelude.hashWithSalt` versionRequirement++instance+  Prelude.NFData+    ComponentDependencyRequirement+  where+  rnf ComponentDependencyRequirement' {..} =+    Prelude.rnf dependencyType+      `Prelude.seq` Prelude.rnf versionRequirement++instance Data.ToJSON ComponentDependencyRequirement where+  toJSON ComponentDependencyRequirement' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("dependencyType" Data..=)+              Prelude.<$> dependencyType,+            ("versionRequirement" Data..=)+              Prelude.<$> versionRequirement+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/ComponentDependencyType.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.GreengrassV2.Types.ComponentDependencyType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ComponentDependencyType+  ( ComponentDependencyType+      ( ..,+        ComponentDependencyType_HARD,+        ComponentDependencyType_SOFT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ComponentDependencyType = ComponentDependencyType'+  { fromComponentDependencyType ::+      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 ComponentDependencyType_HARD :: ComponentDependencyType+pattern ComponentDependencyType_HARD = ComponentDependencyType' "HARD"++pattern ComponentDependencyType_SOFT :: ComponentDependencyType+pattern ComponentDependencyType_SOFT = ComponentDependencyType' "SOFT"++{-# COMPLETE+  ComponentDependencyType_HARD,+  ComponentDependencyType_SOFT,+  ComponentDependencyType'+  #-}
+ gen/Amazonka/GreengrassV2/Types/ComponentDeploymentSpecification.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.GreengrassV2.Types.ComponentDeploymentSpecification+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ComponentDeploymentSpecification where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.ComponentConfigurationUpdate+import Amazonka.GreengrassV2.Types.ComponentRunWith+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a component to deploy.+--+-- /See:/ 'newComponentDeploymentSpecification' smart constructor.+data ComponentDeploymentSpecification = ComponentDeploymentSpecification'+  { -- | The version of the component.+    componentVersion :: Prelude.Maybe Prelude.Text,+    -- | The configuration updates to deploy for the component. You can define+    -- /reset/ updates and /merge/ updates. A reset updates the keys that you+    -- specify to the default configuration for the component. A merge updates+    -- the core device\'s component configuration with the keys and values that+    -- you specify. The IoT Greengrass Core software applies reset updates+    -- before it applies merge updates. For more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html Update component configurations>+    -- in the /IoT Greengrass V2 Developer Guide/.+    configurationUpdate :: Prelude.Maybe ComponentConfigurationUpdate,+    -- | The system user and group that the IoT Greengrass Core software uses to+    -- run component processes on the core device. If you omit this parameter,+    -- the IoT Greengrass Core software uses the system user and group that you+    -- configure for the core device. For more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user Configure the user and group that run components>+    -- in the /IoT Greengrass V2 Developer Guide/.+    runWith :: Prelude.Maybe ComponentRunWith+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentDeploymentSpecification' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentVersion', 'componentDeploymentSpecification_componentVersion' - The version of the component.+--+-- 'configurationUpdate', 'componentDeploymentSpecification_configurationUpdate' - The configuration updates to deploy for the component. You can define+-- /reset/ updates and /merge/ updates. A reset updates the keys that you+-- specify to the default configuration for the component. A merge updates+-- the core device\'s component configuration with the keys and values that+-- you specify. The IoT Greengrass Core software applies reset updates+-- before it applies merge updates. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html Update component configurations>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- 'runWith', 'componentDeploymentSpecification_runWith' - The system user and group that the IoT Greengrass Core software uses to+-- run component processes on the core device. If you omit this parameter,+-- the IoT Greengrass Core software uses the system user and group that you+-- configure for the core device. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user Configure the user and group that run components>+-- in the /IoT Greengrass V2 Developer Guide/.+newComponentDeploymentSpecification ::+  ComponentDeploymentSpecification+newComponentDeploymentSpecification =+  ComponentDeploymentSpecification'+    { componentVersion =+        Prelude.Nothing,+      configurationUpdate = Prelude.Nothing,+      runWith = Prelude.Nothing+    }++-- | The version of the component.+componentDeploymentSpecification_componentVersion :: Lens.Lens' ComponentDeploymentSpecification (Prelude.Maybe Prelude.Text)+componentDeploymentSpecification_componentVersion = Lens.lens (\ComponentDeploymentSpecification' {componentVersion} -> componentVersion) (\s@ComponentDeploymentSpecification' {} a -> s {componentVersion = a} :: ComponentDeploymentSpecification)++-- | The configuration updates to deploy for the component. You can define+-- /reset/ updates and /merge/ updates. A reset updates the keys that you+-- specify to the default configuration for the component. A merge updates+-- the core device\'s component configuration with the keys and values that+-- you specify. The IoT Greengrass Core software applies reset updates+-- before it applies merge updates. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html Update component configurations>+-- in the /IoT Greengrass V2 Developer Guide/.+componentDeploymentSpecification_configurationUpdate :: Lens.Lens' ComponentDeploymentSpecification (Prelude.Maybe ComponentConfigurationUpdate)+componentDeploymentSpecification_configurationUpdate = Lens.lens (\ComponentDeploymentSpecification' {configurationUpdate} -> configurationUpdate) (\s@ComponentDeploymentSpecification' {} a -> s {configurationUpdate = a} :: ComponentDeploymentSpecification)++-- | The system user and group that the IoT Greengrass Core software uses to+-- run component processes on the core device. If you omit this parameter,+-- the IoT Greengrass Core software uses the system user and group that you+-- configure for the core device. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user Configure the user and group that run components>+-- in the /IoT Greengrass V2 Developer Guide/.+componentDeploymentSpecification_runWith :: Lens.Lens' ComponentDeploymentSpecification (Prelude.Maybe ComponentRunWith)+componentDeploymentSpecification_runWith = Lens.lens (\ComponentDeploymentSpecification' {runWith} -> runWith) (\s@ComponentDeploymentSpecification' {} a -> s {runWith = a} :: ComponentDeploymentSpecification)++instance+  Data.FromJSON+    ComponentDeploymentSpecification+  where+  parseJSON =+    Data.withObject+      "ComponentDeploymentSpecification"+      ( \x ->+          ComponentDeploymentSpecification'+            Prelude.<$> (x Data..:? "componentVersion")+            Prelude.<*> (x Data..:? "configurationUpdate")+            Prelude.<*> (x Data..:? "runWith")+      )++instance+  Prelude.Hashable+    ComponentDeploymentSpecification+  where+  hashWithSalt+    _salt+    ComponentDeploymentSpecification' {..} =+      _salt+        `Prelude.hashWithSalt` componentVersion+        `Prelude.hashWithSalt` configurationUpdate+        `Prelude.hashWithSalt` runWith++instance+  Prelude.NFData+    ComponentDeploymentSpecification+  where+  rnf ComponentDeploymentSpecification' {..} =+    Prelude.rnf componentVersion+      `Prelude.seq` Prelude.rnf configurationUpdate+      `Prelude.seq` Prelude.rnf runWith++instance Data.ToJSON ComponentDeploymentSpecification where+  toJSON ComponentDeploymentSpecification' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("componentVersion" Data..=)+              Prelude.<$> componentVersion,+            ("configurationUpdate" Data..=)+              Prelude.<$> configurationUpdate,+            ("runWith" Data..=) Prelude.<$> runWith+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/ComponentLatestVersion.hs view
@@ -0,0 +1,142 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.ComponentLatestVersion+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ComponentLatestVersion where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.ComponentPlatform+import qualified Amazonka.Prelude as Prelude++-- | Contains information about the latest version of a component.+--+-- /See:/ 'newComponentLatestVersion' smart constructor.+data ComponentLatestVersion = ComponentLatestVersion'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the component version.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The version of the component.+    componentVersion :: Prelude.Maybe Prelude.Text,+    -- | The time at which the component was created, expressed in ISO 8601+    -- format.+    creationTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The description of the component version.+    description :: Prelude.Maybe Prelude.Text,+    -- | The platforms that the component version supports.+    platforms :: Prelude.Maybe [ComponentPlatform],+    -- | The publisher of the component version.+    publisher :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentLatestVersion' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'componentLatestVersion_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+--+-- 'componentVersion', 'componentLatestVersion_componentVersion' - The version of the component.+--+-- 'creationTimestamp', 'componentLatestVersion_creationTimestamp' - The time at which the component was created, expressed in ISO 8601+-- format.+--+-- 'description', 'componentLatestVersion_description' - The description of the component version.+--+-- 'platforms', 'componentLatestVersion_platforms' - The platforms that the component version supports.+--+-- 'publisher', 'componentLatestVersion_publisher' - The publisher of the component version.+newComponentLatestVersion ::+  ComponentLatestVersion+newComponentLatestVersion =+  ComponentLatestVersion'+    { arn = Prelude.Nothing,+      componentVersion = Prelude.Nothing,+      creationTimestamp = Prelude.Nothing,+      description = Prelude.Nothing,+      platforms = Prelude.Nothing,+      publisher = Prelude.Nothing+    }++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+componentLatestVersion_arn :: Lens.Lens' ComponentLatestVersion (Prelude.Maybe Prelude.Text)+componentLatestVersion_arn = Lens.lens (\ComponentLatestVersion' {arn} -> arn) (\s@ComponentLatestVersion' {} a -> s {arn = a} :: ComponentLatestVersion)++-- | The version of the component.+componentLatestVersion_componentVersion :: Lens.Lens' ComponentLatestVersion (Prelude.Maybe Prelude.Text)+componentLatestVersion_componentVersion = Lens.lens (\ComponentLatestVersion' {componentVersion} -> componentVersion) (\s@ComponentLatestVersion' {} a -> s {componentVersion = a} :: ComponentLatestVersion)++-- | The time at which the component was created, expressed in ISO 8601+-- format.+componentLatestVersion_creationTimestamp :: Lens.Lens' ComponentLatestVersion (Prelude.Maybe Prelude.UTCTime)+componentLatestVersion_creationTimestamp = Lens.lens (\ComponentLatestVersion' {creationTimestamp} -> creationTimestamp) (\s@ComponentLatestVersion' {} a -> s {creationTimestamp = a} :: ComponentLatestVersion) Prelude.. Lens.mapping Data._Time++-- | The description of the component version.+componentLatestVersion_description :: Lens.Lens' ComponentLatestVersion (Prelude.Maybe Prelude.Text)+componentLatestVersion_description = Lens.lens (\ComponentLatestVersion' {description} -> description) (\s@ComponentLatestVersion' {} a -> s {description = a} :: ComponentLatestVersion)++-- | The platforms that the component version supports.+componentLatestVersion_platforms :: Lens.Lens' ComponentLatestVersion (Prelude.Maybe [ComponentPlatform])+componentLatestVersion_platforms = Lens.lens (\ComponentLatestVersion' {platforms} -> platforms) (\s@ComponentLatestVersion' {} a -> s {platforms = a} :: ComponentLatestVersion) Prelude.. Lens.mapping Lens.coerced++-- | The publisher of the component version.+componentLatestVersion_publisher :: Lens.Lens' ComponentLatestVersion (Prelude.Maybe Prelude.Text)+componentLatestVersion_publisher = Lens.lens (\ComponentLatestVersion' {publisher} -> publisher) (\s@ComponentLatestVersion' {} a -> s {publisher = a} :: ComponentLatestVersion)++instance Data.FromJSON ComponentLatestVersion where+  parseJSON =+    Data.withObject+      "ComponentLatestVersion"+      ( \x ->+          ComponentLatestVersion'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "componentVersion")+            Prelude.<*> (x Data..:? "creationTimestamp")+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "platforms" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "publisher")+      )++instance Prelude.Hashable ComponentLatestVersion where+  hashWithSalt _salt ComponentLatestVersion' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` componentVersion+      `Prelude.hashWithSalt` creationTimestamp+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` platforms+      `Prelude.hashWithSalt` publisher++instance Prelude.NFData ComponentLatestVersion where+  rnf ComponentLatestVersion' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf componentVersion+      `Prelude.seq` Prelude.rnf creationTimestamp+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf platforms+      `Prelude.seq` Prelude.rnf publisher
+ gen/Amazonka/GreengrassV2/Types/ComponentPlatform.hs view
@@ -0,0 +1,120 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.ComponentPlatform+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ComponentPlatform 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 platform that a component supports.+--+-- /See:/ 'newComponentPlatform' smart constructor.+data ComponentPlatform = ComponentPlatform'+  { -- | A dictionary of attributes for the platform. The IoT Greengrass Core+    -- software defines the @os@ and @architecture@ by default. You can specify+    -- additional platform attributes for a core device when you deploy the+    -- Greengrass nucleus component. For more information, see the+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html Greengrass nucleus component>+    -- in the /IoT Greengrass V2 Developer Guide/.+    attributes :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The friendly name of the platform. This name helps you identify the+    -- platform.+    --+    -- If you omit this parameter, IoT Greengrass creates a friendly name from+    -- the @os@ and @architecture@ of the platform.+    name :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentPlatform' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'attributes', 'componentPlatform_attributes' - A dictionary of attributes for the platform. The IoT Greengrass Core+-- software defines the @os@ and @architecture@ by default. You can specify+-- additional platform attributes for a core device when you deploy the+-- Greengrass nucleus component. For more information, see the+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html Greengrass nucleus component>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- 'name', 'componentPlatform_name' - The friendly name of the platform. This name helps you identify the+-- platform.+--+-- If you omit this parameter, IoT Greengrass creates a friendly name from+-- the @os@ and @architecture@ of the platform.+newComponentPlatform ::+  ComponentPlatform+newComponentPlatform =+  ComponentPlatform'+    { attributes = Prelude.Nothing,+      name = Prelude.Nothing+    }++-- | A dictionary of attributes for the platform. The IoT Greengrass Core+-- software defines the @os@ and @architecture@ by default. You can specify+-- additional platform attributes for a core device when you deploy the+-- Greengrass nucleus component. For more information, see the+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html Greengrass nucleus component>+-- in the /IoT Greengrass V2 Developer Guide/.+componentPlatform_attributes :: Lens.Lens' ComponentPlatform (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+componentPlatform_attributes = Lens.lens (\ComponentPlatform' {attributes} -> attributes) (\s@ComponentPlatform' {} a -> s {attributes = a} :: ComponentPlatform) Prelude.. Lens.mapping Lens.coerced++-- | The friendly name of the platform. This name helps you identify the+-- platform.+--+-- If you omit this parameter, IoT Greengrass creates a friendly name from+-- the @os@ and @architecture@ of the platform.+componentPlatform_name :: Lens.Lens' ComponentPlatform (Prelude.Maybe Prelude.Text)+componentPlatform_name = Lens.lens (\ComponentPlatform' {name} -> name) (\s@ComponentPlatform' {} a -> s {name = a} :: ComponentPlatform)++instance Data.FromJSON ComponentPlatform where+  parseJSON =+    Data.withObject+      "ComponentPlatform"+      ( \x ->+          ComponentPlatform'+            Prelude.<$> (x Data..:? "attributes" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "name")+      )++instance Prelude.Hashable ComponentPlatform where+  hashWithSalt _salt ComponentPlatform' {..} =+    _salt+      `Prelude.hashWithSalt` attributes+      `Prelude.hashWithSalt` name++instance Prelude.NFData ComponentPlatform where+  rnf ComponentPlatform' {..} =+    Prelude.rnf attributes+      `Prelude.seq` Prelude.rnf name++instance Data.ToJSON ComponentPlatform where+  toJSON ComponentPlatform' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("attributes" Data..=) Prelude.<$> attributes,+            ("name" Data..=) Prelude.<$> name+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/ComponentRunWith.hs view
@@ -0,0 +1,187 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.ComponentRunWith+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ComponentRunWith where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.SystemResourceLimits+import qualified Amazonka.Prelude as Prelude++-- | Contains information system user and group that the IoT Greengrass Core+-- software uses to run component processes on the core device. For more+-- information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user Configure the user and group that run components>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- /See:/ 'newComponentRunWith' smart constructor.+data ComponentRunWith = ComponentRunWith'+  { -- | The POSIX system user and, optionally, group to use to run this+    -- component on Linux core devices. The user, and group if specified, must+    -- exist on each Linux core device. Specify the user and group separated by+    -- a colon (@:@) in the following format: @user:group@. The group is+    -- optional. If you don\'t specify a group, the IoT Greengrass Core+    -- software uses the primary user for the group.+    --+    -- If you omit this parameter, the IoT Greengrass Core software uses the+    -- default system user and group that you configure on the Greengrass+    -- nucleus component. For more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user Configure the user and group that run components>.+    posixUser :: Prelude.Maybe Prelude.Text,+    -- | The system resource limits to apply to this component\'s process on the+    -- core device. IoT Greengrass currently supports this feature on only+    -- Linux core devices.+    --+    -- If you omit this parameter, the IoT Greengrass Core software uses the+    -- default system resource limits that you configure on the Greengrass+    -- nucleus component. For more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-system-resource-limits Configure system resource limits for components>.+    systemResourceLimits :: Prelude.Maybe SystemResourceLimits,+    -- | The Windows user to use to run this component on Windows core devices.+    -- The user must exist on each Windows core device, and its name and+    -- password must be in the LocalSystem account\'s Credentials Manager+    -- instance.+    --+    -- If you omit this parameter, the IoT Greengrass Core software uses the+    -- default Windows user that you configure on the Greengrass nucleus+    -- component. For more information, see+    -- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user Configure the user and group that run components>.+    windowsUser :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentRunWith' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'posixUser', 'componentRunWith_posixUser' - The POSIX system user and, optionally, group to use to run this+-- component on Linux core devices. The user, and group if specified, must+-- exist on each Linux core device. Specify the user and group separated by+-- a colon (@:@) in the following format: @user:group@. The group is+-- optional. If you don\'t specify a group, the IoT Greengrass Core+-- software uses the primary user for the group.+--+-- If you omit this parameter, the IoT Greengrass Core software uses the+-- default system user and group that you configure on the Greengrass+-- nucleus component. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user Configure the user and group that run components>.+--+-- 'systemResourceLimits', 'componentRunWith_systemResourceLimits' - The system resource limits to apply to this component\'s process on the+-- core device. IoT Greengrass currently supports this feature on only+-- Linux core devices.+--+-- If you omit this parameter, the IoT Greengrass Core software uses the+-- default system resource limits that you configure on the Greengrass+-- nucleus component. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-system-resource-limits Configure system resource limits for components>.+--+-- 'windowsUser', 'componentRunWith_windowsUser' - The Windows user to use to run this component on Windows core devices.+-- The user must exist on each Windows core device, and its name and+-- password must be in the LocalSystem account\'s Credentials Manager+-- instance.+--+-- If you omit this parameter, the IoT Greengrass Core software uses the+-- default Windows user that you configure on the Greengrass nucleus+-- component. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user Configure the user and group that run components>.+newComponentRunWith ::+  ComponentRunWith+newComponentRunWith =+  ComponentRunWith'+    { posixUser = Prelude.Nothing,+      systemResourceLimits = Prelude.Nothing,+      windowsUser = Prelude.Nothing+    }++-- | The POSIX system user and, optionally, group to use to run this+-- component on Linux core devices. The user, and group if specified, must+-- exist on each Linux core device. Specify the user and group separated by+-- a colon (@:@) in the following format: @user:group@. The group is+-- optional. If you don\'t specify a group, the IoT Greengrass Core+-- software uses the primary user for the group.+--+-- If you omit this parameter, the IoT Greengrass Core software uses the+-- default system user and group that you configure on the Greengrass+-- nucleus component. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user Configure the user and group that run components>.+componentRunWith_posixUser :: Lens.Lens' ComponentRunWith (Prelude.Maybe Prelude.Text)+componentRunWith_posixUser = Lens.lens (\ComponentRunWith' {posixUser} -> posixUser) (\s@ComponentRunWith' {} a -> s {posixUser = a} :: ComponentRunWith)++-- | The system resource limits to apply to this component\'s process on the+-- core device. IoT Greengrass currently supports this feature on only+-- Linux core devices.+--+-- If you omit this parameter, the IoT Greengrass Core software uses the+-- default system resource limits that you configure on the Greengrass+-- nucleus component. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-system-resource-limits Configure system resource limits for components>.+componentRunWith_systemResourceLimits :: Lens.Lens' ComponentRunWith (Prelude.Maybe SystemResourceLimits)+componentRunWith_systemResourceLimits = Lens.lens (\ComponentRunWith' {systemResourceLimits} -> systemResourceLimits) (\s@ComponentRunWith' {} a -> s {systemResourceLimits = a} :: ComponentRunWith)++-- | The Windows user to use to run this component on Windows core devices.+-- The user must exist on each Windows core device, and its name and+-- password must be in the LocalSystem account\'s Credentials Manager+-- instance.+--+-- If you omit this parameter, the IoT Greengrass Core software uses the+-- default Windows user that you configure on the Greengrass nucleus+-- component. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user Configure the user and group that run components>.+componentRunWith_windowsUser :: Lens.Lens' ComponentRunWith (Prelude.Maybe Prelude.Text)+componentRunWith_windowsUser = Lens.lens (\ComponentRunWith' {windowsUser} -> windowsUser) (\s@ComponentRunWith' {} a -> s {windowsUser = a} :: ComponentRunWith)++instance Data.FromJSON ComponentRunWith where+  parseJSON =+    Data.withObject+      "ComponentRunWith"+      ( \x ->+          ComponentRunWith'+            Prelude.<$> (x Data..:? "posixUser")+            Prelude.<*> (x Data..:? "systemResourceLimits")+            Prelude.<*> (x Data..:? "windowsUser")+      )++instance Prelude.Hashable ComponentRunWith where+  hashWithSalt _salt ComponentRunWith' {..} =+    _salt+      `Prelude.hashWithSalt` posixUser+      `Prelude.hashWithSalt` systemResourceLimits+      `Prelude.hashWithSalt` windowsUser++instance Prelude.NFData ComponentRunWith where+  rnf ComponentRunWith' {..} =+    Prelude.rnf posixUser+      `Prelude.seq` Prelude.rnf systemResourceLimits+      `Prelude.seq` Prelude.rnf windowsUser++instance Data.ToJSON ComponentRunWith where+  toJSON ComponentRunWith' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("posixUser" Data..=) Prelude.<$> posixUser,+            ("systemResourceLimits" Data..=)+              Prelude.<$> systemResourceLimits,+            ("windowsUser" Data..=) Prelude.<$> windowsUser+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/ComponentVersionListItem.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.GreengrassV2.Types.ComponentVersionListItem+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ComponentVersionListItem 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 component version in a list.+--+-- /See:/ 'newComponentVersionListItem' smart constructor.+data ComponentVersionListItem = ComponentVersionListItem'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the component version.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The name of the component.+    componentName :: Prelude.Maybe Prelude.Text,+    -- | The version of the component.+    componentVersion :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ComponentVersionListItem' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'componentVersionListItem_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+--+-- 'componentName', 'componentVersionListItem_componentName' - The name of the component.+--+-- 'componentVersion', 'componentVersionListItem_componentVersion' - The version of the component.+newComponentVersionListItem ::+  ComponentVersionListItem+newComponentVersionListItem =+  ComponentVersionListItem'+    { arn = Prelude.Nothing,+      componentName = Prelude.Nothing,+      componentVersion = Prelude.Nothing+    }++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+componentVersionListItem_arn :: Lens.Lens' ComponentVersionListItem (Prelude.Maybe Prelude.Text)+componentVersionListItem_arn = Lens.lens (\ComponentVersionListItem' {arn} -> arn) (\s@ComponentVersionListItem' {} a -> s {arn = a} :: ComponentVersionListItem)++-- | The name of the component.+componentVersionListItem_componentName :: Lens.Lens' ComponentVersionListItem (Prelude.Maybe Prelude.Text)+componentVersionListItem_componentName = Lens.lens (\ComponentVersionListItem' {componentName} -> componentName) (\s@ComponentVersionListItem' {} a -> s {componentName = a} :: ComponentVersionListItem)++-- | The version of the component.+componentVersionListItem_componentVersion :: Lens.Lens' ComponentVersionListItem (Prelude.Maybe Prelude.Text)+componentVersionListItem_componentVersion = Lens.lens (\ComponentVersionListItem' {componentVersion} -> componentVersion) (\s@ComponentVersionListItem' {} a -> s {componentVersion = a} :: ComponentVersionListItem)++instance Data.FromJSON ComponentVersionListItem where+  parseJSON =+    Data.withObject+      "ComponentVersionListItem"+      ( \x ->+          ComponentVersionListItem'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "componentName")+            Prelude.<*> (x Data..:? "componentVersion")+      )++instance Prelude.Hashable ComponentVersionListItem where+  hashWithSalt _salt ComponentVersionListItem' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` componentName+      `Prelude.hashWithSalt` componentVersion++instance Prelude.NFData ComponentVersionListItem where+  rnf ComponentVersionListItem' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf componentName+      `Prelude.seq` Prelude.rnf componentVersion
+ gen/Amazonka/GreengrassV2/Types/ComponentVisibilityScope.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.GreengrassV2.Types.ComponentVisibilityScope+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ComponentVisibilityScope+  ( ComponentVisibilityScope+      ( ..,+        ComponentVisibilityScope_PRIVATE,+        ComponentVisibilityScope_PUBLIC+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ComponentVisibilityScope = ComponentVisibilityScope'+  { fromComponentVisibilityScope ::+      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 ComponentVisibilityScope_PRIVATE :: ComponentVisibilityScope+pattern ComponentVisibilityScope_PRIVATE = ComponentVisibilityScope' "PRIVATE"++pattern ComponentVisibilityScope_PUBLIC :: ComponentVisibilityScope+pattern ComponentVisibilityScope_PUBLIC = ComponentVisibilityScope' "PUBLIC"++{-# COMPLETE+  ComponentVisibilityScope_PRIVATE,+  ComponentVisibilityScope_PUBLIC,+  ComponentVisibilityScope'+  #-}
+ gen/Amazonka/GreengrassV2/Types/ConnectivityInfo.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.GreengrassV2.Types.ConnectivityInfo+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ConnectivityInfo 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 endpoint and port where client devices can+-- connect to an MQTT broker on a Greengrass core device.+--+-- /See:/ 'newConnectivityInfo' smart constructor.+data ConnectivityInfo = ConnectivityInfo'+  { -- | The IP address or DNS address where client devices can connect to an+    -- MQTT broker on the Greengrass core device.+    hostAddress :: Prelude.Maybe Prelude.Text,+    -- | An ID for the connectivity information.+    id :: Prelude.Maybe Prelude.Text,+    -- | Additional metadata to provide to client devices that connect to this+    -- core device.+    metadata :: Prelude.Maybe Prelude.Text,+    -- | The port where the MQTT broker operates on the core device. This port is+    -- typically 8883, which is the default port for the MQTT broker component+    -- that runs on core devices.+    portNumber :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ConnectivityInfo' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'hostAddress', 'connectivityInfo_hostAddress' - The IP address or DNS address where client devices can connect to an+-- MQTT broker on the Greengrass core device.+--+-- 'id', 'connectivityInfo_id' - An ID for the connectivity information.+--+-- 'metadata', 'connectivityInfo_metadata' - Additional metadata to provide to client devices that connect to this+-- core device.+--+-- 'portNumber', 'connectivityInfo_portNumber' - The port where the MQTT broker operates on the core device. This port is+-- typically 8883, which is the default port for the MQTT broker component+-- that runs on core devices.+newConnectivityInfo ::+  ConnectivityInfo+newConnectivityInfo =+  ConnectivityInfo'+    { hostAddress = Prelude.Nothing,+      id = Prelude.Nothing,+      metadata = Prelude.Nothing,+      portNumber = Prelude.Nothing+    }++-- | The IP address or DNS address where client devices can connect to an+-- MQTT broker on the Greengrass core device.+connectivityInfo_hostAddress :: Lens.Lens' ConnectivityInfo (Prelude.Maybe Prelude.Text)+connectivityInfo_hostAddress = Lens.lens (\ConnectivityInfo' {hostAddress} -> hostAddress) (\s@ConnectivityInfo' {} a -> s {hostAddress = a} :: ConnectivityInfo)++-- | An ID for the connectivity information.+connectivityInfo_id :: Lens.Lens' ConnectivityInfo (Prelude.Maybe Prelude.Text)+connectivityInfo_id = Lens.lens (\ConnectivityInfo' {id} -> id) (\s@ConnectivityInfo' {} a -> s {id = a} :: ConnectivityInfo)++-- | Additional metadata to provide to client devices that connect to this+-- core device.+connectivityInfo_metadata :: Lens.Lens' ConnectivityInfo (Prelude.Maybe Prelude.Text)+connectivityInfo_metadata = Lens.lens (\ConnectivityInfo' {metadata} -> metadata) (\s@ConnectivityInfo' {} a -> s {metadata = a} :: ConnectivityInfo)++-- | The port where the MQTT broker operates on the core device. This port is+-- typically 8883, which is the default port for the MQTT broker component+-- that runs on core devices.+connectivityInfo_portNumber :: Lens.Lens' ConnectivityInfo (Prelude.Maybe Prelude.Natural)+connectivityInfo_portNumber = Lens.lens (\ConnectivityInfo' {portNumber} -> portNumber) (\s@ConnectivityInfo' {} a -> s {portNumber = a} :: ConnectivityInfo)++instance Data.FromJSON ConnectivityInfo where+  parseJSON =+    Data.withObject+      "ConnectivityInfo"+      ( \x ->+          ConnectivityInfo'+            Prelude.<$> (x Data..:? "HostAddress")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "Metadata")+            Prelude.<*> (x Data..:? "PortNumber")+      )++instance Prelude.Hashable ConnectivityInfo where+  hashWithSalt _salt ConnectivityInfo' {..} =+    _salt+      `Prelude.hashWithSalt` hostAddress+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` metadata+      `Prelude.hashWithSalt` portNumber++instance Prelude.NFData ConnectivityInfo where+  rnf ConnectivityInfo' {..} =+    Prelude.rnf hostAddress+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf metadata+      `Prelude.seq` Prelude.rnf portNumber++instance Data.ToJSON ConnectivityInfo where+  toJSON ConnectivityInfo' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("HostAddress" Data..=) Prelude.<$> hostAddress,+            ("Id" Data..=) Prelude.<$> id,+            ("Metadata" Data..=) Prelude.<$> metadata,+            ("PortNumber" Data..=) Prelude.<$> portNumber+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/CoreDevice.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.GreengrassV2.Types.CoreDevice+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.CoreDevice where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.CoreDeviceStatus+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a Greengrass core device, which is an IoT+-- thing that runs the IoT Greengrass Core software.+--+-- /See:/ 'newCoreDevice' smart constructor.+data CoreDevice = CoreDevice'+  { -- | The name of the core device. This is also the name of the IoT thing.+    coreDeviceThingName :: Prelude.Maybe Prelude.Text,+    -- | The time at which the core device\'s status last updated, expressed in+    -- ISO 8601 format.+    lastStatusUpdateTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The status of the core device. Core devices can have the following+    -- statuses:+    --+    -- -   @HEALTHY@ – The IoT Greengrass Core software and all components run+    --     on the core device without issue.+    --+    -- -   @UNHEALTHY@ – The IoT Greengrass Core software or a component is in+    --     a failed state on the core device.+    status :: Prelude.Maybe CoreDeviceStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CoreDevice' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'coreDevice_coreDeviceThingName' - The name of the core device. This is also the name of the IoT thing.+--+-- 'lastStatusUpdateTimestamp', 'coreDevice_lastStatusUpdateTimestamp' - The time at which the core device\'s status last updated, expressed in+-- ISO 8601 format.+--+-- 'status', 'coreDevice_status' - The status of the core device. Core devices can have the following+-- statuses:+--+-- -   @HEALTHY@ – The IoT Greengrass Core software and all components run+--     on the core device without issue.+--+-- -   @UNHEALTHY@ – The IoT Greengrass Core software or a component is in+--     a failed state on the core device.+newCoreDevice ::+  CoreDevice+newCoreDevice =+  CoreDevice'+    { coreDeviceThingName = Prelude.Nothing,+      lastStatusUpdateTimestamp = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The name of the core device. This is also the name of the IoT thing.+coreDevice_coreDeviceThingName :: Lens.Lens' CoreDevice (Prelude.Maybe Prelude.Text)+coreDevice_coreDeviceThingName = Lens.lens (\CoreDevice' {coreDeviceThingName} -> coreDeviceThingName) (\s@CoreDevice' {} a -> s {coreDeviceThingName = a} :: CoreDevice)++-- | The time at which the core device\'s status last updated, expressed in+-- ISO 8601 format.+coreDevice_lastStatusUpdateTimestamp :: Lens.Lens' CoreDevice (Prelude.Maybe Prelude.UTCTime)+coreDevice_lastStatusUpdateTimestamp = Lens.lens (\CoreDevice' {lastStatusUpdateTimestamp} -> lastStatusUpdateTimestamp) (\s@CoreDevice' {} a -> s {lastStatusUpdateTimestamp = a} :: CoreDevice) Prelude.. Lens.mapping Data._Time++-- | The status of the core device. Core devices can have the following+-- statuses:+--+-- -   @HEALTHY@ – The IoT Greengrass Core software and all components run+--     on the core device without issue.+--+-- -   @UNHEALTHY@ – The IoT Greengrass Core software or a component is in+--     a failed state on the core device.+coreDevice_status :: Lens.Lens' CoreDevice (Prelude.Maybe CoreDeviceStatus)+coreDevice_status = Lens.lens (\CoreDevice' {status} -> status) (\s@CoreDevice' {} a -> s {status = a} :: CoreDevice)++instance Data.FromJSON CoreDevice where+  parseJSON =+    Data.withObject+      "CoreDevice"+      ( \x ->+          CoreDevice'+            Prelude.<$> (x Data..:? "coreDeviceThingName")+            Prelude.<*> (x Data..:? "lastStatusUpdateTimestamp")+            Prelude.<*> (x Data..:? "status")+      )++instance Prelude.Hashable CoreDevice where+  hashWithSalt _salt CoreDevice' {..} =+    _salt+      `Prelude.hashWithSalt` coreDeviceThingName+      `Prelude.hashWithSalt` lastStatusUpdateTimestamp+      `Prelude.hashWithSalt` status++instance Prelude.NFData CoreDevice where+  rnf CoreDevice' {..} =+    Prelude.rnf coreDeviceThingName+      `Prelude.seq` Prelude.rnf lastStatusUpdateTimestamp+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/GreengrassV2/Types/CoreDeviceStatus.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.GreengrassV2.Types.CoreDeviceStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.CoreDeviceStatus+  ( CoreDeviceStatus+      ( ..,+        CoreDeviceStatus_HEALTHY,+        CoreDeviceStatus_UNHEALTHY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype CoreDeviceStatus = CoreDeviceStatus'+  { fromCoreDeviceStatus ::+      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 CoreDeviceStatus_HEALTHY :: CoreDeviceStatus+pattern CoreDeviceStatus_HEALTHY = CoreDeviceStatus' "HEALTHY"++pattern CoreDeviceStatus_UNHEALTHY :: CoreDeviceStatus+pattern CoreDeviceStatus_UNHEALTHY = CoreDeviceStatus' "UNHEALTHY"++{-# COMPLETE+  CoreDeviceStatus_HEALTHY,+  CoreDeviceStatus_UNHEALTHY,+  CoreDeviceStatus'+  #-}
+ gen/Amazonka/GreengrassV2/Types/Deployment.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.Deployment+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.Deployment where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.DeploymentStatus+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a deployment.+--+-- /See:/ 'newDeployment' smart constructor.+data Deployment = Deployment'+  { -- | The time at which the deployment was created, expressed in ISO 8601+    -- format.+    creationTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The ID of the deployment.+    deploymentId :: Prelude.Maybe Prelude.Text,+    -- | The name of the deployment.+    deploymentName :: Prelude.Maybe Prelude.Text,+    -- | The status of the deployment.+    deploymentStatus :: Prelude.Maybe DeploymentStatus,+    -- | Whether or not the deployment is the latest revision for its target.+    isLatestForTarget :: Prelude.Maybe Prelude.Bool,+    -- | The parent deployment\'s target+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- within a subdeployment.+    parentTargetArn :: Prelude.Maybe Prelude.Text,+    -- | The revision number of the deployment.+    revisionId :: Prelude.Maybe Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the target IoT thing or thing group. When creating a subdeployment,+    -- the targetARN can only be a thing group.+    targetArn :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Deployment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'creationTimestamp', 'deployment_creationTimestamp' - The time at which the deployment was created, expressed in ISO 8601+-- format.+--+-- 'deploymentId', 'deployment_deploymentId' - The ID of the deployment.+--+-- 'deploymentName', 'deployment_deploymentName' - The name of the deployment.+--+-- 'deploymentStatus', 'deployment_deploymentStatus' - The status of the deployment.+--+-- 'isLatestForTarget', 'deployment_isLatestForTarget' - Whether or not the deployment is the latest revision for its target.+--+-- 'parentTargetArn', 'deployment_parentTargetArn' - The parent deployment\'s target+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- within a subdeployment.+--+-- 'revisionId', 'deployment_revisionId' - The revision number of the deployment.+--+-- 'targetArn', 'deployment_targetArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the target IoT thing or thing group. When creating a subdeployment,+-- the targetARN can only be a thing group.+newDeployment ::+  Deployment+newDeployment =+  Deployment'+    { creationTimestamp = Prelude.Nothing,+      deploymentId = Prelude.Nothing,+      deploymentName = Prelude.Nothing,+      deploymentStatus = Prelude.Nothing,+      isLatestForTarget = Prelude.Nothing,+      parentTargetArn = Prelude.Nothing,+      revisionId = Prelude.Nothing,+      targetArn = Prelude.Nothing+    }++-- | The time at which the deployment was created, expressed in ISO 8601+-- format.+deployment_creationTimestamp :: Lens.Lens' Deployment (Prelude.Maybe Prelude.UTCTime)+deployment_creationTimestamp = Lens.lens (\Deployment' {creationTimestamp} -> creationTimestamp) (\s@Deployment' {} a -> s {creationTimestamp = a} :: Deployment) Prelude.. Lens.mapping Data._Time++-- | The ID of the deployment.+deployment_deploymentId :: Lens.Lens' Deployment (Prelude.Maybe Prelude.Text)+deployment_deploymentId = Lens.lens (\Deployment' {deploymentId} -> deploymentId) (\s@Deployment' {} a -> s {deploymentId = a} :: Deployment)++-- | The name of the deployment.+deployment_deploymentName :: Lens.Lens' Deployment (Prelude.Maybe Prelude.Text)+deployment_deploymentName = Lens.lens (\Deployment' {deploymentName} -> deploymentName) (\s@Deployment' {} a -> s {deploymentName = a} :: Deployment)++-- | The status of the deployment.+deployment_deploymentStatus :: Lens.Lens' Deployment (Prelude.Maybe DeploymentStatus)+deployment_deploymentStatus = Lens.lens (\Deployment' {deploymentStatus} -> deploymentStatus) (\s@Deployment' {} a -> s {deploymentStatus = a} :: Deployment)++-- | Whether or not the deployment is the latest revision for its target.+deployment_isLatestForTarget :: Lens.Lens' Deployment (Prelude.Maybe Prelude.Bool)+deployment_isLatestForTarget = Lens.lens (\Deployment' {isLatestForTarget} -> isLatestForTarget) (\s@Deployment' {} a -> s {isLatestForTarget = a} :: Deployment)++-- | The parent deployment\'s target+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- within a subdeployment.+deployment_parentTargetArn :: Lens.Lens' Deployment (Prelude.Maybe Prelude.Text)+deployment_parentTargetArn = Lens.lens (\Deployment' {parentTargetArn} -> parentTargetArn) (\s@Deployment' {} a -> s {parentTargetArn = a} :: Deployment)++-- | The revision number of the deployment.+deployment_revisionId :: Lens.Lens' Deployment (Prelude.Maybe Prelude.Text)+deployment_revisionId = Lens.lens (\Deployment' {revisionId} -> revisionId) (\s@Deployment' {} a -> s {revisionId = a} :: Deployment)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the target IoT thing or thing group. When creating a subdeployment,+-- the targetARN can only be a thing group.+deployment_targetArn :: Lens.Lens' Deployment (Prelude.Maybe Prelude.Text)+deployment_targetArn = Lens.lens (\Deployment' {targetArn} -> targetArn) (\s@Deployment' {} a -> s {targetArn = a} :: Deployment)++instance Data.FromJSON Deployment where+  parseJSON =+    Data.withObject+      "Deployment"+      ( \x ->+          Deployment'+            Prelude.<$> (x Data..:? "creationTimestamp")+            Prelude.<*> (x Data..:? "deploymentId")+            Prelude.<*> (x Data..:? "deploymentName")+            Prelude.<*> (x Data..:? "deploymentStatus")+            Prelude.<*> (x Data..:? "isLatestForTarget")+            Prelude.<*> (x Data..:? "parentTargetArn")+            Prelude.<*> (x Data..:? "revisionId")+            Prelude.<*> (x Data..:? "targetArn")+      )++instance Prelude.Hashable Deployment where+  hashWithSalt _salt Deployment' {..} =+    _salt+      `Prelude.hashWithSalt` creationTimestamp+      `Prelude.hashWithSalt` deploymentId+      `Prelude.hashWithSalt` deploymentName+      `Prelude.hashWithSalt` deploymentStatus+      `Prelude.hashWithSalt` isLatestForTarget+      `Prelude.hashWithSalt` parentTargetArn+      `Prelude.hashWithSalt` revisionId+      `Prelude.hashWithSalt` targetArn++instance Prelude.NFData Deployment where+  rnf Deployment' {..} =+    Prelude.rnf creationTimestamp+      `Prelude.seq` Prelude.rnf deploymentId+      `Prelude.seq` Prelude.rnf deploymentName+      `Prelude.seq` Prelude.rnf deploymentStatus+      `Prelude.seq` Prelude.rnf isLatestForTarget+      `Prelude.seq` Prelude.rnf parentTargetArn+      `Prelude.seq` Prelude.rnf revisionId+      `Prelude.seq` Prelude.rnf targetArn
+ gen/Amazonka/GreengrassV2/Types/DeploymentComponentUpdatePolicy.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.DeploymentComponentUpdatePolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.DeploymentComponentUpdatePolicy where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.DeploymentComponentUpdatePolicyAction+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a deployment\'s policy that defines when+-- components are safe to update.+--+-- Each component on a device can report whether or not it\'s ready to+-- update. After a component and its dependencies are ready, they can apply+-- the update in the deployment. You can configure whether or not the+-- deployment notifies components of an update and waits for a response.+-- You specify the amount of time each component has to respond to the+-- update notification.+--+-- /See:/ 'newDeploymentComponentUpdatePolicy' smart constructor.+data DeploymentComponentUpdatePolicy = DeploymentComponentUpdatePolicy'+  { -- | Whether or not to notify components and wait for components to become+    -- safe to update. Choose from the following options:+    --+    -- -   @NOTIFY_COMPONENTS@ – The deployment notifies each component before+    --     it stops and updates that component. Components can use the+    --     <https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-subscribetocomponentupdates SubscribeToComponentUpdates>+    --     IPC operation to receive these notifications. Then, components can+    --     respond with the+    --     <https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-defercomponentupdate DeferComponentUpdate>+    --     IPC operation. For more information, see+    --     <https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html Create deployments>+    --     in the /IoT Greengrass V2 Developer Guide/.+    --+    -- -   @SKIP_NOTIFY_COMPONENTS@ – The deployment doesn\'t notify components+    --     or wait for them to be safe to update.+    --+    -- Default: @NOTIFY_COMPONENTS@+    action :: Prelude.Maybe DeploymentComponentUpdatePolicyAction,+    -- | The amount of time in seconds that each component on a device has to+    -- report that it\'s safe to update. If the component waits for longer than+    -- this timeout, then the deployment proceeds on the device.+    --+    -- Default: @60@+    timeoutInSeconds :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeploymentComponentUpdatePolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'action', 'deploymentComponentUpdatePolicy_action' - Whether or not to notify components and wait for components to become+-- safe to update. Choose from the following options:+--+-- -   @NOTIFY_COMPONENTS@ – The deployment notifies each component before+--     it stops and updates that component. Components can use the+--     <https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-subscribetocomponentupdates SubscribeToComponentUpdates>+--     IPC operation to receive these notifications. Then, components can+--     respond with the+--     <https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-defercomponentupdate DeferComponentUpdate>+--     IPC operation. For more information, see+--     <https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html Create deployments>+--     in the /IoT Greengrass V2 Developer Guide/.+--+-- -   @SKIP_NOTIFY_COMPONENTS@ – The deployment doesn\'t notify components+--     or wait for them to be safe to update.+--+-- Default: @NOTIFY_COMPONENTS@+--+-- 'timeoutInSeconds', 'deploymentComponentUpdatePolicy_timeoutInSeconds' - The amount of time in seconds that each component on a device has to+-- report that it\'s safe to update. If the component waits for longer than+-- this timeout, then the deployment proceeds on the device.+--+-- Default: @60@+newDeploymentComponentUpdatePolicy ::+  DeploymentComponentUpdatePolicy+newDeploymentComponentUpdatePolicy =+  DeploymentComponentUpdatePolicy'+    { action =+        Prelude.Nothing,+      timeoutInSeconds = Prelude.Nothing+    }++-- | Whether or not to notify components and wait for components to become+-- safe to update. Choose from the following options:+--+-- -   @NOTIFY_COMPONENTS@ – The deployment notifies each component before+--     it stops and updates that component. Components can use the+--     <https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-subscribetocomponentupdates SubscribeToComponentUpdates>+--     IPC operation to receive these notifications. Then, components can+--     respond with the+--     <https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-defercomponentupdate DeferComponentUpdate>+--     IPC operation. For more information, see+--     <https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html Create deployments>+--     in the /IoT Greengrass V2 Developer Guide/.+--+-- -   @SKIP_NOTIFY_COMPONENTS@ – The deployment doesn\'t notify components+--     or wait for them to be safe to update.+--+-- Default: @NOTIFY_COMPONENTS@+deploymentComponentUpdatePolicy_action :: Lens.Lens' DeploymentComponentUpdatePolicy (Prelude.Maybe DeploymentComponentUpdatePolicyAction)+deploymentComponentUpdatePolicy_action = Lens.lens (\DeploymentComponentUpdatePolicy' {action} -> action) (\s@DeploymentComponentUpdatePolicy' {} a -> s {action = a} :: DeploymentComponentUpdatePolicy)++-- | The amount of time in seconds that each component on a device has to+-- report that it\'s safe to update. If the component waits for longer than+-- this timeout, then the deployment proceeds on the device.+--+-- Default: @60@+deploymentComponentUpdatePolicy_timeoutInSeconds :: Lens.Lens' DeploymentComponentUpdatePolicy (Prelude.Maybe Prelude.Int)+deploymentComponentUpdatePolicy_timeoutInSeconds = Lens.lens (\DeploymentComponentUpdatePolicy' {timeoutInSeconds} -> timeoutInSeconds) (\s@DeploymentComponentUpdatePolicy' {} a -> s {timeoutInSeconds = a} :: DeploymentComponentUpdatePolicy)++instance+  Data.FromJSON+    DeploymentComponentUpdatePolicy+  where+  parseJSON =+    Data.withObject+      "DeploymentComponentUpdatePolicy"+      ( \x ->+          DeploymentComponentUpdatePolicy'+            Prelude.<$> (x Data..:? "action")+            Prelude.<*> (x Data..:? "timeoutInSeconds")+      )++instance+  Prelude.Hashable+    DeploymentComponentUpdatePolicy+  where+  hashWithSalt+    _salt+    DeploymentComponentUpdatePolicy' {..} =+      _salt+        `Prelude.hashWithSalt` action+        `Prelude.hashWithSalt` timeoutInSeconds++instance+  Prelude.NFData+    DeploymentComponentUpdatePolicy+  where+  rnf DeploymentComponentUpdatePolicy' {..} =+    Prelude.rnf action+      `Prelude.seq` Prelude.rnf timeoutInSeconds++instance Data.ToJSON DeploymentComponentUpdatePolicy where+  toJSON DeploymentComponentUpdatePolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("action" Data..=) Prelude.<$> action,+            ("timeoutInSeconds" Data..=)+              Prelude.<$> timeoutInSeconds+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/DeploymentComponentUpdatePolicyAction.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.GreengrassV2.Types.DeploymentComponentUpdatePolicyAction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.DeploymentComponentUpdatePolicyAction+  ( DeploymentComponentUpdatePolicyAction+      ( ..,+        DeploymentComponentUpdatePolicyAction_NOTIFY_COMPONENTS,+        DeploymentComponentUpdatePolicyAction_SKIP_NOTIFY_COMPONENTS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DeploymentComponentUpdatePolicyAction = DeploymentComponentUpdatePolicyAction'+  { fromDeploymentComponentUpdatePolicyAction ::+      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 DeploymentComponentUpdatePolicyAction_NOTIFY_COMPONENTS :: DeploymentComponentUpdatePolicyAction+pattern DeploymentComponentUpdatePolicyAction_NOTIFY_COMPONENTS = DeploymentComponentUpdatePolicyAction' "NOTIFY_COMPONENTS"++pattern DeploymentComponentUpdatePolicyAction_SKIP_NOTIFY_COMPONENTS :: DeploymentComponentUpdatePolicyAction+pattern DeploymentComponentUpdatePolicyAction_SKIP_NOTIFY_COMPONENTS = DeploymentComponentUpdatePolicyAction' "SKIP_NOTIFY_COMPONENTS"++{-# COMPLETE+  DeploymentComponentUpdatePolicyAction_NOTIFY_COMPONENTS,+  DeploymentComponentUpdatePolicyAction_SKIP_NOTIFY_COMPONENTS,+  DeploymentComponentUpdatePolicyAction'+  #-}
+ gen/Amazonka/GreengrassV2/Types/DeploymentConfigurationValidationPolicy.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.GreengrassV2.Types.DeploymentConfigurationValidationPolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.DeploymentConfigurationValidationPolicy 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 how long a component on a core device can+-- validate its configuration updates before it times out. Components can+-- use the+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-subscribetovalidateconfigurationupdates SubscribeToValidateConfigurationUpdates>+-- IPC operation to receive notifications when a deployment specifies a+-- configuration update. Then, components can respond with the+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-sendconfigurationvalidityreport SendConfigurationValidityReport>+-- IPC operation. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html Create deployments>+-- in the /IoT Greengrass V2 Developer Guide/.+--+-- /See:/ 'newDeploymentConfigurationValidationPolicy' smart constructor.+data DeploymentConfigurationValidationPolicy = DeploymentConfigurationValidationPolicy'+  { -- | The amount of time in seconds that a component can validate its+    -- configuration updates. If the validation time exceeds this timeout, then+    -- the deployment proceeds for the device.+    --+    -- Default: @30@+    timeoutInSeconds :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeploymentConfigurationValidationPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'timeoutInSeconds', 'deploymentConfigurationValidationPolicy_timeoutInSeconds' - The amount of time in seconds that a component can validate its+-- configuration updates. If the validation time exceeds this timeout, then+-- the deployment proceeds for the device.+--+-- Default: @30@+newDeploymentConfigurationValidationPolicy ::+  DeploymentConfigurationValidationPolicy+newDeploymentConfigurationValidationPolicy =+  DeploymentConfigurationValidationPolicy'+    { timeoutInSeconds =+        Prelude.Nothing+    }++-- | The amount of time in seconds that a component can validate its+-- configuration updates. If the validation time exceeds this timeout, then+-- the deployment proceeds for the device.+--+-- Default: @30@+deploymentConfigurationValidationPolicy_timeoutInSeconds :: Lens.Lens' DeploymentConfigurationValidationPolicy (Prelude.Maybe Prelude.Int)+deploymentConfigurationValidationPolicy_timeoutInSeconds = Lens.lens (\DeploymentConfigurationValidationPolicy' {timeoutInSeconds} -> timeoutInSeconds) (\s@DeploymentConfigurationValidationPolicy' {} a -> s {timeoutInSeconds = a} :: DeploymentConfigurationValidationPolicy)++instance+  Data.FromJSON+    DeploymentConfigurationValidationPolicy+  where+  parseJSON =+    Data.withObject+      "DeploymentConfigurationValidationPolicy"+      ( \x ->+          DeploymentConfigurationValidationPolicy'+            Prelude.<$> (x Data..:? "timeoutInSeconds")+      )++instance+  Prelude.Hashable+    DeploymentConfigurationValidationPolicy+  where+  hashWithSalt+    _salt+    DeploymentConfigurationValidationPolicy' {..} =+      _salt `Prelude.hashWithSalt` timeoutInSeconds++instance+  Prelude.NFData+    DeploymentConfigurationValidationPolicy+  where+  rnf DeploymentConfigurationValidationPolicy' {..} =+    Prelude.rnf timeoutInSeconds++instance+  Data.ToJSON+    DeploymentConfigurationValidationPolicy+  where+  toJSON DeploymentConfigurationValidationPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("timeoutInSeconds" Data..=)+              Prelude.<$> timeoutInSeconds+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/DeploymentFailureHandlingPolicy.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.GreengrassV2.Types.DeploymentFailureHandlingPolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.DeploymentFailureHandlingPolicy+  ( DeploymentFailureHandlingPolicy+      ( ..,+        DeploymentFailureHandlingPolicy_DO_NOTHING,+        DeploymentFailureHandlingPolicy_ROLLBACK+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DeploymentFailureHandlingPolicy = DeploymentFailureHandlingPolicy'+  { fromDeploymentFailureHandlingPolicy ::+      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 DeploymentFailureHandlingPolicy_DO_NOTHING :: DeploymentFailureHandlingPolicy+pattern DeploymentFailureHandlingPolicy_DO_NOTHING = DeploymentFailureHandlingPolicy' "DO_NOTHING"++pattern DeploymentFailureHandlingPolicy_ROLLBACK :: DeploymentFailureHandlingPolicy+pattern DeploymentFailureHandlingPolicy_ROLLBACK = DeploymentFailureHandlingPolicy' "ROLLBACK"++{-# COMPLETE+  DeploymentFailureHandlingPolicy_DO_NOTHING,+  DeploymentFailureHandlingPolicy_ROLLBACK,+  DeploymentFailureHandlingPolicy'+  #-}
+ gen/Amazonka/GreengrassV2/Types/DeploymentHistoryFilter.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.GreengrassV2.Types.DeploymentHistoryFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.DeploymentHistoryFilter+  ( DeploymentHistoryFilter+      ( ..,+        DeploymentHistoryFilter_ALL,+        DeploymentHistoryFilter_LATEST_ONLY+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DeploymentHistoryFilter = DeploymentHistoryFilter'+  { fromDeploymentHistoryFilter ::+      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 DeploymentHistoryFilter_ALL :: DeploymentHistoryFilter+pattern DeploymentHistoryFilter_ALL = DeploymentHistoryFilter' "ALL"++pattern DeploymentHistoryFilter_LATEST_ONLY :: DeploymentHistoryFilter+pattern DeploymentHistoryFilter_LATEST_ONLY = DeploymentHistoryFilter' "LATEST_ONLY"++{-# COMPLETE+  DeploymentHistoryFilter_ALL,+  DeploymentHistoryFilter_LATEST_ONLY,+  DeploymentHistoryFilter'+  #-}
+ gen/Amazonka/GreengrassV2/Types/DeploymentIoTJobConfiguration.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.GreengrassV2.Types.DeploymentIoTJobConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.DeploymentIoTJobConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.IoTJobAbortConfig+import Amazonka.GreengrassV2.Types.IoTJobExecutionsRolloutConfig+import Amazonka.GreengrassV2.Types.IoTJobTimeoutConfig+import qualified Amazonka.Prelude as Prelude++-- | Contains information about an IoT job configuration.+--+-- /See:/ 'newDeploymentIoTJobConfiguration' smart constructor.+data DeploymentIoTJobConfiguration = DeploymentIoTJobConfiguration'+  { -- | The stop configuration for the job. This configuration defines when and+    -- how to stop a job rollout.+    abortConfig :: Prelude.Maybe IoTJobAbortConfig,+    -- | The rollout configuration for the job. This configuration defines the+    -- rate at which the job rolls out to the fleet of target devices.+    jobExecutionsRolloutConfig :: Prelude.Maybe IoTJobExecutionsRolloutConfig,+    -- | The timeout configuration for the job. This configuration defines the+    -- amount of time each device has to complete the job.+    timeoutConfig :: Prelude.Maybe IoTJobTimeoutConfig+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeploymentIoTJobConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'abortConfig', 'deploymentIoTJobConfiguration_abortConfig' - The stop configuration for the job. This configuration defines when and+-- how to stop a job rollout.+--+-- 'jobExecutionsRolloutConfig', 'deploymentIoTJobConfiguration_jobExecutionsRolloutConfig' - The rollout configuration for the job. This configuration defines the+-- rate at which the job rolls out to the fleet of target devices.+--+-- 'timeoutConfig', 'deploymentIoTJobConfiguration_timeoutConfig' - The timeout configuration for the job. This configuration defines the+-- amount of time each device has to complete the job.+newDeploymentIoTJobConfiguration ::+  DeploymentIoTJobConfiguration+newDeploymentIoTJobConfiguration =+  DeploymentIoTJobConfiguration'+    { abortConfig =+        Prelude.Nothing,+      jobExecutionsRolloutConfig = Prelude.Nothing,+      timeoutConfig = Prelude.Nothing+    }++-- | The stop configuration for the job. This configuration defines when and+-- how to stop a job rollout.+deploymentIoTJobConfiguration_abortConfig :: Lens.Lens' DeploymentIoTJobConfiguration (Prelude.Maybe IoTJobAbortConfig)+deploymentIoTJobConfiguration_abortConfig = Lens.lens (\DeploymentIoTJobConfiguration' {abortConfig} -> abortConfig) (\s@DeploymentIoTJobConfiguration' {} a -> s {abortConfig = a} :: DeploymentIoTJobConfiguration)++-- | The rollout configuration for the job. This configuration defines the+-- rate at which the job rolls out to the fleet of target devices.+deploymentIoTJobConfiguration_jobExecutionsRolloutConfig :: Lens.Lens' DeploymentIoTJobConfiguration (Prelude.Maybe IoTJobExecutionsRolloutConfig)+deploymentIoTJobConfiguration_jobExecutionsRolloutConfig = Lens.lens (\DeploymentIoTJobConfiguration' {jobExecutionsRolloutConfig} -> jobExecutionsRolloutConfig) (\s@DeploymentIoTJobConfiguration' {} a -> s {jobExecutionsRolloutConfig = a} :: DeploymentIoTJobConfiguration)++-- | The timeout configuration for the job. This configuration defines the+-- amount of time each device has to complete the job.+deploymentIoTJobConfiguration_timeoutConfig :: Lens.Lens' DeploymentIoTJobConfiguration (Prelude.Maybe IoTJobTimeoutConfig)+deploymentIoTJobConfiguration_timeoutConfig = Lens.lens (\DeploymentIoTJobConfiguration' {timeoutConfig} -> timeoutConfig) (\s@DeploymentIoTJobConfiguration' {} a -> s {timeoutConfig = a} :: DeploymentIoTJobConfiguration)++instance Data.FromJSON DeploymentIoTJobConfiguration where+  parseJSON =+    Data.withObject+      "DeploymentIoTJobConfiguration"+      ( \x ->+          DeploymentIoTJobConfiguration'+            Prelude.<$> (x Data..:? "abortConfig")+            Prelude.<*> (x Data..:? "jobExecutionsRolloutConfig")+            Prelude.<*> (x Data..:? "timeoutConfig")+      )++instance+  Prelude.Hashable+    DeploymentIoTJobConfiguration+  where+  hashWithSalt _salt DeploymentIoTJobConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` abortConfig+      `Prelude.hashWithSalt` jobExecutionsRolloutConfig+      `Prelude.hashWithSalt` timeoutConfig++instance Prelude.NFData DeploymentIoTJobConfiguration where+  rnf DeploymentIoTJobConfiguration' {..} =+    Prelude.rnf abortConfig+      `Prelude.seq` Prelude.rnf jobExecutionsRolloutConfig+      `Prelude.seq` Prelude.rnf timeoutConfig++instance Data.ToJSON DeploymentIoTJobConfiguration where+  toJSON DeploymentIoTJobConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("abortConfig" Data..=) Prelude.<$> abortConfig,+            ("jobExecutionsRolloutConfig" Data..=)+              Prelude.<$> jobExecutionsRolloutConfig,+            ("timeoutConfig" Data..=) Prelude.<$> timeoutConfig+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/DeploymentPolicies.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.GreengrassV2.Types.DeploymentPolicies+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.DeploymentPolicies where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.DeploymentComponentUpdatePolicy+import Amazonka.GreengrassV2.Types.DeploymentConfigurationValidationPolicy+import Amazonka.GreengrassV2.Types.DeploymentFailureHandlingPolicy+import qualified Amazonka.Prelude as Prelude++-- | Contains information about policies that define how a deployment updates+-- components and handles failure.+--+-- /See:/ 'newDeploymentPolicies' smart constructor.+data DeploymentPolicies = DeploymentPolicies'+  { -- | The component update policy for the configuration deployment. This+    -- policy defines when it\'s safe to deploy the configuration to devices.+    componentUpdatePolicy :: Prelude.Maybe DeploymentComponentUpdatePolicy,+    -- | The configuration validation policy for the configuration deployment.+    -- This policy defines how long each component has to validate its+    -- configure updates.+    configurationValidationPolicy :: Prelude.Maybe DeploymentConfigurationValidationPolicy,+    -- | The failure handling policy for the configuration deployment. This+    -- policy defines what to do if the deployment fails.+    --+    -- Default: @ROLLBACK@+    failureHandlingPolicy :: Prelude.Maybe DeploymentFailureHandlingPolicy+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeploymentPolicies' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentUpdatePolicy', 'deploymentPolicies_componentUpdatePolicy' - The component update policy for the configuration deployment. This+-- policy defines when it\'s safe to deploy the configuration to devices.+--+-- 'configurationValidationPolicy', 'deploymentPolicies_configurationValidationPolicy' - The configuration validation policy for the configuration deployment.+-- This policy defines how long each component has to validate its+-- configure updates.+--+-- 'failureHandlingPolicy', 'deploymentPolicies_failureHandlingPolicy' - The failure handling policy for the configuration deployment. This+-- policy defines what to do if the deployment fails.+--+-- Default: @ROLLBACK@+newDeploymentPolicies ::+  DeploymentPolicies+newDeploymentPolicies =+  DeploymentPolicies'+    { componentUpdatePolicy =+        Prelude.Nothing,+      configurationValidationPolicy = Prelude.Nothing,+      failureHandlingPolicy = Prelude.Nothing+    }++-- | The component update policy for the configuration deployment. This+-- policy defines when it\'s safe to deploy the configuration to devices.+deploymentPolicies_componentUpdatePolicy :: Lens.Lens' DeploymentPolicies (Prelude.Maybe DeploymentComponentUpdatePolicy)+deploymentPolicies_componentUpdatePolicy = Lens.lens (\DeploymentPolicies' {componentUpdatePolicy} -> componentUpdatePolicy) (\s@DeploymentPolicies' {} a -> s {componentUpdatePolicy = a} :: DeploymentPolicies)++-- | The configuration validation policy for the configuration deployment.+-- This policy defines how long each component has to validate its+-- configure updates.+deploymentPolicies_configurationValidationPolicy :: Lens.Lens' DeploymentPolicies (Prelude.Maybe DeploymentConfigurationValidationPolicy)+deploymentPolicies_configurationValidationPolicy = Lens.lens (\DeploymentPolicies' {configurationValidationPolicy} -> configurationValidationPolicy) (\s@DeploymentPolicies' {} a -> s {configurationValidationPolicy = a} :: DeploymentPolicies)++-- | The failure handling policy for the configuration deployment. This+-- policy defines what to do if the deployment fails.+--+-- Default: @ROLLBACK@+deploymentPolicies_failureHandlingPolicy :: Lens.Lens' DeploymentPolicies (Prelude.Maybe DeploymentFailureHandlingPolicy)+deploymentPolicies_failureHandlingPolicy = Lens.lens (\DeploymentPolicies' {failureHandlingPolicy} -> failureHandlingPolicy) (\s@DeploymentPolicies' {} a -> s {failureHandlingPolicy = a} :: DeploymentPolicies)++instance Data.FromJSON DeploymentPolicies where+  parseJSON =+    Data.withObject+      "DeploymentPolicies"+      ( \x ->+          DeploymentPolicies'+            Prelude.<$> (x Data..:? "componentUpdatePolicy")+            Prelude.<*> (x Data..:? "configurationValidationPolicy")+            Prelude.<*> (x Data..:? "failureHandlingPolicy")+      )++instance Prelude.Hashable DeploymentPolicies where+  hashWithSalt _salt DeploymentPolicies' {..} =+    _salt+      `Prelude.hashWithSalt` componentUpdatePolicy+      `Prelude.hashWithSalt` configurationValidationPolicy+      `Prelude.hashWithSalt` failureHandlingPolicy++instance Prelude.NFData DeploymentPolicies where+  rnf DeploymentPolicies' {..} =+    Prelude.rnf componentUpdatePolicy+      `Prelude.seq` Prelude.rnf configurationValidationPolicy+      `Prelude.seq` Prelude.rnf failureHandlingPolicy++instance Data.ToJSON DeploymentPolicies where+  toJSON DeploymentPolicies' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("componentUpdatePolicy" Data..=)+              Prelude.<$> componentUpdatePolicy,+            ("configurationValidationPolicy" Data..=)+              Prelude.<$> configurationValidationPolicy,+            ("failureHandlingPolicy" Data..=)+              Prelude.<$> failureHandlingPolicy+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/DeploymentStatus.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.GreengrassV2.Types.DeploymentStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.DeploymentStatus+  ( DeploymentStatus+      ( ..,+        DeploymentStatus_ACTIVE,+        DeploymentStatus_CANCELED,+        DeploymentStatus_COMPLETED,+        DeploymentStatus_FAILED,+        DeploymentStatus_INACTIVE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DeploymentStatus = DeploymentStatus'+  { fromDeploymentStatus ::+      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 DeploymentStatus_ACTIVE :: DeploymentStatus+pattern DeploymentStatus_ACTIVE = DeploymentStatus' "ACTIVE"++pattern DeploymentStatus_CANCELED :: DeploymentStatus+pattern DeploymentStatus_CANCELED = DeploymentStatus' "CANCELED"++pattern DeploymentStatus_COMPLETED :: DeploymentStatus+pattern DeploymentStatus_COMPLETED = DeploymentStatus' "COMPLETED"++pattern DeploymentStatus_FAILED :: DeploymentStatus+pattern DeploymentStatus_FAILED = DeploymentStatus' "FAILED"++pattern DeploymentStatus_INACTIVE :: DeploymentStatus+pattern DeploymentStatus_INACTIVE = DeploymentStatus' "INACTIVE"++{-# COMPLETE+  DeploymentStatus_ACTIVE,+  DeploymentStatus_CANCELED,+  DeploymentStatus_COMPLETED,+  DeploymentStatus_FAILED,+  DeploymentStatus_INACTIVE,+  DeploymentStatus'+  #-}
+ gen/Amazonka/GreengrassV2/Types/DisassociateClientDeviceFromCoreDeviceEntry.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.GreengrassV2.Types.DisassociateClientDeviceFromCoreDeviceEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.DisassociateClientDeviceFromCoreDeviceEntry 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 request to disassociate a client device from a core device.+-- The+-- <https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchDisassociateClientDeviceWithCoreDevice.html BatchDisassociateClientDeviceWithCoreDevice>+-- operation consumes a list of these requests.+--+-- /See:/ 'newDisassociateClientDeviceFromCoreDeviceEntry' smart constructor.+data DisassociateClientDeviceFromCoreDeviceEntry = DisassociateClientDeviceFromCoreDeviceEntry'+  { -- | The name of the IoT thing that represents the client device to+    -- disassociate.+    thingName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateClientDeviceFromCoreDeviceEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'thingName', 'disassociateClientDeviceFromCoreDeviceEntry_thingName' - The name of the IoT thing that represents the client device to+-- disassociate.+newDisassociateClientDeviceFromCoreDeviceEntry ::+  -- | 'thingName'+  Prelude.Text ->+  DisassociateClientDeviceFromCoreDeviceEntry+newDisassociateClientDeviceFromCoreDeviceEntry+  pThingName_ =+    DisassociateClientDeviceFromCoreDeviceEntry'+      { thingName =+          pThingName_+      }++-- | The name of the IoT thing that represents the client device to+-- disassociate.+disassociateClientDeviceFromCoreDeviceEntry_thingName :: Lens.Lens' DisassociateClientDeviceFromCoreDeviceEntry Prelude.Text+disassociateClientDeviceFromCoreDeviceEntry_thingName = Lens.lens (\DisassociateClientDeviceFromCoreDeviceEntry' {thingName} -> thingName) (\s@DisassociateClientDeviceFromCoreDeviceEntry' {} a -> s {thingName = a} :: DisassociateClientDeviceFromCoreDeviceEntry)++instance+  Prelude.Hashable+    DisassociateClientDeviceFromCoreDeviceEntry+  where+  hashWithSalt+    _salt+    DisassociateClientDeviceFromCoreDeviceEntry' {..} =+      _salt `Prelude.hashWithSalt` thingName++instance+  Prelude.NFData+    DisassociateClientDeviceFromCoreDeviceEntry+  where+  rnf DisassociateClientDeviceFromCoreDeviceEntry' {..} =+    Prelude.rnf thingName++instance+  Data.ToJSON+    DisassociateClientDeviceFromCoreDeviceEntry+  where+  toJSON+    DisassociateClientDeviceFromCoreDeviceEntry' {..} =+      Data.object+        ( Prelude.catMaybes+            [Prelude.Just ("thingName" Data..= thingName)]+        )
+ gen/Amazonka/GreengrassV2/Types/DisassociateClientDeviceFromCoreDeviceErrorEntry.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.GreengrassV2.Types.DisassociateClientDeviceFromCoreDeviceErrorEntry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.DisassociateClientDeviceFromCoreDeviceErrorEntry 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 error that occurs from a request to disassociate a client+-- device from a core device. The+-- <https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchDisassociateClientDeviceWithCoreDevice.html BatchDisassociateClientDeviceWithCoreDevice>+-- operation returns a list of these errors.+--+-- /See:/ 'newDisassociateClientDeviceFromCoreDeviceErrorEntry' smart constructor.+data DisassociateClientDeviceFromCoreDeviceErrorEntry = DisassociateClientDeviceFromCoreDeviceErrorEntry'+  { -- | The error code for the request.+    code :: Prelude.Maybe Prelude.Text,+    -- | A message that provides additional information about the error.+    message :: Prelude.Maybe Prelude.Text,+    -- | The name of the IoT thing whose disassociate request failed.+    thingName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DisassociateClientDeviceFromCoreDeviceErrorEntry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'disassociateClientDeviceFromCoreDeviceErrorEntry_code' - The error code for the request.+--+-- 'message', 'disassociateClientDeviceFromCoreDeviceErrorEntry_message' - A message that provides additional information about the error.+--+-- 'thingName', 'disassociateClientDeviceFromCoreDeviceErrorEntry_thingName' - The name of the IoT thing whose disassociate request failed.+newDisassociateClientDeviceFromCoreDeviceErrorEntry ::+  DisassociateClientDeviceFromCoreDeviceErrorEntry+newDisassociateClientDeviceFromCoreDeviceErrorEntry =+  DisassociateClientDeviceFromCoreDeviceErrorEntry'+    { code =+        Prelude.Nothing,+      message = Prelude.Nothing,+      thingName =+        Prelude.Nothing+    }++-- | The error code for the request.+disassociateClientDeviceFromCoreDeviceErrorEntry_code :: Lens.Lens' DisassociateClientDeviceFromCoreDeviceErrorEntry (Prelude.Maybe Prelude.Text)+disassociateClientDeviceFromCoreDeviceErrorEntry_code = Lens.lens (\DisassociateClientDeviceFromCoreDeviceErrorEntry' {code} -> code) (\s@DisassociateClientDeviceFromCoreDeviceErrorEntry' {} a -> s {code = a} :: DisassociateClientDeviceFromCoreDeviceErrorEntry)++-- | A message that provides additional information about the error.+disassociateClientDeviceFromCoreDeviceErrorEntry_message :: Lens.Lens' DisassociateClientDeviceFromCoreDeviceErrorEntry (Prelude.Maybe Prelude.Text)+disassociateClientDeviceFromCoreDeviceErrorEntry_message = Lens.lens (\DisassociateClientDeviceFromCoreDeviceErrorEntry' {message} -> message) (\s@DisassociateClientDeviceFromCoreDeviceErrorEntry' {} a -> s {message = a} :: DisassociateClientDeviceFromCoreDeviceErrorEntry)++-- | The name of the IoT thing whose disassociate request failed.+disassociateClientDeviceFromCoreDeviceErrorEntry_thingName :: Lens.Lens' DisassociateClientDeviceFromCoreDeviceErrorEntry (Prelude.Maybe Prelude.Text)+disassociateClientDeviceFromCoreDeviceErrorEntry_thingName = Lens.lens (\DisassociateClientDeviceFromCoreDeviceErrorEntry' {thingName} -> thingName) (\s@DisassociateClientDeviceFromCoreDeviceErrorEntry' {} a -> s {thingName = a} :: DisassociateClientDeviceFromCoreDeviceErrorEntry)++instance+  Data.FromJSON+    DisassociateClientDeviceFromCoreDeviceErrorEntry+  where+  parseJSON =+    Data.withObject+      "DisassociateClientDeviceFromCoreDeviceErrorEntry"+      ( \x ->+          DisassociateClientDeviceFromCoreDeviceErrorEntry'+            Prelude.<$> (x Data..:? "code")+            Prelude.<*> (x Data..:? "message")+            Prelude.<*> (x Data..:? "thingName")+      )++instance+  Prelude.Hashable+    DisassociateClientDeviceFromCoreDeviceErrorEntry+  where+  hashWithSalt+    _salt+    DisassociateClientDeviceFromCoreDeviceErrorEntry' {..} =+      _salt+        `Prelude.hashWithSalt` code+        `Prelude.hashWithSalt` message+        `Prelude.hashWithSalt` thingName++instance+  Prelude.NFData+    DisassociateClientDeviceFromCoreDeviceErrorEntry+  where+  rnf+    DisassociateClientDeviceFromCoreDeviceErrorEntry' {..} =+      Prelude.rnf code+        `Prelude.seq` Prelude.rnf message+        `Prelude.seq` Prelude.rnf thingName
+ gen/Amazonka/GreengrassV2/Types/EffectiveDeployment.hs view
@@ -0,0 +1,237 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.EffectiveDeployment+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.EffectiveDeployment where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.EffectiveDeploymentExecutionStatus+import Amazonka.GreengrassV2.Types.EffectiveDeploymentStatusDetails+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a deployment job that IoT Greengrass sends to+-- a Greengrass core device.+--+-- /See:/ 'newEffectiveDeployment' smart constructor.+data EffectiveDeployment = EffectiveDeployment'+  { -- | The description of the deployment job.+    description :: Prelude.Maybe Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the IoT job that applies the deployment to target devices.+    iotJobArn :: Prelude.Maybe Prelude.Text,+    -- | The ID of the IoT job that applies the deployment to target devices.+    iotJobId :: Prelude.Maybe Prelude.Text,+    -- | The reason code for the update, if the job was updated.+    reason :: Prelude.Maybe Prelude.Text,+    -- | The status details that explain why a deployment has an error. This+    -- response will be null if the deployment is in a success state.+    statusDetails :: Prelude.Maybe EffectiveDeploymentStatusDetails,+    -- | The ID of the deployment.+    deploymentId :: Prelude.Text,+    -- | The name of the deployment.+    deploymentName :: Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the target IoT thing or thing group.+    targetArn :: Prelude.Text,+    -- | The status of the deployment job on the Greengrass core device.+    coreDeviceExecutionStatus :: EffectiveDeploymentExecutionStatus,+    -- | The time at which the deployment was created, expressed in ISO 8601+    -- format.+    creationTimestamp :: Data.POSIX,+    -- | The time at which the deployment job was last modified, expressed in ISO+    -- 8601 format.+    modifiedTimestamp :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EffectiveDeployment' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'effectiveDeployment_description' - The description of the deployment job.+--+-- 'iotJobArn', 'effectiveDeployment_iotJobArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IoT job that applies the deployment to target devices.+--+-- 'iotJobId', 'effectiveDeployment_iotJobId' - The ID of the IoT job that applies the deployment to target devices.+--+-- 'reason', 'effectiveDeployment_reason' - The reason code for the update, if the job was updated.+--+-- 'statusDetails', 'effectiveDeployment_statusDetails' - The status details that explain why a deployment has an error. This+-- response will be null if the deployment is in a success state.+--+-- 'deploymentId', 'effectiveDeployment_deploymentId' - The ID of the deployment.+--+-- 'deploymentName', 'effectiveDeployment_deploymentName' - The name of the deployment.+--+-- 'targetArn', 'effectiveDeployment_targetArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the target IoT thing or thing group.+--+-- 'coreDeviceExecutionStatus', 'effectiveDeployment_coreDeviceExecutionStatus' - The status of the deployment job on the Greengrass core device.+--+-- 'creationTimestamp', 'effectiveDeployment_creationTimestamp' - The time at which the deployment was created, expressed in ISO 8601+-- format.+--+-- 'modifiedTimestamp', 'effectiveDeployment_modifiedTimestamp' - The time at which the deployment job was last modified, expressed in ISO+-- 8601 format.+newEffectiveDeployment ::+  -- | 'deploymentId'+  Prelude.Text ->+  -- | 'deploymentName'+  Prelude.Text ->+  -- | 'targetArn'+  Prelude.Text ->+  -- | 'coreDeviceExecutionStatus'+  EffectiveDeploymentExecutionStatus ->+  -- | 'creationTimestamp'+  Prelude.UTCTime ->+  -- | 'modifiedTimestamp'+  Prelude.UTCTime ->+  EffectiveDeployment+newEffectiveDeployment+  pDeploymentId_+  pDeploymentName_+  pTargetArn_+  pCoreDeviceExecutionStatus_+  pCreationTimestamp_+  pModifiedTimestamp_ =+    EffectiveDeployment'+      { description = Prelude.Nothing,+        iotJobArn = Prelude.Nothing,+        iotJobId = Prelude.Nothing,+        reason = Prelude.Nothing,+        statusDetails = Prelude.Nothing,+        deploymentId = pDeploymentId_,+        deploymentName = pDeploymentName_,+        targetArn = pTargetArn_,+        coreDeviceExecutionStatus =+          pCoreDeviceExecutionStatus_,+        creationTimestamp =+          Data._Time Lens.# pCreationTimestamp_,+        modifiedTimestamp =+          Data._Time Lens.# pModifiedTimestamp_+      }++-- | The description of the deployment job.+effectiveDeployment_description :: Lens.Lens' EffectiveDeployment (Prelude.Maybe Prelude.Text)+effectiveDeployment_description = Lens.lens (\EffectiveDeployment' {description} -> description) (\s@EffectiveDeployment' {} a -> s {description = a} :: EffectiveDeployment)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the IoT job that applies the deployment to target devices.+effectiveDeployment_iotJobArn :: Lens.Lens' EffectiveDeployment (Prelude.Maybe Prelude.Text)+effectiveDeployment_iotJobArn = Lens.lens (\EffectiveDeployment' {iotJobArn} -> iotJobArn) (\s@EffectiveDeployment' {} a -> s {iotJobArn = a} :: EffectiveDeployment)++-- | The ID of the IoT job that applies the deployment to target devices.+effectiveDeployment_iotJobId :: Lens.Lens' EffectiveDeployment (Prelude.Maybe Prelude.Text)+effectiveDeployment_iotJobId = Lens.lens (\EffectiveDeployment' {iotJobId} -> iotJobId) (\s@EffectiveDeployment' {} a -> s {iotJobId = a} :: EffectiveDeployment)++-- | The reason code for the update, if the job was updated.+effectiveDeployment_reason :: Lens.Lens' EffectiveDeployment (Prelude.Maybe Prelude.Text)+effectiveDeployment_reason = Lens.lens (\EffectiveDeployment' {reason} -> reason) (\s@EffectiveDeployment' {} a -> s {reason = a} :: EffectiveDeployment)++-- | The status details that explain why a deployment has an error. This+-- response will be null if the deployment is in a success state.+effectiveDeployment_statusDetails :: Lens.Lens' EffectiveDeployment (Prelude.Maybe EffectiveDeploymentStatusDetails)+effectiveDeployment_statusDetails = Lens.lens (\EffectiveDeployment' {statusDetails} -> statusDetails) (\s@EffectiveDeployment' {} a -> s {statusDetails = a} :: EffectiveDeployment)++-- | The ID of the deployment.+effectiveDeployment_deploymentId :: Lens.Lens' EffectiveDeployment Prelude.Text+effectiveDeployment_deploymentId = Lens.lens (\EffectiveDeployment' {deploymentId} -> deploymentId) (\s@EffectiveDeployment' {} a -> s {deploymentId = a} :: EffectiveDeployment)++-- | The name of the deployment.+effectiveDeployment_deploymentName :: Lens.Lens' EffectiveDeployment Prelude.Text+effectiveDeployment_deploymentName = Lens.lens (\EffectiveDeployment' {deploymentName} -> deploymentName) (\s@EffectiveDeployment' {} a -> s {deploymentName = a} :: EffectiveDeployment)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the target IoT thing or thing group.+effectiveDeployment_targetArn :: Lens.Lens' EffectiveDeployment Prelude.Text+effectiveDeployment_targetArn = Lens.lens (\EffectiveDeployment' {targetArn} -> targetArn) (\s@EffectiveDeployment' {} a -> s {targetArn = a} :: EffectiveDeployment)++-- | The status of the deployment job on the Greengrass core device.+effectiveDeployment_coreDeviceExecutionStatus :: Lens.Lens' EffectiveDeployment EffectiveDeploymentExecutionStatus+effectiveDeployment_coreDeviceExecutionStatus = Lens.lens (\EffectiveDeployment' {coreDeviceExecutionStatus} -> coreDeviceExecutionStatus) (\s@EffectiveDeployment' {} a -> s {coreDeviceExecutionStatus = a} :: EffectiveDeployment)++-- | The time at which the deployment was created, expressed in ISO 8601+-- format.+effectiveDeployment_creationTimestamp :: Lens.Lens' EffectiveDeployment Prelude.UTCTime+effectiveDeployment_creationTimestamp = Lens.lens (\EffectiveDeployment' {creationTimestamp} -> creationTimestamp) (\s@EffectiveDeployment' {} a -> s {creationTimestamp = a} :: EffectiveDeployment) Prelude.. Data._Time++-- | The time at which the deployment job was last modified, expressed in ISO+-- 8601 format.+effectiveDeployment_modifiedTimestamp :: Lens.Lens' EffectiveDeployment Prelude.UTCTime+effectiveDeployment_modifiedTimestamp = Lens.lens (\EffectiveDeployment' {modifiedTimestamp} -> modifiedTimestamp) (\s@EffectiveDeployment' {} a -> s {modifiedTimestamp = a} :: EffectiveDeployment) Prelude.. Data._Time++instance Data.FromJSON EffectiveDeployment where+  parseJSON =+    Data.withObject+      "EffectiveDeployment"+      ( \x ->+          EffectiveDeployment'+            Prelude.<$> (x Data..:? "description")+            Prelude.<*> (x Data..:? "iotJobArn")+            Prelude.<*> (x Data..:? "iotJobId")+            Prelude.<*> (x Data..:? "reason")+            Prelude.<*> (x Data..:? "statusDetails")+            Prelude.<*> (x Data..: "deploymentId")+            Prelude.<*> (x Data..: "deploymentName")+            Prelude.<*> (x Data..: "targetArn")+            Prelude.<*> (x Data..: "coreDeviceExecutionStatus")+            Prelude.<*> (x Data..: "creationTimestamp")+            Prelude.<*> (x Data..: "modifiedTimestamp")+      )++instance Prelude.Hashable EffectiveDeployment where+  hashWithSalt _salt EffectiveDeployment' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` iotJobArn+      `Prelude.hashWithSalt` iotJobId+      `Prelude.hashWithSalt` reason+      `Prelude.hashWithSalt` statusDetails+      `Prelude.hashWithSalt` deploymentId+      `Prelude.hashWithSalt` deploymentName+      `Prelude.hashWithSalt` targetArn+      `Prelude.hashWithSalt` coreDeviceExecutionStatus+      `Prelude.hashWithSalt` creationTimestamp+      `Prelude.hashWithSalt` modifiedTimestamp++instance Prelude.NFData EffectiveDeployment where+  rnf EffectiveDeployment' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf iotJobArn+      `Prelude.seq` Prelude.rnf iotJobId+      `Prelude.seq` Prelude.rnf reason+      `Prelude.seq` Prelude.rnf statusDetails+      `Prelude.seq` Prelude.rnf deploymentId+      `Prelude.seq` Prelude.rnf deploymentName+      `Prelude.seq` Prelude.rnf targetArn+      `Prelude.seq` Prelude.rnf coreDeviceExecutionStatus+      `Prelude.seq` Prelude.rnf creationTimestamp+      `Prelude.seq` Prelude.rnf modifiedTimestamp
+ gen/Amazonka/GreengrassV2/Types/EffectiveDeploymentExecutionStatus.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.GreengrassV2.Types.EffectiveDeploymentExecutionStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.EffectiveDeploymentExecutionStatus+  ( EffectiveDeploymentExecutionStatus+      ( ..,+        EffectiveDeploymentExecutionStatus_CANCELED,+        EffectiveDeploymentExecutionStatus_COMPLETED,+        EffectiveDeploymentExecutionStatus_FAILED,+        EffectiveDeploymentExecutionStatus_IN_PROGRESS,+        EffectiveDeploymentExecutionStatus_QUEUED,+        EffectiveDeploymentExecutionStatus_REJECTED,+        EffectiveDeploymentExecutionStatus_TIMED_OUT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype EffectiveDeploymentExecutionStatus = EffectiveDeploymentExecutionStatus'+  { fromEffectiveDeploymentExecutionStatus ::+      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 EffectiveDeploymentExecutionStatus_CANCELED :: EffectiveDeploymentExecutionStatus+pattern EffectiveDeploymentExecutionStatus_CANCELED = EffectiveDeploymentExecutionStatus' "CANCELED"++pattern EffectiveDeploymentExecutionStatus_COMPLETED :: EffectiveDeploymentExecutionStatus+pattern EffectiveDeploymentExecutionStatus_COMPLETED = EffectiveDeploymentExecutionStatus' "COMPLETED"++pattern EffectiveDeploymentExecutionStatus_FAILED :: EffectiveDeploymentExecutionStatus+pattern EffectiveDeploymentExecutionStatus_FAILED = EffectiveDeploymentExecutionStatus' "FAILED"++pattern EffectiveDeploymentExecutionStatus_IN_PROGRESS :: EffectiveDeploymentExecutionStatus+pattern EffectiveDeploymentExecutionStatus_IN_PROGRESS = EffectiveDeploymentExecutionStatus' "IN_PROGRESS"++pattern EffectiveDeploymentExecutionStatus_QUEUED :: EffectiveDeploymentExecutionStatus+pattern EffectiveDeploymentExecutionStatus_QUEUED = EffectiveDeploymentExecutionStatus' "QUEUED"++pattern EffectiveDeploymentExecutionStatus_REJECTED :: EffectiveDeploymentExecutionStatus+pattern EffectiveDeploymentExecutionStatus_REJECTED = EffectiveDeploymentExecutionStatus' "REJECTED"++pattern EffectiveDeploymentExecutionStatus_TIMED_OUT :: EffectiveDeploymentExecutionStatus+pattern EffectiveDeploymentExecutionStatus_TIMED_OUT = EffectiveDeploymentExecutionStatus' "TIMED_OUT"++{-# COMPLETE+  EffectiveDeploymentExecutionStatus_CANCELED,+  EffectiveDeploymentExecutionStatus_COMPLETED,+  EffectiveDeploymentExecutionStatus_FAILED,+  EffectiveDeploymentExecutionStatus_IN_PROGRESS,+  EffectiveDeploymentExecutionStatus_QUEUED,+  EffectiveDeploymentExecutionStatus_REJECTED,+  EffectiveDeploymentExecutionStatus_TIMED_OUT,+  EffectiveDeploymentExecutionStatus'+  #-}
+ gen/Amazonka/GreengrassV2/Types/EffectiveDeploymentStatusDetails.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.GreengrassV2.Types.EffectiveDeploymentStatusDetails+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.EffectiveDeploymentStatusDetails 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 all error-related information for the deployment record. The+-- status details will be null if the deployment is in a success state.+--+-- Greengrass nucleus v2.8.0 or later is required to get an accurate+-- @errorStack@ and @errorTypes@ response. This field will not be returned+-- for earlier Greengrass nucleus versions.+--+-- /See:/ 'newEffectiveDeploymentStatusDetails' smart constructor.+data EffectiveDeploymentStatusDetails = EffectiveDeploymentStatusDetails'+  { -- | Contains an ordered list of short error codes that range from the most+    -- generic error to the most specific one. The error codes describe the+    -- reason for failure whenever the @coreDeviceExecutionStatus@ is in a+    -- failed state. The response will be an empty list if there is no error.+    errorStack :: Prelude.Maybe [Prelude.Text],+    -- | Contains tags which describe the error. You can use the error types to+    -- classify errors to assist with remediating the failure. The response+    -- will be an empty list if there is no error.+    errorTypes :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EffectiveDeploymentStatusDetails' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errorStack', 'effectiveDeploymentStatusDetails_errorStack' - Contains an ordered list of short error codes that range from the most+-- generic error to the most specific one. The error codes describe the+-- reason for failure whenever the @coreDeviceExecutionStatus@ is in a+-- failed state. The response will be an empty list if there is no error.+--+-- 'errorTypes', 'effectiveDeploymentStatusDetails_errorTypes' - Contains tags which describe the error. You can use the error types to+-- classify errors to assist with remediating the failure. The response+-- will be an empty list if there is no error.+newEffectiveDeploymentStatusDetails ::+  EffectiveDeploymentStatusDetails+newEffectiveDeploymentStatusDetails =+  EffectiveDeploymentStatusDetails'+    { errorStack =+        Prelude.Nothing,+      errorTypes = Prelude.Nothing+    }++-- | Contains an ordered list of short error codes that range from the most+-- generic error to the most specific one. The error codes describe the+-- reason for failure whenever the @coreDeviceExecutionStatus@ is in a+-- failed state. The response will be an empty list if there is no error.+effectiveDeploymentStatusDetails_errorStack :: Lens.Lens' EffectiveDeploymentStatusDetails (Prelude.Maybe [Prelude.Text])+effectiveDeploymentStatusDetails_errorStack = Lens.lens (\EffectiveDeploymentStatusDetails' {errorStack} -> errorStack) (\s@EffectiveDeploymentStatusDetails' {} a -> s {errorStack = a} :: EffectiveDeploymentStatusDetails) Prelude.. Lens.mapping Lens.coerced++-- | Contains tags which describe the error. You can use the error types to+-- classify errors to assist with remediating the failure. The response+-- will be an empty list if there is no error.+effectiveDeploymentStatusDetails_errorTypes :: Lens.Lens' EffectiveDeploymentStatusDetails (Prelude.Maybe [Prelude.Text])+effectiveDeploymentStatusDetails_errorTypes = Lens.lens (\EffectiveDeploymentStatusDetails' {errorTypes} -> errorTypes) (\s@EffectiveDeploymentStatusDetails' {} a -> s {errorTypes = a} :: EffectiveDeploymentStatusDetails) Prelude.. Lens.mapping Lens.coerced++instance+  Data.FromJSON+    EffectiveDeploymentStatusDetails+  where+  parseJSON =+    Data.withObject+      "EffectiveDeploymentStatusDetails"+      ( \x ->+          EffectiveDeploymentStatusDetails'+            Prelude.<$> (x Data..:? "errorStack" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "errorTypes" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    EffectiveDeploymentStatusDetails+  where+  hashWithSalt+    _salt+    EffectiveDeploymentStatusDetails' {..} =+      _salt+        `Prelude.hashWithSalt` errorStack+        `Prelude.hashWithSalt` errorTypes++instance+  Prelude.NFData+    EffectiveDeploymentStatusDetails+  where+  rnf EffectiveDeploymentStatusDetails' {..} =+    Prelude.rnf errorStack+      `Prelude.seq` Prelude.rnf errorTypes
+ gen/Amazonka/GreengrassV2/Types/InstalledComponent.hs view
@@ -0,0 +1,227 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.InstalledComponent+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.InstalledComponent where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.InstalledComponentLifecycleState+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a component on a Greengrass core device.+--+-- /See:/ 'newInstalledComponent' smart constructor.+data InstalledComponent = InstalledComponent'+  { -- | The name of the component.+    componentName :: Prelude.Maybe Prelude.Text,+    -- | The version of the component.+    componentVersion :: Prelude.Maybe Prelude.Text,+    -- | Whether or not the component is a root component.+    isRoot :: Prelude.Maybe Prelude.Bool,+    -- | The most recent deployment source that brought the component to the+    -- Greengrass core device. For a thing group deployment or thing+    -- deployment, the source will be the The ID of the deployment. and for+    -- local deployments it will be @LOCAL@.+    lastInstallationSource :: Prelude.Maybe Prelude.Text,+    -- | The last time the Greengrass core device sent a message containing a+    -- certain component to the Amazon Web Services Cloud.+    --+    -- A component does not need to see a state change for this field to+    -- update.+    lastReportedTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The status of how current the data is.+    --+    -- This response is based off of component state changes. The status+    -- reflects component disruptions and deployments. If a component only sees+    -- a configuration update during a deployment, it might not undergo a state+    -- change and this status would not be updated.+    lastStatusChangeTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The lifecycle state of the component.+    lifecycleState :: Prelude.Maybe InstalledComponentLifecycleState,+    -- | A detailed response about the lifecycle state of the component that+    -- explains the reason why a component has an error or is broken.+    lifecycleStateDetails :: Prelude.Maybe Prelude.Text,+    -- | The status codes that indicate the reason for failure whenever the+    -- @lifecycleState@ has an error or is in a broken state.+    --+    -- Greengrass nucleus v2.8.0 or later is required to get an accurate+    -- @lifecycleStatusCodes@ response. This response can be inaccurate in+    -- earlier Greengrass nucleus versions.+    lifecycleStatusCodes :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InstalledComponent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentName', 'installedComponent_componentName' - The name of the component.+--+-- 'componentVersion', 'installedComponent_componentVersion' - The version of the component.+--+-- 'isRoot', 'installedComponent_isRoot' - Whether or not the component is a root component.+--+-- 'lastInstallationSource', 'installedComponent_lastInstallationSource' - The most recent deployment source that brought the component to the+-- Greengrass core device. For a thing group deployment or thing+-- deployment, the source will be the The ID of the deployment. and for+-- local deployments it will be @LOCAL@.+--+-- 'lastReportedTimestamp', 'installedComponent_lastReportedTimestamp' - The last time the Greengrass core device sent a message containing a+-- certain component to the Amazon Web Services Cloud.+--+-- A component does not need to see a state change for this field to+-- update.+--+-- 'lastStatusChangeTimestamp', 'installedComponent_lastStatusChangeTimestamp' - The status of how current the data is.+--+-- This response is based off of component state changes. The status+-- reflects component disruptions and deployments. If a component only sees+-- a configuration update during a deployment, it might not undergo a state+-- change and this status would not be updated.+--+-- 'lifecycleState', 'installedComponent_lifecycleState' - The lifecycle state of the component.+--+-- 'lifecycleStateDetails', 'installedComponent_lifecycleStateDetails' - A detailed response about the lifecycle state of the component that+-- explains the reason why a component has an error or is broken.+--+-- 'lifecycleStatusCodes', 'installedComponent_lifecycleStatusCodes' - The status codes that indicate the reason for failure whenever the+-- @lifecycleState@ has an error or is in a broken state.+--+-- Greengrass nucleus v2.8.0 or later is required to get an accurate+-- @lifecycleStatusCodes@ response. This response can be inaccurate in+-- earlier Greengrass nucleus versions.+newInstalledComponent ::+  InstalledComponent+newInstalledComponent =+  InstalledComponent'+    { componentName =+        Prelude.Nothing,+      componentVersion = Prelude.Nothing,+      isRoot = Prelude.Nothing,+      lastInstallationSource = Prelude.Nothing,+      lastReportedTimestamp = Prelude.Nothing,+      lastStatusChangeTimestamp = Prelude.Nothing,+      lifecycleState = Prelude.Nothing,+      lifecycleStateDetails = Prelude.Nothing,+      lifecycleStatusCodes = Prelude.Nothing+    }++-- | The name of the component.+installedComponent_componentName :: Lens.Lens' InstalledComponent (Prelude.Maybe Prelude.Text)+installedComponent_componentName = Lens.lens (\InstalledComponent' {componentName} -> componentName) (\s@InstalledComponent' {} a -> s {componentName = a} :: InstalledComponent)++-- | The version of the component.+installedComponent_componentVersion :: Lens.Lens' InstalledComponent (Prelude.Maybe Prelude.Text)+installedComponent_componentVersion = Lens.lens (\InstalledComponent' {componentVersion} -> componentVersion) (\s@InstalledComponent' {} a -> s {componentVersion = a} :: InstalledComponent)++-- | Whether or not the component is a root component.+installedComponent_isRoot :: Lens.Lens' InstalledComponent (Prelude.Maybe Prelude.Bool)+installedComponent_isRoot = Lens.lens (\InstalledComponent' {isRoot} -> isRoot) (\s@InstalledComponent' {} a -> s {isRoot = a} :: InstalledComponent)++-- | The most recent deployment source that brought the component to the+-- Greengrass core device. For a thing group deployment or thing+-- deployment, the source will be the The ID of the deployment. and for+-- local deployments it will be @LOCAL@.+installedComponent_lastInstallationSource :: Lens.Lens' InstalledComponent (Prelude.Maybe Prelude.Text)+installedComponent_lastInstallationSource = Lens.lens (\InstalledComponent' {lastInstallationSource} -> lastInstallationSource) (\s@InstalledComponent' {} a -> s {lastInstallationSource = a} :: InstalledComponent)++-- | The last time the Greengrass core device sent a message containing a+-- certain component to the Amazon Web Services Cloud.+--+-- A component does not need to see a state change for this field to+-- update.+installedComponent_lastReportedTimestamp :: Lens.Lens' InstalledComponent (Prelude.Maybe Prelude.UTCTime)+installedComponent_lastReportedTimestamp = Lens.lens (\InstalledComponent' {lastReportedTimestamp} -> lastReportedTimestamp) (\s@InstalledComponent' {} a -> s {lastReportedTimestamp = a} :: InstalledComponent) Prelude.. Lens.mapping Data._Time++-- | The status of how current the data is.+--+-- This response is based off of component state changes. The status+-- reflects component disruptions and deployments. If a component only sees+-- a configuration update during a deployment, it might not undergo a state+-- change and this status would not be updated.+installedComponent_lastStatusChangeTimestamp :: Lens.Lens' InstalledComponent (Prelude.Maybe Prelude.UTCTime)+installedComponent_lastStatusChangeTimestamp = Lens.lens (\InstalledComponent' {lastStatusChangeTimestamp} -> lastStatusChangeTimestamp) (\s@InstalledComponent' {} a -> s {lastStatusChangeTimestamp = a} :: InstalledComponent) Prelude.. Lens.mapping Data._Time++-- | The lifecycle state of the component.+installedComponent_lifecycleState :: Lens.Lens' InstalledComponent (Prelude.Maybe InstalledComponentLifecycleState)+installedComponent_lifecycleState = Lens.lens (\InstalledComponent' {lifecycleState} -> lifecycleState) (\s@InstalledComponent' {} a -> s {lifecycleState = a} :: InstalledComponent)++-- | A detailed response about the lifecycle state of the component that+-- explains the reason why a component has an error or is broken.+installedComponent_lifecycleStateDetails :: Lens.Lens' InstalledComponent (Prelude.Maybe Prelude.Text)+installedComponent_lifecycleStateDetails = Lens.lens (\InstalledComponent' {lifecycleStateDetails} -> lifecycleStateDetails) (\s@InstalledComponent' {} a -> s {lifecycleStateDetails = a} :: InstalledComponent)++-- | The status codes that indicate the reason for failure whenever the+-- @lifecycleState@ has an error or is in a broken state.+--+-- Greengrass nucleus v2.8.0 or later is required to get an accurate+-- @lifecycleStatusCodes@ response. This response can be inaccurate in+-- earlier Greengrass nucleus versions.+installedComponent_lifecycleStatusCodes :: Lens.Lens' InstalledComponent (Prelude.Maybe [Prelude.Text])+installedComponent_lifecycleStatusCodes = Lens.lens (\InstalledComponent' {lifecycleStatusCodes} -> lifecycleStatusCodes) (\s@InstalledComponent' {} a -> s {lifecycleStatusCodes = a} :: InstalledComponent) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON InstalledComponent where+  parseJSON =+    Data.withObject+      "InstalledComponent"+      ( \x ->+          InstalledComponent'+            Prelude.<$> (x Data..:? "componentName")+            Prelude.<*> (x Data..:? "componentVersion")+            Prelude.<*> (x Data..:? "isRoot")+            Prelude.<*> (x Data..:? "lastInstallationSource")+            Prelude.<*> (x Data..:? "lastReportedTimestamp")+            Prelude.<*> (x Data..:? "lastStatusChangeTimestamp")+            Prelude.<*> (x Data..:? "lifecycleState")+            Prelude.<*> (x Data..:? "lifecycleStateDetails")+            Prelude.<*> ( x+                            Data..:? "lifecycleStatusCodes"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable InstalledComponent where+  hashWithSalt _salt InstalledComponent' {..} =+    _salt+      `Prelude.hashWithSalt` componentName+      `Prelude.hashWithSalt` componentVersion+      `Prelude.hashWithSalt` isRoot+      `Prelude.hashWithSalt` lastInstallationSource+      `Prelude.hashWithSalt` lastReportedTimestamp+      `Prelude.hashWithSalt` lastStatusChangeTimestamp+      `Prelude.hashWithSalt` lifecycleState+      `Prelude.hashWithSalt` lifecycleStateDetails+      `Prelude.hashWithSalt` lifecycleStatusCodes++instance Prelude.NFData InstalledComponent where+  rnf InstalledComponent' {..} =+    Prelude.rnf componentName+      `Prelude.seq` Prelude.rnf componentVersion+      `Prelude.seq` Prelude.rnf isRoot+      `Prelude.seq` Prelude.rnf lastInstallationSource+      `Prelude.seq` Prelude.rnf lastReportedTimestamp+      `Prelude.seq` Prelude.rnf lastStatusChangeTimestamp+      `Prelude.seq` Prelude.rnf lifecycleState+      `Prelude.seq` Prelude.rnf lifecycleStateDetails+      `Prelude.seq` Prelude.rnf lifecycleStatusCodes
+ gen/Amazonka/GreengrassV2/Types/InstalledComponentLifecycleState.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.GreengrassV2.Types.InstalledComponentLifecycleState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.InstalledComponentLifecycleState+  ( InstalledComponentLifecycleState+      ( ..,+        InstalledComponentLifecycleState_BROKEN,+        InstalledComponentLifecycleState_ERRORED,+        InstalledComponentLifecycleState_FINISHED,+        InstalledComponentLifecycleState_INSTALLED,+        InstalledComponentLifecycleState_NEW,+        InstalledComponentLifecycleState_RUNNING,+        InstalledComponentLifecycleState_STARTING,+        InstalledComponentLifecycleState_STOPPING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype InstalledComponentLifecycleState = InstalledComponentLifecycleState'+  { fromInstalledComponentLifecycleState ::+      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 InstalledComponentLifecycleState_BROKEN :: InstalledComponentLifecycleState+pattern InstalledComponentLifecycleState_BROKEN = InstalledComponentLifecycleState' "BROKEN"++pattern InstalledComponentLifecycleState_ERRORED :: InstalledComponentLifecycleState+pattern InstalledComponentLifecycleState_ERRORED = InstalledComponentLifecycleState' "ERRORED"++pattern InstalledComponentLifecycleState_FINISHED :: InstalledComponentLifecycleState+pattern InstalledComponentLifecycleState_FINISHED = InstalledComponentLifecycleState' "FINISHED"++pattern InstalledComponentLifecycleState_INSTALLED :: InstalledComponentLifecycleState+pattern InstalledComponentLifecycleState_INSTALLED = InstalledComponentLifecycleState' "INSTALLED"++pattern InstalledComponentLifecycleState_NEW :: InstalledComponentLifecycleState+pattern InstalledComponentLifecycleState_NEW = InstalledComponentLifecycleState' "NEW"++pattern InstalledComponentLifecycleState_RUNNING :: InstalledComponentLifecycleState+pattern InstalledComponentLifecycleState_RUNNING = InstalledComponentLifecycleState' "RUNNING"++pattern InstalledComponentLifecycleState_STARTING :: InstalledComponentLifecycleState+pattern InstalledComponentLifecycleState_STARTING = InstalledComponentLifecycleState' "STARTING"++pattern InstalledComponentLifecycleState_STOPPING :: InstalledComponentLifecycleState+pattern InstalledComponentLifecycleState_STOPPING = InstalledComponentLifecycleState' "STOPPING"++{-# COMPLETE+  InstalledComponentLifecycleState_BROKEN,+  InstalledComponentLifecycleState_ERRORED,+  InstalledComponentLifecycleState_FINISHED,+  InstalledComponentLifecycleState_INSTALLED,+  InstalledComponentLifecycleState_NEW,+  InstalledComponentLifecycleState_RUNNING,+  InstalledComponentLifecycleState_STARTING,+  InstalledComponentLifecycleState_STOPPING,+  InstalledComponentLifecycleState'+  #-}
+ gen/Amazonka/GreengrassV2/Types/InstalledComponentTopologyFilter.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.GreengrassV2.Types.InstalledComponentTopologyFilter+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.InstalledComponentTopologyFilter+  ( InstalledComponentTopologyFilter+      ( ..,+        InstalledComponentTopologyFilter_ALL,+        InstalledComponentTopologyFilter_ROOT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype InstalledComponentTopologyFilter = InstalledComponentTopologyFilter'+  { fromInstalledComponentTopologyFilter ::+      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 InstalledComponentTopologyFilter_ALL :: InstalledComponentTopologyFilter+pattern InstalledComponentTopologyFilter_ALL = InstalledComponentTopologyFilter' "ALL"++pattern InstalledComponentTopologyFilter_ROOT :: InstalledComponentTopologyFilter+pattern InstalledComponentTopologyFilter_ROOT = InstalledComponentTopologyFilter' "ROOT"++{-# COMPLETE+  InstalledComponentTopologyFilter_ALL,+  InstalledComponentTopologyFilter_ROOT,+  InstalledComponentTopologyFilter'+  #-}
+ gen/Amazonka/GreengrassV2/Types/IoTJobAbortAction.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.GreengrassV2.Types.IoTJobAbortAction+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.IoTJobAbortAction+  ( IoTJobAbortAction+      ( ..,+        IoTJobAbortAction_CANCEL+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype IoTJobAbortAction = IoTJobAbortAction'+  { fromIoTJobAbortAction ::+      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 IoTJobAbortAction_CANCEL :: IoTJobAbortAction+pattern IoTJobAbortAction_CANCEL = IoTJobAbortAction' "CANCEL"++{-# COMPLETE+  IoTJobAbortAction_CANCEL,+  IoTJobAbortAction'+  #-}
+ gen/Amazonka/GreengrassV2/Types/IoTJobAbortConfig.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.GreengrassV2.Types.IoTJobAbortConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.IoTJobAbortConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.IoTJobAbortCriteria+import qualified Amazonka.Prelude as Prelude++-- | Contains a list of criteria that define when and how to cancel a+-- configuration deployment.+--+-- /See:/ 'newIoTJobAbortConfig' smart constructor.+data IoTJobAbortConfig = IoTJobAbortConfig'+  { -- | The list of criteria that define when and how to cancel the+    -- configuration deployment.+    criteriaList :: Prelude.NonEmpty IoTJobAbortCriteria+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IoTJobAbortConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'criteriaList', 'ioTJobAbortConfig_criteriaList' - The list of criteria that define when and how to cancel the+-- configuration deployment.+newIoTJobAbortConfig ::+  -- | 'criteriaList'+  Prelude.NonEmpty IoTJobAbortCriteria ->+  IoTJobAbortConfig+newIoTJobAbortConfig pCriteriaList_ =+  IoTJobAbortConfig'+    { criteriaList =+        Lens.coerced Lens.# pCriteriaList_+    }++-- | The list of criteria that define when and how to cancel the+-- configuration deployment.+ioTJobAbortConfig_criteriaList :: Lens.Lens' IoTJobAbortConfig (Prelude.NonEmpty IoTJobAbortCriteria)+ioTJobAbortConfig_criteriaList = Lens.lens (\IoTJobAbortConfig' {criteriaList} -> criteriaList) (\s@IoTJobAbortConfig' {} a -> s {criteriaList = a} :: IoTJobAbortConfig) Prelude.. Lens.coerced++instance Data.FromJSON IoTJobAbortConfig where+  parseJSON =+    Data.withObject+      "IoTJobAbortConfig"+      ( \x ->+          IoTJobAbortConfig'+            Prelude.<$> (x Data..: "criteriaList")+      )++instance Prelude.Hashable IoTJobAbortConfig where+  hashWithSalt _salt IoTJobAbortConfig' {..} =+    _salt `Prelude.hashWithSalt` criteriaList++instance Prelude.NFData IoTJobAbortConfig where+  rnf IoTJobAbortConfig' {..} = Prelude.rnf criteriaList++instance Data.ToJSON IoTJobAbortConfig where+  toJSON IoTJobAbortConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("criteriaList" Data..= criteriaList)]+      )
+ gen/Amazonka/GreengrassV2/Types/IoTJobAbortCriteria.hs view
@@ -0,0 +1,161 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.IoTJobAbortCriteria+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.IoTJobAbortCriteria where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.IoTJobAbortAction+import Amazonka.GreengrassV2.Types.IoTJobExecutionFailureType+import qualified Amazonka.Prelude as Prelude++-- | Contains criteria that define when and how to cancel a job.+--+-- The deployment stops if the following conditions are true:+--+-- 1.  The number of things that receive the deployment exceeds the+--     @minNumberOfExecutedThings@.+--+-- 2.  The percentage of failures with type @failureType@ exceeds the+--     @thresholdPercentage@.+--+-- /See:/ 'newIoTJobAbortCriteria' smart constructor.+data IoTJobAbortCriteria = IoTJobAbortCriteria'+  { -- | The type of job deployment failure that can cancel a job.+    failureType :: IoTJobExecutionFailureType,+    -- | The action to perform when the criteria are met.+    action :: IoTJobAbortAction,+    -- | The minimum percentage of @failureType@ failures that occur before the+    -- job can cancel.+    --+    -- This parameter supports up to two digits after the decimal (for example,+    -- you can specify @10.9@ or @10.99@, but not @10.999@).+    thresholdPercentage :: Prelude.Double,+    -- | The minimum number of things that receive the configuration before the+    -- job can cancel.+    minNumberOfExecutedThings :: Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IoTJobAbortCriteria' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'failureType', 'ioTJobAbortCriteria_failureType' - The type of job deployment failure that can cancel a job.+--+-- 'action', 'ioTJobAbortCriteria_action' - The action to perform when the criteria are met.+--+-- 'thresholdPercentage', 'ioTJobAbortCriteria_thresholdPercentage' - The minimum percentage of @failureType@ failures that occur before the+-- job can cancel.+--+-- This parameter supports up to two digits after the decimal (for example,+-- you can specify @10.9@ or @10.99@, but not @10.999@).+--+-- 'minNumberOfExecutedThings', 'ioTJobAbortCriteria_minNumberOfExecutedThings' - The minimum number of things that receive the configuration before the+-- job can cancel.+newIoTJobAbortCriteria ::+  -- | 'failureType'+  IoTJobExecutionFailureType ->+  -- | 'action'+  IoTJobAbortAction ->+  -- | 'thresholdPercentage'+  Prelude.Double ->+  -- | 'minNumberOfExecutedThings'+  Prelude.Natural ->+  IoTJobAbortCriteria+newIoTJobAbortCriteria+  pFailureType_+  pAction_+  pThresholdPercentage_+  pMinNumberOfExecutedThings_ =+    IoTJobAbortCriteria'+      { failureType = pFailureType_,+        action = pAction_,+        thresholdPercentage = pThresholdPercentage_,+        minNumberOfExecutedThings =+          pMinNumberOfExecutedThings_+      }++-- | The type of job deployment failure that can cancel a job.+ioTJobAbortCriteria_failureType :: Lens.Lens' IoTJobAbortCriteria IoTJobExecutionFailureType+ioTJobAbortCriteria_failureType = Lens.lens (\IoTJobAbortCriteria' {failureType} -> failureType) (\s@IoTJobAbortCriteria' {} a -> s {failureType = a} :: IoTJobAbortCriteria)++-- | The action to perform when the criteria are met.+ioTJobAbortCriteria_action :: Lens.Lens' IoTJobAbortCriteria IoTJobAbortAction+ioTJobAbortCriteria_action = Lens.lens (\IoTJobAbortCriteria' {action} -> action) (\s@IoTJobAbortCriteria' {} a -> s {action = a} :: IoTJobAbortCriteria)++-- | The minimum percentage of @failureType@ failures that occur before the+-- job can cancel.+--+-- This parameter supports up to two digits after the decimal (for example,+-- you can specify @10.9@ or @10.99@, but not @10.999@).+ioTJobAbortCriteria_thresholdPercentage :: Lens.Lens' IoTJobAbortCriteria Prelude.Double+ioTJobAbortCriteria_thresholdPercentage = Lens.lens (\IoTJobAbortCriteria' {thresholdPercentage} -> thresholdPercentage) (\s@IoTJobAbortCriteria' {} a -> s {thresholdPercentage = a} :: IoTJobAbortCriteria)++-- | The minimum number of things that receive the configuration before the+-- job can cancel.+ioTJobAbortCriteria_minNumberOfExecutedThings :: Lens.Lens' IoTJobAbortCriteria Prelude.Natural+ioTJobAbortCriteria_minNumberOfExecutedThings = Lens.lens (\IoTJobAbortCriteria' {minNumberOfExecutedThings} -> minNumberOfExecutedThings) (\s@IoTJobAbortCriteria' {} a -> s {minNumberOfExecutedThings = a} :: IoTJobAbortCriteria)++instance Data.FromJSON IoTJobAbortCriteria where+  parseJSON =+    Data.withObject+      "IoTJobAbortCriteria"+      ( \x ->+          IoTJobAbortCriteria'+            Prelude.<$> (x Data..: "failureType")+            Prelude.<*> (x Data..: "action")+            Prelude.<*> (x Data..: "thresholdPercentage")+            Prelude.<*> (x Data..: "minNumberOfExecutedThings")+      )++instance Prelude.Hashable IoTJobAbortCriteria where+  hashWithSalt _salt IoTJobAbortCriteria' {..} =+    _salt+      `Prelude.hashWithSalt` failureType+      `Prelude.hashWithSalt` action+      `Prelude.hashWithSalt` thresholdPercentage+      `Prelude.hashWithSalt` minNumberOfExecutedThings++instance Prelude.NFData IoTJobAbortCriteria where+  rnf IoTJobAbortCriteria' {..} =+    Prelude.rnf failureType+      `Prelude.seq` Prelude.rnf action+      `Prelude.seq` Prelude.rnf thresholdPercentage+      `Prelude.seq` Prelude.rnf minNumberOfExecutedThings++instance Data.ToJSON IoTJobAbortCriteria where+  toJSON IoTJobAbortCriteria' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("failureType" Data..= failureType),+            Prelude.Just ("action" Data..= action),+            Prelude.Just+              ("thresholdPercentage" Data..= thresholdPercentage),+            Prelude.Just+              ( "minNumberOfExecutedThings"+                  Data..= minNumberOfExecutedThings+              )+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/IoTJobExecutionFailureType.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.GreengrassV2.Types.IoTJobExecutionFailureType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.IoTJobExecutionFailureType+  ( IoTJobExecutionFailureType+      ( ..,+        IoTJobExecutionFailureType_ALL,+        IoTJobExecutionFailureType_FAILED,+        IoTJobExecutionFailureType_REJECTED,+        IoTJobExecutionFailureType_TIMED_OUT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype IoTJobExecutionFailureType = IoTJobExecutionFailureType'+  { fromIoTJobExecutionFailureType ::+      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 IoTJobExecutionFailureType_ALL :: IoTJobExecutionFailureType+pattern IoTJobExecutionFailureType_ALL = IoTJobExecutionFailureType' "ALL"++pattern IoTJobExecutionFailureType_FAILED :: IoTJobExecutionFailureType+pattern IoTJobExecutionFailureType_FAILED = IoTJobExecutionFailureType' "FAILED"++pattern IoTJobExecutionFailureType_REJECTED :: IoTJobExecutionFailureType+pattern IoTJobExecutionFailureType_REJECTED = IoTJobExecutionFailureType' "REJECTED"++pattern IoTJobExecutionFailureType_TIMED_OUT :: IoTJobExecutionFailureType+pattern IoTJobExecutionFailureType_TIMED_OUT = IoTJobExecutionFailureType' "TIMED_OUT"++{-# COMPLETE+  IoTJobExecutionFailureType_ALL,+  IoTJobExecutionFailureType_FAILED,+  IoTJobExecutionFailureType_REJECTED,+  IoTJobExecutionFailureType_TIMED_OUT,+  IoTJobExecutionFailureType'+  #-}
+ gen/Amazonka/GreengrassV2/Types/IoTJobExecutionsRolloutConfig.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.GreengrassV2.Types.IoTJobExecutionsRolloutConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.IoTJobExecutionsRolloutConfig where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.IoTJobExponentialRolloutRate+import qualified Amazonka.Prelude as Prelude++-- | Contains information about the rollout configuration for a job. This+-- configuration defines the rate at which the job deploys a configuration+-- to a fleet of target devices.+--+-- /See:/ 'newIoTJobExecutionsRolloutConfig' smart constructor.+data IoTJobExecutionsRolloutConfig = IoTJobExecutionsRolloutConfig'+  { -- | The exponential rate to increase the job rollout rate.+    exponentialRate :: Prelude.Maybe IoTJobExponentialRolloutRate,+    -- | The maximum number of devices that receive a pending job notification,+    -- per minute.+    maximumPerMinute :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IoTJobExecutionsRolloutConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'exponentialRate', 'ioTJobExecutionsRolloutConfig_exponentialRate' - The exponential rate to increase the job rollout rate.+--+-- 'maximumPerMinute', 'ioTJobExecutionsRolloutConfig_maximumPerMinute' - The maximum number of devices that receive a pending job notification,+-- per minute.+newIoTJobExecutionsRolloutConfig ::+  IoTJobExecutionsRolloutConfig+newIoTJobExecutionsRolloutConfig =+  IoTJobExecutionsRolloutConfig'+    { exponentialRate =+        Prelude.Nothing,+      maximumPerMinute = Prelude.Nothing+    }++-- | The exponential rate to increase the job rollout rate.+ioTJobExecutionsRolloutConfig_exponentialRate :: Lens.Lens' IoTJobExecutionsRolloutConfig (Prelude.Maybe IoTJobExponentialRolloutRate)+ioTJobExecutionsRolloutConfig_exponentialRate = Lens.lens (\IoTJobExecutionsRolloutConfig' {exponentialRate} -> exponentialRate) (\s@IoTJobExecutionsRolloutConfig' {} a -> s {exponentialRate = a} :: IoTJobExecutionsRolloutConfig)++-- | The maximum number of devices that receive a pending job notification,+-- per minute.+ioTJobExecutionsRolloutConfig_maximumPerMinute :: Lens.Lens' IoTJobExecutionsRolloutConfig (Prelude.Maybe Prelude.Natural)+ioTJobExecutionsRolloutConfig_maximumPerMinute = Lens.lens (\IoTJobExecutionsRolloutConfig' {maximumPerMinute} -> maximumPerMinute) (\s@IoTJobExecutionsRolloutConfig' {} a -> s {maximumPerMinute = a} :: IoTJobExecutionsRolloutConfig)++instance Data.FromJSON IoTJobExecutionsRolloutConfig where+  parseJSON =+    Data.withObject+      "IoTJobExecutionsRolloutConfig"+      ( \x ->+          IoTJobExecutionsRolloutConfig'+            Prelude.<$> (x Data..:? "exponentialRate")+            Prelude.<*> (x Data..:? "maximumPerMinute")+      )++instance+  Prelude.Hashable+    IoTJobExecutionsRolloutConfig+  where+  hashWithSalt _salt IoTJobExecutionsRolloutConfig' {..} =+    _salt+      `Prelude.hashWithSalt` exponentialRate+      `Prelude.hashWithSalt` maximumPerMinute++instance Prelude.NFData IoTJobExecutionsRolloutConfig where+  rnf IoTJobExecutionsRolloutConfig' {..} =+    Prelude.rnf exponentialRate+      `Prelude.seq` Prelude.rnf maximumPerMinute++instance Data.ToJSON IoTJobExecutionsRolloutConfig where+  toJSON IoTJobExecutionsRolloutConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("exponentialRate" Data..=)+              Prelude.<$> exponentialRate,+            ("maximumPerMinute" Data..=)+              Prelude.<$> maximumPerMinute+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/IoTJobExponentialRolloutRate.hs view
@@ -0,0 +1,141 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.IoTJobExponentialRolloutRate+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.IoTJobExponentialRolloutRate where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.IoTJobRateIncreaseCriteria+import qualified Amazonka.Prelude as Prelude++-- | Contains information about an exponential rollout rate for a+-- configuration deployment job.+--+-- /See:/ 'newIoTJobExponentialRolloutRate' smart constructor.+data IoTJobExponentialRolloutRate = IoTJobExponentialRolloutRate'+  { -- | The minimum number of devices that receive a pending job notification,+    -- per minute, when the job starts. This parameter defines the initial+    -- rollout rate of the job.+    baseRatePerMinute :: Prelude.Natural,+    -- | The exponential factor to increase the rollout rate for the job.+    --+    -- This parameter supports up to one digit after the decimal (for example,+    -- you can specify @1.5@, but not @1.55@).+    incrementFactor :: Prelude.Double,+    -- | The criteria to increase the rollout rate for the job.+    rateIncreaseCriteria :: IoTJobRateIncreaseCriteria+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IoTJobExponentialRolloutRate' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'baseRatePerMinute', 'ioTJobExponentialRolloutRate_baseRatePerMinute' - The minimum number of devices that receive a pending job notification,+-- per minute, when the job starts. This parameter defines the initial+-- rollout rate of the job.+--+-- 'incrementFactor', 'ioTJobExponentialRolloutRate_incrementFactor' - The exponential factor to increase the rollout rate for the job.+--+-- This parameter supports up to one digit after the decimal (for example,+-- you can specify @1.5@, but not @1.55@).+--+-- 'rateIncreaseCriteria', 'ioTJobExponentialRolloutRate_rateIncreaseCriteria' - The criteria to increase the rollout rate for the job.+newIoTJobExponentialRolloutRate ::+  -- | 'baseRatePerMinute'+  Prelude.Natural ->+  -- | 'incrementFactor'+  Prelude.Double ->+  -- | 'rateIncreaseCriteria'+  IoTJobRateIncreaseCriteria ->+  IoTJobExponentialRolloutRate+newIoTJobExponentialRolloutRate+  pBaseRatePerMinute_+  pIncrementFactor_+  pRateIncreaseCriteria_ =+    IoTJobExponentialRolloutRate'+      { baseRatePerMinute =+          pBaseRatePerMinute_,+        incrementFactor = pIncrementFactor_,+        rateIncreaseCriteria = pRateIncreaseCriteria_+      }++-- | The minimum number of devices that receive a pending job notification,+-- per minute, when the job starts. This parameter defines the initial+-- rollout rate of the job.+ioTJobExponentialRolloutRate_baseRatePerMinute :: Lens.Lens' IoTJobExponentialRolloutRate Prelude.Natural+ioTJobExponentialRolloutRate_baseRatePerMinute = Lens.lens (\IoTJobExponentialRolloutRate' {baseRatePerMinute} -> baseRatePerMinute) (\s@IoTJobExponentialRolloutRate' {} a -> s {baseRatePerMinute = a} :: IoTJobExponentialRolloutRate)++-- | The exponential factor to increase the rollout rate for the job.+--+-- This parameter supports up to one digit after the decimal (for example,+-- you can specify @1.5@, but not @1.55@).+ioTJobExponentialRolloutRate_incrementFactor :: Lens.Lens' IoTJobExponentialRolloutRate Prelude.Double+ioTJobExponentialRolloutRate_incrementFactor = Lens.lens (\IoTJobExponentialRolloutRate' {incrementFactor} -> incrementFactor) (\s@IoTJobExponentialRolloutRate' {} a -> s {incrementFactor = a} :: IoTJobExponentialRolloutRate)++-- | The criteria to increase the rollout rate for the job.+ioTJobExponentialRolloutRate_rateIncreaseCriteria :: Lens.Lens' IoTJobExponentialRolloutRate IoTJobRateIncreaseCriteria+ioTJobExponentialRolloutRate_rateIncreaseCriteria = Lens.lens (\IoTJobExponentialRolloutRate' {rateIncreaseCriteria} -> rateIncreaseCriteria) (\s@IoTJobExponentialRolloutRate' {} a -> s {rateIncreaseCriteria = a} :: IoTJobExponentialRolloutRate)++instance Data.FromJSON IoTJobExponentialRolloutRate where+  parseJSON =+    Data.withObject+      "IoTJobExponentialRolloutRate"+      ( \x ->+          IoTJobExponentialRolloutRate'+            Prelude.<$> (x Data..: "baseRatePerMinute")+            Prelude.<*> (x Data..: "incrementFactor")+            Prelude.<*> (x Data..: "rateIncreaseCriteria")+      )++instance+  Prelude.Hashable+    IoTJobExponentialRolloutRate+  where+  hashWithSalt _salt IoTJobExponentialRolloutRate' {..} =+    _salt+      `Prelude.hashWithSalt` baseRatePerMinute+      `Prelude.hashWithSalt` incrementFactor+      `Prelude.hashWithSalt` rateIncreaseCriteria++instance Prelude.NFData IoTJobExponentialRolloutRate where+  rnf IoTJobExponentialRolloutRate' {..} =+    Prelude.rnf baseRatePerMinute+      `Prelude.seq` Prelude.rnf incrementFactor+      `Prelude.seq` Prelude.rnf rateIncreaseCriteria++instance Data.ToJSON IoTJobExponentialRolloutRate where+  toJSON IoTJobExponentialRolloutRate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("baseRatePerMinute" Data..= baseRatePerMinute),+            Prelude.Just+              ("incrementFactor" Data..= incrementFactor),+            Prelude.Just+              ( "rateIncreaseCriteria"+                  Data..= rateIncreaseCriteria+              )+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/IoTJobRateIncreaseCriteria.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.GreengrassV2.Types.IoTJobRateIncreaseCriteria+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.IoTJobRateIncreaseCriteria 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 criteria to meet before a job increases its+-- rollout rate. Specify either @numberOfNotifiedThings@ or+-- @numberOfSucceededThings@.+--+-- /See:/ 'newIoTJobRateIncreaseCriteria' smart constructor.+data IoTJobRateIncreaseCriteria = IoTJobRateIncreaseCriteria'+  { -- | The number of devices to receive the job notification before the rollout+    -- rate increases.+    numberOfNotifiedThings :: Prelude.Maybe Prelude.Natural,+    -- | The number of devices to successfully run the configuration job before+    -- the rollout rate increases.+    numberOfSucceededThings :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IoTJobRateIncreaseCriteria' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'numberOfNotifiedThings', 'ioTJobRateIncreaseCriteria_numberOfNotifiedThings' - The number of devices to receive the job notification before the rollout+-- rate increases.+--+-- 'numberOfSucceededThings', 'ioTJobRateIncreaseCriteria_numberOfSucceededThings' - The number of devices to successfully run the configuration job before+-- the rollout rate increases.+newIoTJobRateIncreaseCriteria ::+  IoTJobRateIncreaseCriteria+newIoTJobRateIncreaseCriteria =+  IoTJobRateIncreaseCriteria'+    { numberOfNotifiedThings =+        Prelude.Nothing,+      numberOfSucceededThings = Prelude.Nothing+    }++-- | The number of devices to receive the job notification before the rollout+-- rate increases.+ioTJobRateIncreaseCriteria_numberOfNotifiedThings :: Lens.Lens' IoTJobRateIncreaseCriteria (Prelude.Maybe Prelude.Natural)+ioTJobRateIncreaseCriteria_numberOfNotifiedThings = Lens.lens (\IoTJobRateIncreaseCriteria' {numberOfNotifiedThings} -> numberOfNotifiedThings) (\s@IoTJobRateIncreaseCriteria' {} a -> s {numberOfNotifiedThings = a} :: IoTJobRateIncreaseCriteria)++-- | The number of devices to successfully run the configuration job before+-- the rollout rate increases.+ioTJobRateIncreaseCriteria_numberOfSucceededThings :: Lens.Lens' IoTJobRateIncreaseCriteria (Prelude.Maybe Prelude.Natural)+ioTJobRateIncreaseCriteria_numberOfSucceededThings = Lens.lens (\IoTJobRateIncreaseCriteria' {numberOfSucceededThings} -> numberOfSucceededThings) (\s@IoTJobRateIncreaseCriteria' {} a -> s {numberOfSucceededThings = a} :: IoTJobRateIncreaseCriteria)++instance Data.FromJSON IoTJobRateIncreaseCriteria where+  parseJSON =+    Data.withObject+      "IoTJobRateIncreaseCriteria"+      ( \x ->+          IoTJobRateIncreaseCriteria'+            Prelude.<$> (x Data..:? "numberOfNotifiedThings")+            Prelude.<*> (x Data..:? "numberOfSucceededThings")+      )++instance Prelude.Hashable IoTJobRateIncreaseCriteria where+  hashWithSalt _salt IoTJobRateIncreaseCriteria' {..} =+    _salt+      `Prelude.hashWithSalt` numberOfNotifiedThings+      `Prelude.hashWithSalt` numberOfSucceededThings++instance Prelude.NFData IoTJobRateIncreaseCriteria where+  rnf IoTJobRateIncreaseCriteria' {..} =+    Prelude.rnf numberOfNotifiedThings+      `Prelude.seq` Prelude.rnf numberOfSucceededThings++instance Data.ToJSON IoTJobRateIncreaseCriteria where+  toJSON IoTJobRateIncreaseCriteria' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("numberOfNotifiedThings" Data..=)+              Prelude.<$> numberOfNotifiedThings,+            ("numberOfSucceededThings" Data..=)+              Prelude.<$> numberOfSucceededThings+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/IoTJobTimeoutConfig.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.GreengrassV2.Types.IoTJobTimeoutConfig+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.IoTJobTimeoutConfig 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 the timeout configuration for a job.+--+-- /See:/ 'newIoTJobTimeoutConfig' smart constructor.+data IoTJobTimeoutConfig = IoTJobTimeoutConfig'+  { -- | The amount of time, in minutes, that devices have to complete the job.+    -- The timer starts when the job status is set to @IN_PROGRESS@. If the job+    -- status doesn\'t change to a terminal state before the time expires, then+    -- the job status is set to @TIMED_OUT@.+    --+    -- The timeout interval must be between 1 minute and 7 days (10080+    -- minutes).+    inProgressTimeoutInMinutes :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IoTJobTimeoutConfig' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'inProgressTimeoutInMinutes', 'ioTJobTimeoutConfig_inProgressTimeoutInMinutes' - The amount of time, in minutes, that devices have to complete the job.+-- The timer starts when the job status is set to @IN_PROGRESS@. If the job+-- status doesn\'t change to a terminal state before the time expires, then+-- the job status is set to @TIMED_OUT@.+--+-- The timeout interval must be between 1 minute and 7 days (10080+-- minutes).+newIoTJobTimeoutConfig ::+  IoTJobTimeoutConfig+newIoTJobTimeoutConfig =+  IoTJobTimeoutConfig'+    { inProgressTimeoutInMinutes =+        Prelude.Nothing+    }++-- | The amount of time, in minutes, that devices have to complete the job.+-- The timer starts when the job status is set to @IN_PROGRESS@. If the job+-- status doesn\'t change to a terminal state before the time expires, then+-- the job status is set to @TIMED_OUT@.+--+-- The timeout interval must be between 1 minute and 7 days (10080+-- minutes).+ioTJobTimeoutConfig_inProgressTimeoutInMinutes :: Lens.Lens' IoTJobTimeoutConfig (Prelude.Maybe Prelude.Integer)+ioTJobTimeoutConfig_inProgressTimeoutInMinutes = Lens.lens (\IoTJobTimeoutConfig' {inProgressTimeoutInMinutes} -> inProgressTimeoutInMinutes) (\s@IoTJobTimeoutConfig' {} a -> s {inProgressTimeoutInMinutes = a} :: IoTJobTimeoutConfig)++instance Data.FromJSON IoTJobTimeoutConfig where+  parseJSON =+    Data.withObject+      "IoTJobTimeoutConfig"+      ( \x ->+          IoTJobTimeoutConfig'+            Prelude.<$> (x Data..:? "inProgressTimeoutInMinutes")+      )++instance Prelude.Hashable IoTJobTimeoutConfig where+  hashWithSalt _salt IoTJobTimeoutConfig' {..} =+    _salt+      `Prelude.hashWithSalt` inProgressTimeoutInMinutes++instance Prelude.NFData IoTJobTimeoutConfig where+  rnf IoTJobTimeoutConfig' {..} =+    Prelude.rnf inProgressTimeoutInMinutes++instance Data.ToJSON IoTJobTimeoutConfig where+  toJSON IoTJobTimeoutConfig' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("inProgressTimeoutInMinutes" Data..=)+              Prelude.<$> inProgressTimeoutInMinutes+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/LambdaContainerParams.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.GreengrassV2.Types.LambdaContainerParams+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.LambdaContainerParams where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.LambdaDeviceMount+import Amazonka.GreengrassV2.Types.LambdaVolumeMount+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a container in which Lambda functions run on+-- Greengrass core devices.+--+-- /See:/ 'newLambdaContainerParams' smart constructor.+data LambdaContainerParams = LambdaContainerParams'+  { -- | The list of system devices that the container can access.+    devices :: Prelude.Maybe [LambdaDeviceMount],+    -- | The memory size of the container, expressed in kilobytes.+    --+    -- Default: @16384@ (16 MB)+    memorySizeInKB :: Prelude.Maybe Prelude.Int,+    -- | Whether or not the container can read information from the device\'s+    -- @\/sys@ folder.+    --+    -- Default: @false@+    mountROSysfs :: Prelude.Maybe Prelude.Bool,+    -- | The list of volumes that the container can access.+    volumes :: Prelude.Maybe [LambdaVolumeMount]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LambdaContainerParams' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'devices', 'lambdaContainerParams_devices' - The list of system devices that the container can access.+--+-- 'memorySizeInKB', 'lambdaContainerParams_memorySizeInKB' - The memory size of the container, expressed in kilobytes.+--+-- Default: @16384@ (16 MB)+--+-- 'mountROSysfs', 'lambdaContainerParams_mountROSysfs' - Whether or not the container can read information from the device\'s+-- @\/sys@ folder.+--+-- Default: @false@+--+-- 'volumes', 'lambdaContainerParams_volumes' - The list of volumes that the container can access.+newLambdaContainerParams ::+  LambdaContainerParams+newLambdaContainerParams =+  LambdaContainerParams'+    { devices = Prelude.Nothing,+      memorySizeInKB = Prelude.Nothing,+      mountROSysfs = Prelude.Nothing,+      volumes = Prelude.Nothing+    }++-- | The list of system devices that the container can access.+lambdaContainerParams_devices :: Lens.Lens' LambdaContainerParams (Prelude.Maybe [LambdaDeviceMount])+lambdaContainerParams_devices = Lens.lens (\LambdaContainerParams' {devices} -> devices) (\s@LambdaContainerParams' {} a -> s {devices = a} :: LambdaContainerParams) Prelude.. Lens.mapping Lens.coerced++-- | The memory size of the container, expressed in kilobytes.+--+-- Default: @16384@ (16 MB)+lambdaContainerParams_memorySizeInKB :: Lens.Lens' LambdaContainerParams (Prelude.Maybe Prelude.Int)+lambdaContainerParams_memorySizeInKB = Lens.lens (\LambdaContainerParams' {memorySizeInKB} -> memorySizeInKB) (\s@LambdaContainerParams' {} a -> s {memorySizeInKB = a} :: LambdaContainerParams)++-- | Whether or not the container can read information from the device\'s+-- @\/sys@ folder.+--+-- Default: @false@+lambdaContainerParams_mountROSysfs :: Lens.Lens' LambdaContainerParams (Prelude.Maybe Prelude.Bool)+lambdaContainerParams_mountROSysfs = Lens.lens (\LambdaContainerParams' {mountROSysfs} -> mountROSysfs) (\s@LambdaContainerParams' {} a -> s {mountROSysfs = a} :: LambdaContainerParams)++-- | The list of volumes that the container can access.+lambdaContainerParams_volumes :: Lens.Lens' LambdaContainerParams (Prelude.Maybe [LambdaVolumeMount])+lambdaContainerParams_volumes = Lens.lens (\LambdaContainerParams' {volumes} -> volumes) (\s@LambdaContainerParams' {} a -> s {volumes = a} :: LambdaContainerParams) Prelude.. Lens.mapping Lens.coerced++instance Prelude.Hashable LambdaContainerParams where+  hashWithSalt _salt LambdaContainerParams' {..} =+    _salt+      `Prelude.hashWithSalt` devices+      `Prelude.hashWithSalt` memorySizeInKB+      `Prelude.hashWithSalt` mountROSysfs+      `Prelude.hashWithSalt` volumes++instance Prelude.NFData LambdaContainerParams where+  rnf LambdaContainerParams' {..} =+    Prelude.rnf devices+      `Prelude.seq` Prelude.rnf memorySizeInKB+      `Prelude.seq` Prelude.rnf mountROSysfs+      `Prelude.seq` Prelude.rnf volumes++instance Data.ToJSON LambdaContainerParams where+  toJSON LambdaContainerParams' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("devices" Data..=) Prelude.<$> devices,+            ("memorySizeInKB" Data..=)+              Prelude.<$> memorySizeInKB,+            ("mountROSysfs" Data..=) Prelude.<$> mountROSysfs,+            ("volumes" Data..=) Prelude.<$> volumes+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/LambdaDeviceMount.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.GreengrassV2.Types.LambdaDeviceMount+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.LambdaDeviceMount where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.LambdaFilesystemPermission+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a device that Linux processes in a container+-- can access.+--+-- /See:/ 'newLambdaDeviceMount' smart constructor.+data LambdaDeviceMount = LambdaDeviceMount'+  { -- | Whether or not to add the component\'s system user as an owner of the+    -- device.+    --+    -- Default: @false@+    addGroupOwner :: Prelude.Maybe Prelude.Bool,+    -- | The permission to access the device: read\/only (@ro@) or read\/write+    -- (@rw@).+    --+    -- Default: @ro@+    permission :: Prelude.Maybe LambdaFilesystemPermission,+    -- | The mount path for the device in the file system.+    path :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LambdaDeviceMount' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addGroupOwner', 'lambdaDeviceMount_addGroupOwner' - Whether or not to add the component\'s system user as an owner of the+-- device.+--+-- Default: @false@+--+-- 'permission', 'lambdaDeviceMount_permission' - The permission to access the device: read\/only (@ro@) or read\/write+-- (@rw@).+--+-- Default: @ro@+--+-- 'path', 'lambdaDeviceMount_path' - The mount path for the device in the file system.+newLambdaDeviceMount ::+  -- | 'path'+  Prelude.Text ->+  LambdaDeviceMount+newLambdaDeviceMount pPath_ =+  LambdaDeviceMount'+    { addGroupOwner = Prelude.Nothing,+      permission = Prelude.Nothing,+      path = pPath_+    }++-- | Whether or not to add the component\'s system user as an owner of the+-- device.+--+-- Default: @false@+lambdaDeviceMount_addGroupOwner :: Lens.Lens' LambdaDeviceMount (Prelude.Maybe Prelude.Bool)+lambdaDeviceMount_addGroupOwner = Lens.lens (\LambdaDeviceMount' {addGroupOwner} -> addGroupOwner) (\s@LambdaDeviceMount' {} a -> s {addGroupOwner = a} :: LambdaDeviceMount)++-- | The permission to access the device: read\/only (@ro@) or read\/write+-- (@rw@).+--+-- Default: @ro@+lambdaDeviceMount_permission :: Lens.Lens' LambdaDeviceMount (Prelude.Maybe LambdaFilesystemPermission)+lambdaDeviceMount_permission = Lens.lens (\LambdaDeviceMount' {permission} -> permission) (\s@LambdaDeviceMount' {} a -> s {permission = a} :: LambdaDeviceMount)++-- | The mount path for the device in the file system.+lambdaDeviceMount_path :: Lens.Lens' LambdaDeviceMount Prelude.Text+lambdaDeviceMount_path = Lens.lens (\LambdaDeviceMount' {path} -> path) (\s@LambdaDeviceMount' {} a -> s {path = a} :: LambdaDeviceMount)++instance Prelude.Hashable LambdaDeviceMount where+  hashWithSalt _salt LambdaDeviceMount' {..} =+    _salt+      `Prelude.hashWithSalt` addGroupOwner+      `Prelude.hashWithSalt` permission+      `Prelude.hashWithSalt` path++instance Prelude.NFData LambdaDeviceMount where+  rnf LambdaDeviceMount' {..} =+    Prelude.rnf addGroupOwner+      `Prelude.seq` Prelude.rnf permission+      `Prelude.seq` Prelude.rnf path++instance Data.ToJSON LambdaDeviceMount where+  toJSON LambdaDeviceMount' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("addGroupOwner" Data..=) Prelude.<$> addGroupOwner,+            ("permission" Data..=) Prelude.<$> permission,+            Prelude.Just ("path" Data..= path)+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/LambdaEventSource.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.GreengrassV2.Types.LambdaEventSource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.LambdaEventSource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.LambdaEventSourceType+import qualified Amazonka.Prelude as Prelude++-- | Contains information about an event source for an Lambda function. The+-- event source defines the topics on which this Lambda function subscribes+-- to receive messages that run the function.+--+-- /See:/ 'newLambdaEventSource' smart constructor.+data LambdaEventSource = LambdaEventSource'+  { -- | The topic to which to subscribe to receive event messages.+    topic :: Prelude.Text,+    -- | The type of event source. Choose from the following options:+    --+    -- -   @PUB_SUB@ – Subscribe to local publish\/subscribe messages. This+    --     event source type doesn\'t support MQTT wildcards (@+@ and @#@) in+    --     the event source topic.+    --+    -- -   @IOT_CORE@ – Subscribe to Amazon Web Services IoT Core MQTT+    --     messages. This event source type supports MQTT wildcards (@+@ and+    --     @#@) in the event source topic.+    type' :: LambdaEventSourceType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LambdaEventSource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'lambdaEventSource_topic' - The topic to which to subscribe to receive event messages.+--+-- 'type'', 'lambdaEventSource_type' - The type of event source. Choose from the following options:+--+-- -   @PUB_SUB@ – Subscribe to local publish\/subscribe messages. This+--     event source type doesn\'t support MQTT wildcards (@+@ and @#@) in+--     the event source topic.+--+-- -   @IOT_CORE@ – Subscribe to Amazon Web Services IoT Core MQTT+--     messages. This event source type supports MQTT wildcards (@+@ and+--     @#@) in the event source topic.+newLambdaEventSource ::+  -- | 'topic'+  Prelude.Text ->+  -- | 'type''+  LambdaEventSourceType ->+  LambdaEventSource+newLambdaEventSource pTopic_ pType_ =+  LambdaEventSource' {topic = pTopic_, type' = pType_}++-- | The topic to which to subscribe to receive event messages.+lambdaEventSource_topic :: Lens.Lens' LambdaEventSource Prelude.Text+lambdaEventSource_topic = Lens.lens (\LambdaEventSource' {topic} -> topic) (\s@LambdaEventSource' {} a -> s {topic = a} :: LambdaEventSource)++-- | The type of event source. Choose from the following options:+--+-- -   @PUB_SUB@ – Subscribe to local publish\/subscribe messages. This+--     event source type doesn\'t support MQTT wildcards (@+@ and @#@) in+--     the event source topic.+--+-- -   @IOT_CORE@ – Subscribe to Amazon Web Services IoT Core MQTT+--     messages. This event source type supports MQTT wildcards (@+@ and+--     @#@) in the event source topic.+lambdaEventSource_type :: Lens.Lens' LambdaEventSource LambdaEventSourceType+lambdaEventSource_type = Lens.lens (\LambdaEventSource' {type'} -> type') (\s@LambdaEventSource' {} a -> s {type' = a} :: LambdaEventSource)++instance Prelude.Hashable LambdaEventSource where+  hashWithSalt _salt LambdaEventSource' {..} =+    _salt+      `Prelude.hashWithSalt` topic+      `Prelude.hashWithSalt` type'++instance Prelude.NFData LambdaEventSource where+  rnf LambdaEventSource' {..} =+    Prelude.rnf topic `Prelude.seq` Prelude.rnf type'++instance Data.ToJSON LambdaEventSource where+  toJSON LambdaEventSource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("topic" Data..= topic),+            Prelude.Just ("type" Data..= type')+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/LambdaEventSourceType.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.GreengrassV2.Types.LambdaEventSourceType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.LambdaEventSourceType+  ( LambdaEventSourceType+      ( ..,+        LambdaEventSourceType_IOT_CORE,+        LambdaEventSourceType_PUB_SUB+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LambdaEventSourceType = LambdaEventSourceType'+  { fromLambdaEventSourceType ::+      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 LambdaEventSourceType_IOT_CORE :: LambdaEventSourceType+pattern LambdaEventSourceType_IOT_CORE = LambdaEventSourceType' "IOT_CORE"++pattern LambdaEventSourceType_PUB_SUB :: LambdaEventSourceType+pattern LambdaEventSourceType_PUB_SUB = LambdaEventSourceType' "PUB_SUB"++{-# COMPLETE+  LambdaEventSourceType_IOT_CORE,+  LambdaEventSourceType_PUB_SUB,+  LambdaEventSourceType'+  #-}
+ gen/Amazonka/GreengrassV2/Types/LambdaExecutionParameters.hs view
@@ -0,0 +1,274 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.LambdaExecutionParameters+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.LambdaExecutionParameters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.LambdaEventSource+import Amazonka.GreengrassV2.Types.LambdaInputPayloadEncodingType+import Amazonka.GreengrassV2.Types.LambdaLinuxProcessParams+import qualified Amazonka.Prelude as Prelude++-- | Contains parameters for a Lambda function that runs on IoT Greengrass.+--+-- /See:/ 'newLambdaExecutionParameters' smart constructor.+data LambdaExecutionParameters = LambdaExecutionParameters'+  { -- | The map of environment variables that are available to the Lambda+    -- function when it runs.+    environmentVariables :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The list of event sources to which to subscribe to receive work+    -- messages. The Lambda function runs when it receives a message from an+    -- event source. You can subscribe this function to local+    -- publish\/subscribe messages and Amazon Web Services IoT Core MQTT+    -- messages.+    eventSources :: Prelude.Maybe [LambdaEventSource],+    -- | The list of arguments to pass to the Lambda function when it runs.+    execArgs :: Prelude.Maybe [Prelude.Text],+    -- | The encoding type that the Lambda function supports.+    --+    -- Default: @json@+    inputPayloadEncodingType :: Prelude.Maybe LambdaInputPayloadEncodingType,+    -- | The parameters for the Linux process that contains the Lambda function.+    linuxProcessParams :: Prelude.Maybe LambdaLinuxProcessParams,+    -- | The maximum amount of time in seconds that a non-pinned Lambda function+    -- can idle before the IoT Greengrass Core software stops its process.+    maxIdleTimeInSeconds :: Prelude.Maybe Prelude.Int,+    -- | The maximum number of instances that a non-pinned Lambda function can+    -- run at the same time.+    maxInstancesCount :: Prelude.Maybe Prelude.Int,+    -- | The maximum size of the message queue for the Lambda function component.+    -- The IoT Greengrass core stores messages in a FIFO (first-in-first-out)+    -- queue until it can run the Lambda function to consume each message.+    maxQueueSize :: Prelude.Maybe Prelude.Int,+    -- | Whether or not the Lambda function is pinned, or long-lived.+    --+    -- -   A pinned Lambda function starts when IoT Greengrass starts and keeps+    --     running in its own container.+    --+    -- -   A non-pinned Lambda function starts only when it receives a work+    --     item and exists after it idles for @maxIdleTimeInSeconds@. If the+    --     function has multiple work items, the IoT Greengrass Core software+    --     creates multiple instances of the function.+    --+    -- Default: @true@+    pinned :: Prelude.Maybe Prelude.Bool,+    -- | The interval in seconds at which a pinned (also known as long-lived)+    -- Lambda function component sends status updates to the Lambda manager+    -- component.+    statusTimeoutInSeconds :: Prelude.Maybe Prelude.Int,+    -- | The maximum amount of time in seconds that the Lambda function can+    -- process a work item.+    timeoutInSeconds :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LambdaExecutionParameters' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'environmentVariables', 'lambdaExecutionParameters_environmentVariables' - The map of environment variables that are available to the Lambda+-- function when it runs.+--+-- 'eventSources', 'lambdaExecutionParameters_eventSources' - The list of event sources to which to subscribe to receive work+-- messages. The Lambda function runs when it receives a message from an+-- event source. You can subscribe this function to local+-- publish\/subscribe messages and Amazon Web Services IoT Core MQTT+-- messages.+--+-- 'execArgs', 'lambdaExecutionParameters_execArgs' - The list of arguments to pass to the Lambda function when it runs.+--+-- 'inputPayloadEncodingType', 'lambdaExecutionParameters_inputPayloadEncodingType' - The encoding type that the Lambda function supports.+--+-- Default: @json@+--+-- 'linuxProcessParams', 'lambdaExecutionParameters_linuxProcessParams' - The parameters for the Linux process that contains the Lambda function.+--+-- 'maxIdleTimeInSeconds', 'lambdaExecutionParameters_maxIdleTimeInSeconds' - The maximum amount of time in seconds that a non-pinned Lambda function+-- can idle before the IoT Greengrass Core software stops its process.+--+-- 'maxInstancesCount', 'lambdaExecutionParameters_maxInstancesCount' - The maximum number of instances that a non-pinned Lambda function can+-- run at the same time.+--+-- 'maxQueueSize', 'lambdaExecutionParameters_maxQueueSize' - The maximum size of the message queue for the Lambda function component.+-- The IoT Greengrass core stores messages in a FIFO (first-in-first-out)+-- queue until it can run the Lambda function to consume each message.+--+-- 'pinned', 'lambdaExecutionParameters_pinned' - Whether or not the Lambda function is pinned, or long-lived.+--+-- -   A pinned Lambda function starts when IoT Greengrass starts and keeps+--     running in its own container.+--+-- -   A non-pinned Lambda function starts only when it receives a work+--     item and exists after it idles for @maxIdleTimeInSeconds@. If the+--     function has multiple work items, the IoT Greengrass Core software+--     creates multiple instances of the function.+--+-- Default: @true@+--+-- 'statusTimeoutInSeconds', 'lambdaExecutionParameters_statusTimeoutInSeconds' - The interval in seconds at which a pinned (also known as long-lived)+-- Lambda function component sends status updates to the Lambda manager+-- component.+--+-- 'timeoutInSeconds', 'lambdaExecutionParameters_timeoutInSeconds' - The maximum amount of time in seconds that the Lambda function can+-- process a work item.+newLambdaExecutionParameters ::+  LambdaExecutionParameters+newLambdaExecutionParameters =+  LambdaExecutionParameters'+    { environmentVariables =+        Prelude.Nothing,+      eventSources = Prelude.Nothing,+      execArgs = Prelude.Nothing,+      inputPayloadEncodingType = Prelude.Nothing,+      linuxProcessParams = Prelude.Nothing,+      maxIdleTimeInSeconds = Prelude.Nothing,+      maxInstancesCount = Prelude.Nothing,+      maxQueueSize = Prelude.Nothing,+      pinned = Prelude.Nothing,+      statusTimeoutInSeconds = Prelude.Nothing,+      timeoutInSeconds = Prelude.Nothing+    }++-- | The map of environment variables that are available to the Lambda+-- function when it runs.+lambdaExecutionParameters_environmentVariables :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+lambdaExecutionParameters_environmentVariables = Lens.lens (\LambdaExecutionParameters' {environmentVariables} -> environmentVariables) (\s@LambdaExecutionParameters' {} a -> s {environmentVariables = a} :: LambdaExecutionParameters) Prelude.. Lens.mapping Lens.coerced++-- | The list of event sources to which to subscribe to receive work+-- messages. The Lambda function runs when it receives a message from an+-- event source. You can subscribe this function to local+-- publish\/subscribe messages and Amazon Web Services IoT Core MQTT+-- messages.+lambdaExecutionParameters_eventSources :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe [LambdaEventSource])+lambdaExecutionParameters_eventSources = Lens.lens (\LambdaExecutionParameters' {eventSources} -> eventSources) (\s@LambdaExecutionParameters' {} a -> s {eventSources = a} :: LambdaExecutionParameters) Prelude.. Lens.mapping Lens.coerced++-- | The list of arguments to pass to the Lambda function when it runs.+lambdaExecutionParameters_execArgs :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe [Prelude.Text])+lambdaExecutionParameters_execArgs = Lens.lens (\LambdaExecutionParameters' {execArgs} -> execArgs) (\s@LambdaExecutionParameters' {} a -> s {execArgs = a} :: LambdaExecutionParameters) Prelude.. Lens.mapping Lens.coerced++-- | The encoding type that the Lambda function supports.+--+-- Default: @json@+lambdaExecutionParameters_inputPayloadEncodingType :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe LambdaInputPayloadEncodingType)+lambdaExecutionParameters_inputPayloadEncodingType = Lens.lens (\LambdaExecutionParameters' {inputPayloadEncodingType} -> inputPayloadEncodingType) (\s@LambdaExecutionParameters' {} a -> s {inputPayloadEncodingType = a} :: LambdaExecutionParameters)++-- | The parameters for the Linux process that contains the Lambda function.+lambdaExecutionParameters_linuxProcessParams :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe LambdaLinuxProcessParams)+lambdaExecutionParameters_linuxProcessParams = Lens.lens (\LambdaExecutionParameters' {linuxProcessParams} -> linuxProcessParams) (\s@LambdaExecutionParameters' {} a -> s {linuxProcessParams = a} :: LambdaExecutionParameters)++-- | The maximum amount of time in seconds that a non-pinned Lambda function+-- can idle before the IoT Greengrass Core software stops its process.+lambdaExecutionParameters_maxIdleTimeInSeconds :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Int)+lambdaExecutionParameters_maxIdleTimeInSeconds = Lens.lens (\LambdaExecutionParameters' {maxIdleTimeInSeconds} -> maxIdleTimeInSeconds) (\s@LambdaExecutionParameters' {} a -> s {maxIdleTimeInSeconds = a} :: LambdaExecutionParameters)++-- | The maximum number of instances that a non-pinned Lambda function can+-- run at the same time.+lambdaExecutionParameters_maxInstancesCount :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Int)+lambdaExecutionParameters_maxInstancesCount = Lens.lens (\LambdaExecutionParameters' {maxInstancesCount} -> maxInstancesCount) (\s@LambdaExecutionParameters' {} a -> s {maxInstancesCount = a} :: LambdaExecutionParameters)++-- | The maximum size of the message queue for the Lambda function component.+-- The IoT Greengrass core stores messages in a FIFO (first-in-first-out)+-- queue until it can run the Lambda function to consume each message.+lambdaExecutionParameters_maxQueueSize :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Int)+lambdaExecutionParameters_maxQueueSize = Lens.lens (\LambdaExecutionParameters' {maxQueueSize} -> maxQueueSize) (\s@LambdaExecutionParameters' {} a -> s {maxQueueSize = a} :: LambdaExecutionParameters)++-- | Whether or not the Lambda function is pinned, or long-lived.+--+-- -   A pinned Lambda function starts when IoT Greengrass starts and keeps+--     running in its own container.+--+-- -   A non-pinned Lambda function starts only when it receives a work+--     item and exists after it idles for @maxIdleTimeInSeconds@. If the+--     function has multiple work items, the IoT Greengrass Core software+--     creates multiple instances of the function.+--+-- Default: @true@+lambdaExecutionParameters_pinned :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Bool)+lambdaExecutionParameters_pinned = Lens.lens (\LambdaExecutionParameters' {pinned} -> pinned) (\s@LambdaExecutionParameters' {} a -> s {pinned = a} :: LambdaExecutionParameters)++-- | The interval in seconds at which a pinned (also known as long-lived)+-- Lambda function component sends status updates to the Lambda manager+-- component.+lambdaExecutionParameters_statusTimeoutInSeconds :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Int)+lambdaExecutionParameters_statusTimeoutInSeconds = Lens.lens (\LambdaExecutionParameters' {statusTimeoutInSeconds} -> statusTimeoutInSeconds) (\s@LambdaExecutionParameters' {} a -> s {statusTimeoutInSeconds = a} :: LambdaExecutionParameters)++-- | The maximum amount of time in seconds that the Lambda function can+-- process a work item.+lambdaExecutionParameters_timeoutInSeconds :: Lens.Lens' LambdaExecutionParameters (Prelude.Maybe Prelude.Int)+lambdaExecutionParameters_timeoutInSeconds = Lens.lens (\LambdaExecutionParameters' {timeoutInSeconds} -> timeoutInSeconds) (\s@LambdaExecutionParameters' {} a -> s {timeoutInSeconds = a} :: LambdaExecutionParameters)++instance Prelude.Hashable LambdaExecutionParameters where+  hashWithSalt _salt LambdaExecutionParameters' {..} =+    _salt+      `Prelude.hashWithSalt` environmentVariables+      `Prelude.hashWithSalt` eventSources+      `Prelude.hashWithSalt` execArgs+      `Prelude.hashWithSalt` inputPayloadEncodingType+      `Prelude.hashWithSalt` linuxProcessParams+      `Prelude.hashWithSalt` maxIdleTimeInSeconds+      `Prelude.hashWithSalt` maxInstancesCount+      `Prelude.hashWithSalt` maxQueueSize+      `Prelude.hashWithSalt` pinned+      `Prelude.hashWithSalt` statusTimeoutInSeconds+      `Prelude.hashWithSalt` timeoutInSeconds++instance Prelude.NFData LambdaExecutionParameters where+  rnf LambdaExecutionParameters' {..} =+    Prelude.rnf environmentVariables+      `Prelude.seq` Prelude.rnf eventSources+      `Prelude.seq` Prelude.rnf execArgs+      `Prelude.seq` Prelude.rnf inputPayloadEncodingType+      `Prelude.seq` Prelude.rnf linuxProcessParams+      `Prelude.seq` Prelude.rnf maxIdleTimeInSeconds+      `Prelude.seq` Prelude.rnf maxInstancesCount+      `Prelude.seq` Prelude.rnf maxQueueSize+      `Prelude.seq` Prelude.rnf pinned+      `Prelude.seq` Prelude.rnf statusTimeoutInSeconds+      `Prelude.seq` Prelude.rnf timeoutInSeconds++instance Data.ToJSON LambdaExecutionParameters where+  toJSON LambdaExecutionParameters' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("environmentVariables" Data..=)+              Prelude.<$> environmentVariables,+            ("eventSources" Data..=) Prelude.<$> eventSources,+            ("execArgs" Data..=) Prelude.<$> execArgs,+            ("inputPayloadEncodingType" Data..=)+              Prelude.<$> inputPayloadEncodingType,+            ("linuxProcessParams" Data..=)+              Prelude.<$> linuxProcessParams,+            ("maxIdleTimeInSeconds" Data..=)+              Prelude.<$> maxIdleTimeInSeconds,+            ("maxInstancesCount" Data..=)+              Prelude.<$> maxInstancesCount,+            ("maxQueueSize" Data..=) Prelude.<$> maxQueueSize,+            ("pinned" Data..=) Prelude.<$> pinned,+            ("statusTimeoutInSeconds" Data..=)+              Prelude.<$> statusTimeoutInSeconds,+            ("timeoutInSeconds" Data..=)+              Prelude.<$> timeoutInSeconds+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/LambdaFilesystemPermission.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.GreengrassV2.Types.LambdaFilesystemPermission+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.LambdaFilesystemPermission+  ( LambdaFilesystemPermission+      ( ..,+        LambdaFilesystemPermission_Ro,+        LambdaFilesystemPermission_Rw+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LambdaFilesystemPermission = LambdaFilesystemPermission'+  { fromLambdaFilesystemPermission ::+      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 LambdaFilesystemPermission_Ro :: LambdaFilesystemPermission+pattern LambdaFilesystemPermission_Ro = LambdaFilesystemPermission' "ro"++pattern LambdaFilesystemPermission_Rw :: LambdaFilesystemPermission+pattern LambdaFilesystemPermission_Rw = LambdaFilesystemPermission' "rw"++{-# COMPLETE+  LambdaFilesystemPermission_Ro,+  LambdaFilesystemPermission_Rw,+  LambdaFilesystemPermission'+  #-}
+ gen/Amazonka/GreengrassV2/Types/LambdaFunctionRecipeSource.hs view
@@ -0,0 +1,172 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.LambdaFunctionRecipeSource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.LambdaFunctionRecipeSource where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.ComponentDependencyRequirement+import Amazonka.GreengrassV2.Types.ComponentPlatform+import Amazonka.GreengrassV2.Types.LambdaExecutionParameters+import qualified Amazonka.Prelude as Prelude++-- | Contains information about an Lambda function to import to create a+-- component.+--+-- /See:/ 'newLambdaFunctionRecipeSource' smart constructor.+data LambdaFunctionRecipeSource = LambdaFunctionRecipeSource'+  { -- | The component versions on which this Lambda function component depends.+    componentDependencies :: Prelude.Maybe (Prelude.HashMap Prelude.Text ComponentDependencyRequirement),+    -- | The system and runtime parameters for the Lambda function as it runs on+    -- the Greengrass core device.+    componentLambdaParameters :: Prelude.Maybe LambdaExecutionParameters,+    -- | The name of the component.+    --+    -- Defaults to the name of the Lambda function.+    componentName :: Prelude.Maybe Prelude.Text,+    -- | The platforms that the component version supports.+    componentPlatforms :: Prelude.Maybe [ComponentPlatform],+    -- | The version of the component.+    --+    -- Defaults to the version of the Lambda function as a semantic version.+    -- For example, if your function version is @3@, the component version+    -- becomes @3.0.0@.+    componentVersion :: Prelude.Maybe Prelude.Text,+    -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the Lambda function. The ARN must include the version of the function+    -- to import. You can\'t use version aliases like @$LATEST@.+    lambdaArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LambdaFunctionRecipeSource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'componentDependencies', 'lambdaFunctionRecipeSource_componentDependencies' - The component versions on which this Lambda function component depends.+--+-- 'componentLambdaParameters', 'lambdaFunctionRecipeSource_componentLambdaParameters' - The system and runtime parameters for the Lambda function as it runs on+-- the Greengrass core device.+--+-- 'componentName', 'lambdaFunctionRecipeSource_componentName' - The name of the component.+--+-- Defaults to the name of the Lambda function.+--+-- 'componentPlatforms', 'lambdaFunctionRecipeSource_componentPlatforms' - The platforms that the component version supports.+--+-- 'componentVersion', 'lambdaFunctionRecipeSource_componentVersion' - The version of the component.+--+-- Defaults to the version of the Lambda function as a semantic version.+-- For example, if your function version is @3@, the component version+-- becomes @3.0.0@.+--+-- 'lambdaArn', 'lambdaFunctionRecipeSource_lambdaArn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the Lambda function. The ARN must include the version of the function+-- to import. You can\'t use version aliases like @$LATEST@.+newLambdaFunctionRecipeSource ::+  -- | 'lambdaArn'+  Prelude.Text ->+  LambdaFunctionRecipeSource+newLambdaFunctionRecipeSource pLambdaArn_ =+  LambdaFunctionRecipeSource'+    { componentDependencies =+        Prelude.Nothing,+      componentLambdaParameters = Prelude.Nothing,+      componentName = Prelude.Nothing,+      componentPlatforms = Prelude.Nothing,+      componentVersion = Prelude.Nothing,+      lambdaArn = pLambdaArn_+    }++-- | The component versions on which this Lambda function component depends.+lambdaFunctionRecipeSource_componentDependencies :: Lens.Lens' LambdaFunctionRecipeSource (Prelude.Maybe (Prelude.HashMap Prelude.Text ComponentDependencyRequirement))+lambdaFunctionRecipeSource_componentDependencies = Lens.lens (\LambdaFunctionRecipeSource' {componentDependencies} -> componentDependencies) (\s@LambdaFunctionRecipeSource' {} a -> s {componentDependencies = a} :: LambdaFunctionRecipeSource) Prelude.. Lens.mapping Lens.coerced++-- | The system and runtime parameters for the Lambda function as it runs on+-- the Greengrass core device.+lambdaFunctionRecipeSource_componentLambdaParameters :: Lens.Lens' LambdaFunctionRecipeSource (Prelude.Maybe LambdaExecutionParameters)+lambdaFunctionRecipeSource_componentLambdaParameters = Lens.lens (\LambdaFunctionRecipeSource' {componentLambdaParameters} -> componentLambdaParameters) (\s@LambdaFunctionRecipeSource' {} a -> s {componentLambdaParameters = a} :: LambdaFunctionRecipeSource)++-- | The name of the component.+--+-- Defaults to the name of the Lambda function.+lambdaFunctionRecipeSource_componentName :: Lens.Lens' LambdaFunctionRecipeSource (Prelude.Maybe Prelude.Text)+lambdaFunctionRecipeSource_componentName = Lens.lens (\LambdaFunctionRecipeSource' {componentName} -> componentName) (\s@LambdaFunctionRecipeSource' {} a -> s {componentName = a} :: LambdaFunctionRecipeSource)++-- | The platforms that the component version supports.+lambdaFunctionRecipeSource_componentPlatforms :: Lens.Lens' LambdaFunctionRecipeSource (Prelude.Maybe [ComponentPlatform])+lambdaFunctionRecipeSource_componentPlatforms = Lens.lens (\LambdaFunctionRecipeSource' {componentPlatforms} -> componentPlatforms) (\s@LambdaFunctionRecipeSource' {} a -> s {componentPlatforms = a} :: LambdaFunctionRecipeSource) Prelude.. Lens.mapping Lens.coerced++-- | The version of the component.+--+-- Defaults to the version of the Lambda function as a semantic version.+-- For example, if your function version is @3@, the component version+-- becomes @3.0.0@.+lambdaFunctionRecipeSource_componentVersion :: Lens.Lens' LambdaFunctionRecipeSource (Prelude.Maybe Prelude.Text)+lambdaFunctionRecipeSource_componentVersion = Lens.lens (\LambdaFunctionRecipeSource' {componentVersion} -> componentVersion) (\s@LambdaFunctionRecipeSource' {} a -> s {componentVersion = a} :: LambdaFunctionRecipeSource)++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the Lambda function. The ARN must include the version of the function+-- to import. You can\'t use version aliases like @$LATEST@.+lambdaFunctionRecipeSource_lambdaArn :: Lens.Lens' LambdaFunctionRecipeSource Prelude.Text+lambdaFunctionRecipeSource_lambdaArn = Lens.lens (\LambdaFunctionRecipeSource' {lambdaArn} -> lambdaArn) (\s@LambdaFunctionRecipeSource' {} a -> s {lambdaArn = a} :: LambdaFunctionRecipeSource)++instance Prelude.Hashable LambdaFunctionRecipeSource where+  hashWithSalt _salt LambdaFunctionRecipeSource' {..} =+    _salt+      `Prelude.hashWithSalt` componentDependencies+      `Prelude.hashWithSalt` componentLambdaParameters+      `Prelude.hashWithSalt` componentName+      `Prelude.hashWithSalt` componentPlatforms+      `Prelude.hashWithSalt` componentVersion+      `Prelude.hashWithSalt` lambdaArn++instance Prelude.NFData LambdaFunctionRecipeSource where+  rnf LambdaFunctionRecipeSource' {..} =+    Prelude.rnf componentDependencies+      `Prelude.seq` Prelude.rnf componentLambdaParameters+      `Prelude.seq` Prelude.rnf componentName+      `Prelude.seq` Prelude.rnf componentPlatforms+      `Prelude.seq` Prelude.rnf componentVersion+      `Prelude.seq` Prelude.rnf lambdaArn++instance Data.ToJSON LambdaFunctionRecipeSource where+  toJSON LambdaFunctionRecipeSource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("componentDependencies" Data..=)+              Prelude.<$> componentDependencies,+            ("componentLambdaParameters" Data..=)+              Prelude.<$> componentLambdaParameters,+            ("componentName" Data..=) Prelude.<$> componentName,+            ("componentPlatforms" Data..=)+              Prelude.<$> componentPlatforms,+            ("componentVersion" Data..=)+              Prelude.<$> componentVersion,+            Prelude.Just ("lambdaArn" Data..= lambdaArn)+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/LambdaInputPayloadEncodingType.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.GreengrassV2.Types.LambdaInputPayloadEncodingType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.LambdaInputPayloadEncodingType+  ( LambdaInputPayloadEncodingType+      ( ..,+        LambdaInputPayloadEncodingType_Binary,+        LambdaInputPayloadEncodingType_Json+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LambdaInputPayloadEncodingType = LambdaInputPayloadEncodingType'+  { fromLambdaInputPayloadEncodingType ::+      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 LambdaInputPayloadEncodingType_Binary :: LambdaInputPayloadEncodingType+pattern LambdaInputPayloadEncodingType_Binary = LambdaInputPayloadEncodingType' "binary"++pattern LambdaInputPayloadEncodingType_Json :: LambdaInputPayloadEncodingType+pattern LambdaInputPayloadEncodingType_Json = LambdaInputPayloadEncodingType' "json"++{-# COMPLETE+  LambdaInputPayloadEncodingType_Binary,+  LambdaInputPayloadEncodingType_Json,+  LambdaInputPayloadEncodingType'+  #-}
+ gen/Amazonka/GreengrassV2/Types/LambdaIsolationMode.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.GreengrassV2.Types.LambdaIsolationMode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.LambdaIsolationMode+  ( LambdaIsolationMode+      ( ..,+        LambdaIsolationMode_GreengrassContainer,+        LambdaIsolationMode_NoContainer+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LambdaIsolationMode = LambdaIsolationMode'+  { fromLambdaIsolationMode ::+      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 LambdaIsolationMode_GreengrassContainer :: LambdaIsolationMode+pattern LambdaIsolationMode_GreengrassContainer = LambdaIsolationMode' "GreengrassContainer"++pattern LambdaIsolationMode_NoContainer :: LambdaIsolationMode+pattern LambdaIsolationMode_NoContainer = LambdaIsolationMode' "NoContainer"++{-# COMPLETE+  LambdaIsolationMode_GreengrassContainer,+  LambdaIsolationMode_NoContainer,+  LambdaIsolationMode'+  #-}
+ gen/Amazonka/GreengrassV2/Types/LambdaLinuxProcessParams.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.GreengrassV2.Types.LambdaLinuxProcessParams+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.LambdaLinuxProcessParams where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.LambdaContainerParams+import Amazonka.GreengrassV2.Types.LambdaIsolationMode+import qualified Amazonka.Prelude as Prelude++-- | Contains parameters for a Linux process that contains an Lambda+-- function.+--+-- /See:/ 'newLambdaLinuxProcessParams' smart constructor.+data LambdaLinuxProcessParams = LambdaLinuxProcessParams'+  { -- | The parameters for the container in which the Lambda function runs.+    containerParams :: Prelude.Maybe LambdaContainerParams,+    -- | The isolation mode for the process that contains the Lambda function.+    -- The process can run in an isolated runtime environment inside the IoT+    -- Greengrass container, or as a regular process outside any container.+    --+    -- Default: @GreengrassContainer@+    isolationMode :: Prelude.Maybe LambdaIsolationMode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LambdaLinuxProcessParams' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'containerParams', 'lambdaLinuxProcessParams_containerParams' - The parameters for the container in which the Lambda function runs.+--+-- 'isolationMode', 'lambdaLinuxProcessParams_isolationMode' - The isolation mode for the process that contains the Lambda function.+-- The process can run in an isolated runtime environment inside the IoT+-- Greengrass container, or as a regular process outside any container.+--+-- Default: @GreengrassContainer@+newLambdaLinuxProcessParams ::+  LambdaLinuxProcessParams+newLambdaLinuxProcessParams =+  LambdaLinuxProcessParams'+    { containerParams =+        Prelude.Nothing,+      isolationMode = Prelude.Nothing+    }++-- | The parameters for the container in which the Lambda function runs.+lambdaLinuxProcessParams_containerParams :: Lens.Lens' LambdaLinuxProcessParams (Prelude.Maybe LambdaContainerParams)+lambdaLinuxProcessParams_containerParams = Lens.lens (\LambdaLinuxProcessParams' {containerParams} -> containerParams) (\s@LambdaLinuxProcessParams' {} a -> s {containerParams = a} :: LambdaLinuxProcessParams)++-- | The isolation mode for the process that contains the Lambda function.+-- The process can run in an isolated runtime environment inside the IoT+-- Greengrass container, or as a regular process outside any container.+--+-- Default: @GreengrassContainer@+lambdaLinuxProcessParams_isolationMode :: Lens.Lens' LambdaLinuxProcessParams (Prelude.Maybe LambdaIsolationMode)+lambdaLinuxProcessParams_isolationMode = Lens.lens (\LambdaLinuxProcessParams' {isolationMode} -> isolationMode) (\s@LambdaLinuxProcessParams' {} a -> s {isolationMode = a} :: LambdaLinuxProcessParams)++instance Prelude.Hashable LambdaLinuxProcessParams where+  hashWithSalt _salt LambdaLinuxProcessParams' {..} =+    _salt+      `Prelude.hashWithSalt` containerParams+      `Prelude.hashWithSalt` isolationMode++instance Prelude.NFData LambdaLinuxProcessParams where+  rnf LambdaLinuxProcessParams' {..} =+    Prelude.rnf containerParams+      `Prelude.seq` Prelude.rnf isolationMode++instance Data.ToJSON LambdaLinuxProcessParams where+  toJSON LambdaLinuxProcessParams' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("containerParams" Data..=)+              Prelude.<$> containerParams,+            ("isolationMode" Data..=) Prelude.<$> isolationMode+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/LambdaVolumeMount.hs view
@@ -0,0 +1,133 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.LambdaVolumeMount+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.LambdaVolumeMount where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.LambdaFilesystemPermission+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a volume that Linux processes in a container+-- can access. When you define a volume, the IoT Greengrass Core software+-- mounts the source files to the destination inside the container.+--+-- /See:/ 'newLambdaVolumeMount' smart constructor.+data LambdaVolumeMount = LambdaVolumeMount'+  { -- | Whether or not to add the IoT Greengrass user group as an owner of the+    -- volume.+    --+    -- Default: @false@+    addGroupOwner :: Prelude.Maybe Prelude.Bool,+    -- | The permission to access the volume: read\/only (@ro@) or read\/write+    -- (@rw@).+    --+    -- Default: @ro@+    permission :: Prelude.Maybe LambdaFilesystemPermission,+    -- | The path to the physical volume in the file system.+    sourcePath :: Prelude.Text,+    -- | The path to the logical volume in the file system.+    destinationPath :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LambdaVolumeMount' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'addGroupOwner', 'lambdaVolumeMount_addGroupOwner' - Whether or not to add the IoT Greengrass user group as an owner of the+-- volume.+--+-- Default: @false@+--+-- 'permission', 'lambdaVolumeMount_permission' - The permission to access the volume: read\/only (@ro@) or read\/write+-- (@rw@).+--+-- Default: @ro@+--+-- 'sourcePath', 'lambdaVolumeMount_sourcePath' - The path to the physical volume in the file system.+--+-- 'destinationPath', 'lambdaVolumeMount_destinationPath' - The path to the logical volume in the file system.+newLambdaVolumeMount ::+  -- | 'sourcePath'+  Prelude.Text ->+  -- | 'destinationPath'+  Prelude.Text ->+  LambdaVolumeMount+newLambdaVolumeMount pSourcePath_ pDestinationPath_ =+  LambdaVolumeMount'+    { addGroupOwner = Prelude.Nothing,+      permission = Prelude.Nothing,+      sourcePath = pSourcePath_,+      destinationPath = pDestinationPath_+    }++-- | Whether or not to add the IoT Greengrass user group as an owner of the+-- volume.+--+-- Default: @false@+lambdaVolumeMount_addGroupOwner :: Lens.Lens' LambdaVolumeMount (Prelude.Maybe Prelude.Bool)+lambdaVolumeMount_addGroupOwner = Lens.lens (\LambdaVolumeMount' {addGroupOwner} -> addGroupOwner) (\s@LambdaVolumeMount' {} a -> s {addGroupOwner = a} :: LambdaVolumeMount)++-- | The permission to access the volume: read\/only (@ro@) or read\/write+-- (@rw@).+--+-- Default: @ro@+lambdaVolumeMount_permission :: Lens.Lens' LambdaVolumeMount (Prelude.Maybe LambdaFilesystemPermission)+lambdaVolumeMount_permission = Lens.lens (\LambdaVolumeMount' {permission} -> permission) (\s@LambdaVolumeMount' {} a -> s {permission = a} :: LambdaVolumeMount)++-- | The path to the physical volume in the file system.+lambdaVolumeMount_sourcePath :: Lens.Lens' LambdaVolumeMount Prelude.Text+lambdaVolumeMount_sourcePath = Lens.lens (\LambdaVolumeMount' {sourcePath} -> sourcePath) (\s@LambdaVolumeMount' {} a -> s {sourcePath = a} :: LambdaVolumeMount)++-- | The path to the logical volume in the file system.+lambdaVolumeMount_destinationPath :: Lens.Lens' LambdaVolumeMount Prelude.Text+lambdaVolumeMount_destinationPath = Lens.lens (\LambdaVolumeMount' {destinationPath} -> destinationPath) (\s@LambdaVolumeMount' {} a -> s {destinationPath = a} :: LambdaVolumeMount)++instance Prelude.Hashable LambdaVolumeMount where+  hashWithSalt _salt LambdaVolumeMount' {..} =+    _salt+      `Prelude.hashWithSalt` addGroupOwner+      `Prelude.hashWithSalt` permission+      `Prelude.hashWithSalt` sourcePath+      `Prelude.hashWithSalt` destinationPath++instance Prelude.NFData LambdaVolumeMount where+  rnf LambdaVolumeMount' {..} =+    Prelude.rnf addGroupOwner+      `Prelude.seq` Prelude.rnf permission+      `Prelude.seq` Prelude.rnf sourcePath+      `Prelude.seq` Prelude.rnf destinationPath++instance Data.ToJSON LambdaVolumeMount where+  toJSON LambdaVolumeMount' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("addGroupOwner" Data..=) Prelude.<$> addGroupOwner,+            ("permission" Data..=) Prelude.<$> permission,+            Prelude.Just ("sourcePath" Data..= sourcePath),+            Prelude.Just+              ("destinationPath" Data..= destinationPath)+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/RecipeOutputFormat.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.GreengrassV2.Types.RecipeOutputFormat+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.RecipeOutputFormat+  ( RecipeOutputFormat+      ( ..,+        RecipeOutputFormat_JSON,+        RecipeOutputFormat_YAML+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RecipeOutputFormat = RecipeOutputFormat'+  { fromRecipeOutputFormat ::+      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 RecipeOutputFormat_JSON :: RecipeOutputFormat+pattern RecipeOutputFormat_JSON = RecipeOutputFormat' "JSON"++pattern RecipeOutputFormat_YAML :: RecipeOutputFormat+pattern RecipeOutputFormat_YAML = RecipeOutputFormat' "YAML"++{-# COMPLETE+  RecipeOutputFormat_JSON,+  RecipeOutputFormat_YAML,+  RecipeOutputFormat'+  #-}
+ gen/Amazonka/GreengrassV2/Types/ResolvedComponentVersion.hs view
@@ -0,0 +1,196 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.Types.ResolvedComponentVersion+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.ResolvedComponentVersion where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types.VendorGuidance+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a component version that is compatible to run+-- on a Greengrass core device.+--+-- /See:/ 'newResolvedComponentVersion' smart constructor.+data ResolvedComponentVersion = ResolvedComponentVersion'+  { -- | The+    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+    -- of the component version.+    arn :: Prelude.Maybe Prelude.Text,+    -- | The name of the component.+    componentName :: Prelude.Maybe Prelude.Text,+    -- | The version of the component.+    componentVersion :: Prelude.Maybe Prelude.Text,+    -- | A message that communicates details about the vendor guidance state of+    -- the component version. This message communicates why a component version+    -- is discontinued or deleted.+    message :: Prelude.Maybe Prelude.Text,+    -- | The recipe of the component version.+    recipe :: Prelude.Maybe Data.Base64,+    -- | The vendor guidance state for the component version. This state+    -- indicates whether the component version has any issues that you should+    -- consider before you deploy it. The vendor guidance state can be:+    --+    -- -   @ACTIVE@ – This component version is available and recommended for+    --     use.+    --+    -- -   @DISCONTINUED@ – This component version has been discontinued by its+    --     publisher. You can deploy this component version, but we recommend+    --     that you use a different version of this component.+    --+    -- -   @DELETED@ – This component version has been deleted by its+    --     publisher, so you can\'t deploy it. If you have any existing+    --     deployments that specify this component version, those deployments+    --     will fail.+    vendorGuidance :: Prelude.Maybe VendorGuidance+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ResolvedComponentVersion' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'resolvedComponentVersion_arn' - The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+--+-- 'componentName', 'resolvedComponentVersion_componentName' - The name of the component.+--+-- 'componentVersion', 'resolvedComponentVersion_componentVersion' - The version of the component.+--+-- 'message', 'resolvedComponentVersion_message' - A message that communicates details about the vendor guidance state of+-- the component version. This message communicates why a component version+-- is discontinued or deleted.+--+-- 'recipe', 'resolvedComponentVersion_recipe' - The recipe of the component version.--+-- -- /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.+--+-- 'vendorGuidance', 'resolvedComponentVersion_vendorGuidance' - The vendor guidance state for the component version. This state+-- indicates whether the component version has any issues that you should+-- consider before you deploy it. The vendor guidance state can be:+--+-- -   @ACTIVE@ – This component version is available and recommended for+--     use.+--+-- -   @DISCONTINUED@ – This component version has been discontinued by its+--     publisher. You can deploy this component version, but we recommend+--     that you use a different version of this component.+--+-- -   @DELETED@ – This component version has been deleted by its+--     publisher, so you can\'t deploy it. If you have any existing+--     deployments that specify this component version, those deployments+--     will fail.+newResolvedComponentVersion ::+  ResolvedComponentVersion+newResolvedComponentVersion =+  ResolvedComponentVersion'+    { arn = Prelude.Nothing,+      componentName = Prelude.Nothing,+      componentVersion = Prelude.Nothing,+      message = Prelude.Nothing,+      recipe = Prelude.Nothing,+      vendorGuidance = Prelude.Nothing+    }++-- | The+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html ARN>+-- of the component version.+resolvedComponentVersion_arn :: Lens.Lens' ResolvedComponentVersion (Prelude.Maybe Prelude.Text)+resolvedComponentVersion_arn = Lens.lens (\ResolvedComponentVersion' {arn} -> arn) (\s@ResolvedComponentVersion' {} a -> s {arn = a} :: ResolvedComponentVersion)++-- | The name of the component.+resolvedComponentVersion_componentName :: Lens.Lens' ResolvedComponentVersion (Prelude.Maybe Prelude.Text)+resolvedComponentVersion_componentName = Lens.lens (\ResolvedComponentVersion' {componentName} -> componentName) (\s@ResolvedComponentVersion' {} a -> s {componentName = a} :: ResolvedComponentVersion)++-- | The version of the component.+resolvedComponentVersion_componentVersion :: Lens.Lens' ResolvedComponentVersion (Prelude.Maybe Prelude.Text)+resolvedComponentVersion_componentVersion = Lens.lens (\ResolvedComponentVersion' {componentVersion} -> componentVersion) (\s@ResolvedComponentVersion' {} a -> s {componentVersion = a} :: ResolvedComponentVersion)++-- | A message that communicates details about the vendor guidance state of+-- the component version. This message communicates why a component version+-- is discontinued or deleted.+resolvedComponentVersion_message :: Lens.Lens' ResolvedComponentVersion (Prelude.Maybe Prelude.Text)+resolvedComponentVersion_message = Lens.lens (\ResolvedComponentVersion' {message} -> message) (\s@ResolvedComponentVersion' {} a -> s {message = a} :: ResolvedComponentVersion)++-- | The recipe of the component version.--+-- -- /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.+resolvedComponentVersion_recipe :: Lens.Lens' ResolvedComponentVersion (Prelude.Maybe Prelude.ByteString)+resolvedComponentVersion_recipe = Lens.lens (\ResolvedComponentVersion' {recipe} -> recipe) (\s@ResolvedComponentVersion' {} a -> s {recipe = a} :: ResolvedComponentVersion) Prelude.. Lens.mapping Data._Base64++-- | The vendor guidance state for the component version. This state+-- indicates whether the component version has any issues that you should+-- consider before you deploy it. The vendor guidance state can be:+--+-- -   @ACTIVE@ – This component version is available and recommended for+--     use.+--+-- -   @DISCONTINUED@ – This component version has been discontinued by its+--     publisher. You can deploy this component version, but we recommend+--     that you use a different version of this component.+--+-- -   @DELETED@ – This component version has been deleted by its+--     publisher, so you can\'t deploy it. If you have any existing+--     deployments that specify this component version, those deployments+--     will fail.+resolvedComponentVersion_vendorGuidance :: Lens.Lens' ResolvedComponentVersion (Prelude.Maybe VendorGuidance)+resolvedComponentVersion_vendorGuidance = Lens.lens (\ResolvedComponentVersion' {vendorGuidance} -> vendorGuidance) (\s@ResolvedComponentVersion' {} a -> s {vendorGuidance = a} :: ResolvedComponentVersion)++instance Data.FromJSON ResolvedComponentVersion where+  parseJSON =+    Data.withObject+      "ResolvedComponentVersion"+      ( \x ->+          ResolvedComponentVersion'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "componentName")+            Prelude.<*> (x Data..:? "componentVersion")+            Prelude.<*> (x Data..:? "message")+            Prelude.<*> (x Data..:? "recipe")+            Prelude.<*> (x Data..:? "vendorGuidance")+      )++instance Prelude.Hashable ResolvedComponentVersion where+  hashWithSalt _salt ResolvedComponentVersion' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` componentName+      `Prelude.hashWithSalt` componentVersion+      `Prelude.hashWithSalt` message+      `Prelude.hashWithSalt` recipe+      `Prelude.hashWithSalt` vendorGuidance++instance Prelude.NFData ResolvedComponentVersion where+  rnf ResolvedComponentVersion' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf componentName+      `Prelude.seq` Prelude.rnf componentVersion+      `Prelude.seq` Prelude.rnf message+      `Prelude.seq` Prelude.rnf recipe+      `Prelude.seq` Prelude.rnf vendorGuidance
+ gen/Amazonka/GreengrassV2/Types/SystemResourceLimits.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.GreengrassV2.Types.SystemResourceLimits+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.SystemResourceLimits 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 system resource limits that the IoT+-- Greengrass Core software applies to a component\'s processes. For more+-- information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-system-resource-limits Configure system resource limits for components>.+--+-- /See:/ 'newSystemResourceLimits' smart constructor.+data SystemResourceLimits = SystemResourceLimits'+  { -- | The maximum amount of CPU time that a component\'s processes can use on+    -- the core device. A core device\'s total CPU time is equivalent to the+    -- device\'s number of CPU cores. For example, on a core device with 4 CPU+    -- cores, you can set this value to @2@ to limit the component\'s processes+    -- to 50 percent usage of each CPU core. On a device with 1 CPU core, you+    -- can set this value to @0.25@ to limit the component\'s processes to 25+    -- percent usage of the CPU. If you set this value to a number greater than+    -- the number of CPU cores, the IoT Greengrass Core software doesn\'t limit+    -- the component\'s CPU usage.+    cpus :: Prelude.Maybe Prelude.Double,+    -- | The maximum amount of RAM, expressed in kilobytes, that a component\'s+    -- processes can use on the core device.+    memory :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SystemResourceLimits' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'cpus', 'systemResourceLimits_cpus' - The maximum amount of CPU time that a component\'s processes can use on+-- the core device. A core device\'s total CPU time is equivalent to the+-- device\'s number of CPU cores. For example, on a core device with 4 CPU+-- cores, you can set this value to @2@ to limit the component\'s processes+-- to 50 percent usage of each CPU core. On a device with 1 CPU core, you+-- can set this value to @0.25@ to limit the component\'s processes to 25+-- percent usage of the CPU. If you set this value to a number greater than+-- the number of CPU cores, the IoT Greengrass Core software doesn\'t limit+-- the component\'s CPU usage.+--+-- 'memory', 'systemResourceLimits_memory' - The maximum amount of RAM, expressed in kilobytes, that a component\'s+-- processes can use on the core device.+newSystemResourceLimits ::+  SystemResourceLimits+newSystemResourceLimits =+  SystemResourceLimits'+    { cpus = Prelude.Nothing,+      memory = Prelude.Nothing+    }++-- | The maximum amount of CPU time that a component\'s processes can use on+-- the core device. A core device\'s total CPU time is equivalent to the+-- device\'s number of CPU cores. For example, on a core device with 4 CPU+-- cores, you can set this value to @2@ to limit the component\'s processes+-- to 50 percent usage of each CPU core. On a device with 1 CPU core, you+-- can set this value to @0.25@ to limit the component\'s processes to 25+-- percent usage of the CPU. If you set this value to a number greater than+-- the number of CPU cores, the IoT Greengrass Core software doesn\'t limit+-- the component\'s CPU usage.+systemResourceLimits_cpus :: Lens.Lens' SystemResourceLimits (Prelude.Maybe Prelude.Double)+systemResourceLimits_cpus = Lens.lens (\SystemResourceLimits' {cpus} -> cpus) (\s@SystemResourceLimits' {} a -> s {cpus = a} :: SystemResourceLimits)++-- | The maximum amount of RAM, expressed in kilobytes, that a component\'s+-- processes can use on the core device.+systemResourceLimits_memory :: Lens.Lens' SystemResourceLimits (Prelude.Maybe Prelude.Natural)+systemResourceLimits_memory = Lens.lens (\SystemResourceLimits' {memory} -> memory) (\s@SystemResourceLimits' {} a -> s {memory = a} :: SystemResourceLimits)++instance Data.FromJSON SystemResourceLimits where+  parseJSON =+    Data.withObject+      "SystemResourceLimits"+      ( \x ->+          SystemResourceLimits'+            Prelude.<$> (x Data..:? "cpus")+            Prelude.<*> (x Data..:? "memory")+      )++instance Prelude.Hashable SystemResourceLimits where+  hashWithSalt _salt SystemResourceLimits' {..} =+    _salt+      `Prelude.hashWithSalt` cpus+      `Prelude.hashWithSalt` memory++instance Prelude.NFData SystemResourceLimits where+  rnf SystemResourceLimits' {..} =+    Prelude.rnf cpus `Prelude.seq` Prelude.rnf memory++instance Data.ToJSON SystemResourceLimits where+  toJSON SystemResourceLimits' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("cpus" Data..=) Prelude.<$> cpus,+            ("memory" Data..=) Prelude.<$> memory+          ]+      )
+ gen/Amazonka/GreengrassV2/Types/VendorGuidance.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.GreengrassV2.Types.VendorGuidance+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.GreengrassV2.Types.VendorGuidance+  ( VendorGuidance+      ( ..,+        VendorGuidance_ACTIVE,+        VendorGuidance_DELETED,+        VendorGuidance_DISCONTINUED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype VendorGuidance = VendorGuidance'+  { fromVendorGuidance ::+      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 VendorGuidance_ACTIVE :: VendorGuidance+pattern VendorGuidance_ACTIVE = VendorGuidance' "ACTIVE"++pattern VendorGuidance_DELETED :: VendorGuidance+pattern VendorGuidance_DELETED = VendorGuidance' "DELETED"++pattern VendorGuidance_DISCONTINUED :: VendorGuidance+pattern VendorGuidance_DISCONTINUED = VendorGuidance' "DISCONTINUED"++{-# COMPLETE+  VendorGuidance_ACTIVE,+  VendorGuidance_DELETED,+  VendorGuidance_DISCONTINUED,+  VendorGuidance'+  #-}
+ gen/Amazonka/GreengrassV2/UntagResource.hs view
@@ -0,0 +1,161 @@+{-# 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.GreengrassV2.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 Greengrass resource.+module Amazonka.GreengrassV2.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.GreengrassV2.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.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'untagResource_resourceArn' - The+-- <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 ->+  -- | 'tagKeys'+  Prelude.NonEmpty Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ pTagKeys_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Lens.coerced Lens.# pTagKeys_+    }++-- | 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.NonEmpty Prelude.Text)+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToPath UntagResource where+  toPath UntagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery UntagResource where+  toQuery UntagResource' {..} =+    Prelude.mconcat+      ["tagKeys" Data.=: Data.toQueryList "member" tagKeys]++-- | /See:/ 'newUntagResourceResponse' smart constructor.+data UntagResourceResponse = UntagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.+newUntagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UntagResourceResponse+newUntagResourceResponse pHttpStatus_ =+  UntagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)++instance Prelude.NFData UntagResourceResponse where+  rnf UntagResourceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/UpdateConnectivityInfo.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.GreengrassV2.UpdateConnectivityInfo+-- 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 connectivity information for a Greengrass core device.+--+-- Connectivity information includes endpoints and ports where client+-- devices can connect to an MQTT broker on the core device. When a client+-- device calls the+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-discover-api.html IoT Greengrass discovery API>,+-- IoT Greengrass returns connectivity information for all of the core+-- devices where the client device can connect. For more information, see+-- <https://docs.aws.amazon.com/greengrass/v2/developerguide/connect-client-devices.html Connect client devices to core devices>+-- in the /IoT Greengrass Version 2 Developer Guide/.+module Amazonka.GreengrassV2.UpdateConnectivityInfo+  ( -- * Creating a Request+    UpdateConnectivityInfo (..),+    newUpdateConnectivityInfo,++    -- * Request Lenses+    updateConnectivityInfo_thingName,+    updateConnectivityInfo_connectivityInfo,++    -- * Destructuring the Response+    UpdateConnectivityInfoResponse (..),+    newUpdateConnectivityInfoResponse,++    -- * Response Lenses+    updateConnectivityInfoResponse_message,+    updateConnectivityInfoResponse_version,+    updateConnectivityInfoResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateConnectivityInfo' smart constructor.+data UpdateConnectivityInfo = UpdateConnectivityInfo'+  { -- | The name of the core device. This is also the name of the IoT thing.+    thingName :: Prelude.Text,+    -- | The connectivity information for the core device.+    connectivityInfo :: [ConnectivityInfo]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateConnectivityInfo' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'thingName', 'updateConnectivityInfo_thingName' - The name of the core device. This is also the name of the IoT thing.+--+-- 'connectivityInfo', 'updateConnectivityInfo_connectivityInfo' - The connectivity information for the core device.+newUpdateConnectivityInfo ::+  -- | 'thingName'+  Prelude.Text ->+  UpdateConnectivityInfo+newUpdateConnectivityInfo pThingName_ =+  UpdateConnectivityInfo'+    { thingName = pThingName_,+      connectivityInfo = Prelude.mempty+    }++-- | The name of the core device. This is also the name of the IoT thing.+updateConnectivityInfo_thingName :: Lens.Lens' UpdateConnectivityInfo Prelude.Text+updateConnectivityInfo_thingName = Lens.lens (\UpdateConnectivityInfo' {thingName} -> thingName) (\s@UpdateConnectivityInfo' {} a -> s {thingName = a} :: UpdateConnectivityInfo)++-- | The connectivity information for the core device.+updateConnectivityInfo_connectivityInfo :: Lens.Lens' UpdateConnectivityInfo [ConnectivityInfo]+updateConnectivityInfo_connectivityInfo = Lens.lens (\UpdateConnectivityInfo' {connectivityInfo} -> connectivityInfo) (\s@UpdateConnectivityInfo' {} a -> s {connectivityInfo = a} :: UpdateConnectivityInfo) Prelude.. Lens.coerced++instance Core.AWSRequest UpdateConnectivityInfo where+  type+    AWSResponse UpdateConnectivityInfo =+      UpdateConnectivityInfoResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateConnectivityInfoResponse'+            Prelude.<$> (x Data..?> "Message")+            Prelude.<*> (x Data..?> "Version")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateConnectivityInfo where+  hashWithSalt _salt UpdateConnectivityInfo' {..} =+    _salt+      `Prelude.hashWithSalt` thingName+      `Prelude.hashWithSalt` connectivityInfo++instance Prelude.NFData UpdateConnectivityInfo where+  rnf UpdateConnectivityInfo' {..} =+    Prelude.rnf thingName+      `Prelude.seq` Prelude.rnf connectivityInfo++instance Data.ToHeaders UpdateConnectivityInfo where+  toHeaders = Prelude.const Prelude.mempty++instance Data.ToJSON UpdateConnectivityInfo where+  toJSON UpdateConnectivityInfo' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("ConnectivityInfo" Data..= connectivityInfo)+          ]+      )++instance Data.ToPath UpdateConnectivityInfo where+  toPath UpdateConnectivityInfo' {..} =+    Prelude.mconcat+      [ "/greengrass/things/",+        Data.toBS thingName,+        "/connectivityInfo"+      ]++instance Data.ToQuery UpdateConnectivityInfo where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateConnectivityInfoResponse' smart constructor.+data UpdateConnectivityInfoResponse = UpdateConnectivityInfoResponse'+  { -- | A message about the connectivity information update request.+    message :: Prelude.Maybe Prelude.Text,+    -- | The new version of the connectivity information for the core device.+    version :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateConnectivityInfoResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'message', 'updateConnectivityInfoResponse_message' - A message about the connectivity information update request.+--+-- 'version', 'updateConnectivityInfoResponse_version' - The new version of the connectivity information for the core device.+--+-- 'httpStatus', 'updateConnectivityInfoResponse_httpStatus' - The response's http status code.+newUpdateConnectivityInfoResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateConnectivityInfoResponse+newUpdateConnectivityInfoResponse pHttpStatus_ =+  UpdateConnectivityInfoResponse'+    { message =+        Prelude.Nothing,+      version = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A message about the connectivity information update request.+updateConnectivityInfoResponse_message :: Lens.Lens' UpdateConnectivityInfoResponse (Prelude.Maybe Prelude.Text)+updateConnectivityInfoResponse_message = Lens.lens (\UpdateConnectivityInfoResponse' {message} -> message) (\s@UpdateConnectivityInfoResponse' {} a -> s {message = a} :: UpdateConnectivityInfoResponse)++-- | The new version of the connectivity information for the core device.+updateConnectivityInfoResponse_version :: Lens.Lens' UpdateConnectivityInfoResponse (Prelude.Maybe Prelude.Text)+updateConnectivityInfoResponse_version = Lens.lens (\UpdateConnectivityInfoResponse' {version} -> version) (\s@UpdateConnectivityInfoResponse' {} a -> s {version = a} :: UpdateConnectivityInfoResponse)++-- | The response's http status code.+updateConnectivityInfoResponse_httpStatus :: Lens.Lens' UpdateConnectivityInfoResponse Prelude.Int+updateConnectivityInfoResponse_httpStatus = Lens.lens (\UpdateConnectivityInfoResponse' {httpStatus} -> httpStatus) (\s@UpdateConnectivityInfoResponse' {} a -> s {httpStatus = a} :: UpdateConnectivityInfoResponse)++instance+  Prelude.NFData+    UpdateConnectivityInfoResponse+  where+  rnf UpdateConnectivityInfoResponse' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf version+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/GreengrassV2/Waiters.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE DisambiguateRecordFields #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.GreengrassV2.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.GreengrassV2.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.GreengrassV2.Lens+import Amazonka.GreengrassV2.Types+import qualified Amazonka.Prelude as Prelude
+ src/.gitkeep view
+ test/Main.hs view
@@ -0,0 +1,23 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Main+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Main (main) where++import Test.Amazonka.GreengrassV2+import Test.Amazonka.GreengrassV2.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "GreengrassV2"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/GreengrassV2.hs view
@@ -0,0 +1,618 @@+{-# 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.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 Test.Amazonka.Gen.GreengrassV2 where++import Amazonka.GreengrassV2+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.GreengrassV2.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"+--         [ requestAssociateServiceRoleToAccount $+--             newAssociateServiceRoleToAccount+--+--         , requestBatchAssociateClientDeviceWithCoreDevice $+--             newBatchAssociateClientDeviceWithCoreDevice+--+--         , requestBatchDisassociateClientDeviceFromCoreDevice $+--             newBatchDisassociateClientDeviceFromCoreDevice+--+--         , requestCancelDeployment $+--             newCancelDeployment+--+--         , requestCreateComponentVersion $+--             newCreateComponentVersion+--+--         , requestCreateDeployment $+--             newCreateDeployment+--+--         , requestDeleteComponent $+--             newDeleteComponent+--+--         , requestDeleteCoreDevice $+--             newDeleteCoreDevice+--+--         , requestDeleteDeployment $+--             newDeleteDeployment+--+--         , requestDescribeComponent $+--             newDescribeComponent+--+--         , requestDisassociateServiceRoleFromAccount $+--             newDisassociateServiceRoleFromAccount+--+--         , requestGetComponent $+--             newGetComponent+--+--         , requestGetComponentVersionArtifact $+--             newGetComponentVersionArtifact+--+--         , requestGetConnectivityInfo $+--             newGetConnectivityInfo+--+--         , requestGetCoreDevice $+--             newGetCoreDevice+--+--         , requestGetDeployment $+--             newGetDeployment+--+--         , requestGetServiceRoleForAccount $+--             newGetServiceRoleForAccount+--+--         , requestListClientDevicesAssociatedWithCoreDevice $+--             newListClientDevicesAssociatedWithCoreDevice+--+--         , requestListComponentVersions $+--             newListComponentVersions+--+--         , requestListComponents $+--             newListComponents+--+--         , requestListCoreDevices $+--             newListCoreDevices+--+--         , requestListDeployments $+--             newListDeployments+--+--         , requestListEffectiveDeployments $+--             newListEffectiveDeployments+--+--         , requestListInstalledComponents $+--             newListInstalledComponents+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestResolveComponentCandidates $+--             newResolveComponentCandidates+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateConnectivityInfo $+--             newUpdateConnectivityInfo+--+--           ]++--     , testGroup "response"+--         [ responseAssociateServiceRoleToAccount $+--             newAssociateServiceRoleToAccountResponse+--+--         , responseBatchAssociateClientDeviceWithCoreDevice $+--             newBatchAssociateClientDeviceWithCoreDeviceResponse+--+--         , responseBatchDisassociateClientDeviceFromCoreDevice $+--             newBatchDisassociateClientDeviceFromCoreDeviceResponse+--+--         , responseCancelDeployment $+--             newCancelDeploymentResponse+--+--         , responseCreateComponentVersion $+--             newCreateComponentVersionResponse+--+--         , responseCreateDeployment $+--             newCreateDeploymentResponse+--+--         , responseDeleteComponent $+--             newDeleteComponentResponse+--+--         , responseDeleteCoreDevice $+--             newDeleteCoreDeviceResponse+--+--         , responseDeleteDeployment $+--             newDeleteDeploymentResponse+--+--         , responseDescribeComponent $+--             newDescribeComponentResponse+--+--         , responseDisassociateServiceRoleFromAccount $+--             newDisassociateServiceRoleFromAccountResponse+--+--         , responseGetComponent $+--             newGetComponentResponse+--+--         , responseGetComponentVersionArtifact $+--             newGetComponentVersionArtifactResponse+--+--         , responseGetConnectivityInfo $+--             newGetConnectivityInfoResponse+--+--         , responseGetCoreDevice $+--             newGetCoreDeviceResponse+--+--         , responseGetDeployment $+--             newGetDeploymentResponse+--+--         , responseGetServiceRoleForAccount $+--             newGetServiceRoleForAccountResponse+--+--         , responseListClientDevicesAssociatedWithCoreDevice $+--             newListClientDevicesAssociatedWithCoreDeviceResponse+--+--         , responseListComponentVersions $+--             newListComponentVersionsResponse+--+--         , responseListComponents $+--             newListComponentsResponse+--+--         , responseListCoreDevices $+--             newListCoreDevicesResponse+--+--         , responseListDeployments $+--             newListDeploymentsResponse+--+--         , responseListEffectiveDeployments $+--             newListEffectiveDeploymentsResponse+--+--         , responseListInstalledComponents $+--             newListInstalledComponentsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responseResolveComponentCandidates $+--             newResolveComponentCandidatesResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateConnectivityInfo $+--             newUpdateConnectivityInfoResponse+--+--           ]+--     ]++-- Requests++requestAssociateServiceRoleToAccount :: AssociateServiceRoleToAccount -> TestTree+requestAssociateServiceRoleToAccount =+  req+    "AssociateServiceRoleToAccount"+    "fixture/AssociateServiceRoleToAccount.yaml"++requestBatchAssociateClientDeviceWithCoreDevice :: BatchAssociateClientDeviceWithCoreDevice -> TestTree+requestBatchAssociateClientDeviceWithCoreDevice =+  req+    "BatchAssociateClientDeviceWithCoreDevice"+    "fixture/BatchAssociateClientDeviceWithCoreDevice.yaml"++requestBatchDisassociateClientDeviceFromCoreDevice :: BatchDisassociateClientDeviceFromCoreDevice -> TestTree+requestBatchDisassociateClientDeviceFromCoreDevice =+  req+    "BatchDisassociateClientDeviceFromCoreDevice"+    "fixture/BatchDisassociateClientDeviceFromCoreDevice.yaml"++requestCancelDeployment :: CancelDeployment -> TestTree+requestCancelDeployment =+  req+    "CancelDeployment"+    "fixture/CancelDeployment.yaml"++requestCreateComponentVersion :: CreateComponentVersion -> TestTree+requestCreateComponentVersion =+  req+    "CreateComponentVersion"+    "fixture/CreateComponentVersion.yaml"++requestCreateDeployment :: CreateDeployment -> TestTree+requestCreateDeployment =+  req+    "CreateDeployment"+    "fixture/CreateDeployment.yaml"++requestDeleteComponent :: DeleteComponent -> TestTree+requestDeleteComponent =+  req+    "DeleteComponent"+    "fixture/DeleteComponent.yaml"++requestDeleteCoreDevice :: DeleteCoreDevice -> TestTree+requestDeleteCoreDevice =+  req+    "DeleteCoreDevice"+    "fixture/DeleteCoreDevice.yaml"++requestDeleteDeployment :: DeleteDeployment -> TestTree+requestDeleteDeployment =+  req+    "DeleteDeployment"+    "fixture/DeleteDeployment.yaml"++requestDescribeComponent :: DescribeComponent -> TestTree+requestDescribeComponent =+  req+    "DescribeComponent"+    "fixture/DescribeComponent.yaml"++requestDisassociateServiceRoleFromAccount :: DisassociateServiceRoleFromAccount -> TestTree+requestDisassociateServiceRoleFromAccount =+  req+    "DisassociateServiceRoleFromAccount"+    "fixture/DisassociateServiceRoleFromAccount.yaml"++requestGetComponent :: GetComponent -> TestTree+requestGetComponent =+  req+    "GetComponent"+    "fixture/GetComponent.yaml"++requestGetComponentVersionArtifact :: GetComponentVersionArtifact -> TestTree+requestGetComponentVersionArtifact =+  req+    "GetComponentVersionArtifact"+    "fixture/GetComponentVersionArtifact.yaml"++requestGetConnectivityInfo :: GetConnectivityInfo -> TestTree+requestGetConnectivityInfo =+  req+    "GetConnectivityInfo"+    "fixture/GetConnectivityInfo.yaml"++requestGetCoreDevice :: GetCoreDevice -> TestTree+requestGetCoreDevice =+  req+    "GetCoreDevice"+    "fixture/GetCoreDevice.yaml"++requestGetDeployment :: GetDeployment -> TestTree+requestGetDeployment =+  req+    "GetDeployment"+    "fixture/GetDeployment.yaml"++requestGetServiceRoleForAccount :: GetServiceRoleForAccount -> TestTree+requestGetServiceRoleForAccount =+  req+    "GetServiceRoleForAccount"+    "fixture/GetServiceRoleForAccount.yaml"++requestListClientDevicesAssociatedWithCoreDevice :: ListClientDevicesAssociatedWithCoreDevice -> TestTree+requestListClientDevicesAssociatedWithCoreDevice =+  req+    "ListClientDevicesAssociatedWithCoreDevice"+    "fixture/ListClientDevicesAssociatedWithCoreDevice.yaml"++requestListComponentVersions :: ListComponentVersions -> TestTree+requestListComponentVersions =+  req+    "ListComponentVersions"+    "fixture/ListComponentVersions.yaml"++requestListComponents :: ListComponents -> TestTree+requestListComponents =+  req+    "ListComponents"+    "fixture/ListComponents.yaml"++requestListCoreDevices :: ListCoreDevices -> TestTree+requestListCoreDevices =+  req+    "ListCoreDevices"+    "fixture/ListCoreDevices.yaml"++requestListDeployments :: ListDeployments -> TestTree+requestListDeployments =+  req+    "ListDeployments"+    "fixture/ListDeployments.yaml"++requestListEffectiveDeployments :: ListEffectiveDeployments -> TestTree+requestListEffectiveDeployments =+  req+    "ListEffectiveDeployments"+    "fixture/ListEffectiveDeployments.yaml"++requestListInstalledComponents :: ListInstalledComponents -> TestTree+requestListInstalledComponents =+  req+    "ListInstalledComponents"+    "fixture/ListInstalledComponents.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestResolveComponentCandidates :: ResolveComponentCandidates -> TestTree+requestResolveComponentCandidates =+  req+    "ResolveComponentCandidates"+    "fixture/ResolveComponentCandidates.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateConnectivityInfo :: UpdateConnectivityInfo -> TestTree+requestUpdateConnectivityInfo =+  req+    "UpdateConnectivityInfo"+    "fixture/UpdateConnectivityInfo.yaml"++-- Responses++responseAssociateServiceRoleToAccount :: AssociateServiceRoleToAccountResponse -> TestTree+responseAssociateServiceRoleToAccount =+  res+    "AssociateServiceRoleToAccountResponse"+    "fixture/AssociateServiceRoleToAccountResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy AssociateServiceRoleToAccount)++responseBatchAssociateClientDeviceWithCoreDevice :: BatchAssociateClientDeviceWithCoreDeviceResponse -> TestTree+responseBatchAssociateClientDeviceWithCoreDevice =+  res+    "BatchAssociateClientDeviceWithCoreDeviceResponse"+    "fixture/BatchAssociateClientDeviceWithCoreDeviceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchAssociateClientDeviceWithCoreDevice)++responseBatchDisassociateClientDeviceFromCoreDevice :: BatchDisassociateClientDeviceFromCoreDeviceResponse -> TestTree+responseBatchDisassociateClientDeviceFromCoreDevice =+  res+    "BatchDisassociateClientDeviceFromCoreDeviceResponse"+    "fixture/BatchDisassociateClientDeviceFromCoreDeviceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchDisassociateClientDeviceFromCoreDevice)++responseCancelDeployment :: CancelDeploymentResponse -> TestTree+responseCancelDeployment =+  res+    "CancelDeploymentResponse"+    "fixture/CancelDeploymentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CancelDeployment)++responseCreateComponentVersion :: CreateComponentVersionResponse -> TestTree+responseCreateComponentVersion =+  res+    "CreateComponentVersionResponse"+    "fixture/CreateComponentVersionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateComponentVersion)++responseCreateDeployment :: CreateDeploymentResponse -> TestTree+responseCreateDeployment =+  res+    "CreateDeploymentResponse"+    "fixture/CreateDeploymentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateDeployment)++responseDeleteComponent :: DeleteComponentResponse -> TestTree+responseDeleteComponent =+  res+    "DeleteComponentResponse"+    "fixture/DeleteComponentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteComponent)++responseDeleteCoreDevice :: DeleteCoreDeviceResponse -> TestTree+responseDeleteCoreDevice =+  res+    "DeleteCoreDeviceResponse"+    "fixture/DeleteCoreDeviceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteCoreDevice)++responseDeleteDeployment :: DeleteDeploymentResponse -> TestTree+responseDeleteDeployment =+  res+    "DeleteDeploymentResponse"+    "fixture/DeleteDeploymentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteDeployment)++responseDescribeComponent :: DescribeComponentResponse -> TestTree+responseDescribeComponent =+  res+    "DescribeComponentResponse"+    "fixture/DescribeComponentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeComponent)++responseDisassociateServiceRoleFromAccount :: DisassociateServiceRoleFromAccountResponse -> TestTree+responseDisassociateServiceRoleFromAccount =+  res+    "DisassociateServiceRoleFromAccountResponse"+    "fixture/DisassociateServiceRoleFromAccountResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DisassociateServiceRoleFromAccount)++responseGetComponent :: GetComponentResponse -> TestTree+responseGetComponent =+  res+    "GetComponentResponse"+    "fixture/GetComponentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetComponent)++responseGetComponentVersionArtifact :: GetComponentVersionArtifactResponse -> TestTree+responseGetComponentVersionArtifact =+  res+    "GetComponentVersionArtifactResponse"+    "fixture/GetComponentVersionArtifactResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetComponentVersionArtifact)++responseGetConnectivityInfo :: GetConnectivityInfoResponse -> TestTree+responseGetConnectivityInfo =+  res+    "GetConnectivityInfoResponse"+    "fixture/GetConnectivityInfoResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetConnectivityInfo)++responseGetCoreDevice :: GetCoreDeviceResponse -> TestTree+responseGetCoreDevice =+  res+    "GetCoreDeviceResponse"+    "fixture/GetCoreDeviceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetCoreDevice)++responseGetDeployment :: GetDeploymentResponse -> TestTree+responseGetDeployment =+  res+    "GetDeploymentResponse"+    "fixture/GetDeploymentResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDeployment)++responseGetServiceRoleForAccount :: GetServiceRoleForAccountResponse -> TestTree+responseGetServiceRoleForAccount =+  res+    "GetServiceRoleForAccountResponse"+    "fixture/GetServiceRoleForAccountResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetServiceRoleForAccount)++responseListClientDevicesAssociatedWithCoreDevice :: ListClientDevicesAssociatedWithCoreDeviceResponse -> TestTree+responseListClientDevicesAssociatedWithCoreDevice =+  res+    "ListClientDevicesAssociatedWithCoreDeviceResponse"+    "fixture/ListClientDevicesAssociatedWithCoreDeviceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListClientDevicesAssociatedWithCoreDevice)++responseListComponentVersions :: ListComponentVersionsResponse -> TestTree+responseListComponentVersions =+  res+    "ListComponentVersionsResponse"+    "fixture/ListComponentVersionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListComponentVersions)++responseListComponents :: ListComponentsResponse -> TestTree+responseListComponents =+  res+    "ListComponentsResponse"+    "fixture/ListComponentsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListComponents)++responseListCoreDevices :: ListCoreDevicesResponse -> TestTree+responseListCoreDevices =+  res+    "ListCoreDevicesResponse"+    "fixture/ListCoreDevicesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListCoreDevices)++responseListDeployments :: ListDeploymentsResponse -> TestTree+responseListDeployments =+  res+    "ListDeploymentsResponse"+    "fixture/ListDeploymentsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListDeployments)++responseListEffectiveDeployments :: ListEffectiveDeploymentsResponse -> TestTree+responseListEffectiveDeployments =+  res+    "ListEffectiveDeploymentsResponse"+    "fixture/ListEffectiveDeploymentsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListEffectiveDeployments)++responseListInstalledComponents :: ListInstalledComponentsResponse -> TestTree+responseListInstalledComponents =+  res+    "ListInstalledComponentsResponse"+    "fixture/ListInstalledComponentsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListInstalledComponents)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responseResolveComponentCandidates :: ResolveComponentCandidatesResponse -> TestTree+responseResolveComponentCandidates =+  res+    "ResolveComponentCandidatesResponse"+    "fixture/ResolveComponentCandidatesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ResolveComponentCandidates)++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)++responseUpdateConnectivityInfo :: UpdateConnectivityInfoResponse -> TestTree+responseUpdateConnectivityInfo =+  res+    "UpdateConnectivityInfoResponse"+    "fixture/UpdateConnectivityInfoResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateConnectivityInfo)
+ test/Test/Amazonka/GreengrassV2.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.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 Test.Amazonka.GreengrassV2+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/GreengrassV2/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.GreengrassV2.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.GreengrassV2.Internal where