packages feed

amazonka-ivs (empty) → 2.0

raw patch · 123 files changed

+11490/−0 lines, 123 filesdep +amazonka-coredep +amazonka-ivsdep +amazonka-test

Dependencies added: amazonka-core, amazonka-ivs, 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 Interactive Video Service SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2020-07-14@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-ivs)+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.IVS](http://hackage.haskell.org/package/amazonka-ivs/docs/Amazonka-IVS.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-ivs` 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-ivs.cabal view
@@ -0,0 +1,138 @@+cabal-version:      2.2+name:               amazonka-ivs+version:            2.0+synopsis:           Amazon Interactive Video Service SDK.+homepage:           https://github.com/brendanhay/amazonka+bug-reports:        https://github.com/brendanhay/amazonka/issues+license:            MPL-2.0+license-file:       LICENSE+author:             Brendan Hay+maintainer:+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>++copyright:          Copyright (c) 2013-2023 Brendan Hay+category:           AWS+build-type:         Simple+extra-source-files:+  fixture/*.proto+  fixture/*.yaml+  README.md+  src/.gitkeep++description:+  Derived from API version @2020-07-14@ 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.IVS.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.IVS" 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-ivs++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.IVS+    Amazonka.IVS.BatchGetChannel+    Amazonka.IVS.BatchGetStreamKey+    Amazonka.IVS.CreateChannel+    Amazonka.IVS.CreateRecordingConfiguration+    Amazonka.IVS.CreateStreamKey+    Amazonka.IVS.DeleteChannel+    Amazonka.IVS.DeletePlaybackKeyPair+    Amazonka.IVS.DeleteRecordingConfiguration+    Amazonka.IVS.DeleteStreamKey+    Amazonka.IVS.GetChannel+    Amazonka.IVS.GetPlaybackKeyPair+    Amazonka.IVS.GetRecordingConfiguration+    Amazonka.IVS.GetStream+    Amazonka.IVS.GetStreamKey+    Amazonka.IVS.GetStreamSession+    Amazonka.IVS.ImportPlaybackKeyPair+    Amazonka.IVS.Lens+    Amazonka.IVS.ListChannels+    Amazonka.IVS.ListPlaybackKeyPairs+    Amazonka.IVS.ListRecordingConfigurations+    Amazonka.IVS.ListStreamKeys+    Amazonka.IVS.ListStreams+    Amazonka.IVS.ListStreamSessions+    Amazonka.IVS.ListTagsForResource+    Amazonka.IVS.PutMetadata+    Amazonka.IVS.StopStream+    Amazonka.IVS.TagResource+    Amazonka.IVS.Types+    Amazonka.IVS.Types.AudioConfiguration+    Amazonka.IVS.Types.BatchError+    Amazonka.IVS.Types.Channel+    Amazonka.IVS.Types.ChannelLatencyMode+    Amazonka.IVS.Types.ChannelSummary+    Amazonka.IVS.Types.ChannelType+    Amazonka.IVS.Types.DestinationConfiguration+    Amazonka.IVS.Types.IngestConfiguration+    Amazonka.IVS.Types.PlaybackKeyPair+    Amazonka.IVS.Types.PlaybackKeyPairSummary+    Amazonka.IVS.Types.RecordingConfiguration+    Amazonka.IVS.Types.RecordingConfigurationState+    Amazonka.IVS.Types.RecordingConfigurationSummary+    Amazonka.IVS.Types.RecordingMode+    Amazonka.IVS.Types.S3DestinationConfiguration+    Amazonka.IVS.Types.Stream+    Amazonka.IVS.Types.StreamEvent+    Amazonka.IVS.Types.StreamFilters+    Amazonka.IVS.Types.StreamHealth+    Amazonka.IVS.Types.StreamKey+    Amazonka.IVS.Types.StreamKeySummary+    Amazonka.IVS.Types.StreamSession+    Amazonka.IVS.Types.StreamSessionSummary+    Amazonka.IVS.Types.StreamState+    Amazonka.IVS.Types.StreamSummary+    Amazonka.IVS.Types.ThumbnailConfiguration+    Amazonka.IVS.Types.VideoConfiguration+    Amazonka.IVS.UntagResource+    Amazonka.IVS.UpdateChannel+    Amazonka.IVS.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-ivs-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.IVS+    Test.Amazonka.IVS+    Test.Amazonka.IVS.Internal++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-ivs+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/BatchGetChannel.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/BatchGetChannelResponse.proto view
+ fixture/BatchGetStreamKey.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/BatchGetStreamKeyResponse.proto view
+ fixture/CreateChannel.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/CreateChannelResponse.proto view
+ fixture/CreateRecordingConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/CreateRecordingConfigurationResponse.proto view
+ fixture/CreateStreamKey.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/CreateStreamKeyResponse.proto view
+ fixture/DeleteChannel.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/DeleteChannelResponse.proto view
+ fixture/DeletePlaybackKeyPair.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/DeletePlaybackKeyPairResponse.proto view
+ fixture/DeleteRecordingConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/DeleteRecordingConfigurationResponse.proto view
+ fixture/DeleteStreamKey.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/DeleteStreamKeyResponse.proto view
+ fixture/GetChannel.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/GetChannelResponse.proto view
+ fixture/GetPlaybackKeyPair.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/GetPlaybackKeyPairResponse.proto view
+ fixture/GetRecordingConfiguration.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/GetRecordingConfigurationResponse.proto view
+ fixture/GetStream.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/GetStreamKey.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/GetStreamKeyResponse.proto view
+ fixture/GetStreamResponse.proto view
+ fixture/GetStreamSession.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/GetStreamSessionResponse.proto view
+ fixture/ImportPlaybackKeyPair.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/ImportPlaybackKeyPairResponse.proto view
+ fixture/ListChannels.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/ListChannelsResponse.proto view
+ fixture/ListPlaybackKeyPairs.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/ListPlaybackKeyPairsResponse.proto view
+ fixture/ListRecordingConfigurations.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/ListRecordingConfigurationsResponse.proto view
+ fixture/ListStreamKeys.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/ListStreamKeysResponse.proto view
+ fixture/ListStreamSessions.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/ListStreamSessionsResponse.proto view
+ fixture/ListStreams.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/ListStreamsResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/PutMetadata.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/PutMetadataResponse.proto view
+ fixture/StopStream.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/StopStreamResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/UpdateChannel.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ivs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  ivs.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/UpdateChannelResponse.proto view
+ gen/Amazonka/IVS.hs view
@@ -0,0 +1,624 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.IVS+-- 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-07-14@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- __Introduction__+--+-- The Amazon Interactive Video Service (IVS) API is REST compatible, using+-- a standard HTTP API and an Amazon Web Services EventBridge event stream+-- for responses. JSON is used for both requests and responses, including+-- errors.+--+-- The API is an Amazon Web Services regional service. For a list of+-- supported regions and Amazon IVS HTTPS service endpoints, see the+-- <https://docs.aws.amazon.com/general/latest/gr/ivs.html Amazon IVS page>+-- in the /Amazon Web Services General Reference/.+--+-- /__All API request parameters and URLs are case sensitive.__/+--+-- For a summary of notable documentation changes in each release, see+-- <https://docs.aws.amazon.com/ivs/latest/userguide/doc-history.html Document History>.+--+-- __Allowed Header Values__+--+-- -   @ @__@Accept:@__@ @ application\/json+--+-- -   @ @__@Accept-Encoding:@__@ @ gzip, deflate+--+-- -   @ @__@Content-Type:@__@ @application\/json+--+-- __Resources__+--+-- The following resources contain information about your IVS live stream+-- (see+-- <https://docs.aws.amazon.com/ivs/latest/userguide/getting-started.html Getting Started with Amazon IVS>):+--+-- -   Channel — Stores configuration data related to your live stream. You+--     first create a channel and then use the channel’s stream key to+--     start your live stream. See the Channel endpoints for more+--     information.+--+-- -   Stream key — An identifier assigned by Amazon IVS when you create a+--     channel, which is then used to authorize streaming. See the+--     StreamKey endpoints for more information. /__Treat the stream key+--     like a secret, since it allows anyone to stream to the channel.__/+--+-- -   Playback key pair — Video playback may be restricted using+--     playback-authorization tokens, which use public-key encryption. A+--     playback key pair is the public-private pair of keys used to sign+--     and validate the playback-authorization token. See the+--     PlaybackKeyPair endpoints for more information.+--+-- -   Recording configuration — Stores configuration related to recording+--     a live stream and where to store the recorded content. Multiple+--     channels can reference the same recording configuration. See the+--     Recording Configuration endpoints for more information.+--+-- __Tagging__+--+-- A /tag/ is a metadata label that you assign to an Amazon Web Services+-- resource. A tag comprises a /key/ and a /value/, both set by you. For+-- example, you might set a tag as @topic:nature@ to label a particular+-- video category. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+--+-- Tags can help you identify and organize your Amazon Web Services+-- resources. For example, you can use the same tag for different resources+-- to indicate that they are related. You can also use tags to manage+-- access (see+-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html Access Tags>).+--+-- The Amazon IVS API has these tag-related endpoints: TagResource,+-- UntagResource, and ListTagsForResource. The following resources support+-- tagging: Channels, Stream Keys, Playback Key Pairs, and Recording+-- Configurations.+--+-- At most 50 tags can be applied to a resource.+--+-- __Authentication versus Authorization__+--+-- Note the differences between these concepts:+--+-- -   /Authentication/ is about verifying identity. You need to be+--     authenticated to sign Amazon IVS API requests.+--+-- -   /Authorization/ is about granting permissions. Your IAM roles need+--     to have permissions for Amazon IVS API requests. In addition,+--     authorization is needed to view+--     <https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html Amazon IVS private channels>.+--     (Private channels are channels that are enabled for \"playback+--     authorization.\")+--+-- __Authentication__+--+-- All Amazon IVS API requests must be authenticated with a signature. The+-- Amazon Web Services Command-Line Interface (CLI) and Amazon IVS Player+-- SDKs take care of signing the underlying API calls for you. However, if+-- your application calls the Amazon IVS API directly, it’s your+-- responsibility to sign the requests.+--+-- You generate a signature using valid Amazon Web Services credentials+-- that have permission to perform the requested action. For example, you+-- must sign PutMetadata requests with a signature generated from an IAM+-- user account that has the @ivs:PutMetadata@ permission.+--+-- For more information:+--+-- -   Authentication and generating signatures — See+--     <https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html Authenticating Requests (Amazon Web Services Signature Version 4)>+--     in the /Amazon Web Services General Reference/.+--+-- -   Managing Amazon IVS permissions — See+--     <https://docs.aws.amazon.com/ivs/latest/userguide/security-iam.html Identity and Access Management>+--     on the Security page of the /Amazon IVS User Guide/.+--+-- __Amazon Resource Names (ARNs)__+--+-- ARNs uniquely identify AWS resources. An ARN is required when you need+-- to specify a resource unambiguously across all of AWS, such as in IAM+-- policies and API calls. For more information, see+-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names>+-- in the /AWS General Reference/.+--+-- __Channel Endpoints__+--+-- -   CreateChannel — Creates a new channel and an associated stream key+--     to start streaming.+--+-- -   GetChannel — Gets the channel configuration for the specified+--     channel ARN.+--+-- -   BatchGetChannel — Performs GetChannel on multiple ARNs+--     simultaneously.+--+-- -   ListChannels — Gets summary information about all channels in your+--     account, in the Amazon Web Services region where the API request is+--     processed. This list can be filtered to match a specified name or+--     recording-configuration ARN. Filters are mutually exclusive and+--     cannot be used together. If you try to use both filters, you will+--     get an error (409 Conflict Exception).+--+-- -   UpdateChannel — Updates a channel\'s configuration. This does not+--     affect an ongoing stream of this channel. You must stop and restart+--     the stream for the changes to take effect.+--+-- -   DeleteChannel — Deletes the specified channel.+--+-- __StreamKey Endpoints__+--+-- -   CreateStreamKey — Creates a stream key, used to initiate a stream,+--     for the specified channel ARN.+--+-- -   GetStreamKey — Gets stream key information for the specified ARN.+--+-- -   BatchGetStreamKey — Performs GetStreamKey on multiple ARNs+--     simultaneously.+--+-- -   ListStreamKeys — Gets summary information about stream keys for the+--     specified channel.+--+-- -   DeleteStreamKey — Deletes the stream key for the specified ARN, so+--     it can no longer be used to stream.+--+-- __Stream Endpoints__+--+-- -   GetStream — Gets information about the active (live) stream on a+--     specified channel.+--+-- -   GetStreamSession — Gets metadata on a specified stream.+--+-- -   ListStreams — Gets summary information about live streams in your+--     account, in the Amazon Web Services region where the API request is+--     processed.+--+-- -   ListStreamSessions — Gets a summary of current and previous streams+--     for a specified channel in your account, in the AWS region where the+--     API request is processed.+--+-- -   StopStream — Disconnects the incoming RTMPS stream for the specified+--     channel. Can be used in conjunction with DeleteStreamKey to prevent+--     further streaming to a channel.+--+-- -   PutMetadata — Inserts metadata into the active stream of the+--     specified channel. At most 5 requests per second per channel are+--     allowed, each with a maximum 1 KB payload. (If 5 TPS is not+--     sufficient for your needs, we recommend batching your data into a+--     single PutMetadata call.) At most 155 requests per second per+--     account are allowed.+--+-- __PlaybackKeyPair Endpoints__+--+-- For more information, see+-- <https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html Setting Up Private Channels>+-- in the /Amazon IVS User Guide/.+--+-- -   ImportPlaybackKeyPair — Imports the public portion of a new key pair+--     and returns its @arn@ and @fingerprint@. The @privateKey@ can then+--     be used to generate viewer authorization tokens, to grant viewers+--     access to private channels (channels enabled for playback+--     authorization).+--+-- -   GetPlaybackKeyPair — Gets a specified playback authorization key+--     pair and returns the @arn@ and @fingerprint@. The @privateKey@ held+--     by the caller can be used to generate viewer authorization tokens,+--     to grant viewers access to private channels.+--+-- -   ListPlaybackKeyPairs — Gets summary information about playback key+--     pairs.+--+-- -   DeletePlaybackKeyPair — Deletes a specified authorization key pair.+--     This invalidates future viewer tokens generated using the key pair’s+--     @privateKey@.+--+-- __RecordingConfiguration Endpoints__+--+-- -   CreateRecordingConfiguration — Creates a new recording+--     configuration, used to enable recording to Amazon S3.+--+-- -   GetRecordingConfiguration — Gets the recording-configuration+--     metadata for the specified ARN.+--+-- -   ListRecordingConfigurations — Gets summary information about all+--     recording configurations in your account, in the Amazon Web Services+--     region where the API request is processed.+--+-- -   DeleteRecordingConfiguration — Deletes the recording configuration+--     for the specified ARN.+--+-- __Amazon Web Services Tags Endpoints__+--+-- -   TagResource — Adds or updates tags for the Amazon Web Services+--     resource with the specified ARN.+--+-- -   UntagResource — Removes tags from the resource with the specified+--     ARN.+--+-- -   ListTagsForResource — Gets information about Amazon Web Services+--     tags for the specified ARN.+module Amazonka.IVS+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccessDeniedException+    _AccessDeniedException,++    -- ** ChannelNotBroadcasting+    _ChannelNotBroadcasting,++    -- ** ConflictException+    _ConflictException,++    -- ** InternalServerException+    _InternalServerException,++    -- ** PendingVerification+    _PendingVerification,++    -- ** ResourceNotFoundException+    _ResourceNotFoundException,++    -- ** ServiceQuotaExceededException+    _ServiceQuotaExceededException,++    -- ** StreamUnavailable+    _StreamUnavailable,++    -- ** ThrottlingException+    _ThrottlingException,++    -- ** ValidationException+    _ValidationException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** BatchGetChannel+    BatchGetChannel (BatchGetChannel'),+    newBatchGetChannel,+    BatchGetChannelResponse (BatchGetChannelResponse'),+    newBatchGetChannelResponse,++    -- ** BatchGetStreamKey+    BatchGetStreamKey (BatchGetStreamKey'),+    newBatchGetStreamKey,+    BatchGetStreamKeyResponse (BatchGetStreamKeyResponse'),+    newBatchGetStreamKeyResponse,++    -- ** CreateChannel+    CreateChannel (CreateChannel'),+    newCreateChannel,+    CreateChannelResponse (CreateChannelResponse'),+    newCreateChannelResponse,++    -- ** CreateRecordingConfiguration+    CreateRecordingConfiguration (CreateRecordingConfiguration'),+    newCreateRecordingConfiguration,+    CreateRecordingConfigurationResponse (CreateRecordingConfigurationResponse'),+    newCreateRecordingConfigurationResponse,++    -- ** CreateStreamKey+    CreateStreamKey (CreateStreamKey'),+    newCreateStreamKey,+    CreateStreamKeyResponse (CreateStreamKeyResponse'),+    newCreateStreamKeyResponse,++    -- ** DeleteChannel+    DeleteChannel (DeleteChannel'),+    newDeleteChannel,+    DeleteChannelResponse (DeleteChannelResponse'),+    newDeleteChannelResponse,++    -- ** DeletePlaybackKeyPair+    DeletePlaybackKeyPair (DeletePlaybackKeyPair'),+    newDeletePlaybackKeyPair,+    DeletePlaybackKeyPairResponse (DeletePlaybackKeyPairResponse'),+    newDeletePlaybackKeyPairResponse,++    -- ** DeleteRecordingConfiguration+    DeleteRecordingConfiguration (DeleteRecordingConfiguration'),+    newDeleteRecordingConfiguration,+    DeleteRecordingConfigurationResponse (DeleteRecordingConfigurationResponse'),+    newDeleteRecordingConfigurationResponse,++    -- ** DeleteStreamKey+    DeleteStreamKey (DeleteStreamKey'),+    newDeleteStreamKey,+    DeleteStreamKeyResponse (DeleteStreamKeyResponse'),+    newDeleteStreamKeyResponse,++    -- ** GetChannel+    GetChannel (GetChannel'),+    newGetChannel,+    GetChannelResponse (GetChannelResponse'),+    newGetChannelResponse,++    -- ** GetPlaybackKeyPair+    GetPlaybackKeyPair (GetPlaybackKeyPair'),+    newGetPlaybackKeyPair,+    GetPlaybackKeyPairResponse (GetPlaybackKeyPairResponse'),+    newGetPlaybackKeyPairResponse,++    -- ** GetRecordingConfiguration+    GetRecordingConfiguration (GetRecordingConfiguration'),+    newGetRecordingConfiguration,+    GetRecordingConfigurationResponse (GetRecordingConfigurationResponse'),+    newGetRecordingConfigurationResponse,++    -- ** GetStream+    GetStream (GetStream'),+    newGetStream,+    GetStreamResponse (GetStreamResponse'),+    newGetStreamResponse,++    -- ** GetStreamKey+    GetStreamKey (GetStreamKey'),+    newGetStreamKey,+    GetStreamKeyResponse (GetStreamKeyResponse'),+    newGetStreamKeyResponse,++    -- ** GetStreamSession+    GetStreamSession (GetStreamSession'),+    newGetStreamSession,+    GetStreamSessionResponse (GetStreamSessionResponse'),+    newGetStreamSessionResponse,++    -- ** ImportPlaybackKeyPair+    ImportPlaybackKeyPair (ImportPlaybackKeyPair'),+    newImportPlaybackKeyPair,+    ImportPlaybackKeyPairResponse (ImportPlaybackKeyPairResponse'),+    newImportPlaybackKeyPairResponse,++    -- ** ListChannels (Paginated)+    ListChannels (ListChannels'),+    newListChannels,+    ListChannelsResponse (ListChannelsResponse'),+    newListChannelsResponse,++    -- ** ListPlaybackKeyPairs (Paginated)+    ListPlaybackKeyPairs (ListPlaybackKeyPairs'),+    newListPlaybackKeyPairs,+    ListPlaybackKeyPairsResponse (ListPlaybackKeyPairsResponse'),+    newListPlaybackKeyPairsResponse,++    -- ** ListRecordingConfigurations (Paginated)+    ListRecordingConfigurations (ListRecordingConfigurations'),+    newListRecordingConfigurations,+    ListRecordingConfigurationsResponse (ListRecordingConfigurationsResponse'),+    newListRecordingConfigurationsResponse,++    -- ** ListStreamKeys (Paginated)+    ListStreamKeys (ListStreamKeys'),+    newListStreamKeys,+    ListStreamKeysResponse (ListStreamKeysResponse'),+    newListStreamKeysResponse,++    -- ** ListStreamSessions+    ListStreamSessions (ListStreamSessions'),+    newListStreamSessions,+    ListStreamSessionsResponse (ListStreamSessionsResponse'),+    newListStreamSessionsResponse,++    -- ** ListStreams (Paginated)+    ListStreams (ListStreams'),+    newListStreams,+    ListStreamsResponse (ListStreamsResponse'),+    newListStreamsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** PutMetadata+    PutMetadata (PutMetadata'),+    newPutMetadata,+    PutMetadataResponse (PutMetadataResponse'),+    newPutMetadataResponse,++    -- ** StopStream+    StopStream (StopStream'),+    newStopStream,+    StopStreamResponse (StopStreamResponse'),+    newStopStreamResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateChannel+    UpdateChannel (UpdateChannel'),+    newUpdateChannel,+    UpdateChannelResponse (UpdateChannelResponse'),+    newUpdateChannelResponse,++    -- * Types++    -- ** ChannelLatencyMode+    ChannelLatencyMode (..),++    -- ** ChannelType+    ChannelType (..),++    -- ** RecordingConfigurationState+    RecordingConfigurationState (..),++    -- ** RecordingMode+    RecordingMode (..),++    -- ** StreamHealth+    StreamHealth (..),++    -- ** StreamState+    StreamState (..),++    -- ** AudioConfiguration+    AudioConfiguration (AudioConfiguration'),+    newAudioConfiguration,++    -- ** BatchError+    BatchError (BatchError'),+    newBatchError,++    -- ** Channel+    Channel (Channel'),+    newChannel,++    -- ** ChannelSummary+    ChannelSummary (ChannelSummary'),+    newChannelSummary,++    -- ** DestinationConfiguration+    DestinationConfiguration (DestinationConfiguration'),+    newDestinationConfiguration,++    -- ** IngestConfiguration+    IngestConfiguration (IngestConfiguration'),+    newIngestConfiguration,++    -- ** PlaybackKeyPair+    PlaybackKeyPair (PlaybackKeyPair'),+    newPlaybackKeyPair,++    -- ** PlaybackKeyPairSummary+    PlaybackKeyPairSummary (PlaybackKeyPairSummary'),+    newPlaybackKeyPairSummary,++    -- ** RecordingConfiguration+    RecordingConfiguration (RecordingConfiguration'),+    newRecordingConfiguration,++    -- ** RecordingConfigurationSummary+    RecordingConfigurationSummary (RecordingConfigurationSummary'),+    newRecordingConfigurationSummary,++    -- ** S3DestinationConfiguration+    S3DestinationConfiguration (S3DestinationConfiguration'),+    newS3DestinationConfiguration,++    -- ** Stream+    Stream (Stream'),+    newStream,++    -- ** StreamEvent+    StreamEvent (StreamEvent'),+    newStreamEvent,++    -- ** StreamFilters+    StreamFilters (StreamFilters'),+    newStreamFilters,++    -- ** StreamKey+    StreamKey (StreamKey'),+    newStreamKey,++    -- ** StreamKeySummary+    StreamKeySummary (StreamKeySummary'),+    newStreamKeySummary,++    -- ** StreamSession+    StreamSession (StreamSession'),+    newStreamSession,++    -- ** StreamSessionSummary+    StreamSessionSummary (StreamSessionSummary'),+    newStreamSessionSummary,++    -- ** StreamSummary+    StreamSummary (StreamSummary'),+    newStreamSummary,++    -- ** ThumbnailConfiguration+    ThumbnailConfiguration (ThumbnailConfiguration'),+    newThumbnailConfiguration,++    -- ** VideoConfiguration+    VideoConfiguration (VideoConfiguration'),+    newVideoConfiguration,+  )+where++import Amazonka.IVS.BatchGetChannel+import Amazonka.IVS.BatchGetStreamKey+import Amazonka.IVS.CreateChannel+import Amazonka.IVS.CreateRecordingConfiguration+import Amazonka.IVS.CreateStreamKey+import Amazonka.IVS.DeleteChannel+import Amazonka.IVS.DeletePlaybackKeyPair+import Amazonka.IVS.DeleteRecordingConfiguration+import Amazonka.IVS.DeleteStreamKey+import Amazonka.IVS.GetChannel+import Amazonka.IVS.GetPlaybackKeyPair+import Amazonka.IVS.GetRecordingConfiguration+import Amazonka.IVS.GetStream+import Amazonka.IVS.GetStreamKey+import Amazonka.IVS.GetStreamSession+import Amazonka.IVS.ImportPlaybackKeyPair+import Amazonka.IVS.Lens+import Amazonka.IVS.ListChannels+import Amazonka.IVS.ListPlaybackKeyPairs+import Amazonka.IVS.ListRecordingConfigurations+import Amazonka.IVS.ListStreamKeys+import Amazonka.IVS.ListStreamSessions+import Amazonka.IVS.ListStreams+import Amazonka.IVS.ListTagsForResource+import Amazonka.IVS.PutMetadata+import Amazonka.IVS.StopStream+import Amazonka.IVS.TagResource+import Amazonka.IVS.Types+import Amazonka.IVS.UntagResource+import Amazonka.IVS.UpdateChannel+import Amazonka.IVS.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 'IVS'.++-- $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/IVS/BatchGetChannel.hs view
@@ -0,0 +1,174 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.BatchGetChannel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Performs GetChannel on multiple ARNs simultaneously.+module Amazonka.IVS.BatchGetChannel+  ( -- * Creating a Request+    BatchGetChannel (..),+    newBatchGetChannel,++    -- * Request Lenses+    batchGetChannel_arns,++    -- * Destructuring the Response+    BatchGetChannelResponse (..),+    newBatchGetChannelResponse,++    -- * Response Lenses+    batchGetChannelResponse_channels,+    batchGetChannelResponse_errors,+    batchGetChannelResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchGetChannel' smart constructor.+data BatchGetChannel = BatchGetChannel'+  { -- | Array of ARNs, one per channel.+    arns :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetChannel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arns', 'batchGetChannel_arns' - Array of ARNs, one per channel.+newBatchGetChannel ::+  -- | 'arns'+  Prelude.NonEmpty Prelude.Text ->+  BatchGetChannel+newBatchGetChannel pArns_ =+  BatchGetChannel' {arns = Lens.coerced Lens.# pArns_}++-- | Array of ARNs, one per channel.+batchGetChannel_arns :: Lens.Lens' BatchGetChannel (Prelude.NonEmpty Prelude.Text)+batchGetChannel_arns = Lens.lens (\BatchGetChannel' {arns} -> arns) (\s@BatchGetChannel' {} a -> s {arns = a} :: BatchGetChannel) Prelude.. Lens.coerced++instance Core.AWSRequest BatchGetChannel where+  type+    AWSResponse BatchGetChannel =+      BatchGetChannelResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchGetChannelResponse'+            Prelude.<$> (x Data..?> "channels" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "errors" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable BatchGetChannel where+  hashWithSalt _salt BatchGetChannel' {..} =+    _salt `Prelude.hashWithSalt` arns++instance Prelude.NFData BatchGetChannel where+  rnf BatchGetChannel' {..} = Prelude.rnf arns++instance Data.ToHeaders BatchGetChannel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchGetChannel where+  toJSON BatchGetChannel' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arns" Data..= arns)]+      )++instance Data.ToPath BatchGetChannel where+  toPath = Prelude.const "/BatchGetChannel"++instance Data.ToQuery BatchGetChannel where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchGetChannelResponse' smart constructor.+data BatchGetChannelResponse = BatchGetChannelResponse'+  { channels :: Prelude.Maybe [Channel],+    -- | Each error object is related to a specific ARN in the request.+    errors :: Prelude.Maybe [BatchError],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetChannelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channels', 'batchGetChannelResponse_channels' -+--+-- 'errors', 'batchGetChannelResponse_errors' - Each error object is related to a specific ARN in the request.+--+-- 'httpStatus', 'batchGetChannelResponse_httpStatus' - The response's http status code.+newBatchGetChannelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchGetChannelResponse+newBatchGetChannelResponse pHttpStatus_ =+  BatchGetChannelResponse'+    { channels =+        Prelude.Nothing,+      errors = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++batchGetChannelResponse_channels :: Lens.Lens' BatchGetChannelResponse (Prelude.Maybe [Channel])+batchGetChannelResponse_channels = Lens.lens (\BatchGetChannelResponse' {channels} -> channels) (\s@BatchGetChannelResponse' {} a -> s {channels = a} :: BatchGetChannelResponse) Prelude.. Lens.mapping Lens.coerced++-- | Each error object is related to a specific ARN in the request.+batchGetChannelResponse_errors :: Lens.Lens' BatchGetChannelResponse (Prelude.Maybe [BatchError])+batchGetChannelResponse_errors = Lens.lens (\BatchGetChannelResponse' {errors} -> errors) (\s@BatchGetChannelResponse' {} a -> s {errors = a} :: BatchGetChannelResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchGetChannelResponse_httpStatus :: Lens.Lens' BatchGetChannelResponse Prelude.Int+batchGetChannelResponse_httpStatus = Lens.lens (\BatchGetChannelResponse' {httpStatus} -> httpStatus) (\s@BatchGetChannelResponse' {} a -> s {httpStatus = a} :: BatchGetChannelResponse)++instance Prelude.NFData BatchGetChannelResponse where+  rnf BatchGetChannelResponse' {..} =+    Prelude.rnf channels+      `Prelude.seq` Prelude.rnf errors+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/BatchGetStreamKey.hs view
@@ -0,0 +1,175 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.BatchGetStreamKey+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Performs GetStreamKey on multiple ARNs simultaneously.+module Amazonka.IVS.BatchGetStreamKey+  ( -- * Creating a Request+    BatchGetStreamKey (..),+    newBatchGetStreamKey,++    -- * Request Lenses+    batchGetStreamKey_arns,++    -- * Destructuring the Response+    BatchGetStreamKeyResponse (..),+    newBatchGetStreamKeyResponse,++    -- * Response Lenses+    batchGetStreamKeyResponse_errors,+    batchGetStreamKeyResponse_streamKeys,+    batchGetStreamKeyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchGetStreamKey' smart constructor.+data BatchGetStreamKey = BatchGetStreamKey'+  { -- | Array of ARNs, one per channel.+    arns :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetStreamKey' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'arns', 'batchGetStreamKey_arns' - Array of ARNs, one per channel.+newBatchGetStreamKey ::+  -- | 'arns'+  Prelude.NonEmpty Prelude.Text ->+  BatchGetStreamKey+newBatchGetStreamKey pArns_ =+  BatchGetStreamKey'+    { arns =+        Lens.coerced Lens.# pArns_+    }++-- | Array of ARNs, one per channel.+batchGetStreamKey_arns :: Lens.Lens' BatchGetStreamKey (Prelude.NonEmpty Prelude.Text)+batchGetStreamKey_arns = Lens.lens (\BatchGetStreamKey' {arns} -> arns) (\s@BatchGetStreamKey' {} a -> s {arns = a} :: BatchGetStreamKey) Prelude.. Lens.coerced++instance Core.AWSRequest BatchGetStreamKey where+  type+    AWSResponse BatchGetStreamKey =+      BatchGetStreamKeyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchGetStreamKeyResponse'+            Prelude.<$> (x Data..?> "errors" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "streamKeys" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable BatchGetStreamKey where+  hashWithSalt _salt BatchGetStreamKey' {..} =+    _salt `Prelude.hashWithSalt` arns++instance Prelude.NFData BatchGetStreamKey where+  rnf BatchGetStreamKey' {..} = Prelude.rnf arns++instance Data.ToHeaders BatchGetStreamKey where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchGetStreamKey where+  toJSON BatchGetStreamKey' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arns" Data..= arns)]+      )++instance Data.ToPath BatchGetStreamKey where+  toPath = Prelude.const "/BatchGetStreamKey"++instance Data.ToQuery BatchGetStreamKey where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchGetStreamKeyResponse' smart constructor.+data BatchGetStreamKeyResponse = BatchGetStreamKeyResponse'+  { errors :: Prelude.Maybe [BatchError],+    streamKeys :: Prelude.Maybe [StreamKey],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetStreamKeyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'errors', 'batchGetStreamKeyResponse_errors' -+--+-- 'streamKeys', 'batchGetStreamKeyResponse_streamKeys' -+--+-- 'httpStatus', 'batchGetStreamKeyResponse_httpStatus' - The response's http status code.+newBatchGetStreamKeyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchGetStreamKeyResponse+newBatchGetStreamKeyResponse pHttpStatus_ =+  BatchGetStreamKeyResponse'+    { errors =+        Prelude.Nothing,+      streamKeys = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++batchGetStreamKeyResponse_errors :: Lens.Lens' BatchGetStreamKeyResponse (Prelude.Maybe [BatchError])+batchGetStreamKeyResponse_errors = Lens.lens (\BatchGetStreamKeyResponse' {errors} -> errors) (\s@BatchGetStreamKeyResponse' {} a -> s {errors = a} :: BatchGetStreamKeyResponse) Prelude.. Lens.mapping Lens.coerced++batchGetStreamKeyResponse_streamKeys :: Lens.Lens' BatchGetStreamKeyResponse (Prelude.Maybe [StreamKey])+batchGetStreamKeyResponse_streamKeys = Lens.lens (\BatchGetStreamKeyResponse' {streamKeys} -> streamKeys) (\s@BatchGetStreamKeyResponse' {} a -> s {streamKeys = a} :: BatchGetStreamKeyResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchGetStreamKeyResponse_httpStatus :: Lens.Lens' BatchGetStreamKeyResponse Prelude.Int+batchGetStreamKeyResponse_httpStatus = Lens.lens (\BatchGetStreamKeyResponse' {httpStatus} -> httpStatus) (\s@BatchGetStreamKeyResponse' {} a -> s {httpStatus = a} :: BatchGetStreamKeyResponse)++instance Prelude.NFData BatchGetStreamKeyResponse where+  rnf BatchGetStreamKeyResponse' {..} =+    Prelude.rnf errors+      `Prelude.seq` Prelude.rnf streamKeys+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/CreateChannel.hs view
@@ -0,0 +1,315 @@+{-# 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.IVS.CreateChannel+-- 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 new channel and an associated stream key to start streaming.+module Amazonka.IVS.CreateChannel+  ( -- * Creating a Request+    CreateChannel (..),+    newCreateChannel,++    -- * Request Lenses+    createChannel_authorized,+    createChannel_latencyMode,+    createChannel_name,+    createChannel_recordingConfigurationArn,+    createChannel_tags,+    createChannel_type,++    -- * Destructuring the Response+    CreateChannelResponse (..),+    newCreateChannelResponse,++    -- * Response Lenses+    createChannelResponse_channel,+    createChannelResponse_streamKey,+    createChannelResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateChannel' smart constructor.+data CreateChannel = CreateChannel'+  { -- | Whether the channel is private (enabled for playback authorization).+    -- Default: @false@.+    authorized :: Prelude.Maybe Prelude.Bool,+    -- | Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+    -- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+    -- (Note: In the Amazon IVS console, @LOW@ and @NORMAL@ correspond to+    -- Ultra-low and Standard, respectively.) Default: @LOW@.+    latencyMode :: Prelude.Maybe ChannelLatencyMode,+    -- | Channel name.+    name :: Prelude.Maybe Prelude.Text,+    -- | Recording-configuration ARN. Default: \"\" (empty string, recording is+    -- disabled).+    recordingConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Channel type, which determines the allowable resolution and bitrate. /If+    -- you exceed the allowable resolution or bitrate, the stream probably will+    -- disconnect immediately./ Default: @STANDARD@. Valid values:+    --+    -- -   @STANDARD@: Video is transcoded: multiple qualities are generated+    --     from the original input, to automatically give viewers the best+    --     experience for their devices and network conditions. Transcoding+    --     allows higher playback quality across a range of download speeds.+    --     Resolution can be up to 1080p and bitrate can be up to 8.5 Mbps.+    --     Audio is transcoded only for renditions 360p and below; above that,+    --     audio is passed through. This is the default.+    --+    -- -   @BASIC@: Video is transmuxed: Amazon IVS delivers the original input+    --     to viewers. The viewer’s video-quality choice is limited to the+    --     original input. Resolution can be up to 1080p and bitrate can be up+    --     to 1.5 Mbps for 480p and up to 3.5 Mbps for resolutions between 480p+    --     and 1080p.+    type' :: Prelude.Maybe ChannelType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateChannel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'authorized', 'createChannel_authorized' - Whether the channel is private (enabled for playback authorization).+-- Default: @false@.+--+-- 'latencyMode', 'createChannel_latencyMode' - Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+-- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+-- (Note: In the Amazon IVS console, @LOW@ and @NORMAL@ correspond to+-- Ultra-low and Standard, respectively.) Default: @LOW@.+--+-- 'name', 'createChannel_name' - Channel name.+--+-- 'recordingConfigurationArn', 'createChannel_recordingConfigurationArn' - Recording-configuration ARN. Default: \"\" (empty string, recording is+-- disabled).+--+-- 'tags', 'createChannel_tags' - Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+--+-- 'type'', 'createChannel_type' - Channel type, which determines the allowable resolution and bitrate. /If+-- you exceed the allowable resolution or bitrate, the stream probably will+-- disconnect immediately./ Default: @STANDARD@. Valid values:+--+-- -   @STANDARD@: Video is transcoded: multiple qualities are generated+--     from the original input, to automatically give viewers the best+--     experience for their devices and network conditions. Transcoding+--     allows higher playback quality across a range of download speeds.+--     Resolution can be up to 1080p and bitrate can be up to 8.5 Mbps.+--     Audio is transcoded only for renditions 360p and below; above that,+--     audio is passed through. This is the default.+--+-- -   @BASIC@: Video is transmuxed: Amazon IVS delivers the original input+--     to viewers. The viewer’s video-quality choice is limited to the+--     original input. Resolution can be up to 1080p and bitrate can be up+--     to 1.5 Mbps for 480p and up to 3.5 Mbps for resolutions between 480p+--     and 1080p.+newCreateChannel ::+  CreateChannel+newCreateChannel =+  CreateChannel'+    { authorized = Prelude.Nothing,+      latencyMode = Prelude.Nothing,+      name = Prelude.Nothing,+      recordingConfigurationArn = Prelude.Nothing,+      tags = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | Whether the channel is private (enabled for playback authorization).+-- Default: @false@.+createChannel_authorized :: Lens.Lens' CreateChannel (Prelude.Maybe Prelude.Bool)+createChannel_authorized = Lens.lens (\CreateChannel' {authorized} -> authorized) (\s@CreateChannel' {} a -> s {authorized = a} :: CreateChannel)++-- | Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+-- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+-- (Note: In the Amazon IVS console, @LOW@ and @NORMAL@ correspond to+-- Ultra-low and Standard, respectively.) Default: @LOW@.+createChannel_latencyMode :: Lens.Lens' CreateChannel (Prelude.Maybe ChannelLatencyMode)+createChannel_latencyMode = Lens.lens (\CreateChannel' {latencyMode} -> latencyMode) (\s@CreateChannel' {} a -> s {latencyMode = a} :: CreateChannel)++-- | Channel name.+createChannel_name :: Lens.Lens' CreateChannel (Prelude.Maybe Prelude.Text)+createChannel_name = Lens.lens (\CreateChannel' {name} -> name) (\s@CreateChannel' {} a -> s {name = a} :: CreateChannel)++-- | Recording-configuration ARN. Default: \"\" (empty string, recording is+-- disabled).+createChannel_recordingConfigurationArn :: Lens.Lens' CreateChannel (Prelude.Maybe Prelude.Text)+createChannel_recordingConfigurationArn = Lens.lens (\CreateChannel' {recordingConfigurationArn} -> recordingConfigurationArn) (\s@CreateChannel' {} a -> s {recordingConfigurationArn = a} :: CreateChannel)++-- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+createChannel_tags :: Lens.Lens' CreateChannel (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createChannel_tags = Lens.lens (\CreateChannel' {tags} -> tags) (\s@CreateChannel' {} a -> s {tags = a} :: CreateChannel) Prelude.. Lens.mapping Lens.coerced++-- | Channel type, which determines the allowable resolution and bitrate. /If+-- you exceed the allowable resolution or bitrate, the stream probably will+-- disconnect immediately./ Default: @STANDARD@. Valid values:+--+-- -   @STANDARD@: Video is transcoded: multiple qualities are generated+--     from the original input, to automatically give viewers the best+--     experience for their devices and network conditions. Transcoding+--     allows higher playback quality across a range of download speeds.+--     Resolution can be up to 1080p and bitrate can be up to 8.5 Mbps.+--     Audio is transcoded only for renditions 360p and below; above that,+--     audio is passed through. This is the default.+--+-- -   @BASIC@: Video is transmuxed: Amazon IVS delivers the original input+--     to viewers. The viewer’s video-quality choice is limited to the+--     original input. Resolution can be up to 1080p and bitrate can be up+--     to 1.5 Mbps for 480p and up to 3.5 Mbps for resolutions between 480p+--     and 1080p.+createChannel_type :: Lens.Lens' CreateChannel (Prelude.Maybe ChannelType)+createChannel_type = Lens.lens (\CreateChannel' {type'} -> type') (\s@CreateChannel' {} a -> s {type' = a} :: CreateChannel)++instance Core.AWSRequest CreateChannel where+  type+    AWSResponse CreateChannel =+      CreateChannelResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateChannelResponse'+            Prelude.<$> (x Data..?> "channel")+            Prelude.<*> (x Data..?> "streamKey")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateChannel where+  hashWithSalt _salt CreateChannel' {..} =+    _salt+      `Prelude.hashWithSalt` authorized+      `Prelude.hashWithSalt` latencyMode+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` recordingConfigurationArn+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` type'++instance Prelude.NFData CreateChannel where+  rnf CreateChannel' {..} =+    Prelude.rnf authorized+      `Prelude.seq` Prelude.rnf latencyMode+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf recordingConfigurationArn+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf type'++instance Data.ToHeaders CreateChannel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateChannel where+  toJSON CreateChannel' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("authorized" Data..=) Prelude.<$> authorized,+            ("latencyMode" Data..=) Prelude.<$> latencyMode,+            ("name" Data..=) Prelude.<$> name,+            ("recordingConfigurationArn" Data..=)+              Prelude.<$> recordingConfigurationArn,+            ("tags" Data..=) Prelude.<$> tags,+            ("type" Data..=) Prelude.<$> type'+          ]+      )++instance Data.ToPath CreateChannel where+  toPath = Prelude.const "/CreateChannel"++instance Data.ToQuery CreateChannel where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateChannelResponse' smart constructor.+data CreateChannelResponse = CreateChannelResponse'+  { channel :: Prelude.Maybe Channel,+    streamKey :: Prelude.Maybe StreamKey,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateChannelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channel', 'createChannelResponse_channel' -+--+-- 'streamKey', 'createChannelResponse_streamKey' -+--+-- 'httpStatus', 'createChannelResponse_httpStatus' - The response's http status code.+newCreateChannelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateChannelResponse+newCreateChannelResponse pHttpStatus_ =+  CreateChannelResponse'+    { channel = Prelude.Nothing,+      streamKey = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++createChannelResponse_channel :: Lens.Lens' CreateChannelResponse (Prelude.Maybe Channel)+createChannelResponse_channel = Lens.lens (\CreateChannelResponse' {channel} -> channel) (\s@CreateChannelResponse' {} a -> s {channel = a} :: CreateChannelResponse)++createChannelResponse_streamKey :: Lens.Lens' CreateChannelResponse (Prelude.Maybe StreamKey)+createChannelResponse_streamKey = Lens.lens (\CreateChannelResponse' {streamKey} -> streamKey) (\s@CreateChannelResponse' {} a -> s {streamKey = a} :: CreateChannelResponse)++-- | The response's http status code.+createChannelResponse_httpStatus :: Lens.Lens' CreateChannelResponse Prelude.Int+createChannelResponse_httpStatus = Lens.lens (\CreateChannelResponse' {httpStatus} -> httpStatus) (\s@CreateChannelResponse' {} a -> s {httpStatus = a} :: CreateChannelResponse)++instance Prelude.NFData CreateChannelResponse where+  rnf CreateChannelResponse' {..} =+    Prelude.rnf channel+      `Prelude.seq` Prelude.rnf streamKey+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/CreateRecordingConfiguration.hs view
@@ -0,0 +1,275 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.CreateRecordingConfiguration+-- 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 new recording configuration, used to enable recording to+-- Amazon S3.+--+-- __Known issue:__ In the us-east-1 region, if you use the Amazon Web+-- Services CLI to create a recording configuration, it returns success+-- even if the S3 bucket is in a different region. In this case, the+-- @state@ of the recording configuration is @CREATE_FAILED@ (instead of+-- @ACTIVE@). (In other regions, the CLI correctly returns failure if the+-- bucket is in a different region.)+--+-- __Workaround:__ Ensure that your S3 bucket is in the same region as the+-- recording configuration. If you create a recording configuration in a+-- different region as your S3 bucket, delete that recording configuration+-- and create a new one with an S3 bucket from the correct region.+module Amazonka.IVS.CreateRecordingConfiguration+  ( -- * Creating a Request+    CreateRecordingConfiguration (..),+    newCreateRecordingConfiguration,++    -- * Request Lenses+    createRecordingConfiguration_name,+    createRecordingConfiguration_recordingReconnectWindowSeconds,+    createRecordingConfiguration_tags,+    createRecordingConfiguration_thumbnailConfiguration,+    createRecordingConfiguration_destinationConfiguration,++    -- * Destructuring the Response+    CreateRecordingConfigurationResponse (..),+    newCreateRecordingConfigurationResponse,++    -- * Response Lenses+    createRecordingConfigurationResponse_recordingConfiguration,+    createRecordingConfigurationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateRecordingConfiguration' smart constructor.+data CreateRecordingConfiguration = CreateRecordingConfiguration'+  { -- | Recording-configuration name. The value does not need to be unique.+    name :: Prelude.Maybe Prelude.Text,+    -- | If a broadcast disconnects and then reconnects within the specified+    -- interval, the multiple streams will be considered a single broadcast and+    -- merged together. Default: 0.+    recordingReconnectWindowSeconds :: Prelude.Maybe Prelude.Natural,+    -- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A complex type that allows you to enable\/disable the recording of+    -- thumbnails for a live session and modify the interval at which+    -- thumbnails are generated for the live session.+    thumbnailConfiguration :: Prelude.Maybe ThumbnailConfiguration,+    -- | A complex type that contains a destination configuration for where+    -- recorded video will be stored.+    destinationConfiguration :: DestinationConfiguration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateRecordingConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'createRecordingConfiguration_name' - Recording-configuration name. The value does not need to be unique.+--+-- 'recordingReconnectWindowSeconds', 'createRecordingConfiguration_recordingReconnectWindowSeconds' - If a broadcast disconnects and then reconnects within the specified+-- interval, the multiple streams will be considered a single broadcast and+-- merged together. Default: 0.+--+-- 'tags', 'createRecordingConfiguration_tags' - Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+--+-- 'thumbnailConfiguration', 'createRecordingConfiguration_thumbnailConfiguration' - A complex type that allows you to enable\/disable the recording of+-- thumbnails for a live session and modify the interval at which+-- thumbnails are generated for the live session.+--+-- 'destinationConfiguration', 'createRecordingConfiguration_destinationConfiguration' - A complex type that contains a destination configuration for where+-- recorded video will be stored.+newCreateRecordingConfiguration ::+  -- | 'destinationConfiguration'+  DestinationConfiguration ->+  CreateRecordingConfiguration+newCreateRecordingConfiguration+  pDestinationConfiguration_ =+    CreateRecordingConfiguration'+      { name =+          Prelude.Nothing,+        recordingReconnectWindowSeconds =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        thumbnailConfiguration = Prelude.Nothing,+        destinationConfiguration =+          pDestinationConfiguration_+      }++-- | Recording-configuration name. The value does not need to be unique.+createRecordingConfiguration_name :: Lens.Lens' CreateRecordingConfiguration (Prelude.Maybe Prelude.Text)+createRecordingConfiguration_name = Lens.lens (\CreateRecordingConfiguration' {name} -> name) (\s@CreateRecordingConfiguration' {} a -> s {name = a} :: CreateRecordingConfiguration)++-- | If a broadcast disconnects and then reconnects within the specified+-- interval, the multiple streams will be considered a single broadcast and+-- merged together. Default: 0.+createRecordingConfiguration_recordingReconnectWindowSeconds :: Lens.Lens' CreateRecordingConfiguration (Prelude.Maybe Prelude.Natural)+createRecordingConfiguration_recordingReconnectWindowSeconds = Lens.lens (\CreateRecordingConfiguration' {recordingReconnectWindowSeconds} -> recordingReconnectWindowSeconds) (\s@CreateRecordingConfiguration' {} a -> s {recordingReconnectWindowSeconds = a} :: CreateRecordingConfiguration)++-- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+createRecordingConfiguration_tags :: Lens.Lens' CreateRecordingConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createRecordingConfiguration_tags = Lens.lens (\CreateRecordingConfiguration' {tags} -> tags) (\s@CreateRecordingConfiguration' {} a -> s {tags = a} :: CreateRecordingConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | A complex type that allows you to enable\/disable the recording of+-- thumbnails for a live session and modify the interval at which+-- thumbnails are generated for the live session.+createRecordingConfiguration_thumbnailConfiguration :: Lens.Lens' CreateRecordingConfiguration (Prelude.Maybe ThumbnailConfiguration)+createRecordingConfiguration_thumbnailConfiguration = Lens.lens (\CreateRecordingConfiguration' {thumbnailConfiguration} -> thumbnailConfiguration) (\s@CreateRecordingConfiguration' {} a -> s {thumbnailConfiguration = a} :: CreateRecordingConfiguration)++-- | A complex type that contains a destination configuration for where+-- recorded video will be stored.+createRecordingConfiguration_destinationConfiguration :: Lens.Lens' CreateRecordingConfiguration DestinationConfiguration+createRecordingConfiguration_destinationConfiguration = Lens.lens (\CreateRecordingConfiguration' {destinationConfiguration} -> destinationConfiguration) (\s@CreateRecordingConfiguration' {} a -> s {destinationConfiguration = a} :: CreateRecordingConfiguration)++instance Core.AWSRequest CreateRecordingConfiguration where+  type+    AWSResponse CreateRecordingConfiguration =+      CreateRecordingConfigurationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateRecordingConfigurationResponse'+            Prelude.<$> (x Data..?> "recordingConfiguration")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    CreateRecordingConfiguration+  where+  hashWithSalt _salt CreateRecordingConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` recordingReconnectWindowSeconds+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` thumbnailConfiguration+      `Prelude.hashWithSalt` destinationConfiguration++instance Prelude.NFData CreateRecordingConfiguration where+  rnf CreateRecordingConfiguration' {..} =+    Prelude.rnf name+      `Prelude.seq` Prelude.rnf recordingReconnectWindowSeconds+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf thumbnailConfiguration+      `Prelude.seq` Prelude.rnf destinationConfiguration++instance Data.ToHeaders CreateRecordingConfiguration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateRecordingConfiguration where+  toJSON CreateRecordingConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("name" Data..=) Prelude.<$> name,+            ("recordingReconnectWindowSeconds" Data..=)+              Prelude.<$> recordingReconnectWindowSeconds,+            ("tags" Data..=) Prelude.<$> tags,+            ("thumbnailConfiguration" Data..=)+              Prelude.<$> thumbnailConfiguration,+            Prelude.Just+              ( "destinationConfiguration"+                  Data..= destinationConfiguration+              )+          ]+      )++instance Data.ToPath CreateRecordingConfiguration where+  toPath =+    Prelude.const "/CreateRecordingConfiguration"++instance Data.ToQuery CreateRecordingConfiguration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateRecordingConfigurationResponse' smart constructor.+data CreateRecordingConfigurationResponse = CreateRecordingConfigurationResponse'+  { recordingConfiguration :: Prelude.Maybe RecordingConfiguration,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateRecordingConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'recordingConfiguration', 'createRecordingConfigurationResponse_recordingConfiguration' -+--+-- 'httpStatus', 'createRecordingConfigurationResponse_httpStatus' - The response's http status code.+newCreateRecordingConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateRecordingConfigurationResponse+newCreateRecordingConfigurationResponse pHttpStatus_ =+  CreateRecordingConfigurationResponse'+    { recordingConfiguration =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++createRecordingConfigurationResponse_recordingConfiguration :: Lens.Lens' CreateRecordingConfigurationResponse (Prelude.Maybe RecordingConfiguration)+createRecordingConfigurationResponse_recordingConfiguration = Lens.lens (\CreateRecordingConfigurationResponse' {recordingConfiguration} -> recordingConfiguration) (\s@CreateRecordingConfigurationResponse' {} a -> s {recordingConfiguration = a} :: CreateRecordingConfigurationResponse)++-- | The response's http status code.+createRecordingConfigurationResponse_httpStatus :: Lens.Lens' CreateRecordingConfigurationResponse Prelude.Int+createRecordingConfigurationResponse_httpStatus = Lens.lens (\CreateRecordingConfigurationResponse' {httpStatus} -> httpStatus) (\s@CreateRecordingConfigurationResponse' {} a -> s {httpStatus = a} :: CreateRecordingConfigurationResponse)++instance+  Prelude.NFData+    CreateRecordingConfigurationResponse+  where+  rnf CreateRecordingConfigurationResponse' {..} =+    Prelude.rnf recordingConfiguration+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/CreateStreamKey.hs view
@@ -0,0 +1,201 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.CreateStreamKey+-- 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 stream key, used to initiate a stream, for the specified+-- channel ARN.+--+-- Note that CreateChannel creates a stream key. If you subsequently use+-- CreateStreamKey on the same channel, it will fail because a stream key+-- already exists and there is a limit of 1 stream key per channel. To+-- reset the stream key on a channel, use DeleteStreamKey and then+-- CreateStreamKey.+module Amazonka.IVS.CreateStreamKey+  ( -- * Creating a Request+    CreateStreamKey (..),+    newCreateStreamKey,++    -- * Request Lenses+    createStreamKey_tags,+    createStreamKey_channelArn,++    -- * Destructuring the Response+    CreateStreamKeyResponse (..),+    newCreateStreamKeyResponse,++    -- * Response Lenses+    createStreamKeyResponse_streamKey,+    createStreamKeyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateStreamKey' smart constructor.+data CreateStreamKey = CreateStreamKey'+  { -- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | ARN of the channel for which to create the stream key.+    channelArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateStreamKey' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'createStreamKey_tags' - Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+--+-- 'channelArn', 'createStreamKey_channelArn' - ARN of the channel for which to create the stream key.+newCreateStreamKey ::+  -- | 'channelArn'+  Prelude.Text ->+  CreateStreamKey+newCreateStreamKey pChannelArn_ =+  CreateStreamKey'+    { tags = Prelude.Nothing,+      channelArn = pChannelArn_+    }++-- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+createStreamKey_tags :: Lens.Lens' CreateStreamKey (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+createStreamKey_tags = Lens.lens (\CreateStreamKey' {tags} -> tags) (\s@CreateStreamKey' {} a -> s {tags = a} :: CreateStreamKey) Prelude.. Lens.mapping Lens.coerced++-- | ARN of the channel for which to create the stream key.+createStreamKey_channelArn :: Lens.Lens' CreateStreamKey Prelude.Text+createStreamKey_channelArn = Lens.lens (\CreateStreamKey' {channelArn} -> channelArn) (\s@CreateStreamKey' {} a -> s {channelArn = a} :: CreateStreamKey)++instance Core.AWSRequest CreateStreamKey where+  type+    AWSResponse CreateStreamKey =+      CreateStreamKeyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateStreamKeyResponse'+            Prelude.<$> (x Data..?> "streamKey")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateStreamKey where+  hashWithSalt _salt CreateStreamKey' {..} =+    _salt+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` channelArn++instance Prelude.NFData CreateStreamKey where+  rnf CreateStreamKey' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf channelArn++instance Data.ToHeaders CreateStreamKey where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateStreamKey where+  toJSON CreateStreamKey' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("channelArn" Data..= channelArn)+          ]+      )++instance Data.ToPath CreateStreamKey where+  toPath = Prelude.const "/CreateStreamKey"++instance Data.ToQuery CreateStreamKey where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateStreamKeyResponse' smart constructor.+data CreateStreamKeyResponse = CreateStreamKeyResponse'+  { -- | Stream key used to authenticate an RTMPS stream for ingestion.+    streamKey :: Prelude.Maybe StreamKey,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateStreamKeyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'streamKey', 'createStreamKeyResponse_streamKey' - Stream key used to authenticate an RTMPS stream for ingestion.+--+-- 'httpStatus', 'createStreamKeyResponse_httpStatus' - The response's http status code.+newCreateStreamKeyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateStreamKeyResponse+newCreateStreamKeyResponse pHttpStatus_ =+  CreateStreamKeyResponse'+    { streamKey =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Stream key used to authenticate an RTMPS stream for ingestion.+createStreamKeyResponse_streamKey :: Lens.Lens' CreateStreamKeyResponse (Prelude.Maybe StreamKey)+createStreamKeyResponse_streamKey = Lens.lens (\CreateStreamKeyResponse' {streamKey} -> streamKey) (\s@CreateStreamKeyResponse' {} a -> s {streamKey = a} :: CreateStreamKeyResponse)++-- | The response's http status code.+createStreamKeyResponse_httpStatus :: Lens.Lens' CreateStreamKeyResponse Prelude.Int+createStreamKeyResponse_httpStatus = Lens.lens (\CreateStreamKeyResponse' {httpStatus} -> httpStatus) (\s@CreateStreamKeyResponse' {} a -> s {httpStatus = a} :: CreateStreamKeyResponse)++instance Prelude.NFData CreateStreamKeyResponse where+  rnf CreateStreamKeyResponse' {..} =+    Prelude.rnf streamKey+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/DeleteChannel.hs view
@@ -0,0 +1,134 @@+{-# 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.IVS.DeleteChannel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes the specified channel and its associated stream keys.+--+-- If you try to delete a live channel, you will get an error (409+-- ConflictException). To delete a channel that is live, call StopStream,+-- wait for the Amazon EventBridge \"Stream End\" event (to verify that the+-- stream\'s state was changed from Live to Offline), then call+-- DeleteChannel. (See+-- <https://docs.aws.amazon.com/ivs/latest/userguide/eventbridge.html Using EventBridge with Amazon IVS>.)+module Amazonka.IVS.DeleteChannel+  ( -- * Creating a Request+    DeleteChannel (..),+    newDeleteChannel,++    -- * Request Lenses+    deleteChannel_arn,++    -- * Destructuring the Response+    DeleteChannelResponse (..),+    newDeleteChannelResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteChannel' smart constructor.+data DeleteChannel = DeleteChannel'+  { -- | ARN of the channel to be deleted.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteChannel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteChannel_arn' - ARN of the channel to be deleted.+newDeleteChannel ::+  -- | 'arn'+  Prelude.Text ->+  DeleteChannel+newDeleteChannel pArn_ = DeleteChannel' {arn = pArn_}++-- | ARN of the channel to be deleted.+deleteChannel_arn :: Lens.Lens' DeleteChannel Prelude.Text+deleteChannel_arn = Lens.lens (\DeleteChannel' {arn} -> arn) (\s@DeleteChannel' {} a -> s {arn = a} :: DeleteChannel)++instance Core.AWSRequest DeleteChannel where+  type+    AWSResponse DeleteChannel =+      DeleteChannelResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull DeleteChannelResponse'++instance Prelude.Hashable DeleteChannel where+  hashWithSalt _salt DeleteChannel' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData DeleteChannel where+  rnf DeleteChannel' {..} = Prelude.rnf arn++instance Data.ToHeaders DeleteChannel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteChannel where+  toJSON DeleteChannel' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arn" Data..= arn)]+      )++instance Data.ToPath DeleteChannel where+  toPath = Prelude.const "/DeleteChannel"++instance Data.ToQuery DeleteChannel where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteChannelResponse' smart constructor.+data DeleteChannelResponse = DeleteChannelResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteChannelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteChannelResponse ::+  DeleteChannelResponse+newDeleteChannelResponse = DeleteChannelResponse'++instance Prelude.NFData DeleteChannelResponse where+  rnf _ = ()
+ gen/Amazonka/IVS/DeletePlaybackKeyPair.hs view
@@ -0,0 +1,156 @@+{-# 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.IVS.DeletePlaybackKeyPair+-- 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 specified authorization key pair. This invalidates future+-- viewer tokens generated using the key pair’s @privateKey@. For more+-- information, see+-- <https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html Setting Up Private Channels>+-- in the /Amazon IVS User Guide/.+module Amazonka.IVS.DeletePlaybackKeyPair+  ( -- * Creating a Request+    DeletePlaybackKeyPair (..),+    newDeletePlaybackKeyPair,++    -- * Request Lenses+    deletePlaybackKeyPair_arn,++    -- * Destructuring the Response+    DeletePlaybackKeyPairResponse (..),+    newDeletePlaybackKeyPairResponse,++    -- * Response Lenses+    deletePlaybackKeyPairResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeletePlaybackKeyPair' smart constructor.+data DeletePlaybackKeyPair = DeletePlaybackKeyPair'+  { -- | ARN of the key pair to be deleted.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeletePlaybackKeyPair' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deletePlaybackKeyPair_arn' - ARN of the key pair to be deleted.+newDeletePlaybackKeyPair ::+  -- | 'arn'+  Prelude.Text ->+  DeletePlaybackKeyPair+newDeletePlaybackKeyPair pArn_ =+  DeletePlaybackKeyPair' {arn = pArn_}++-- | ARN of the key pair to be deleted.+deletePlaybackKeyPair_arn :: Lens.Lens' DeletePlaybackKeyPair Prelude.Text+deletePlaybackKeyPair_arn = Lens.lens (\DeletePlaybackKeyPair' {arn} -> arn) (\s@DeletePlaybackKeyPair' {} a -> s {arn = a} :: DeletePlaybackKeyPair)++instance Core.AWSRequest DeletePlaybackKeyPair where+  type+    AWSResponse DeletePlaybackKeyPair =+      DeletePlaybackKeyPairResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeletePlaybackKeyPairResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeletePlaybackKeyPair where+  hashWithSalt _salt DeletePlaybackKeyPair' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData DeletePlaybackKeyPair where+  rnf DeletePlaybackKeyPair' {..} = Prelude.rnf arn++instance Data.ToHeaders DeletePlaybackKeyPair where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeletePlaybackKeyPair where+  toJSON DeletePlaybackKeyPair' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arn" Data..= arn)]+      )++instance Data.ToPath DeletePlaybackKeyPair where+  toPath = Prelude.const "/DeletePlaybackKeyPair"++instance Data.ToQuery DeletePlaybackKeyPair where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeletePlaybackKeyPairResponse' smart constructor.+data DeletePlaybackKeyPairResponse = DeletePlaybackKeyPairResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeletePlaybackKeyPairResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deletePlaybackKeyPairResponse_httpStatus' - The response's http status code.+newDeletePlaybackKeyPairResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeletePlaybackKeyPairResponse+newDeletePlaybackKeyPairResponse pHttpStatus_ =+  DeletePlaybackKeyPairResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deletePlaybackKeyPairResponse_httpStatus :: Lens.Lens' DeletePlaybackKeyPairResponse Prelude.Int+deletePlaybackKeyPairResponse_httpStatus = Lens.lens (\DeletePlaybackKeyPairResponse' {httpStatus} -> httpStatus) (\s@DeletePlaybackKeyPairResponse' {} a -> s {httpStatus = a} :: DeletePlaybackKeyPairResponse)++instance Prelude.NFData DeletePlaybackKeyPairResponse where+  rnf DeletePlaybackKeyPairResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/IVS/DeleteRecordingConfiguration.hs view
@@ -0,0 +1,144 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.DeleteRecordingConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes the recording configuration for the specified ARN.+--+-- If you try to delete a recording configuration that is associated with a+-- channel, you will get an error (409 ConflictException). To avoid this,+-- for all channels that reference the recording configuration, first use+-- UpdateChannel to set the @recordingConfigurationArn@ field to an empty+-- string, then use DeleteRecordingConfiguration.+module Amazonka.IVS.DeleteRecordingConfiguration+  ( -- * Creating a Request+    DeleteRecordingConfiguration (..),+    newDeleteRecordingConfiguration,++    -- * Request Lenses+    deleteRecordingConfiguration_arn,++    -- * Destructuring the Response+    DeleteRecordingConfigurationResponse (..),+    newDeleteRecordingConfigurationResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteRecordingConfiguration' smart constructor.+data DeleteRecordingConfiguration = DeleteRecordingConfiguration'+  { -- | ARN of the recording configuration to be deleted.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRecordingConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteRecordingConfiguration_arn' - ARN of the recording configuration to be deleted.+newDeleteRecordingConfiguration ::+  -- | 'arn'+  Prelude.Text ->+  DeleteRecordingConfiguration+newDeleteRecordingConfiguration pArn_ =+  DeleteRecordingConfiguration' {arn = pArn_}++-- | ARN of the recording configuration to be deleted.+deleteRecordingConfiguration_arn :: Lens.Lens' DeleteRecordingConfiguration Prelude.Text+deleteRecordingConfiguration_arn = Lens.lens (\DeleteRecordingConfiguration' {arn} -> arn) (\s@DeleteRecordingConfiguration' {} a -> s {arn = a} :: DeleteRecordingConfiguration)++instance Core.AWSRequest DeleteRecordingConfiguration where+  type+    AWSResponse DeleteRecordingConfiguration =+      DeleteRecordingConfigurationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull+      DeleteRecordingConfigurationResponse'++instance+  Prelude.Hashable+    DeleteRecordingConfiguration+  where+  hashWithSalt _salt DeleteRecordingConfiguration' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData DeleteRecordingConfiguration where+  rnf DeleteRecordingConfiguration' {..} =+    Prelude.rnf arn++instance Data.ToHeaders DeleteRecordingConfiguration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteRecordingConfiguration where+  toJSON DeleteRecordingConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arn" Data..= arn)]+      )++instance Data.ToPath DeleteRecordingConfiguration where+  toPath =+    Prelude.const "/DeleteRecordingConfiguration"++instance Data.ToQuery DeleteRecordingConfiguration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteRecordingConfigurationResponse' smart constructor.+data DeleteRecordingConfigurationResponse = DeleteRecordingConfigurationResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRecordingConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteRecordingConfigurationResponse ::+  DeleteRecordingConfigurationResponse+newDeleteRecordingConfigurationResponse =+  DeleteRecordingConfigurationResponse'++instance+  Prelude.NFData+    DeleteRecordingConfigurationResponse+  where+  rnf _ = ()
+ gen/Amazonka/IVS/DeleteStreamKey.hs view
@@ -0,0 +1,129 @@+{-# 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.IVS.DeleteStreamKey+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Deletes the stream key for the specified ARN, so it can no longer be+-- used to stream.+module Amazonka.IVS.DeleteStreamKey+  ( -- * Creating a Request+    DeleteStreamKey (..),+    newDeleteStreamKey,++    -- * Request Lenses+    deleteStreamKey_arn,++    -- * Destructuring the Response+    DeleteStreamKeyResponse (..),+    newDeleteStreamKeyResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteStreamKey' smart constructor.+data DeleteStreamKey = DeleteStreamKey'+  { -- | ARN of the stream key to be deleted.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteStreamKey' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'deleteStreamKey_arn' - ARN of the stream key to be deleted.+newDeleteStreamKey ::+  -- | 'arn'+  Prelude.Text ->+  DeleteStreamKey+newDeleteStreamKey pArn_ =+  DeleteStreamKey' {arn = pArn_}++-- | ARN of the stream key to be deleted.+deleteStreamKey_arn :: Lens.Lens' DeleteStreamKey Prelude.Text+deleteStreamKey_arn = Lens.lens (\DeleteStreamKey' {arn} -> arn) (\s@DeleteStreamKey' {} a -> s {arn = a} :: DeleteStreamKey)++instance Core.AWSRequest DeleteStreamKey where+  type+    AWSResponse DeleteStreamKey =+      DeleteStreamKeyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveNull DeleteStreamKeyResponse'++instance Prelude.Hashable DeleteStreamKey where+  hashWithSalt _salt DeleteStreamKey' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData DeleteStreamKey where+  rnf DeleteStreamKey' {..} = Prelude.rnf arn++instance Data.ToHeaders DeleteStreamKey where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteStreamKey where+  toJSON DeleteStreamKey' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arn" Data..= arn)]+      )++instance Data.ToPath DeleteStreamKey where+  toPath = Prelude.const "/DeleteStreamKey"++instance Data.ToQuery DeleteStreamKey where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteStreamKeyResponse' smart constructor.+data DeleteStreamKeyResponse = DeleteStreamKeyResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteStreamKeyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newDeleteStreamKeyResponse ::+  DeleteStreamKeyResponse+newDeleteStreamKeyResponse = DeleteStreamKeyResponse'++instance Prelude.NFData DeleteStreamKeyResponse where+  rnf _ = ()
+ gen/Amazonka/IVS/GetChannel.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.IVS.GetChannel+-- 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 channel configuration for the specified channel ARN. See also+-- BatchGetChannel.+module Amazonka.IVS.GetChannel+  ( -- * Creating a Request+    GetChannel (..),+    newGetChannel,++    -- * Request Lenses+    getChannel_arn,++    -- * Destructuring the Response+    GetChannelResponse (..),+    newGetChannelResponse,++    -- * Response Lenses+    getChannelResponse_channel,+    getChannelResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetChannel' smart constructor.+data GetChannel = GetChannel'+  { -- | ARN of the channel for which the configuration is to be retrieved.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetChannel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getChannel_arn' - ARN of the channel for which the configuration is to be retrieved.+newGetChannel ::+  -- | 'arn'+  Prelude.Text ->+  GetChannel+newGetChannel pArn_ = GetChannel' {arn = pArn_}++-- | ARN of the channel for which the configuration is to be retrieved.+getChannel_arn :: Lens.Lens' GetChannel Prelude.Text+getChannel_arn = Lens.lens (\GetChannel' {arn} -> arn) (\s@GetChannel' {} a -> s {arn = a} :: GetChannel)++instance Core.AWSRequest GetChannel where+  type AWSResponse GetChannel = GetChannelResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetChannelResponse'+            Prelude.<$> (x Data..?> "channel")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetChannel where+  hashWithSalt _salt GetChannel' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData GetChannel where+  rnf GetChannel' {..} = Prelude.rnf arn++instance Data.ToHeaders GetChannel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetChannel where+  toJSON GetChannel' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arn" Data..= arn)]+      )++instance Data.ToPath GetChannel where+  toPath = Prelude.const "/GetChannel"++instance Data.ToQuery GetChannel where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetChannelResponse' smart constructor.+data GetChannelResponse = GetChannelResponse'+  { channel :: Prelude.Maybe Channel,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetChannelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channel', 'getChannelResponse_channel' -+--+-- 'httpStatus', 'getChannelResponse_httpStatus' - The response's http status code.+newGetChannelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetChannelResponse+newGetChannelResponse pHttpStatus_ =+  GetChannelResponse'+    { channel = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++getChannelResponse_channel :: Lens.Lens' GetChannelResponse (Prelude.Maybe Channel)+getChannelResponse_channel = Lens.lens (\GetChannelResponse' {channel} -> channel) (\s@GetChannelResponse' {} a -> s {channel = a} :: GetChannelResponse)++-- | The response's http status code.+getChannelResponse_httpStatus :: Lens.Lens' GetChannelResponse Prelude.Int+getChannelResponse_httpStatus = Lens.lens (\GetChannelResponse' {httpStatus} -> httpStatus) (\s@GetChannelResponse' {} a -> s {httpStatus = a} :: GetChannelResponse)++instance Prelude.NFData GetChannelResponse where+  rnf GetChannelResponse' {..} =+    Prelude.rnf channel+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/GetPlaybackKeyPair.hs view
@@ -0,0 +1,167 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.GetPlaybackKeyPair+-- 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 specified playback authorization key pair and returns the @arn@+-- and @fingerprint@. The @privateKey@ held by the caller can be used to+-- generate viewer authorization tokens, to grant viewers access to private+-- channels. For more information, see+-- <https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html Setting Up Private Channels>+-- in the /Amazon IVS User Guide/.+module Amazonka.IVS.GetPlaybackKeyPair+  ( -- * Creating a Request+    GetPlaybackKeyPair (..),+    newGetPlaybackKeyPair,++    -- * Request Lenses+    getPlaybackKeyPair_arn,++    -- * Destructuring the Response+    GetPlaybackKeyPairResponse (..),+    newGetPlaybackKeyPairResponse,++    -- * Response Lenses+    getPlaybackKeyPairResponse_keyPair,+    getPlaybackKeyPairResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetPlaybackKeyPair' smart constructor.+data GetPlaybackKeyPair = GetPlaybackKeyPair'+  { -- | ARN of the key pair to be returned.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetPlaybackKeyPair' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getPlaybackKeyPair_arn' - ARN of the key pair to be returned.+newGetPlaybackKeyPair ::+  -- | 'arn'+  Prelude.Text ->+  GetPlaybackKeyPair+newGetPlaybackKeyPair pArn_ =+  GetPlaybackKeyPair' {arn = pArn_}++-- | ARN of the key pair to be returned.+getPlaybackKeyPair_arn :: Lens.Lens' GetPlaybackKeyPair Prelude.Text+getPlaybackKeyPair_arn = Lens.lens (\GetPlaybackKeyPair' {arn} -> arn) (\s@GetPlaybackKeyPair' {} a -> s {arn = a} :: GetPlaybackKeyPair)++instance Core.AWSRequest GetPlaybackKeyPair where+  type+    AWSResponse GetPlaybackKeyPair =+      GetPlaybackKeyPairResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetPlaybackKeyPairResponse'+            Prelude.<$> (x Data..?> "keyPair")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetPlaybackKeyPair where+  hashWithSalt _salt GetPlaybackKeyPair' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData GetPlaybackKeyPair where+  rnf GetPlaybackKeyPair' {..} = Prelude.rnf arn++instance Data.ToHeaders GetPlaybackKeyPair where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetPlaybackKeyPair where+  toJSON GetPlaybackKeyPair' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arn" Data..= arn)]+      )++instance Data.ToPath GetPlaybackKeyPair where+  toPath = Prelude.const "/GetPlaybackKeyPair"++instance Data.ToQuery GetPlaybackKeyPair where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetPlaybackKeyPairResponse' smart constructor.+data GetPlaybackKeyPairResponse = GetPlaybackKeyPairResponse'+  { keyPair :: Prelude.Maybe PlaybackKeyPair,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetPlaybackKeyPairResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'keyPair', 'getPlaybackKeyPairResponse_keyPair' -+--+-- 'httpStatus', 'getPlaybackKeyPairResponse_httpStatus' - The response's http status code.+newGetPlaybackKeyPairResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetPlaybackKeyPairResponse+newGetPlaybackKeyPairResponse pHttpStatus_ =+  GetPlaybackKeyPairResponse'+    { keyPair =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++getPlaybackKeyPairResponse_keyPair :: Lens.Lens' GetPlaybackKeyPairResponse (Prelude.Maybe PlaybackKeyPair)+getPlaybackKeyPairResponse_keyPair = Lens.lens (\GetPlaybackKeyPairResponse' {keyPair} -> keyPair) (\s@GetPlaybackKeyPairResponse' {} a -> s {keyPair = a} :: GetPlaybackKeyPairResponse)++-- | The response's http status code.+getPlaybackKeyPairResponse_httpStatus :: Lens.Lens' GetPlaybackKeyPairResponse Prelude.Int+getPlaybackKeyPairResponse_httpStatus = Lens.lens (\GetPlaybackKeyPairResponse' {httpStatus} -> httpStatus) (\s@GetPlaybackKeyPairResponse' {} a -> s {httpStatus = a} :: GetPlaybackKeyPairResponse)++instance Prelude.NFData GetPlaybackKeyPairResponse where+  rnf GetPlaybackKeyPairResponse' {..} =+    Prelude.rnf keyPair+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/GetRecordingConfiguration.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.IVS.GetRecordingConfiguration+-- 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 recording configuration for the specified ARN.+module Amazonka.IVS.GetRecordingConfiguration+  ( -- * Creating a Request+    GetRecordingConfiguration (..),+    newGetRecordingConfiguration,++    -- * Request Lenses+    getRecordingConfiguration_arn,++    -- * Destructuring the Response+    GetRecordingConfigurationResponse (..),+    newGetRecordingConfigurationResponse,++    -- * Response Lenses+    getRecordingConfigurationResponse_recordingConfiguration,+    getRecordingConfigurationResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetRecordingConfiguration' smart constructor.+data GetRecordingConfiguration = GetRecordingConfiguration'+  { -- | ARN of the recording configuration to be retrieved.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetRecordingConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getRecordingConfiguration_arn' - ARN of the recording configuration to be retrieved.+newGetRecordingConfiguration ::+  -- | 'arn'+  Prelude.Text ->+  GetRecordingConfiguration+newGetRecordingConfiguration pArn_ =+  GetRecordingConfiguration' {arn = pArn_}++-- | ARN of the recording configuration to be retrieved.+getRecordingConfiguration_arn :: Lens.Lens' GetRecordingConfiguration Prelude.Text+getRecordingConfiguration_arn = Lens.lens (\GetRecordingConfiguration' {arn} -> arn) (\s@GetRecordingConfiguration' {} a -> s {arn = a} :: GetRecordingConfiguration)++instance Core.AWSRequest GetRecordingConfiguration where+  type+    AWSResponse GetRecordingConfiguration =+      GetRecordingConfigurationResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetRecordingConfigurationResponse'+            Prelude.<$> (x Data..?> "recordingConfiguration")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetRecordingConfiguration where+  hashWithSalt _salt GetRecordingConfiguration' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData GetRecordingConfiguration where+  rnf GetRecordingConfiguration' {..} = Prelude.rnf arn++instance Data.ToHeaders GetRecordingConfiguration where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetRecordingConfiguration where+  toJSON GetRecordingConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arn" Data..= arn)]+      )++instance Data.ToPath GetRecordingConfiguration where+  toPath = Prelude.const "/GetRecordingConfiguration"++instance Data.ToQuery GetRecordingConfiguration where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetRecordingConfigurationResponse' smart constructor.+data GetRecordingConfigurationResponse = GetRecordingConfigurationResponse'+  { recordingConfiguration :: Prelude.Maybe RecordingConfiguration,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetRecordingConfigurationResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'recordingConfiguration', 'getRecordingConfigurationResponse_recordingConfiguration' -+--+-- 'httpStatus', 'getRecordingConfigurationResponse_httpStatus' - The response's http status code.+newGetRecordingConfigurationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetRecordingConfigurationResponse+newGetRecordingConfigurationResponse pHttpStatus_ =+  GetRecordingConfigurationResponse'+    { recordingConfiguration =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++getRecordingConfigurationResponse_recordingConfiguration :: Lens.Lens' GetRecordingConfigurationResponse (Prelude.Maybe RecordingConfiguration)+getRecordingConfigurationResponse_recordingConfiguration = Lens.lens (\GetRecordingConfigurationResponse' {recordingConfiguration} -> recordingConfiguration) (\s@GetRecordingConfigurationResponse' {} a -> s {recordingConfiguration = a} :: GetRecordingConfigurationResponse)++-- | The response's http status code.+getRecordingConfigurationResponse_httpStatus :: Lens.Lens' GetRecordingConfigurationResponse Prelude.Int+getRecordingConfigurationResponse_httpStatus = Lens.lens (\GetRecordingConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetRecordingConfigurationResponse' {} a -> s {httpStatus = a} :: GetRecordingConfigurationResponse)++instance+  Prelude.NFData+    GetRecordingConfigurationResponse+  where+  rnf GetRecordingConfigurationResponse' {..} =+    Prelude.rnf recordingConfiguration+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/GetStream.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.IVS.GetStream+-- 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 information about the active (live) stream on a specified channel.+module Amazonka.IVS.GetStream+  ( -- * Creating a Request+    GetStream (..),+    newGetStream,++    -- * Request Lenses+    getStream_channelArn,++    -- * Destructuring the Response+    GetStreamResponse (..),+    newGetStreamResponse,++    -- * Response Lenses+    getStreamResponse_stream,+    getStreamResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetStream' smart constructor.+data GetStream = GetStream'+  { -- | Channel ARN for stream to be accessed.+    channelArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetStream' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channelArn', 'getStream_channelArn' - Channel ARN for stream to be accessed.+newGetStream ::+  -- | 'channelArn'+  Prelude.Text ->+  GetStream+newGetStream pChannelArn_ =+  GetStream' {channelArn = pChannelArn_}++-- | Channel ARN for stream to be accessed.+getStream_channelArn :: Lens.Lens' GetStream Prelude.Text+getStream_channelArn = Lens.lens (\GetStream' {channelArn} -> channelArn) (\s@GetStream' {} a -> s {channelArn = a} :: GetStream)++instance Core.AWSRequest GetStream where+  type AWSResponse GetStream = GetStreamResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetStreamResponse'+            Prelude.<$> (x Data..?> "stream")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetStream where+  hashWithSalt _salt GetStream' {..} =+    _salt `Prelude.hashWithSalt` channelArn++instance Prelude.NFData GetStream where+  rnf GetStream' {..} = Prelude.rnf channelArn++instance Data.ToHeaders GetStream where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetStream where+  toJSON GetStream' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("channelArn" Data..= channelArn)]+      )++instance Data.ToPath GetStream where+  toPath = Prelude.const "/GetStream"++instance Data.ToQuery GetStream where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetStreamResponse' smart constructor.+data GetStreamResponse = GetStreamResponse'+  { stream :: Prelude.Maybe Stream,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetStreamResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'stream', 'getStreamResponse_stream' -+--+-- 'httpStatus', 'getStreamResponse_httpStatus' - The response's http status code.+newGetStreamResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetStreamResponse+newGetStreamResponse pHttpStatus_ =+  GetStreamResponse'+    { stream = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++getStreamResponse_stream :: Lens.Lens' GetStreamResponse (Prelude.Maybe Stream)+getStreamResponse_stream = Lens.lens (\GetStreamResponse' {stream} -> stream) (\s@GetStreamResponse' {} a -> s {stream = a} :: GetStreamResponse)++-- | The response's http status code.+getStreamResponse_httpStatus :: Lens.Lens' GetStreamResponse Prelude.Int+getStreamResponse_httpStatus = Lens.lens (\GetStreamResponse' {httpStatus} -> httpStatus) (\s@GetStreamResponse' {} a -> s {httpStatus = a} :: GetStreamResponse)++instance Prelude.NFData GetStreamResponse where+  rnf GetStreamResponse' {..} =+    Prelude.rnf stream+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/GetStreamKey.hs view
@@ -0,0 +1,158 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.GetStreamKey+-- 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 stream-key information for a specified ARN.+module Amazonka.IVS.GetStreamKey+  ( -- * Creating a Request+    GetStreamKey (..),+    newGetStreamKey,++    -- * Request Lenses+    getStreamKey_arn,++    -- * Destructuring the Response+    GetStreamKeyResponse (..),+    newGetStreamKeyResponse,++    -- * Response Lenses+    getStreamKeyResponse_streamKey,+    getStreamKeyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetStreamKey' smart constructor.+data GetStreamKey = GetStreamKey'+  { -- | ARN for the stream key to be retrieved.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetStreamKey' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getStreamKey_arn' - ARN for the stream key to be retrieved.+newGetStreamKey ::+  -- | 'arn'+  Prelude.Text ->+  GetStreamKey+newGetStreamKey pArn_ = GetStreamKey' {arn = pArn_}++-- | ARN for the stream key to be retrieved.+getStreamKey_arn :: Lens.Lens' GetStreamKey Prelude.Text+getStreamKey_arn = Lens.lens (\GetStreamKey' {arn} -> arn) (\s@GetStreamKey' {} a -> s {arn = a} :: GetStreamKey)++instance Core.AWSRequest GetStreamKey where+  type AWSResponse GetStreamKey = GetStreamKeyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetStreamKeyResponse'+            Prelude.<$> (x Data..?> "streamKey")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetStreamKey where+  hashWithSalt _salt GetStreamKey' {..} =+    _salt `Prelude.hashWithSalt` arn++instance Prelude.NFData GetStreamKey where+  rnf GetStreamKey' {..} = Prelude.rnf arn++instance Data.ToHeaders GetStreamKey where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetStreamKey where+  toJSON GetStreamKey' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("arn" Data..= arn)]+      )++instance Data.ToPath GetStreamKey where+  toPath = Prelude.const "/GetStreamKey"++instance Data.ToQuery GetStreamKey where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetStreamKeyResponse' smart constructor.+data GetStreamKeyResponse = GetStreamKeyResponse'+  { streamKey :: Prelude.Maybe StreamKey,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetStreamKeyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'streamKey', 'getStreamKeyResponse_streamKey' -+--+-- 'httpStatus', 'getStreamKeyResponse_httpStatus' - The response's http status code.+newGetStreamKeyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetStreamKeyResponse+newGetStreamKeyResponse pHttpStatus_ =+  GetStreamKeyResponse'+    { streamKey = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++getStreamKeyResponse_streamKey :: Lens.Lens' GetStreamKeyResponse (Prelude.Maybe StreamKey)+getStreamKeyResponse_streamKey = Lens.lens (\GetStreamKeyResponse' {streamKey} -> streamKey) (\s@GetStreamKeyResponse' {} a -> s {streamKey = a} :: GetStreamKeyResponse)++-- | The response's http status code.+getStreamKeyResponse_httpStatus :: Lens.Lens' GetStreamKeyResponse Prelude.Int+getStreamKeyResponse_httpStatus = Lens.lens (\GetStreamKeyResponse' {httpStatus} -> httpStatus) (\s@GetStreamKeyResponse' {} a -> s {httpStatus = a} :: GetStreamKeyResponse)++instance Prelude.NFData GetStreamKeyResponse where+  rnf GetStreamKeyResponse' {..} =+    Prelude.rnf streamKey+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/GetStreamSession.hs view
@@ -0,0 +1,188 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.GetStreamSession+-- 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 metadata on a specified stream.+module Amazonka.IVS.GetStreamSession+  ( -- * Creating a Request+    GetStreamSession (..),+    newGetStreamSession,++    -- * Request Lenses+    getStreamSession_streamId,+    getStreamSession_channelArn,++    -- * Destructuring the Response+    GetStreamSessionResponse (..),+    newGetStreamSessionResponse,++    -- * Response Lenses+    getStreamSessionResponse_streamSession,+    getStreamSessionResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetStreamSession' smart constructor.+data GetStreamSession = GetStreamSession'+  { -- | Unique identifier for a live or previously live stream in the specified+    -- channel. If no @streamId@ is provided, this returns the most recent+    -- stream session for the channel, if it exists.+    streamId :: Prelude.Maybe Prelude.Text,+    -- | ARN of the channel resource+    channelArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetStreamSession' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'streamId', 'getStreamSession_streamId' - Unique identifier for a live or previously live stream in the specified+-- channel. If no @streamId@ is provided, this returns the most recent+-- stream session for the channel, if it exists.+--+-- 'channelArn', 'getStreamSession_channelArn' - ARN of the channel resource+newGetStreamSession ::+  -- | 'channelArn'+  Prelude.Text ->+  GetStreamSession+newGetStreamSession pChannelArn_ =+  GetStreamSession'+    { streamId = Prelude.Nothing,+      channelArn = pChannelArn_+    }++-- | Unique identifier for a live or previously live stream in the specified+-- channel. If no @streamId@ is provided, this returns the most recent+-- stream session for the channel, if it exists.+getStreamSession_streamId :: Lens.Lens' GetStreamSession (Prelude.Maybe Prelude.Text)+getStreamSession_streamId = Lens.lens (\GetStreamSession' {streamId} -> streamId) (\s@GetStreamSession' {} a -> s {streamId = a} :: GetStreamSession)++-- | ARN of the channel resource+getStreamSession_channelArn :: Lens.Lens' GetStreamSession Prelude.Text+getStreamSession_channelArn = Lens.lens (\GetStreamSession' {channelArn} -> channelArn) (\s@GetStreamSession' {} a -> s {channelArn = a} :: GetStreamSession)++instance Core.AWSRequest GetStreamSession where+  type+    AWSResponse GetStreamSession =+      GetStreamSessionResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetStreamSessionResponse'+            Prelude.<$> (x Data..?> "streamSession")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetStreamSession where+  hashWithSalt _salt GetStreamSession' {..} =+    _salt+      `Prelude.hashWithSalt` streamId+      `Prelude.hashWithSalt` channelArn++instance Prelude.NFData GetStreamSession where+  rnf GetStreamSession' {..} =+    Prelude.rnf streamId+      `Prelude.seq` Prelude.rnf channelArn++instance Data.ToHeaders GetStreamSession where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetStreamSession where+  toJSON GetStreamSession' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("streamId" Data..=) Prelude.<$> streamId,+            Prelude.Just ("channelArn" Data..= channelArn)+          ]+      )++instance Data.ToPath GetStreamSession where+  toPath = Prelude.const "/GetStreamSession"++instance Data.ToQuery GetStreamSession where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetStreamSessionResponse' smart constructor.+data GetStreamSessionResponse = GetStreamSessionResponse'+  { -- | List of stream details.+    streamSession :: Prelude.Maybe StreamSession,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetStreamSessionResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'streamSession', 'getStreamSessionResponse_streamSession' - List of stream details.+--+-- 'httpStatus', 'getStreamSessionResponse_httpStatus' - The response's http status code.+newGetStreamSessionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetStreamSessionResponse+newGetStreamSessionResponse pHttpStatus_ =+  GetStreamSessionResponse'+    { streamSession =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | List of stream details.+getStreamSessionResponse_streamSession :: Lens.Lens' GetStreamSessionResponse (Prelude.Maybe StreamSession)+getStreamSessionResponse_streamSession = Lens.lens (\GetStreamSessionResponse' {streamSession} -> streamSession) (\s@GetStreamSessionResponse' {} a -> s {streamSession = a} :: GetStreamSessionResponse)++-- | The response's http status code.+getStreamSessionResponse_httpStatus :: Lens.Lens' GetStreamSessionResponse Prelude.Int+getStreamSessionResponse_httpStatus = Lens.lens (\GetStreamSessionResponse' {httpStatus} -> httpStatus) (\s@GetStreamSessionResponse' {} a -> s {httpStatus = a} :: GetStreamSessionResponse)++instance Prelude.NFData GetStreamSessionResponse where+  rnf GetStreamSessionResponse' {..} =+    Prelude.rnf streamSession+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/ImportPlaybackKeyPair.hs view
@@ -0,0 +1,214 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.ImportPlaybackKeyPair+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Imports the public portion of a new key pair and returns its @arn@ and+-- @fingerprint@. The @privateKey@ can then be used to generate viewer+-- authorization tokens, to grant viewers access to private channels. For+-- more information, see+-- <https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html Setting Up Private Channels>+-- in the /Amazon IVS User Guide/.+module Amazonka.IVS.ImportPlaybackKeyPair+  ( -- * Creating a Request+    ImportPlaybackKeyPair (..),+    newImportPlaybackKeyPair,++    -- * Request Lenses+    importPlaybackKeyPair_name,+    importPlaybackKeyPair_tags,+    importPlaybackKeyPair_publicKeyMaterial,++    -- * Destructuring the Response+    ImportPlaybackKeyPairResponse (..),+    newImportPlaybackKeyPairResponse,++    -- * Response Lenses+    importPlaybackKeyPairResponse_keyPair,+    importPlaybackKeyPairResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newImportPlaybackKeyPair' smart constructor.+data ImportPlaybackKeyPair = ImportPlaybackKeyPair'+  { -- | Playback-key-pair name. The value does not need to be unique.+    name :: Prelude.Maybe Prelude.Text,+    -- | Any tags provided with the request are added to the playback key pair+    -- tags. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The public portion of a customer-generated key pair.+    publicKeyMaterial :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImportPlaybackKeyPair' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'importPlaybackKeyPair_name' - Playback-key-pair name. The value does not need to be unique.+--+-- 'tags', 'importPlaybackKeyPair_tags' - Any tags provided with the request are added to the playback key pair+-- tags. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+--+-- 'publicKeyMaterial', 'importPlaybackKeyPair_publicKeyMaterial' - The public portion of a customer-generated key pair.+newImportPlaybackKeyPair ::+  -- | 'publicKeyMaterial'+  Prelude.Text ->+  ImportPlaybackKeyPair+newImportPlaybackKeyPair pPublicKeyMaterial_ =+  ImportPlaybackKeyPair'+    { name = Prelude.Nothing,+      tags = Prelude.Nothing,+      publicKeyMaterial = pPublicKeyMaterial_+    }++-- | Playback-key-pair name. The value does not need to be unique.+importPlaybackKeyPair_name :: Lens.Lens' ImportPlaybackKeyPair (Prelude.Maybe Prelude.Text)+importPlaybackKeyPair_name = Lens.lens (\ImportPlaybackKeyPair' {name} -> name) (\s@ImportPlaybackKeyPair' {} a -> s {name = a} :: ImportPlaybackKeyPair)++-- | Any tags provided with the request are added to the playback key pair+-- tags. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+importPlaybackKeyPair_tags :: Lens.Lens' ImportPlaybackKeyPair (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+importPlaybackKeyPair_tags = Lens.lens (\ImportPlaybackKeyPair' {tags} -> tags) (\s@ImportPlaybackKeyPair' {} a -> s {tags = a} :: ImportPlaybackKeyPair) Prelude.. Lens.mapping Lens.coerced++-- | The public portion of a customer-generated key pair.+importPlaybackKeyPair_publicKeyMaterial :: Lens.Lens' ImportPlaybackKeyPair Prelude.Text+importPlaybackKeyPair_publicKeyMaterial = Lens.lens (\ImportPlaybackKeyPair' {publicKeyMaterial} -> publicKeyMaterial) (\s@ImportPlaybackKeyPair' {} a -> s {publicKeyMaterial = a} :: ImportPlaybackKeyPair)++instance Core.AWSRequest ImportPlaybackKeyPair where+  type+    AWSResponse ImportPlaybackKeyPair =+      ImportPlaybackKeyPairResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ImportPlaybackKeyPairResponse'+            Prelude.<$> (x Data..?> "keyPair")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ImportPlaybackKeyPair where+  hashWithSalt _salt ImportPlaybackKeyPair' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` publicKeyMaterial++instance Prelude.NFData ImportPlaybackKeyPair where+  rnf ImportPlaybackKeyPair' {..} =+    Prelude.rnf name+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf publicKeyMaterial++instance Data.ToHeaders ImportPlaybackKeyPair where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ImportPlaybackKeyPair where+  toJSON ImportPlaybackKeyPair' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("name" Data..=) Prelude.<$> name,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("publicKeyMaterial" Data..= publicKeyMaterial)+          ]+      )++instance Data.ToPath ImportPlaybackKeyPair where+  toPath = Prelude.const "/ImportPlaybackKeyPair"++instance Data.ToQuery ImportPlaybackKeyPair where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newImportPlaybackKeyPairResponse' smart constructor.+data ImportPlaybackKeyPairResponse = ImportPlaybackKeyPairResponse'+  { keyPair :: Prelude.Maybe PlaybackKeyPair,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImportPlaybackKeyPairResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'keyPair', 'importPlaybackKeyPairResponse_keyPair' -+--+-- 'httpStatus', 'importPlaybackKeyPairResponse_httpStatus' - The response's http status code.+newImportPlaybackKeyPairResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ImportPlaybackKeyPairResponse+newImportPlaybackKeyPairResponse pHttpStatus_ =+  ImportPlaybackKeyPairResponse'+    { keyPair =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++importPlaybackKeyPairResponse_keyPair :: Lens.Lens' ImportPlaybackKeyPairResponse (Prelude.Maybe PlaybackKeyPair)+importPlaybackKeyPairResponse_keyPair = Lens.lens (\ImportPlaybackKeyPairResponse' {keyPair} -> keyPair) (\s@ImportPlaybackKeyPairResponse' {} a -> s {keyPair = a} :: ImportPlaybackKeyPairResponse)++-- | The response's http status code.+importPlaybackKeyPairResponse_httpStatus :: Lens.Lens' ImportPlaybackKeyPairResponse Prelude.Int+importPlaybackKeyPairResponse_httpStatus = Lens.lens (\ImportPlaybackKeyPairResponse' {httpStatus} -> httpStatus) (\s@ImportPlaybackKeyPairResponse' {} a -> s {httpStatus = a} :: ImportPlaybackKeyPairResponse)++instance Prelude.NFData ImportPlaybackKeyPairResponse where+  rnf ImportPlaybackKeyPairResponse' {..} =+    Prelude.rnf keyPair+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/Lens.hs view
@@ -0,0 +1,370 @@+{-# 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.IVS.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.IVS.Lens+  ( -- * Operations++    -- ** BatchGetChannel+    batchGetChannel_arns,+    batchGetChannelResponse_channels,+    batchGetChannelResponse_errors,+    batchGetChannelResponse_httpStatus,++    -- ** BatchGetStreamKey+    batchGetStreamKey_arns,+    batchGetStreamKeyResponse_errors,+    batchGetStreamKeyResponse_streamKeys,+    batchGetStreamKeyResponse_httpStatus,++    -- ** CreateChannel+    createChannel_authorized,+    createChannel_latencyMode,+    createChannel_name,+    createChannel_recordingConfigurationArn,+    createChannel_tags,+    createChannel_type,+    createChannelResponse_channel,+    createChannelResponse_streamKey,+    createChannelResponse_httpStatus,++    -- ** CreateRecordingConfiguration+    createRecordingConfiguration_name,+    createRecordingConfiguration_recordingReconnectWindowSeconds,+    createRecordingConfiguration_tags,+    createRecordingConfiguration_thumbnailConfiguration,+    createRecordingConfiguration_destinationConfiguration,+    createRecordingConfigurationResponse_recordingConfiguration,+    createRecordingConfigurationResponse_httpStatus,++    -- ** CreateStreamKey+    createStreamKey_tags,+    createStreamKey_channelArn,+    createStreamKeyResponse_streamKey,+    createStreamKeyResponse_httpStatus,++    -- ** DeleteChannel+    deleteChannel_arn,++    -- ** DeletePlaybackKeyPair+    deletePlaybackKeyPair_arn,+    deletePlaybackKeyPairResponse_httpStatus,++    -- ** DeleteRecordingConfiguration+    deleteRecordingConfiguration_arn,++    -- ** DeleteStreamKey+    deleteStreamKey_arn,++    -- ** GetChannel+    getChannel_arn,+    getChannelResponse_channel,+    getChannelResponse_httpStatus,++    -- ** GetPlaybackKeyPair+    getPlaybackKeyPair_arn,+    getPlaybackKeyPairResponse_keyPair,+    getPlaybackKeyPairResponse_httpStatus,++    -- ** GetRecordingConfiguration+    getRecordingConfiguration_arn,+    getRecordingConfigurationResponse_recordingConfiguration,+    getRecordingConfigurationResponse_httpStatus,++    -- ** GetStream+    getStream_channelArn,+    getStreamResponse_stream,+    getStreamResponse_httpStatus,++    -- ** GetStreamKey+    getStreamKey_arn,+    getStreamKeyResponse_streamKey,+    getStreamKeyResponse_httpStatus,++    -- ** GetStreamSession+    getStreamSession_streamId,+    getStreamSession_channelArn,+    getStreamSessionResponse_streamSession,+    getStreamSessionResponse_httpStatus,++    -- ** ImportPlaybackKeyPair+    importPlaybackKeyPair_name,+    importPlaybackKeyPair_tags,+    importPlaybackKeyPair_publicKeyMaterial,+    importPlaybackKeyPairResponse_keyPair,+    importPlaybackKeyPairResponse_httpStatus,++    -- ** ListChannels+    listChannels_filterByName,+    listChannels_filterByRecordingConfigurationArn,+    listChannels_maxResults,+    listChannels_nextToken,+    listChannelsResponse_nextToken,+    listChannelsResponse_httpStatus,+    listChannelsResponse_channels,++    -- ** ListPlaybackKeyPairs+    listPlaybackKeyPairs_maxResults,+    listPlaybackKeyPairs_nextToken,+    listPlaybackKeyPairsResponse_nextToken,+    listPlaybackKeyPairsResponse_httpStatus,+    listPlaybackKeyPairsResponse_keyPairs,++    -- ** ListRecordingConfigurations+    listRecordingConfigurations_maxResults,+    listRecordingConfigurations_nextToken,+    listRecordingConfigurationsResponse_nextToken,+    listRecordingConfigurationsResponse_httpStatus,+    listRecordingConfigurationsResponse_recordingConfigurations,++    -- ** ListStreamKeys+    listStreamKeys_maxResults,+    listStreamKeys_nextToken,+    listStreamKeys_channelArn,+    listStreamKeysResponse_nextToken,+    listStreamKeysResponse_httpStatus,+    listStreamKeysResponse_streamKeys,++    -- ** ListStreamSessions+    listStreamSessions_maxResults,+    listStreamSessions_nextToken,+    listStreamSessions_channelArn,+    listStreamSessionsResponse_nextToken,+    listStreamSessionsResponse_httpStatus,+    listStreamSessionsResponse_streamSessions,++    -- ** ListStreams+    listStreams_filterBy,+    listStreams_maxResults,+    listStreams_nextToken,+    listStreamsResponse_nextToken,+    listStreamsResponse_httpStatus,+    listStreamsResponse_streams,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_httpStatus,+    listTagsForResourceResponse_tags,++    -- ** PutMetadata+    putMetadata_channelArn,+    putMetadata_metadata,++    -- ** StopStream+    stopStream_channelArn,+    stopStreamResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateChannel+    updateChannel_authorized,+    updateChannel_latencyMode,+    updateChannel_name,+    updateChannel_recordingConfigurationArn,+    updateChannel_type,+    updateChannel_arn,+    updateChannelResponse_channel,+    updateChannelResponse_httpStatus,++    -- * Types++    -- ** AudioConfiguration+    audioConfiguration_channels,+    audioConfiguration_codec,+    audioConfiguration_sampleRate,+    audioConfiguration_targetBitrate,++    -- ** BatchError+    batchError_arn,+    batchError_code,+    batchError_message,++    -- ** Channel+    channel_arn,+    channel_authorized,+    channel_ingestEndpoint,+    channel_latencyMode,+    channel_name,+    channel_playbackUrl,+    channel_recordingConfigurationArn,+    channel_tags,+    channel_type,++    -- ** ChannelSummary+    channelSummary_arn,+    channelSummary_authorized,+    channelSummary_latencyMode,+    channelSummary_name,+    channelSummary_recordingConfigurationArn,+    channelSummary_tags,++    -- ** DestinationConfiguration+    destinationConfiguration_s3,++    -- ** IngestConfiguration+    ingestConfiguration_audio,+    ingestConfiguration_video,++    -- ** PlaybackKeyPair+    playbackKeyPair_arn,+    playbackKeyPair_fingerprint,+    playbackKeyPair_name,+    playbackKeyPair_tags,++    -- ** PlaybackKeyPairSummary+    playbackKeyPairSummary_arn,+    playbackKeyPairSummary_name,+    playbackKeyPairSummary_tags,++    -- ** RecordingConfiguration+    recordingConfiguration_name,+    recordingConfiguration_recordingReconnectWindowSeconds,+    recordingConfiguration_tags,+    recordingConfiguration_thumbnailConfiguration,+    recordingConfiguration_arn,+    recordingConfiguration_destinationConfiguration,+    recordingConfiguration_state,++    -- ** RecordingConfigurationSummary+    recordingConfigurationSummary_name,+    recordingConfigurationSummary_tags,+    recordingConfigurationSummary_arn,+    recordingConfigurationSummary_destinationConfiguration,+    recordingConfigurationSummary_state,++    -- ** S3DestinationConfiguration+    s3DestinationConfiguration_bucketName,++    -- ** Stream+    stream_channelArn,+    stream_health,+    stream_playbackUrl,+    stream_startTime,+    stream_state,+    stream_streamId,+    stream_viewerCount,++    -- ** StreamEvent+    streamEvent_eventTime,+    streamEvent_name,+    streamEvent_type,++    -- ** StreamFilters+    streamFilters_health,++    -- ** StreamKey+    streamKey_arn,+    streamKey_channelArn,+    streamKey_tags,+    streamKey_value,++    -- ** StreamKeySummary+    streamKeySummary_arn,+    streamKeySummary_channelArn,+    streamKeySummary_tags,++    -- ** StreamSession+    streamSession_channel,+    streamSession_endTime,+    streamSession_ingestConfiguration,+    streamSession_recordingConfiguration,+    streamSession_startTime,+    streamSession_streamId,+    streamSession_truncatedEvents,++    -- ** StreamSessionSummary+    streamSessionSummary_endTime,+    streamSessionSummary_hasErrorEvent,+    streamSessionSummary_startTime,+    streamSessionSummary_streamId,++    -- ** StreamSummary+    streamSummary_channelArn,+    streamSummary_health,+    streamSummary_startTime,+    streamSummary_state,+    streamSummary_streamId,+    streamSummary_viewerCount,++    -- ** ThumbnailConfiguration+    thumbnailConfiguration_recordingMode,+    thumbnailConfiguration_targetIntervalSeconds,++    -- ** VideoConfiguration+    videoConfiguration_avcLevel,+    videoConfiguration_avcProfile,+    videoConfiguration_codec,+    videoConfiguration_encoder,+    videoConfiguration_targetBitrate,+    videoConfiguration_targetFramerate,+    videoConfiguration_videoHeight,+    videoConfiguration_videoWidth,+  )+where++import Amazonka.IVS.BatchGetChannel+import Amazonka.IVS.BatchGetStreamKey+import Amazonka.IVS.CreateChannel+import Amazonka.IVS.CreateRecordingConfiguration+import Amazonka.IVS.CreateStreamKey+import Amazonka.IVS.DeleteChannel+import Amazonka.IVS.DeletePlaybackKeyPair+import Amazonka.IVS.DeleteRecordingConfiguration+import Amazonka.IVS.DeleteStreamKey+import Amazonka.IVS.GetChannel+import Amazonka.IVS.GetPlaybackKeyPair+import Amazonka.IVS.GetRecordingConfiguration+import Amazonka.IVS.GetStream+import Amazonka.IVS.GetStreamKey+import Amazonka.IVS.GetStreamSession+import Amazonka.IVS.ImportPlaybackKeyPair+import Amazonka.IVS.ListChannels+import Amazonka.IVS.ListPlaybackKeyPairs+import Amazonka.IVS.ListRecordingConfigurations+import Amazonka.IVS.ListStreamKeys+import Amazonka.IVS.ListStreamSessions+import Amazonka.IVS.ListStreams+import Amazonka.IVS.ListTagsForResource+import Amazonka.IVS.PutMetadata+import Amazonka.IVS.StopStream+import Amazonka.IVS.TagResource+import Amazonka.IVS.Types.AudioConfiguration+import Amazonka.IVS.Types.BatchError+import Amazonka.IVS.Types.Channel+import Amazonka.IVS.Types.ChannelSummary+import Amazonka.IVS.Types.DestinationConfiguration+import Amazonka.IVS.Types.IngestConfiguration+import Amazonka.IVS.Types.PlaybackKeyPair+import Amazonka.IVS.Types.PlaybackKeyPairSummary+import Amazonka.IVS.Types.RecordingConfiguration+import Amazonka.IVS.Types.RecordingConfigurationSummary+import Amazonka.IVS.Types.S3DestinationConfiguration+import Amazonka.IVS.Types.Stream+import Amazonka.IVS.Types.StreamEvent+import Amazonka.IVS.Types.StreamFilters+import Amazonka.IVS.Types.StreamKey+import Amazonka.IVS.Types.StreamKeySummary+import Amazonka.IVS.Types.StreamSession+import Amazonka.IVS.Types.StreamSessionSummary+import Amazonka.IVS.Types.StreamSummary+import Amazonka.IVS.Types.ThumbnailConfiguration+import Amazonka.IVS.Types.VideoConfiguration+import Amazonka.IVS.UntagResource+import Amazonka.IVS.UpdateChannel
+ gen/Amazonka/IVS/ListChannels.hs view
@@ -0,0 +1,250 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.ListChannels+-- 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 summary information about all channels in your account, in the+-- Amazon Web Services region where the API request is processed. This list+-- can be filtered to match a specified name or recording-configuration+-- ARN. Filters are mutually exclusive and cannot be used together. If you+-- try to use both filters, you will get an error (409 ConflictException).+--+-- This operation returns paginated results.+module Amazonka.IVS.ListChannels+  ( -- * Creating a Request+    ListChannels (..),+    newListChannels,++    -- * Request Lenses+    listChannels_filterByName,+    listChannels_filterByRecordingConfigurationArn,+    listChannels_maxResults,+    listChannels_nextToken,++    -- * Destructuring the Response+    ListChannelsResponse (..),+    newListChannelsResponse,++    -- * Response Lenses+    listChannelsResponse_nextToken,+    listChannelsResponse_httpStatus,+    listChannelsResponse_channels,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListChannels' smart constructor.+data ListChannels = ListChannels'+  { -- | Filters the channel list to match the specified name.+    filterByName :: Prelude.Maybe Prelude.Text,+    -- | Filters the channel list to match the specified recording-configuration+    -- ARN.+    filterByRecordingConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | Maximum number of channels to return. Default: 100.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The first channel to retrieve. This is used for pagination; see the+    -- @nextToken@ response field.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListChannels' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filterByName', 'listChannels_filterByName' - Filters the channel list to match the specified name.+--+-- 'filterByRecordingConfigurationArn', 'listChannels_filterByRecordingConfigurationArn' - Filters the channel list to match the specified recording-configuration+-- ARN.+--+-- 'maxResults', 'listChannels_maxResults' - Maximum number of channels to return. Default: 100.+--+-- 'nextToken', 'listChannels_nextToken' - The first channel to retrieve. This is used for pagination; see the+-- @nextToken@ response field.+newListChannels ::+  ListChannels+newListChannels =+  ListChannels'+    { filterByName = Prelude.Nothing,+      filterByRecordingConfigurationArn = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | Filters the channel list to match the specified name.+listChannels_filterByName :: Lens.Lens' ListChannels (Prelude.Maybe Prelude.Text)+listChannels_filterByName = Lens.lens (\ListChannels' {filterByName} -> filterByName) (\s@ListChannels' {} a -> s {filterByName = a} :: ListChannels)++-- | Filters the channel list to match the specified recording-configuration+-- ARN.+listChannels_filterByRecordingConfigurationArn :: Lens.Lens' ListChannels (Prelude.Maybe Prelude.Text)+listChannels_filterByRecordingConfigurationArn = Lens.lens (\ListChannels' {filterByRecordingConfigurationArn} -> filterByRecordingConfigurationArn) (\s@ListChannels' {} a -> s {filterByRecordingConfigurationArn = a} :: ListChannels)++-- | Maximum number of channels to return. Default: 100.+listChannels_maxResults :: Lens.Lens' ListChannels (Prelude.Maybe Prelude.Natural)+listChannels_maxResults = Lens.lens (\ListChannels' {maxResults} -> maxResults) (\s@ListChannels' {} a -> s {maxResults = a} :: ListChannels)++-- | The first channel to retrieve. This is used for pagination; see the+-- @nextToken@ response field.+listChannels_nextToken :: Lens.Lens' ListChannels (Prelude.Maybe Prelude.Text)+listChannels_nextToken = Lens.lens (\ListChannels' {nextToken} -> nextToken) (\s@ListChannels' {} a -> s {nextToken = a} :: ListChannels)++instance Core.AWSPager ListChannels where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listChannelsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listChannelsResponse_channels) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listChannels_nextToken+          Lens..~ rs+          Lens.^? listChannelsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListChannels where+  type AWSResponse ListChannels = ListChannelsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListChannelsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "channels" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListChannels where+  hashWithSalt _salt ListChannels' {..} =+    _salt+      `Prelude.hashWithSalt` filterByName+      `Prelude.hashWithSalt` filterByRecordingConfigurationArn+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListChannels where+  rnf ListChannels' {..} =+    Prelude.rnf filterByName+      `Prelude.seq` Prelude.rnf filterByRecordingConfigurationArn+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListChannels where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListChannels where+  toJSON ListChannels' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filterByName" Data..=) Prelude.<$> filterByName,+            ("filterByRecordingConfigurationArn" Data..=)+              Prelude.<$> filterByRecordingConfigurationArn,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListChannels where+  toPath = Prelude.const "/ListChannels"++instance Data.ToQuery ListChannels where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListChannelsResponse' smart constructor.+data ListChannelsResponse = ListChannelsResponse'+  { -- | If there are more channels than @maxResults@, use @nextToken@ in the+    -- request to get the next set.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | List of the matching channels.+    channels :: [ChannelSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListChannelsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listChannelsResponse_nextToken' - If there are more channels than @maxResults@, use @nextToken@ in the+-- request to get the next set.+--+-- 'httpStatus', 'listChannelsResponse_httpStatus' - The response's http status code.+--+-- 'channels', 'listChannelsResponse_channels' - List of the matching channels.+newListChannelsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListChannelsResponse+newListChannelsResponse pHttpStatus_ =+  ListChannelsResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      channels = Prelude.mempty+    }++-- | If there are more channels than @maxResults@, use @nextToken@ in the+-- request to get the next set.+listChannelsResponse_nextToken :: Lens.Lens' ListChannelsResponse (Prelude.Maybe Prelude.Text)+listChannelsResponse_nextToken = Lens.lens (\ListChannelsResponse' {nextToken} -> nextToken) (\s@ListChannelsResponse' {} a -> s {nextToken = a} :: ListChannelsResponse)++-- | The response's http status code.+listChannelsResponse_httpStatus :: Lens.Lens' ListChannelsResponse Prelude.Int+listChannelsResponse_httpStatus = Lens.lens (\ListChannelsResponse' {httpStatus} -> httpStatus) (\s@ListChannelsResponse' {} a -> s {httpStatus = a} :: ListChannelsResponse)++-- | List of the matching channels.+listChannelsResponse_channels :: Lens.Lens' ListChannelsResponse [ChannelSummary]+listChannelsResponse_channels = Lens.lens (\ListChannelsResponse' {channels} -> channels) (\s@ListChannelsResponse' {} a -> s {channels = a} :: ListChannelsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListChannelsResponse where+  rnf ListChannelsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf channels
+ gen/Amazonka/IVS/ListPlaybackKeyPairs.hs view
@@ -0,0 +1,225 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.ListPlaybackKeyPairs+-- 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 summary information about playback key pairs. For more information,+-- see+-- <https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html Setting Up Private Channels>+-- in the /Amazon IVS User Guide/.+--+-- This operation returns paginated results.+module Amazonka.IVS.ListPlaybackKeyPairs+  ( -- * Creating a Request+    ListPlaybackKeyPairs (..),+    newListPlaybackKeyPairs,++    -- * Request Lenses+    listPlaybackKeyPairs_maxResults,+    listPlaybackKeyPairs_nextToken,++    -- * Destructuring the Response+    ListPlaybackKeyPairsResponse (..),+    newListPlaybackKeyPairsResponse,++    -- * Response Lenses+    listPlaybackKeyPairsResponse_nextToken,+    listPlaybackKeyPairsResponse_httpStatus,+    listPlaybackKeyPairsResponse_keyPairs,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListPlaybackKeyPairs' smart constructor.+data ListPlaybackKeyPairs = ListPlaybackKeyPairs'+  { -- | Maximum number of key pairs to return. Default: your service quota or+    -- 100, whichever is smaller.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The first key pair to retrieve. This is used for pagination; see the+    -- @nextToken@ response field.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListPlaybackKeyPairs' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listPlaybackKeyPairs_maxResults' - Maximum number of key pairs to return. Default: your service quota or+-- 100, whichever is smaller.+--+-- 'nextToken', 'listPlaybackKeyPairs_nextToken' - The first key pair to retrieve. This is used for pagination; see the+-- @nextToken@ response field.+newListPlaybackKeyPairs ::+  ListPlaybackKeyPairs+newListPlaybackKeyPairs =+  ListPlaybackKeyPairs'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | Maximum number of key pairs to return. Default: your service quota or+-- 100, whichever is smaller.+listPlaybackKeyPairs_maxResults :: Lens.Lens' ListPlaybackKeyPairs (Prelude.Maybe Prelude.Natural)+listPlaybackKeyPairs_maxResults = Lens.lens (\ListPlaybackKeyPairs' {maxResults} -> maxResults) (\s@ListPlaybackKeyPairs' {} a -> s {maxResults = a} :: ListPlaybackKeyPairs)++-- | The first key pair to retrieve. This is used for pagination; see the+-- @nextToken@ response field.+listPlaybackKeyPairs_nextToken :: Lens.Lens' ListPlaybackKeyPairs (Prelude.Maybe Prelude.Text)+listPlaybackKeyPairs_nextToken = Lens.lens (\ListPlaybackKeyPairs' {nextToken} -> nextToken) (\s@ListPlaybackKeyPairs' {} a -> s {nextToken = a} :: ListPlaybackKeyPairs)++instance Core.AWSPager ListPlaybackKeyPairs where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listPlaybackKeyPairsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listPlaybackKeyPairsResponse_keyPairs) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listPlaybackKeyPairs_nextToken+          Lens..~ rs+          Lens.^? listPlaybackKeyPairsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListPlaybackKeyPairs where+  type+    AWSResponse ListPlaybackKeyPairs =+      ListPlaybackKeyPairsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListPlaybackKeyPairsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "keyPairs" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListPlaybackKeyPairs where+  hashWithSalt _salt ListPlaybackKeyPairs' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListPlaybackKeyPairs where+  rnf ListPlaybackKeyPairs' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListPlaybackKeyPairs where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListPlaybackKeyPairs where+  toJSON ListPlaybackKeyPairs' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListPlaybackKeyPairs where+  toPath = Prelude.const "/ListPlaybackKeyPairs"++instance Data.ToQuery ListPlaybackKeyPairs where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListPlaybackKeyPairsResponse' smart constructor.+data ListPlaybackKeyPairsResponse = ListPlaybackKeyPairsResponse'+  { -- | If there are more key pairs than @maxResults@, use @nextToken@ in the+    -- request to get the next set.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | List of key pairs.+    keyPairs :: [PlaybackKeyPairSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListPlaybackKeyPairsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listPlaybackKeyPairsResponse_nextToken' - If there are more key pairs than @maxResults@, use @nextToken@ in the+-- request to get the next set.+--+-- 'httpStatus', 'listPlaybackKeyPairsResponse_httpStatus' - The response's http status code.+--+-- 'keyPairs', 'listPlaybackKeyPairsResponse_keyPairs' - List of key pairs.+newListPlaybackKeyPairsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListPlaybackKeyPairsResponse+newListPlaybackKeyPairsResponse pHttpStatus_ =+  ListPlaybackKeyPairsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      keyPairs = Prelude.mempty+    }++-- | If there are more key pairs than @maxResults@, use @nextToken@ in the+-- request to get the next set.+listPlaybackKeyPairsResponse_nextToken :: Lens.Lens' ListPlaybackKeyPairsResponse (Prelude.Maybe Prelude.Text)+listPlaybackKeyPairsResponse_nextToken = Lens.lens (\ListPlaybackKeyPairsResponse' {nextToken} -> nextToken) (\s@ListPlaybackKeyPairsResponse' {} a -> s {nextToken = a} :: ListPlaybackKeyPairsResponse)++-- | The response's http status code.+listPlaybackKeyPairsResponse_httpStatus :: Lens.Lens' ListPlaybackKeyPairsResponse Prelude.Int+listPlaybackKeyPairsResponse_httpStatus = Lens.lens (\ListPlaybackKeyPairsResponse' {httpStatus} -> httpStatus) (\s@ListPlaybackKeyPairsResponse' {} a -> s {httpStatus = a} :: ListPlaybackKeyPairsResponse)++-- | List of key pairs.+listPlaybackKeyPairsResponse_keyPairs :: Lens.Lens' ListPlaybackKeyPairsResponse [PlaybackKeyPairSummary]+listPlaybackKeyPairsResponse_keyPairs = Lens.lens (\ListPlaybackKeyPairsResponse' {keyPairs} -> keyPairs) (\s@ListPlaybackKeyPairsResponse' {} a -> s {keyPairs = a} :: ListPlaybackKeyPairsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListPlaybackKeyPairsResponse where+  rnf ListPlaybackKeyPairsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf keyPairs
+ gen/Amazonka/IVS/ListRecordingConfigurations.hs view
@@ -0,0 +1,234 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.ListRecordingConfigurations+-- 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 summary information about all recording configurations in your+-- account, in the Amazon Web Services region where the API request is+-- processed.+--+-- This operation returns paginated results.+module Amazonka.IVS.ListRecordingConfigurations+  ( -- * Creating a Request+    ListRecordingConfigurations (..),+    newListRecordingConfigurations,++    -- * Request Lenses+    listRecordingConfigurations_maxResults,+    listRecordingConfigurations_nextToken,++    -- * Destructuring the Response+    ListRecordingConfigurationsResponse (..),+    newListRecordingConfigurationsResponse,++    -- * Response Lenses+    listRecordingConfigurationsResponse_nextToken,+    listRecordingConfigurationsResponse_httpStatus,+    listRecordingConfigurationsResponse_recordingConfigurations,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListRecordingConfigurations' smart constructor.+data ListRecordingConfigurations = ListRecordingConfigurations'+  { -- | Maximum number of recording configurations to return. Default: your+    -- service quota or 100, whichever is smaller.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The first recording configuration to retrieve. This is used for+    -- pagination; see the @nextToken@ response field.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListRecordingConfigurations' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listRecordingConfigurations_maxResults' - Maximum number of recording configurations to return. Default: your+-- service quota or 100, whichever is smaller.+--+-- 'nextToken', 'listRecordingConfigurations_nextToken' - The first recording configuration to retrieve. This is used for+-- pagination; see the @nextToken@ response field.+newListRecordingConfigurations ::+  ListRecordingConfigurations+newListRecordingConfigurations =+  ListRecordingConfigurations'+    { maxResults =+        Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | Maximum number of recording configurations to return. Default: your+-- service quota or 100, whichever is smaller.+listRecordingConfigurations_maxResults :: Lens.Lens' ListRecordingConfigurations (Prelude.Maybe Prelude.Natural)+listRecordingConfigurations_maxResults = Lens.lens (\ListRecordingConfigurations' {maxResults} -> maxResults) (\s@ListRecordingConfigurations' {} a -> s {maxResults = a} :: ListRecordingConfigurations)++-- | The first recording configuration to retrieve. This is used for+-- pagination; see the @nextToken@ response field.+listRecordingConfigurations_nextToken :: Lens.Lens' ListRecordingConfigurations (Prelude.Maybe Prelude.Text)+listRecordingConfigurations_nextToken = Lens.lens (\ListRecordingConfigurations' {nextToken} -> nextToken) (\s@ListRecordingConfigurations' {} a -> s {nextToken = a} :: ListRecordingConfigurations)++instance Core.AWSPager ListRecordingConfigurations where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listRecordingConfigurationsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listRecordingConfigurationsResponse_recordingConfigurations+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listRecordingConfigurations_nextToken+          Lens..~ rs+          Lens.^? listRecordingConfigurationsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListRecordingConfigurations where+  type+    AWSResponse ListRecordingConfigurations =+      ListRecordingConfigurationsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListRecordingConfigurationsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "recordingConfigurations"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListRecordingConfigurations where+  hashWithSalt _salt ListRecordingConfigurations' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListRecordingConfigurations where+  rnf ListRecordingConfigurations' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListRecordingConfigurations where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListRecordingConfigurations where+  toJSON ListRecordingConfigurations' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListRecordingConfigurations where+  toPath = Prelude.const "/ListRecordingConfigurations"++instance Data.ToQuery ListRecordingConfigurations where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListRecordingConfigurationsResponse' smart constructor.+data ListRecordingConfigurationsResponse = ListRecordingConfigurationsResponse'+  { -- | If there are more recording configurations than @maxResults@, use+    -- @nextToken@ in the request to get the next set.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | List of the matching recording configurations.+    recordingConfigurations :: [RecordingConfigurationSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListRecordingConfigurationsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listRecordingConfigurationsResponse_nextToken' - If there are more recording configurations than @maxResults@, use+-- @nextToken@ in the request to get the next set.+--+-- 'httpStatus', 'listRecordingConfigurationsResponse_httpStatus' - The response's http status code.+--+-- 'recordingConfigurations', 'listRecordingConfigurationsResponse_recordingConfigurations' - List of the matching recording configurations.+newListRecordingConfigurationsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListRecordingConfigurationsResponse+newListRecordingConfigurationsResponse pHttpStatus_ =+  ListRecordingConfigurationsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      recordingConfigurations =+        Prelude.mempty+    }++-- | If there are more recording configurations than @maxResults@, use+-- @nextToken@ in the request to get the next set.+listRecordingConfigurationsResponse_nextToken :: Lens.Lens' ListRecordingConfigurationsResponse (Prelude.Maybe Prelude.Text)+listRecordingConfigurationsResponse_nextToken = Lens.lens (\ListRecordingConfigurationsResponse' {nextToken} -> nextToken) (\s@ListRecordingConfigurationsResponse' {} a -> s {nextToken = a} :: ListRecordingConfigurationsResponse)++-- | The response's http status code.+listRecordingConfigurationsResponse_httpStatus :: Lens.Lens' ListRecordingConfigurationsResponse Prelude.Int+listRecordingConfigurationsResponse_httpStatus = Lens.lens (\ListRecordingConfigurationsResponse' {httpStatus} -> httpStatus) (\s@ListRecordingConfigurationsResponse' {} a -> s {httpStatus = a} :: ListRecordingConfigurationsResponse)++-- | List of the matching recording configurations.+listRecordingConfigurationsResponse_recordingConfigurations :: Lens.Lens' ListRecordingConfigurationsResponse [RecordingConfigurationSummary]+listRecordingConfigurationsResponse_recordingConfigurations = Lens.lens (\ListRecordingConfigurationsResponse' {recordingConfigurations} -> recordingConfigurations) (\s@ListRecordingConfigurationsResponse' {} a -> s {recordingConfigurations = a} :: ListRecordingConfigurationsResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    ListRecordingConfigurationsResponse+  where+  rnf ListRecordingConfigurationsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf recordingConfigurations
+ gen/Amazonka/IVS/ListStreamKeys.hs view
@@ -0,0 +1,234 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.ListStreamKeys+-- 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 summary information about stream keys for the specified channel.+--+-- This operation returns paginated results.+module Amazonka.IVS.ListStreamKeys+  ( -- * Creating a Request+    ListStreamKeys (..),+    newListStreamKeys,++    -- * Request Lenses+    listStreamKeys_maxResults,+    listStreamKeys_nextToken,+    listStreamKeys_channelArn,++    -- * Destructuring the Response+    ListStreamKeysResponse (..),+    newListStreamKeysResponse,++    -- * Response Lenses+    listStreamKeysResponse_nextToken,+    listStreamKeysResponse_httpStatus,+    listStreamKeysResponse_streamKeys,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListStreamKeys' smart constructor.+data ListStreamKeys = ListStreamKeys'+  { -- | Maximum number of streamKeys to return. Default: 1.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The first stream key to retrieve. This is used for pagination; see the+    -- @nextToken@ response field.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Channel ARN used to filter the list.+    channelArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListStreamKeys' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listStreamKeys_maxResults' - Maximum number of streamKeys to return. Default: 1.+--+-- 'nextToken', 'listStreamKeys_nextToken' - The first stream key to retrieve. This is used for pagination; see the+-- @nextToken@ response field.+--+-- 'channelArn', 'listStreamKeys_channelArn' - Channel ARN used to filter the list.+newListStreamKeys ::+  -- | 'channelArn'+  Prelude.Text ->+  ListStreamKeys+newListStreamKeys pChannelArn_ =+  ListStreamKeys'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      channelArn = pChannelArn_+    }++-- | Maximum number of streamKeys to return. Default: 1.+listStreamKeys_maxResults :: Lens.Lens' ListStreamKeys (Prelude.Maybe Prelude.Natural)+listStreamKeys_maxResults = Lens.lens (\ListStreamKeys' {maxResults} -> maxResults) (\s@ListStreamKeys' {} a -> s {maxResults = a} :: ListStreamKeys)++-- | The first stream key to retrieve. This is used for pagination; see the+-- @nextToken@ response field.+listStreamKeys_nextToken :: Lens.Lens' ListStreamKeys (Prelude.Maybe Prelude.Text)+listStreamKeys_nextToken = Lens.lens (\ListStreamKeys' {nextToken} -> nextToken) (\s@ListStreamKeys' {} a -> s {nextToken = a} :: ListStreamKeys)++-- | Channel ARN used to filter the list.+listStreamKeys_channelArn :: Lens.Lens' ListStreamKeys Prelude.Text+listStreamKeys_channelArn = Lens.lens (\ListStreamKeys' {channelArn} -> channelArn) (\s@ListStreamKeys' {} a -> s {channelArn = a} :: ListStreamKeys)++instance Core.AWSPager ListStreamKeys where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listStreamKeysResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. listStreamKeysResponse_streamKeys) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listStreamKeys_nextToken+          Lens..~ rs+          Lens.^? listStreamKeysResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListStreamKeys where+  type+    AWSResponse ListStreamKeys =+      ListStreamKeysResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListStreamKeysResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "streamKeys" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListStreamKeys where+  hashWithSalt _salt ListStreamKeys' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` channelArn++instance Prelude.NFData ListStreamKeys where+  rnf ListStreamKeys' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf channelArn++instance Data.ToHeaders ListStreamKeys where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListStreamKeys where+  toJSON ListStreamKeys' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("channelArn" Data..= channelArn)+          ]+      )++instance Data.ToPath ListStreamKeys where+  toPath = Prelude.const "/ListStreamKeys"++instance Data.ToQuery ListStreamKeys where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListStreamKeysResponse' smart constructor.+data ListStreamKeysResponse = ListStreamKeysResponse'+  { -- | If there are more stream keys than @maxResults@, use @nextToken@ in the+    -- request to get the next set.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | List of stream keys.+    streamKeys :: [StreamKeySummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListStreamKeysResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listStreamKeysResponse_nextToken' - If there are more stream keys than @maxResults@, use @nextToken@ in the+-- request to get the next set.+--+-- 'httpStatus', 'listStreamKeysResponse_httpStatus' - The response's http status code.+--+-- 'streamKeys', 'listStreamKeysResponse_streamKeys' - List of stream keys.+newListStreamKeysResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListStreamKeysResponse+newListStreamKeysResponse pHttpStatus_ =+  ListStreamKeysResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      streamKeys = Prelude.mempty+    }++-- | If there are more stream keys than @maxResults@, use @nextToken@ in the+-- request to get the next set.+listStreamKeysResponse_nextToken :: Lens.Lens' ListStreamKeysResponse (Prelude.Maybe Prelude.Text)+listStreamKeysResponse_nextToken = Lens.lens (\ListStreamKeysResponse' {nextToken} -> nextToken) (\s@ListStreamKeysResponse' {} a -> s {nextToken = a} :: ListStreamKeysResponse)++-- | The response's http status code.+listStreamKeysResponse_httpStatus :: Lens.Lens' ListStreamKeysResponse Prelude.Int+listStreamKeysResponse_httpStatus = Lens.lens (\ListStreamKeysResponse' {httpStatus} -> httpStatus) (\s@ListStreamKeysResponse' {} a -> s {httpStatus = a} :: ListStreamKeysResponse)++-- | List of stream keys.+listStreamKeysResponse_streamKeys :: Lens.Lens' ListStreamKeysResponse [StreamKeySummary]+listStreamKeysResponse_streamKeys = Lens.lens (\ListStreamKeysResponse' {streamKeys} -> streamKeys) (\s@ListStreamKeysResponse' {} a -> s {streamKeys = a} :: ListStreamKeysResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListStreamKeysResponse where+  rnf ListStreamKeysResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf streamKeys
+ gen/Amazonka/IVS/ListStreamSessions.hs view
@@ -0,0 +1,217 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.ListStreamSessions+-- 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 summary of current and previous streams for a specified channel+-- in your account, in the AWS region where the API request is processed.+module Amazonka.IVS.ListStreamSessions+  ( -- * Creating a Request+    ListStreamSessions (..),+    newListStreamSessions,++    -- * Request Lenses+    listStreamSessions_maxResults,+    listStreamSessions_nextToken,+    listStreamSessions_channelArn,++    -- * Destructuring the Response+    ListStreamSessionsResponse (..),+    newListStreamSessionsResponse,++    -- * Response Lenses+    listStreamSessionsResponse_nextToken,+    listStreamSessionsResponse_httpStatus,+    listStreamSessionsResponse_streamSessions,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListStreamSessions' smart constructor.+data ListStreamSessions = ListStreamSessions'+  { -- | Maximum number of streams to return. Default: 100.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The first stream to retrieve. This is used for pagination; see the+    -- @nextToken@ response field.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Channel ARN used to filter the list.+    channelArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListStreamSessions' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'listStreamSessions_maxResults' - Maximum number of streams to return. Default: 100.+--+-- 'nextToken', 'listStreamSessions_nextToken' - The first stream to retrieve. This is used for pagination; see the+-- @nextToken@ response field.+--+-- 'channelArn', 'listStreamSessions_channelArn' - Channel ARN used to filter the list.+newListStreamSessions ::+  -- | 'channelArn'+  Prelude.Text ->+  ListStreamSessions+newListStreamSessions pChannelArn_ =+  ListStreamSessions'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      channelArn = pChannelArn_+    }++-- | Maximum number of streams to return. Default: 100.+listStreamSessions_maxResults :: Lens.Lens' ListStreamSessions (Prelude.Maybe Prelude.Natural)+listStreamSessions_maxResults = Lens.lens (\ListStreamSessions' {maxResults} -> maxResults) (\s@ListStreamSessions' {} a -> s {maxResults = a} :: ListStreamSessions)++-- | The first stream to retrieve. This is used for pagination; see the+-- @nextToken@ response field.+listStreamSessions_nextToken :: Lens.Lens' ListStreamSessions (Prelude.Maybe Prelude.Text)+listStreamSessions_nextToken = Lens.lens (\ListStreamSessions' {nextToken} -> nextToken) (\s@ListStreamSessions' {} a -> s {nextToken = a} :: ListStreamSessions)++-- | Channel ARN used to filter the list.+listStreamSessions_channelArn :: Lens.Lens' ListStreamSessions Prelude.Text+listStreamSessions_channelArn = Lens.lens (\ListStreamSessions' {channelArn} -> channelArn) (\s@ListStreamSessions' {} a -> s {channelArn = a} :: ListStreamSessions)++instance Core.AWSRequest ListStreamSessions where+  type+    AWSResponse ListStreamSessions =+      ListStreamSessionsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListStreamSessionsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "streamSessions"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable ListStreamSessions where+  hashWithSalt _salt ListStreamSessions' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` channelArn++instance Prelude.NFData ListStreamSessions where+  rnf ListStreamSessions' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf channelArn++instance Data.ToHeaders ListStreamSessions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListStreamSessions where+  toJSON ListStreamSessions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            Prelude.Just ("channelArn" Data..= channelArn)+          ]+      )++instance Data.ToPath ListStreamSessions where+  toPath = Prelude.const "/ListStreamSessions"++instance Data.ToQuery ListStreamSessions where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListStreamSessionsResponse' smart constructor.+data ListStreamSessionsResponse = ListStreamSessionsResponse'+  { -- | If there are more streams than @maxResults@, use @nextToken@ in the+    -- request to get the next set.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | List of stream sessions.+    streamSessions :: [StreamSessionSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListStreamSessionsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listStreamSessionsResponse_nextToken' - If there are more streams than @maxResults@, use @nextToken@ in the+-- request to get the next set.+--+-- 'httpStatus', 'listStreamSessionsResponse_httpStatus' - The response's http status code.+--+-- 'streamSessions', 'listStreamSessionsResponse_streamSessions' - List of stream sessions.+newListStreamSessionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListStreamSessionsResponse+newListStreamSessionsResponse pHttpStatus_ =+  ListStreamSessionsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      streamSessions = Prelude.mempty+    }++-- | If there are more streams than @maxResults@, use @nextToken@ in the+-- request to get the next set.+listStreamSessionsResponse_nextToken :: Lens.Lens' ListStreamSessionsResponse (Prelude.Maybe Prelude.Text)+listStreamSessionsResponse_nextToken = Lens.lens (\ListStreamSessionsResponse' {nextToken} -> nextToken) (\s@ListStreamSessionsResponse' {} a -> s {nextToken = a} :: ListStreamSessionsResponse)++-- | The response's http status code.+listStreamSessionsResponse_httpStatus :: Lens.Lens' ListStreamSessionsResponse Prelude.Int+listStreamSessionsResponse_httpStatus = Lens.lens (\ListStreamSessionsResponse' {httpStatus} -> httpStatus) (\s@ListStreamSessionsResponse' {} a -> s {httpStatus = a} :: ListStreamSessionsResponse)++-- | List of stream sessions.+listStreamSessionsResponse_streamSessions :: Lens.Lens' ListStreamSessionsResponse [StreamSessionSummary]+listStreamSessionsResponse_streamSessions = Lens.lens (\ListStreamSessionsResponse' {streamSessions} -> streamSessions) (\s@ListStreamSessionsResponse' {} a -> s {streamSessions = a} :: ListStreamSessionsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListStreamSessionsResponse where+  rnf ListStreamSessionsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf streamSessions
+ gen/Amazonka/IVS/ListStreams.hs view
@@ -0,0 +1,229 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.ListStreams+-- 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 summary information about live streams in your account, in the+-- Amazon Web Services region where the API request is processed.+--+-- This operation returns paginated results.+module Amazonka.IVS.ListStreams+  ( -- * Creating a Request+    ListStreams (..),+    newListStreams,++    -- * Request Lenses+    listStreams_filterBy,+    listStreams_maxResults,+    listStreams_nextToken,++    -- * Destructuring the Response+    ListStreamsResponse (..),+    newListStreamsResponse,++    -- * Response Lenses+    listStreamsResponse_nextToken,+    listStreamsResponse_httpStatus,+    listStreamsResponse_streams,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListStreams' smart constructor.+data ListStreams = ListStreams'+  { -- | Filters the stream list to match the specified criterion.+    filterBy :: Prelude.Maybe StreamFilters,+    -- | Maximum number of streams to return. Default: 100.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The first stream to retrieve. This is used for pagination; see the+    -- @nextToken@ response field.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListStreams' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'filterBy', 'listStreams_filterBy' - Filters the stream list to match the specified criterion.+--+-- 'maxResults', 'listStreams_maxResults' - Maximum number of streams to return. Default: 100.+--+-- 'nextToken', 'listStreams_nextToken' - The first stream to retrieve. This is used for pagination; see the+-- @nextToken@ response field.+newListStreams ::+  ListStreams+newListStreams =+  ListStreams'+    { filterBy = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | Filters the stream list to match the specified criterion.+listStreams_filterBy :: Lens.Lens' ListStreams (Prelude.Maybe StreamFilters)+listStreams_filterBy = Lens.lens (\ListStreams' {filterBy} -> filterBy) (\s@ListStreams' {} a -> s {filterBy = a} :: ListStreams)++-- | Maximum number of streams to return. Default: 100.+listStreams_maxResults :: Lens.Lens' ListStreams (Prelude.Maybe Prelude.Natural)+listStreams_maxResults = Lens.lens (\ListStreams' {maxResults} -> maxResults) (\s@ListStreams' {} a -> s {maxResults = a} :: ListStreams)++-- | The first stream to retrieve. This is used for pagination; see the+-- @nextToken@ response field.+listStreams_nextToken :: Lens.Lens' ListStreams (Prelude.Maybe Prelude.Text)+listStreams_nextToken = Lens.lens (\ListStreams' {nextToken} -> nextToken) (\s@ListStreams' {} a -> s {nextToken = a} :: ListStreams)++instance Core.AWSPager ListStreams where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listStreamsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop (rs Lens.^. listStreamsResponse_streams) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listStreams_nextToken+          Lens..~ rs+          Lens.^? listStreamsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListStreams where+  type AWSResponse ListStreams = ListStreamsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListStreamsResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "streams" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListStreams where+  hashWithSalt _salt ListStreams' {..} =+    _salt+      `Prelude.hashWithSalt` filterBy+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData ListStreams where+  rnf ListStreams' {..} =+    Prelude.rnf filterBy+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders ListStreams where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListStreams where+  toJSON ListStreams' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("filterBy" Data..=) Prelude.<$> filterBy,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath ListStreams where+  toPath = Prelude.const "/ListStreams"++instance Data.ToQuery ListStreams where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListStreamsResponse' smart constructor.+data ListStreamsResponse = ListStreamsResponse'+  { -- | If there are more streams than @maxResults@, use @nextToken@ in the+    -- request to get the next set.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | List of streams.+    streams :: [StreamSummary]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListStreamsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'nextToken', 'listStreamsResponse_nextToken' - If there are more streams than @maxResults@, use @nextToken@ in the+-- request to get the next set.+--+-- 'httpStatus', 'listStreamsResponse_httpStatus' - The response's http status code.+--+-- 'streams', 'listStreamsResponse_streams' - List of streams.+newListStreamsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListStreamsResponse+newListStreamsResponse pHttpStatus_ =+  ListStreamsResponse'+    { nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_,+      streams = Prelude.mempty+    }++-- | If there are more streams than @maxResults@, use @nextToken@ in the+-- request to get the next set.+listStreamsResponse_nextToken :: Lens.Lens' ListStreamsResponse (Prelude.Maybe Prelude.Text)+listStreamsResponse_nextToken = Lens.lens (\ListStreamsResponse' {nextToken} -> nextToken) (\s@ListStreamsResponse' {} a -> s {nextToken = a} :: ListStreamsResponse)++-- | The response's http status code.+listStreamsResponse_httpStatus :: Lens.Lens' ListStreamsResponse Prelude.Int+listStreamsResponse_httpStatus = Lens.lens (\ListStreamsResponse' {httpStatus} -> httpStatus) (\s@ListStreamsResponse' {} a -> s {httpStatus = a} :: ListStreamsResponse)++-- | List of streams.+listStreamsResponse_streams :: Lens.Lens' ListStreamsResponse [StreamSummary]+listStreamsResponse_streams = Lens.lens (\ListStreamsResponse' {streams} -> streams) (\s@ListStreamsResponse' {} a -> s {streams = a} :: ListStreamsResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListStreamsResponse where+  rnf ListStreamsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf streams
+ gen/Amazonka/IVS/ListTagsForResource.hs view
@@ -0,0 +1,157 @@+{-# 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.IVS.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)+--+-- Gets information about Amazon Web Services tags for the specified ARN.+module Amazonka.IVS.ListTagsForResource+  ( -- * Creating a Request+    ListTagsForResource (..),+    newListTagsForResource,++    -- * Request Lenses+    listTagsForResource_resourceArn,++    -- * Destructuring the Response+    ListTagsForResourceResponse (..),+    newListTagsForResourceResponse,++    -- * Response Lenses+    listTagsForResourceResponse_httpStatus,+    listTagsForResourceResponse_tags,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.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 ARN of the resource to be retrieved. The ARN must be URL-encoded.+    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 ARN of the resource to be retrieved. The ARN must be URL-encoded.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The ARN of the resource to be retrieved. The ARN must be URL-encoded.+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.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "tags" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListTagsForResource where+  hashWithSalt _salt ListTagsForResource' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData ListTagsForResource where+  rnf ListTagsForResource' {..} =+    Prelude.rnf resourceArn++instance Data.ToHeaders ListTagsForResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListTagsForResource where+  toPath ListTagsForResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery ListTagsForResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    tags :: Prelude.HashMap Prelude.Text Prelude.Text+  }+  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:+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+--+-- 'tags', 'listTagsForResourceResponse_tags' -+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { httpStatus =+        pHttpStatus_,+      tags = Prelude.mempty+    }++-- | 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)++listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.HashMap Prelude.Text Prelude.Text)+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListTagsForResourceResponse where+  rnf ListTagsForResourceResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/IVS/PutMetadata.hs view
@@ -0,0 +1,154 @@+{-# 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.IVS.PutMetadata+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Inserts metadata into the active stream of the specified channel. At+-- most 5 requests per second per channel are allowed, each with a maximum+-- 1 KB payload. (If 5 TPS is not sufficient for your needs, we recommend+-- batching your data into a single PutMetadata call.) At most 155 requests+-- per second per account are allowed. Also see+-- <https://docs.aws.amazon.com/ivs/latest/userguide/metadata.html Embedding Metadata within a Video Stream>+-- in the /Amazon IVS User Guide/.+module Amazonka.IVS.PutMetadata+  ( -- * Creating a Request+    PutMetadata (..),+    newPutMetadata,++    -- * Request Lenses+    putMetadata_channelArn,+    putMetadata_metadata,++    -- * Destructuring the Response+    PutMetadataResponse (..),+    newPutMetadataResponse,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutMetadata' smart constructor.+data PutMetadata = PutMetadata'+  { -- | ARN of the channel into which metadata is inserted. This channel must+    -- have an active stream.+    channelArn :: Prelude.Text,+    -- | Metadata to insert into the stream. Maximum: 1 KB per request.+    metadata :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutMetadata' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channelArn', 'putMetadata_channelArn' - ARN of the channel into which metadata is inserted. This channel must+-- have an active stream.+--+-- 'metadata', 'putMetadata_metadata' - Metadata to insert into the stream. Maximum: 1 KB per request.+newPutMetadata ::+  -- | 'channelArn'+  Prelude.Text ->+  -- | 'metadata'+  Prelude.Text ->+  PutMetadata+newPutMetadata pChannelArn_ pMetadata_ =+  PutMetadata'+    { channelArn = pChannelArn_,+      metadata = Data._Sensitive Lens.# pMetadata_+    }++-- | ARN of the channel into which metadata is inserted. This channel must+-- have an active stream.+putMetadata_channelArn :: Lens.Lens' PutMetadata Prelude.Text+putMetadata_channelArn = Lens.lens (\PutMetadata' {channelArn} -> channelArn) (\s@PutMetadata' {} a -> s {channelArn = a} :: PutMetadata)++-- | Metadata to insert into the stream. Maximum: 1 KB per request.+putMetadata_metadata :: Lens.Lens' PutMetadata Prelude.Text+putMetadata_metadata = Lens.lens (\PutMetadata' {metadata} -> metadata) (\s@PutMetadata' {} a -> s {metadata = a} :: PutMetadata) Prelude.. Data._Sensitive++instance Core.AWSRequest PutMetadata where+  type AWSResponse PutMetadata = PutMetadataResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response = Response.receiveNull PutMetadataResponse'++instance Prelude.Hashable PutMetadata where+  hashWithSalt _salt PutMetadata' {..} =+    _salt+      `Prelude.hashWithSalt` channelArn+      `Prelude.hashWithSalt` metadata++instance Prelude.NFData PutMetadata where+  rnf PutMetadata' {..} =+    Prelude.rnf channelArn+      `Prelude.seq` Prelude.rnf metadata++instance Data.ToHeaders PutMetadata where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutMetadata where+  toJSON PutMetadata' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("channelArn" Data..= channelArn),+            Prelude.Just ("metadata" Data..= metadata)+          ]+      )++instance Data.ToPath PutMetadata where+  toPath = Prelude.const "/PutMetadata"++instance Data.ToQuery PutMetadata where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutMetadataResponse' smart constructor.+data PutMetadataResponse = PutMetadataResponse'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutMetadataResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newPutMetadataResponse ::+  PutMetadataResponse+newPutMetadataResponse = PutMetadataResponse'++instance Prelude.NFData PutMetadataResponse where+  rnf _ = ()
+ gen/Amazonka/IVS/StopStream.hs view
@@ -0,0 +1,152 @@+{-# 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.IVS.StopStream+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Disconnects the incoming RTMPS stream for the specified channel. Can be+-- used in conjunction with DeleteStreamKey to prevent further streaming to+-- a channel.+--+-- Many streaming client-software libraries automatically reconnect a+-- dropped RTMPS session, so to stop the stream permanently, you may want+-- to first revoke the @streamKey@ attached to the channel.+module Amazonka.IVS.StopStream+  ( -- * Creating a Request+    StopStream (..),+    newStopStream,++    -- * Request Lenses+    stopStream_channelArn,++    -- * Destructuring the Response+    StopStreamResponse (..),+    newStopStreamResponse,++    -- * Response Lenses+    stopStreamResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newStopStream' smart constructor.+data StopStream = StopStream'+  { -- | ARN of the channel for which the stream is to be stopped.+    channelArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StopStream' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channelArn', 'stopStream_channelArn' - ARN of the channel for which the stream is to be stopped.+newStopStream ::+  -- | 'channelArn'+  Prelude.Text ->+  StopStream+newStopStream pChannelArn_ =+  StopStream' {channelArn = pChannelArn_}++-- | ARN of the channel for which the stream is to be stopped.+stopStream_channelArn :: Lens.Lens' StopStream Prelude.Text+stopStream_channelArn = Lens.lens (\StopStream' {channelArn} -> channelArn) (\s@StopStream' {} a -> s {channelArn = a} :: StopStream)++instance Core.AWSRequest StopStream where+  type AWSResponse StopStream = StopStreamResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          StopStreamResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable StopStream where+  hashWithSalt _salt StopStream' {..} =+    _salt `Prelude.hashWithSalt` channelArn++instance Prelude.NFData StopStream where+  rnf StopStream' {..} = Prelude.rnf channelArn++instance Data.ToHeaders StopStream where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON StopStream where+  toJSON StopStream' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("channelArn" Data..= channelArn)]+      )++instance Data.ToPath StopStream where+  toPath = Prelude.const "/StopStream"++instance Data.ToQuery StopStream where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newStopStreamResponse' smart constructor.+data StopStreamResponse = StopStreamResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StopStreamResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'stopStreamResponse_httpStatus' - The response's http status code.+newStopStreamResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  StopStreamResponse+newStopStreamResponse pHttpStatus_ =+  StopStreamResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+stopStreamResponse_httpStatus :: Lens.Lens' StopStreamResponse Prelude.Int+stopStreamResponse_httpStatus = Lens.lens (\StopStreamResponse' {httpStatus} -> httpStatus) (\s@StopStreamResponse' {} a -> s {httpStatus = a} :: StopStreamResponse)++instance Prelude.NFData StopStreamResponse where+  rnf StopStreamResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/IVS/TagResource.hs view
@@ -0,0 +1,179 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.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 or updates tags for the Amazon Web Services resource with the+-- specified ARN.+module Amazonka.IVS.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.IVS.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'+  { -- | ARN of the resource for which tags are to be added or updated. The ARN+    -- must be URL-encoded.+    resourceArn :: Prelude.Text,+    -- | Array of tags to be added or updated. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    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' - ARN of the resource for which tags are to be added or updated. The ARN+-- must be URL-encoded.+--+-- 'tags', 'tagResource_tags' - Array of tags to be added or updated. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | ARN of the resource for which tags are to be added or updated. The ARN+-- must be URL-encoded.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | Array of tags to be added or updated. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+tagResource_tags :: Lens.Lens' TagResource (Prelude.HashMap Prelude.Text Prelude.Text)+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced++instance Core.AWSRequest TagResource where+  type AWSResponse TagResource = TagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          TagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable TagResource where+  hashWithSalt _salt TagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData TagResource where+  rnf TagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tags++instance Data.ToHeaders TagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("tags" Data..= tags)]+      )++instance Data.ToPath TagResource where+  toPath TagResource' {..} =+    Prelude.mconcat ["/tags/", Data.toBS resourceArn]++instance Data.ToQuery TagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.+newTagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TagResourceResponse+newTagResourceResponse pHttpStatus_ =+  TagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)++instance Prelude.NFData TagResourceResponse where+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/IVS/Types.hs view
@@ -0,0 +1,396 @@+{-# 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.IVS.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.IVS.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccessDeniedException,+    _ChannelNotBroadcasting,+    _ConflictException,+    _InternalServerException,+    _PendingVerification,+    _ResourceNotFoundException,+    _ServiceQuotaExceededException,+    _StreamUnavailable,+    _ThrottlingException,+    _ValidationException,++    -- * ChannelLatencyMode+    ChannelLatencyMode (..),++    -- * ChannelType+    ChannelType (..),++    -- * RecordingConfigurationState+    RecordingConfigurationState (..),++    -- * RecordingMode+    RecordingMode (..),++    -- * StreamHealth+    StreamHealth (..),++    -- * StreamState+    StreamState (..),++    -- * AudioConfiguration+    AudioConfiguration (..),+    newAudioConfiguration,+    audioConfiguration_channels,+    audioConfiguration_codec,+    audioConfiguration_sampleRate,+    audioConfiguration_targetBitrate,++    -- * BatchError+    BatchError (..),+    newBatchError,+    batchError_arn,+    batchError_code,+    batchError_message,++    -- * Channel+    Channel (..),+    newChannel,+    channel_arn,+    channel_authorized,+    channel_ingestEndpoint,+    channel_latencyMode,+    channel_name,+    channel_playbackUrl,+    channel_recordingConfigurationArn,+    channel_tags,+    channel_type,++    -- * ChannelSummary+    ChannelSummary (..),+    newChannelSummary,+    channelSummary_arn,+    channelSummary_authorized,+    channelSummary_latencyMode,+    channelSummary_name,+    channelSummary_recordingConfigurationArn,+    channelSummary_tags,++    -- * DestinationConfiguration+    DestinationConfiguration (..),+    newDestinationConfiguration,+    destinationConfiguration_s3,++    -- * IngestConfiguration+    IngestConfiguration (..),+    newIngestConfiguration,+    ingestConfiguration_audio,+    ingestConfiguration_video,++    -- * PlaybackKeyPair+    PlaybackKeyPair (..),+    newPlaybackKeyPair,+    playbackKeyPair_arn,+    playbackKeyPair_fingerprint,+    playbackKeyPair_name,+    playbackKeyPair_tags,++    -- * PlaybackKeyPairSummary+    PlaybackKeyPairSummary (..),+    newPlaybackKeyPairSummary,+    playbackKeyPairSummary_arn,+    playbackKeyPairSummary_name,+    playbackKeyPairSummary_tags,++    -- * RecordingConfiguration+    RecordingConfiguration (..),+    newRecordingConfiguration,+    recordingConfiguration_name,+    recordingConfiguration_recordingReconnectWindowSeconds,+    recordingConfiguration_tags,+    recordingConfiguration_thumbnailConfiguration,+    recordingConfiguration_arn,+    recordingConfiguration_destinationConfiguration,+    recordingConfiguration_state,++    -- * RecordingConfigurationSummary+    RecordingConfigurationSummary (..),+    newRecordingConfigurationSummary,+    recordingConfigurationSummary_name,+    recordingConfigurationSummary_tags,+    recordingConfigurationSummary_arn,+    recordingConfigurationSummary_destinationConfiguration,+    recordingConfigurationSummary_state,++    -- * S3DestinationConfiguration+    S3DestinationConfiguration (..),+    newS3DestinationConfiguration,+    s3DestinationConfiguration_bucketName,++    -- * Stream+    Stream (..),+    newStream,+    stream_channelArn,+    stream_health,+    stream_playbackUrl,+    stream_startTime,+    stream_state,+    stream_streamId,+    stream_viewerCount,++    -- * StreamEvent+    StreamEvent (..),+    newStreamEvent,+    streamEvent_eventTime,+    streamEvent_name,+    streamEvent_type,++    -- * StreamFilters+    StreamFilters (..),+    newStreamFilters,+    streamFilters_health,++    -- * StreamKey+    StreamKey (..),+    newStreamKey,+    streamKey_arn,+    streamKey_channelArn,+    streamKey_tags,+    streamKey_value,++    -- * StreamKeySummary+    StreamKeySummary (..),+    newStreamKeySummary,+    streamKeySummary_arn,+    streamKeySummary_channelArn,+    streamKeySummary_tags,++    -- * StreamSession+    StreamSession (..),+    newStreamSession,+    streamSession_channel,+    streamSession_endTime,+    streamSession_ingestConfiguration,+    streamSession_recordingConfiguration,+    streamSession_startTime,+    streamSession_streamId,+    streamSession_truncatedEvents,++    -- * StreamSessionSummary+    StreamSessionSummary (..),+    newStreamSessionSummary,+    streamSessionSummary_endTime,+    streamSessionSummary_hasErrorEvent,+    streamSessionSummary_startTime,+    streamSessionSummary_streamId,++    -- * StreamSummary+    StreamSummary (..),+    newStreamSummary,+    streamSummary_channelArn,+    streamSummary_health,+    streamSummary_startTime,+    streamSummary_state,+    streamSummary_streamId,+    streamSummary_viewerCount,++    -- * ThumbnailConfiguration+    ThumbnailConfiguration (..),+    newThumbnailConfiguration,+    thumbnailConfiguration_recordingMode,+    thumbnailConfiguration_targetIntervalSeconds,++    -- * VideoConfiguration+    VideoConfiguration (..),+    newVideoConfiguration,+    videoConfiguration_avcLevel,+    videoConfiguration_avcProfile,+    videoConfiguration_codec,+    videoConfiguration_encoder,+    videoConfiguration_targetBitrate,+    videoConfiguration_targetFramerate,+    videoConfiguration_videoHeight,+    videoConfiguration_videoWidth,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.IVS.Types.AudioConfiguration+import Amazonka.IVS.Types.BatchError+import Amazonka.IVS.Types.Channel+import Amazonka.IVS.Types.ChannelLatencyMode+import Amazonka.IVS.Types.ChannelSummary+import Amazonka.IVS.Types.ChannelType+import Amazonka.IVS.Types.DestinationConfiguration+import Amazonka.IVS.Types.IngestConfiguration+import Amazonka.IVS.Types.PlaybackKeyPair+import Amazonka.IVS.Types.PlaybackKeyPairSummary+import Amazonka.IVS.Types.RecordingConfiguration+import Amazonka.IVS.Types.RecordingConfigurationState+import Amazonka.IVS.Types.RecordingConfigurationSummary+import Amazonka.IVS.Types.RecordingMode+import Amazonka.IVS.Types.S3DestinationConfiguration+import Amazonka.IVS.Types.Stream+import Amazonka.IVS.Types.StreamEvent+import Amazonka.IVS.Types.StreamFilters+import Amazonka.IVS.Types.StreamHealth+import Amazonka.IVS.Types.StreamKey+import Amazonka.IVS.Types.StreamKeySummary+import Amazonka.IVS.Types.StreamSession+import Amazonka.IVS.Types.StreamSessionSummary+import Amazonka.IVS.Types.StreamState+import Amazonka.IVS.Types.StreamSummary+import Amazonka.IVS.Types.ThumbnailConfiguration+import Amazonka.IVS.Types.VideoConfiguration+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2020-07-14@ of the Amazon Interactive Video Service SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "IVS",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "ivs",+      Core.signingName = "ivs",+      Core.version = "2020-07-14",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "IVS",+      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++_AccessDeniedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccessDeniedException =+  Core._MatchServiceError+    defaultService+    "AccessDeniedException"+    Prelude.. Core.hasStatus 403++_ChannelNotBroadcasting :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ChannelNotBroadcasting =+  Core._MatchServiceError+    defaultService+    "ChannelNotBroadcasting"+    Prelude.. Core.hasStatus 404++_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"+    Prelude.. Core.hasStatus 409++_InternalServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServerException =+  Core._MatchServiceError+    defaultService+    "InternalServerException"+    Prelude.. Core.hasStatus 500++_PendingVerification :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_PendingVerification =+  Core._MatchServiceError+    defaultService+    "PendingVerification"+    Prelude.. Core.hasStatus 403++_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ResourceNotFoundException =+  Core._MatchServiceError+    defaultService+    "ResourceNotFoundException"+    Prelude.. Core.hasStatus 404++_ServiceQuotaExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServiceQuotaExceededException =+  Core._MatchServiceError+    defaultService+    "ServiceQuotaExceededException"+    Prelude.. Core.hasStatus 402++_StreamUnavailable :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_StreamUnavailable =+  Core._MatchServiceError+    defaultService+    "StreamUnavailable"+    Prelude.. Core.hasStatus 503++_ThrottlingException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ThrottlingException =+  Core._MatchServiceError+    defaultService+    "ThrottlingException"+    Prelude.. Core.hasStatus 429++_ValidationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ValidationException =+  Core._MatchServiceError+    defaultService+    "ValidationException"+    Prelude.. Core.hasStatus 400
+ gen/Amazonka/IVS/Types/AudioConfiguration.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.IVS.Types.AudioConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.AudioConfiguration 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++-- | Object specifying a stream’s audio configuration, as set up by the+-- broadcaster (usually in an encoder). This is part of the+-- IngestConfiguration object and used for monitoring stream health.+--+-- /See:/ 'newAudioConfiguration' smart constructor.+data AudioConfiguration = AudioConfiguration'+  { -- | Number of audio channels.+    channels :: Prelude.Maybe Prelude.Integer,+    -- | Codec used for the audio encoding.+    codec :: Prelude.Maybe Prelude.Text,+    -- | Number of audio samples recorded per second.+    sampleRate :: Prelude.Maybe Prelude.Integer,+    -- | The expected ingest bitrate (bits per second). This is configured in the+    -- encoder.+    targetBitrate :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AudioConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channels', 'audioConfiguration_channels' - Number of audio channels.+--+-- 'codec', 'audioConfiguration_codec' - Codec used for the audio encoding.+--+-- 'sampleRate', 'audioConfiguration_sampleRate' - Number of audio samples recorded per second.+--+-- 'targetBitrate', 'audioConfiguration_targetBitrate' - The expected ingest bitrate (bits per second). This is configured in the+-- encoder.+newAudioConfiguration ::+  AudioConfiguration+newAudioConfiguration =+  AudioConfiguration'+    { channels = Prelude.Nothing,+      codec = Prelude.Nothing,+      sampleRate = Prelude.Nothing,+      targetBitrate = Prelude.Nothing+    }++-- | Number of audio channels.+audioConfiguration_channels :: Lens.Lens' AudioConfiguration (Prelude.Maybe Prelude.Integer)+audioConfiguration_channels = Lens.lens (\AudioConfiguration' {channels} -> channels) (\s@AudioConfiguration' {} a -> s {channels = a} :: AudioConfiguration)++-- | Codec used for the audio encoding.+audioConfiguration_codec :: Lens.Lens' AudioConfiguration (Prelude.Maybe Prelude.Text)+audioConfiguration_codec = Lens.lens (\AudioConfiguration' {codec} -> codec) (\s@AudioConfiguration' {} a -> s {codec = a} :: AudioConfiguration)++-- | Number of audio samples recorded per second.+audioConfiguration_sampleRate :: Lens.Lens' AudioConfiguration (Prelude.Maybe Prelude.Integer)+audioConfiguration_sampleRate = Lens.lens (\AudioConfiguration' {sampleRate} -> sampleRate) (\s@AudioConfiguration' {} a -> s {sampleRate = a} :: AudioConfiguration)++-- | The expected ingest bitrate (bits per second). This is configured in the+-- encoder.+audioConfiguration_targetBitrate :: Lens.Lens' AudioConfiguration (Prelude.Maybe Prelude.Integer)+audioConfiguration_targetBitrate = Lens.lens (\AudioConfiguration' {targetBitrate} -> targetBitrate) (\s@AudioConfiguration' {} a -> s {targetBitrate = a} :: AudioConfiguration)++instance Data.FromJSON AudioConfiguration where+  parseJSON =+    Data.withObject+      "AudioConfiguration"+      ( \x ->+          AudioConfiguration'+            Prelude.<$> (x Data..:? "channels")+            Prelude.<*> (x Data..:? "codec")+            Prelude.<*> (x Data..:? "sampleRate")+            Prelude.<*> (x Data..:? "targetBitrate")+      )++instance Prelude.Hashable AudioConfiguration where+  hashWithSalt _salt AudioConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` channels+      `Prelude.hashWithSalt` codec+      `Prelude.hashWithSalt` sampleRate+      `Prelude.hashWithSalt` targetBitrate++instance Prelude.NFData AudioConfiguration where+  rnf AudioConfiguration' {..} =+    Prelude.rnf channels+      `Prelude.seq` Prelude.rnf codec+      `Prelude.seq` Prelude.rnf sampleRate+      `Prelude.seq` Prelude.rnf targetBitrate
+ gen/Amazonka/IVS/Types/BatchError.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.BatchError+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.BatchError 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++-- | Error related to a specific channel, specified by its ARN.+--+-- /See:/ 'newBatchError' smart constructor.+data BatchError = BatchError'+  { -- | Channel ARN.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Error code.+    code :: Prelude.Maybe Prelude.Text,+    -- | Error message, determined by the application.+    message :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchError' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'batchError_arn' - Channel ARN.+--+-- 'code', 'batchError_code' - Error code.+--+-- 'message', 'batchError_message' - Error message, determined by the application.+newBatchError ::+  BatchError+newBatchError =+  BatchError'+    { arn = Prelude.Nothing,+      code = Prelude.Nothing,+      message = Prelude.Nothing+    }++-- | Channel ARN.+batchError_arn :: Lens.Lens' BatchError (Prelude.Maybe Prelude.Text)+batchError_arn = Lens.lens (\BatchError' {arn} -> arn) (\s@BatchError' {} a -> s {arn = a} :: BatchError)++-- | Error code.+batchError_code :: Lens.Lens' BatchError (Prelude.Maybe Prelude.Text)+batchError_code = Lens.lens (\BatchError' {code} -> code) (\s@BatchError' {} a -> s {code = a} :: BatchError)++-- | Error message, determined by the application.+batchError_message :: Lens.Lens' BatchError (Prelude.Maybe Prelude.Text)+batchError_message = Lens.lens (\BatchError' {message} -> message) (\s@BatchError' {} a -> s {message = a} :: BatchError)++instance Data.FromJSON BatchError where+  parseJSON =+    Data.withObject+      "BatchError"+      ( \x ->+          BatchError'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "code")+            Prelude.<*> (x Data..:? "message")+      )++instance Prelude.Hashable BatchError where+  hashWithSalt _salt BatchError' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` message++instance Prelude.NFData BatchError where+  rnf BatchError' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf code+      `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/IVS/Types/Channel.hs view
@@ -0,0 +1,251 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.Channel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.Channel where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types.ChannelLatencyMode+import Amazonka.IVS.Types.ChannelType+import qualified Amazonka.Prelude as Prelude++-- | Object specifying a channel.+--+-- /See:/ 'newChannel' smart constructor.+data Channel = Channel'+  { -- | Channel ARN.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Whether the channel is private (enabled for playback authorization).+    -- Default: @false@.+    authorized :: Prelude.Maybe Prelude.Bool,+    -- | Channel ingest endpoint, part of the definition of an ingest server,+    -- used when you set up streaming software.+    ingestEndpoint :: Prelude.Maybe Prelude.Text,+    -- | Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+    -- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+    -- Default: @LOW@. (Note: In the Amazon IVS console, @LOW@ and @NORMAL@+    -- correspond to Ultra-low and Standard, respectively.)+    latencyMode :: Prelude.Maybe ChannelLatencyMode,+    -- | Channel name.+    name :: Prelude.Maybe Prelude.Text,+    -- | Channel playback URL.+    playbackUrl :: Prelude.Maybe Prelude.Text,+    -- | Recording-configuration ARN. A value other than an empty string+    -- indicates that recording is enabled. Default: \"\" (empty string,+    -- recording is disabled).+    recordingConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Channel type, which determines the allowable resolution and bitrate. /If+    -- you exceed the allowable resolution or bitrate, the stream probably will+    -- disconnect immediately./ Default: @STANDARD@. Valid values:+    --+    -- -   @STANDARD@: Video is transcoded: multiple qualities are generated+    --     from the original input, to automatically give viewers the best+    --     experience for their devices and network conditions. Transcoding+    --     allows higher playback quality across a range of download speeds.+    --     Resolution can be up to 1080p and bitrate can be up to 8.5 Mbps.+    --     Audio is transcoded only for renditions 360p and below; above that,+    --     audio is passed through. This is the default.+    --+    -- -   @BASIC@: Video is transmuxed: Amazon IVS delivers the original input+    --     to viewers. The viewer’s video-quality choice is limited to the+    --     original input. Resolution can be up to 1080p and bitrate can be up+    --     to 1.5 Mbps for 480p and up to 3.5 Mbps for resolutions between 480p+    --     and 1080p.+    type' :: Prelude.Maybe ChannelType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Channel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'channel_arn' - Channel ARN.+--+-- 'authorized', 'channel_authorized' - Whether the channel is private (enabled for playback authorization).+-- Default: @false@.+--+-- 'ingestEndpoint', 'channel_ingestEndpoint' - Channel ingest endpoint, part of the definition of an ingest server,+-- used when you set up streaming software.+--+-- 'latencyMode', 'channel_latencyMode' - Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+-- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+-- Default: @LOW@. (Note: In the Amazon IVS console, @LOW@ and @NORMAL@+-- correspond to Ultra-low and Standard, respectively.)+--+-- 'name', 'channel_name' - Channel name.+--+-- 'playbackUrl', 'channel_playbackUrl' - Channel playback URL.+--+-- 'recordingConfigurationArn', 'channel_recordingConfigurationArn' - Recording-configuration ARN. A value other than an empty string+-- indicates that recording is enabled. Default: \"\" (empty string,+-- recording is disabled).+--+-- 'tags', 'channel_tags' - Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+--+-- 'type'', 'channel_type' - Channel type, which determines the allowable resolution and bitrate. /If+-- you exceed the allowable resolution or bitrate, the stream probably will+-- disconnect immediately./ Default: @STANDARD@. Valid values:+--+-- -   @STANDARD@: Video is transcoded: multiple qualities are generated+--     from the original input, to automatically give viewers the best+--     experience for their devices and network conditions. Transcoding+--     allows higher playback quality across a range of download speeds.+--     Resolution can be up to 1080p and bitrate can be up to 8.5 Mbps.+--     Audio is transcoded only for renditions 360p and below; above that,+--     audio is passed through. This is the default.+--+-- -   @BASIC@: Video is transmuxed: Amazon IVS delivers the original input+--     to viewers. The viewer’s video-quality choice is limited to the+--     original input. Resolution can be up to 1080p and bitrate can be up+--     to 1.5 Mbps for 480p and up to 3.5 Mbps for resolutions between 480p+--     and 1080p.+newChannel ::+  Channel+newChannel =+  Channel'+    { arn = Prelude.Nothing,+      authorized = Prelude.Nothing,+      ingestEndpoint = Prelude.Nothing,+      latencyMode = Prelude.Nothing,+      name = Prelude.Nothing,+      playbackUrl = Prelude.Nothing,+      recordingConfigurationArn = Prelude.Nothing,+      tags = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | Channel ARN.+channel_arn :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)+channel_arn = Lens.lens (\Channel' {arn} -> arn) (\s@Channel' {} a -> s {arn = a} :: Channel)++-- | Whether the channel is private (enabled for playback authorization).+-- Default: @false@.+channel_authorized :: Lens.Lens' Channel (Prelude.Maybe Prelude.Bool)+channel_authorized = Lens.lens (\Channel' {authorized} -> authorized) (\s@Channel' {} a -> s {authorized = a} :: Channel)++-- | Channel ingest endpoint, part of the definition of an ingest server,+-- used when you set up streaming software.+channel_ingestEndpoint :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)+channel_ingestEndpoint = Lens.lens (\Channel' {ingestEndpoint} -> ingestEndpoint) (\s@Channel' {} a -> s {ingestEndpoint = a} :: Channel)++-- | Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+-- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+-- Default: @LOW@. (Note: In the Amazon IVS console, @LOW@ and @NORMAL@+-- correspond to Ultra-low and Standard, respectively.)+channel_latencyMode :: Lens.Lens' Channel (Prelude.Maybe ChannelLatencyMode)+channel_latencyMode = Lens.lens (\Channel' {latencyMode} -> latencyMode) (\s@Channel' {} a -> s {latencyMode = a} :: Channel)++-- | Channel name.+channel_name :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)+channel_name = Lens.lens (\Channel' {name} -> name) (\s@Channel' {} a -> s {name = a} :: Channel)++-- | Channel playback URL.+channel_playbackUrl :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)+channel_playbackUrl = Lens.lens (\Channel' {playbackUrl} -> playbackUrl) (\s@Channel' {} a -> s {playbackUrl = a} :: Channel)++-- | Recording-configuration ARN. A value other than an empty string+-- indicates that recording is enabled. Default: \"\" (empty string,+-- recording is disabled).+channel_recordingConfigurationArn :: Lens.Lens' Channel (Prelude.Maybe Prelude.Text)+channel_recordingConfigurationArn = Lens.lens (\Channel' {recordingConfigurationArn} -> recordingConfigurationArn) (\s@Channel' {} a -> s {recordingConfigurationArn = a} :: Channel)++-- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+channel_tags :: Lens.Lens' Channel (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+channel_tags = Lens.lens (\Channel' {tags} -> tags) (\s@Channel' {} a -> s {tags = a} :: Channel) Prelude.. Lens.mapping Lens.coerced++-- | Channel type, which determines the allowable resolution and bitrate. /If+-- you exceed the allowable resolution or bitrate, the stream probably will+-- disconnect immediately./ Default: @STANDARD@. Valid values:+--+-- -   @STANDARD@: Video is transcoded: multiple qualities are generated+--     from the original input, to automatically give viewers the best+--     experience for their devices and network conditions. Transcoding+--     allows higher playback quality across a range of download speeds.+--     Resolution can be up to 1080p and bitrate can be up to 8.5 Mbps.+--     Audio is transcoded only for renditions 360p and below; above that,+--     audio is passed through. This is the default.+--+-- -   @BASIC@: Video is transmuxed: Amazon IVS delivers the original input+--     to viewers. The viewer’s video-quality choice is limited to the+--     original input. Resolution can be up to 1080p and bitrate can be up+--     to 1.5 Mbps for 480p and up to 3.5 Mbps for resolutions between 480p+--     and 1080p.+channel_type :: Lens.Lens' Channel (Prelude.Maybe ChannelType)+channel_type = Lens.lens (\Channel' {type'} -> type') (\s@Channel' {} a -> s {type' = a} :: Channel)++instance Data.FromJSON Channel where+  parseJSON =+    Data.withObject+      "Channel"+      ( \x ->+          Channel'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "authorized")+            Prelude.<*> (x Data..:? "ingestEndpoint")+            Prelude.<*> (x Data..:? "latencyMode")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "playbackUrl")+            Prelude.<*> (x Data..:? "recordingConfigurationArn")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "type")+      )++instance Prelude.Hashable Channel where+  hashWithSalt _salt Channel' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` authorized+      `Prelude.hashWithSalt` ingestEndpoint+      `Prelude.hashWithSalt` latencyMode+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` playbackUrl+      `Prelude.hashWithSalt` recordingConfigurationArn+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` type'++instance Prelude.NFData Channel where+  rnf Channel' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf authorized+      `Prelude.seq` Prelude.rnf ingestEndpoint+      `Prelude.seq` Prelude.rnf latencyMode+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf playbackUrl+      `Prelude.seq` Prelude.rnf recordingConfigurationArn+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/IVS/Types/ChannelLatencyMode.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.IVS.Types.ChannelLatencyMode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.ChannelLatencyMode+  ( ChannelLatencyMode+      ( ..,+        ChannelLatencyMode_LOW,+        ChannelLatencyMode_NORMAL+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ChannelLatencyMode = ChannelLatencyMode'+  { fromChannelLatencyMode ::+      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 ChannelLatencyMode_LOW :: ChannelLatencyMode+pattern ChannelLatencyMode_LOW = ChannelLatencyMode' "LOW"++pattern ChannelLatencyMode_NORMAL :: ChannelLatencyMode+pattern ChannelLatencyMode_NORMAL = ChannelLatencyMode' "NORMAL"++{-# COMPLETE+  ChannelLatencyMode_LOW,+  ChannelLatencyMode_NORMAL,+  ChannelLatencyMode'+  #-}
+ gen/Amazonka/IVS/Types/ChannelSummary.hs view
@@ -0,0 +1,163 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.ChannelSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.ChannelSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types.ChannelLatencyMode+import qualified Amazonka.Prelude as Prelude++-- | Summary information about a channel.+--+-- /See:/ 'newChannelSummary' smart constructor.+data ChannelSummary = ChannelSummary'+  { -- | Channel ARN.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Whether the channel is private (enabled for playback authorization).+    -- Default: @false@.+    authorized :: Prelude.Maybe Prelude.Bool,+    -- | Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+    -- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+    -- Default: @LOW@. (Note: In the Amazon IVS console, @LOW@ and @NORMAL@+    -- correspond to Ultra-low and Standard, respectively.)+    latencyMode :: Prelude.Maybe ChannelLatencyMode,+    -- | Channel name.+    name :: Prelude.Maybe Prelude.Text,+    -- | Recording-configuration ARN. A value other than an empty string+    -- indicates that recording is enabled. Default: \"\" (empty string,+    -- recording is disabled).+    recordingConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ChannelSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'channelSummary_arn' - Channel ARN.+--+-- 'authorized', 'channelSummary_authorized' - Whether the channel is private (enabled for playback authorization).+-- Default: @false@.+--+-- 'latencyMode', 'channelSummary_latencyMode' - Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+-- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+-- Default: @LOW@. (Note: In the Amazon IVS console, @LOW@ and @NORMAL@+-- correspond to Ultra-low and Standard, respectively.)+--+-- 'name', 'channelSummary_name' - Channel name.+--+-- 'recordingConfigurationArn', 'channelSummary_recordingConfigurationArn' - Recording-configuration ARN. A value other than an empty string+-- indicates that recording is enabled. Default: \"\" (empty string,+-- recording is disabled).+--+-- 'tags', 'channelSummary_tags' - Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+newChannelSummary ::+  ChannelSummary+newChannelSummary =+  ChannelSummary'+    { arn = Prelude.Nothing,+      authorized = Prelude.Nothing,+      latencyMode = Prelude.Nothing,+      name = Prelude.Nothing,+      recordingConfigurationArn = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | Channel ARN.+channelSummary_arn :: Lens.Lens' ChannelSummary (Prelude.Maybe Prelude.Text)+channelSummary_arn = Lens.lens (\ChannelSummary' {arn} -> arn) (\s@ChannelSummary' {} a -> s {arn = a} :: ChannelSummary)++-- | Whether the channel is private (enabled for playback authorization).+-- Default: @false@.+channelSummary_authorized :: Lens.Lens' ChannelSummary (Prelude.Maybe Prelude.Bool)+channelSummary_authorized = Lens.lens (\ChannelSummary' {authorized} -> authorized) (\s@ChannelSummary' {} a -> s {authorized = a} :: ChannelSummary)++-- | Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+-- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+-- Default: @LOW@. (Note: In the Amazon IVS console, @LOW@ and @NORMAL@+-- correspond to Ultra-low and Standard, respectively.)+channelSummary_latencyMode :: Lens.Lens' ChannelSummary (Prelude.Maybe ChannelLatencyMode)+channelSummary_latencyMode = Lens.lens (\ChannelSummary' {latencyMode} -> latencyMode) (\s@ChannelSummary' {} a -> s {latencyMode = a} :: ChannelSummary)++-- | Channel name.+channelSummary_name :: Lens.Lens' ChannelSummary (Prelude.Maybe Prelude.Text)+channelSummary_name = Lens.lens (\ChannelSummary' {name} -> name) (\s@ChannelSummary' {} a -> s {name = a} :: ChannelSummary)++-- | Recording-configuration ARN. A value other than an empty string+-- indicates that recording is enabled. Default: \"\" (empty string,+-- recording is disabled).+channelSummary_recordingConfigurationArn :: Lens.Lens' ChannelSummary (Prelude.Maybe Prelude.Text)+channelSummary_recordingConfigurationArn = Lens.lens (\ChannelSummary' {recordingConfigurationArn} -> recordingConfigurationArn) (\s@ChannelSummary' {} a -> s {recordingConfigurationArn = a} :: ChannelSummary)++-- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+channelSummary_tags :: Lens.Lens' ChannelSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+channelSummary_tags = Lens.lens (\ChannelSummary' {tags} -> tags) (\s@ChannelSummary' {} a -> s {tags = a} :: ChannelSummary) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON ChannelSummary where+  parseJSON =+    Data.withObject+      "ChannelSummary"+      ( \x ->+          ChannelSummary'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "authorized")+            Prelude.<*> (x Data..:? "latencyMode")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "recordingConfigurationArn")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable ChannelSummary where+  hashWithSalt _salt ChannelSummary' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` authorized+      `Prelude.hashWithSalt` latencyMode+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` recordingConfigurationArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData ChannelSummary where+  rnf ChannelSummary' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf authorized+      `Prelude.seq` Prelude.rnf latencyMode+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf recordingConfigurationArn+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/IVS/Types/ChannelType.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.IVS.Types.ChannelType+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.ChannelType+  ( ChannelType+      ( ..,+        ChannelType_BASIC,+        ChannelType_STANDARD+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ChannelType = ChannelType'+  { fromChannelType ::+      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 ChannelType_BASIC :: ChannelType+pattern ChannelType_BASIC = ChannelType' "BASIC"++pattern ChannelType_STANDARD :: ChannelType+pattern ChannelType_STANDARD = ChannelType' "STANDARD"++{-# COMPLETE+  ChannelType_BASIC,+  ChannelType_STANDARD,+  ChannelType'+  #-}
+ gen/Amazonka/IVS/Types/DestinationConfiguration.hs view
@@ -0,0 +1,77 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.DestinationConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.DestinationConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types.S3DestinationConfiguration+import qualified Amazonka.Prelude as Prelude++-- | A complex type that describes a location where recorded videos will be+-- stored. Each member represents a type of destination configuration. For+-- recording, you define one and only one type of destination+-- configuration.+--+-- /See:/ 'newDestinationConfiguration' smart constructor.+data DestinationConfiguration = DestinationConfiguration'+  { -- | An S3 destination configuration where recorded videos will be stored.+    s3 :: Prelude.Maybe S3DestinationConfiguration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DestinationConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 's3', 'destinationConfiguration_s3' - An S3 destination configuration where recorded videos will be stored.+newDestinationConfiguration ::+  DestinationConfiguration+newDestinationConfiguration =+  DestinationConfiguration' {s3 = Prelude.Nothing}++-- | An S3 destination configuration where recorded videos will be stored.+destinationConfiguration_s3 :: Lens.Lens' DestinationConfiguration (Prelude.Maybe S3DestinationConfiguration)+destinationConfiguration_s3 = Lens.lens (\DestinationConfiguration' {s3} -> s3) (\s@DestinationConfiguration' {} a -> s {s3 = a} :: DestinationConfiguration)++instance Data.FromJSON DestinationConfiguration where+  parseJSON =+    Data.withObject+      "DestinationConfiguration"+      ( \x ->+          DestinationConfiguration'+            Prelude.<$> (x Data..:? "s3")+      )++instance Prelude.Hashable DestinationConfiguration where+  hashWithSalt _salt DestinationConfiguration' {..} =+    _salt `Prelude.hashWithSalt` s3++instance Prelude.NFData DestinationConfiguration where+  rnf DestinationConfiguration' {..} = Prelude.rnf s3++instance Data.ToJSON DestinationConfiguration where+  toJSON DestinationConfiguration' {..} =+    Data.object+      (Prelude.catMaybes [("s3" Data..=) Prelude.<$> s3])
+ gen/Amazonka/IVS/Types/IngestConfiguration.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.IngestConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.IngestConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types.AudioConfiguration+import Amazonka.IVS.Types.VideoConfiguration+import qualified Amazonka.Prelude as Prelude++-- | Object specifying the ingest configuration set up by the broadcaster,+-- usually in an encoder.+--+-- /See:/ 'newIngestConfiguration' smart constructor.+data IngestConfiguration = IngestConfiguration'+  { -- | Encoder settings for audio.+    audio :: Prelude.Maybe AudioConfiguration,+    -- | Encoder settings for video.+    video :: Prelude.Maybe VideoConfiguration+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IngestConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'audio', 'ingestConfiguration_audio' - Encoder settings for audio.+--+-- 'video', 'ingestConfiguration_video' - Encoder settings for video.+newIngestConfiguration ::+  IngestConfiguration+newIngestConfiguration =+  IngestConfiguration'+    { audio = Prelude.Nothing,+      video = Prelude.Nothing+    }++-- | Encoder settings for audio.+ingestConfiguration_audio :: Lens.Lens' IngestConfiguration (Prelude.Maybe AudioConfiguration)+ingestConfiguration_audio = Lens.lens (\IngestConfiguration' {audio} -> audio) (\s@IngestConfiguration' {} a -> s {audio = a} :: IngestConfiguration)++-- | Encoder settings for video.+ingestConfiguration_video :: Lens.Lens' IngestConfiguration (Prelude.Maybe VideoConfiguration)+ingestConfiguration_video = Lens.lens (\IngestConfiguration' {video} -> video) (\s@IngestConfiguration' {} a -> s {video = a} :: IngestConfiguration)++instance Data.FromJSON IngestConfiguration where+  parseJSON =+    Data.withObject+      "IngestConfiguration"+      ( \x ->+          IngestConfiguration'+            Prelude.<$> (x Data..:? "audio")+            Prelude.<*> (x Data..:? "video")+      )++instance Prelude.Hashable IngestConfiguration where+  hashWithSalt _salt IngestConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` audio+      `Prelude.hashWithSalt` video++instance Prelude.NFData IngestConfiguration where+  rnf IngestConfiguration' {..} =+    Prelude.rnf audio `Prelude.seq` Prelude.rnf video
+ gen/Amazonka/IVS/Types/PlaybackKeyPair.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.IVS.Types.PlaybackKeyPair+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.PlaybackKeyPair where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A key pair used to sign and validate a playback authorization token.+--+-- /See:/ 'newPlaybackKeyPair' smart constructor.+data PlaybackKeyPair = PlaybackKeyPair'+  { -- | Key-pair ARN.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Key-pair identifier.+    fingerprint :: Prelude.Maybe Prelude.Text,+    -- | Playback-key-pair name. The value does not need to be unique.+    name :: Prelude.Maybe Prelude.Text,+    -- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PlaybackKeyPair' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'playbackKeyPair_arn' - Key-pair ARN.+--+-- 'fingerprint', 'playbackKeyPair_fingerprint' - Key-pair identifier.+--+-- 'name', 'playbackKeyPair_name' - Playback-key-pair name. The value does not need to be unique.+--+-- 'tags', 'playbackKeyPair_tags' - Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+newPlaybackKeyPair ::+  PlaybackKeyPair+newPlaybackKeyPair =+  PlaybackKeyPair'+    { arn = Prelude.Nothing,+      fingerprint = Prelude.Nothing,+      name = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | Key-pair ARN.+playbackKeyPair_arn :: Lens.Lens' PlaybackKeyPair (Prelude.Maybe Prelude.Text)+playbackKeyPair_arn = Lens.lens (\PlaybackKeyPair' {arn} -> arn) (\s@PlaybackKeyPair' {} a -> s {arn = a} :: PlaybackKeyPair)++-- | Key-pair identifier.+playbackKeyPair_fingerprint :: Lens.Lens' PlaybackKeyPair (Prelude.Maybe Prelude.Text)+playbackKeyPair_fingerprint = Lens.lens (\PlaybackKeyPair' {fingerprint} -> fingerprint) (\s@PlaybackKeyPair' {} a -> s {fingerprint = a} :: PlaybackKeyPair)++-- | Playback-key-pair name. The value does not need to be unique.+playbackKeyPair_name :: Lens.Lens' PlaybackKeyPair (Prelude.Maybe Prelude.Text)+playbackKeyPair_name = Lens.lens (\PlaybackKeyPair' {name} -> name) (\s@PlaybackKeyPair' {} a -> s {name = a} :: PlaybackKeyPair)++-- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+playbackKeyPair_tags :: Lens.Lens' PlaybackKeyPair (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+playbackKeyPair_tags = Lens.lens (\PlaybackKeyPair' {tags} -> tags) (\s@PlaybackKeyPair' {} a -> s {tags = a} :: PlaybackKeyPair) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON PlaybackKeyPair where+  parseJSON =+    Data.withObject+      "PlaybackKeyPair"+      ( \x ->+          PlaybackKeyPair'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "fingerprint")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable PlaybackKeyPair where+  hashWithSalt _salt PlaybackKeyPair' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` fingerprint+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` tags++instance Prelude.NFData PlaybackKeyPair where+  rnf PlaybackKeyPair' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf fingerprint+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/IVS/Types/PlaybackKeyPairSummary.hs view
@@ -0,0 +1,108 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.PlaybackKeyPairSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.PlaybackKeyPairSummary 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++-- | Summary information about a playback key pair.+--+-- /See:/ 'newPlaybackKeyPairSummary' smart constructor.+data PlaybackKeyPairSummary = PlaybackKeyPairSummary'+  { -- | Key-pair ARN.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Playback-key-pair name. The value does not need to be unique.+    name :: Prelude.Maybe Prelude.Text,+    -- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PlaybackKeyPairSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'playbackKeyPairSummary_arn' - Key-pair ARN.+--+-- 'name', 'playbackKeyPairSummary_name' - Playback-key-pair name. The value does not need to be unique.+--+-- 'tags', 'playbackKeyPairSummary_tags' - Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+newPlaybackKeyPairSummary ::+  PlaybackKeyPairSummary+newPlaybackKeyPairSummary =+  PlaybackKeyPairSummary'+    { arn = Prelude.Nothing,+      name = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | Key-pair ARN.+playbackKeyPairSummary_arn :: Lens.Lens' PlaybackKeyPairSummary (Prelude.Maybe Prelude.Text)+playbackKeyPairSummary_arn = Lens.lens (\PlaybackKeyPairSummary' {arn} -> arn) (\s@PlaybackKeyPairSummary' {} a -> s {arn = a} :: PlaybackKeyPairSummary)++-- | Playback-key-pair name. The value does not need to be unique.+playbackKeyPairSummary_name :: Lens.Lens' PlaybackKeyPairSummary (Prelude.Maybe Prelude.Text)+playbackKeyPairSummary_name = Lens.lens (\PlaybackKeyPairSummary' {name} -> name) (\s@PlaybackKeyPairSummary' {} a -> s {name = a} :: PlaybackKeyPairSummary)++-- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+playbackKeyPairSummary_tags :: Lens.Lens' PlaybackKeyPairSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+playbackKeyPairSummary_tags = Lens.lens (\PlaybackKeyPairSummary' {tags} -> tags) (\s@PlaybackKeyPairSummary' {} a -> s {tags = a} :: PlaybackKeyPairSummary) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON PlaybackKeyPairSummary where+  parseJSON =+    Data.withObject+      "PlaybackKeyPairSummary"+      ( \x ->+          PlaybackKeyPairSummary'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable PlaybackKeyPairSummary where+  hashWithSalt _salt PlaybackKeyPairSummary' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` tags++instance Prelude.NFData PlaybackKeyPairSummary where+  rnf PlaybackKeyPairSummary' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/IVS/Types/RecordingConfiguration.hs view
@@ -0,0 +1,190 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.RecordingConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.RecordingConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types.DestinationConfiguration+import Amazonka.IVS.Types.RecordingConfigurationState+import Amazonka.IVS.Types.ThumbnailConfiguration+import qualified Amazonka.Prelude as Prelude++-- | An object representing a configuration to record a channel stream.+--+-- /See:/ 'newRecordingConfiguration' smart constructor.+data RecordingConfiguration = RecordingConfiguration'+  { -- | Recording-configuration name. The value does not need to be unique.+    name :: Prelude.Maybe Prelude.Text,+    -- | If a broadcast disconnects and then reconnects within the specified+    -- interval, the multiple streams will be considered a single broadcast and+    -- merged together. Default: 0.+    recordingReconnectWindowSeconds :: Prelude.Maybe Prelude.Natural,+    -- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | A complex type that allows you to enable\/disable the recording of+    -- thumbnails for a live session and modify the interval at which+    -- thumbnails are generated for the live session.+    thumbnailConfiguration :: Prelude.Maybe ThumbnailConfiguration,+    -- | Recording-configuration ARN.+    arn :: Prelude.Text,+    -- | A complex type that contains information about where recorded video will+    -- be stored.+    destinationConfiguration :: DestinationConfiguration,+    -- | Indicates the current state of the recording configuration. When the+    -- state is @ACTIVE@, the configuration is ready for recording a channel+    -- stream.+    state :: RecordingConfigurationState+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecordingConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'recordingConfiguration_name' - Recording-configuration name. The value does not need to be unique.+--+-- 'recordingReconnectWindowSeconds', 'recordingConfiguration_recordingReconnectWindowSeconds' - If a broadcast disconnects and then reconnects within the specified+-- interval, the multiple streams will be considered a single broadcast and+-- merged together. Default: 0.+--+-- 'tags', 'recordingConfiguration_tags' - Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+--+-- 'thumbnailConfiguration', 'recordingConfiguration_thumbnailConfiguration' - A complex type that allows you to enable\/disable the recording of+-- thumbnails for a live session and modify the interval at which+-- thumbnails are generated for the live session.+--+-- 'arn', 'recordingConfiguration_arn' - Recording-configuration ARN.+--+-- 'destinationConfiguration', 'recordingConfiguration_destinationConfiguration' - A complex type that contains information about where recorded video will+-- be stored.+--+-- 'state', 'recordingConfiguration_state' - Indicates the current state of the recording configuration. When the+-- state is @ACTIVE@, the configuration is ready for recording a channel+-- stream.+newRecordingConfiguration ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'destinationConfiguration'+  DestinationConfiguration ->+  -- | 'state'+  RecordingConfigurationState ->+  RecordingConfiguration+newRecordingConfiguration+  pArn_+  pDestinationConfiguration_+  pState_ =+    RecordingConfiguration'+      { name = Prelude.Nothing,+        recordingReconnectWindowSeconds = Prelude.Nothing,+        tags = Prelude.Nothing,+        thumbnailConfiguration = Prelude.Nothing,+        arn = pArn_,+        destinationConfiguration =+          pDestinationConfiguration_,+        state = pState_+      }++-- | Recording-configuration name. The value does not need to be unique.+recordingConfiguration_name :: Lens.Lens' RecordingConfiguration (Prelude.Maybe Prelude.Text)+recordingConfiguration_name = Lens.lens (\RecordingConfiguration' {name} -> name) (\s@RecordingConfiguration' {} a -> s {name = a} :: RecordingConfiguration)++-- | If a broadcast disconnects and then reconnects within the specified+-- interval, the multiple streams will be considered a single broadcast and+-- merged together. Default: 0.+recordingConfiguration_recordingReconnectWindowSeconds :: Lens.Lens' RecordingConfiguration (Prelude.Maybe Prelude.Natural)+recordingConfiguration_recordingReconnectWindowSeconds = Lens.lens (\RecordingConfiguration' {recordingReconnectWindowSeconds} -> recordingReconnectWindowSeconds) (\s@RecordingConfiguration' {} a -> s {recordingReconnectWindowSeconds = a} :: RecordingConfiguration)++-- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+recordingConfiguration_tags :: Lens.Lens' RecordingConfiguration (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+recordingConfiguration_tags = Lens.lens (\RecordingConfiguration' {tags} -> tags) (\s@RecordingConfiguration' {} a -> s {tags = a} :: RecordingConfiguration) Prelude.. Lens.mapping Lens.coerced++-- | A complex type that allows you to enable\/disable the recording of+-- thumbnails for a live session and modify the interval at which+-- thumbnails are generated for the live session.+recordingConfiguration_thumbnailConfiguration :: Lens.Lens' RecordingConfiguration (Prelude.Maybe ThumbnailConfiguration)+recordingConfiguration_thumbnailConfiguration = Lens.lens (\RecordingConfiguration' {thumbnailConfiguration} -> thumbnailConfiguration) (\s@RecordingConfiguration' {} a -> s {thumbnailConfiguration = a} :: RecordingConfiguration)++-- | Recording-configuration ARN.+recordingConfiguration_arn :: Lens.Lens' RecordingConfiguration Prelude.Text+recordingConfiguration_arn = Lens.lens (\RecordingConfiguration' {arn} -> arn) (\s@RecordingConfiguration' {} a -> s {arn = a} :: RecordingConfiguration)++-- | A complex type that contains information about where recorded video will+-- be stored.+recordingConfiguration_destinationConfiguration :: Lens.Lens' RecordingConfiguration DestinationConfiguration+recordingConfiguration_destinationConfiguration = Lens.lens (\RecordingConfiguration' {destinationConfiguration} -> destinationConfiguration) (\s@RecordingConfiguration' {} a -> s {destinationConfiguration = a} :: RecordingConfiguration)++-- | Indicates the current state of the recording configuration. When the+-- state is @ACTIVE@, the configuration is ready for recording a channel+-- stream.+recordingConfiguration_state :: Lens.Lens' RecordingConfiguration RecordingConfigurationState+recordingConfiguration_state = Lens.lens (\RecordingConfiguration' {state} -> state) (\s@RecordingConfiguration' {} a -> s {state = a} :: RecordingConfiguration)++instance Data.FromJSON RecordingConfiguration where+  parseJSON =+    Data.withObject+      "RecordingConfiguration"+      ( \x ->+          RecordingConfiguration'+            Prelude.<$> (x Data..:? "name")+            Prelude.<*> (x Data..:? "recordingReconnectWindowSeconds")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "thumbnailConfiguration")+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "destinationConfiguration")+            Prelude.<*> (x Data..: "state")+      )++instance Prelude.Hashable RecordingConfiguration where+  hashWithSalt _salt RecordingConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` recordingReconnectWindowSeconds+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` thumbnailConfiguration+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` destinationConfiguration+      `Prelude.hashWithSalt` state++instance Prelude.NFData RecordingConfiguration where+  rnf RecordingConfiguration' {..} =+    Prelude.rnf name+      `Prelude.seq` Prelude.rnf recordingReconnectWindowSeconds+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf thumbnailConfiguration+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf destinationConfiguration+      `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/IVS/Types/RecordingConfigurationState.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.IVS.Types.RecordingConfigurationState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.RecordingConfigurationState+  ( RecordingConfigurationState+      ( ..,+        RecordingConfigurationState_ACTIVE,+        RecordingConfigurationState_CREATE_FAILED,+        RecordingConfigurationState_CREATING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RecordingConfigurationState = RecordingConfigurationState'+  { fromRecordingConfigurationState ::+      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 RecordingConfigurationState_ACTIVE :: RecordingConfigurationState+pattern RecordingConfigurationState_ACTIVE = RecordingConfigurationState' "ACTIVE"++pattern RecordingConfigurationState_CREATE_FAILED :: RecordingConfigurationState+pattern RecordingConfigurationState_CREATE_FAILED = RecordingConfigurationState' "CREATE_FAILED"++pattern RecordingConfigurationState_CREATING :: RecordingConfigurationState+pattern RecordingConfigurationState_CREATING = RecordingConfigurationState' "CREATING"++{-# COMPLETE+  RecordingConfigurationState_ACTIVE,+  RecordingConfigurationState_CREATE_FAILED,+  RecordingConfigurationState_CREATING,+  RecordingConfigurationState'+  #-}
+ gen/Amazonka/IVS/Types/RecordingConfigurationSummary.hs view
@@ -0,0 +1,157 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.RecordingConfigurationSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.RecordingConfigurationSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types.DestinationConfiguration+import Amazonka.IVS.Types.RecordingConfigurationState+import qualified Amazonka.Prelude as Prelude++-- | Summary information about a RecordingConfiguration.+--+-- /See:/ 'newRecordingConfigurationSummary' smart constructor.+data RecordingConfigurationSummary = RecordingConfigurationSummary'+  { -- | Recording-configuration name. The value does not need to be unique.+    name :: Prelude.Maybe Prelude.Text,+    -- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Recording-configuration ARN.+    arn :: Prelude.Text,+    -- | A complex type that contains information about where recorded video will+    -- be stored.+    destinationConfiguration :: DestinationConfiguration,+    -- | Indicates the current state of the recording configuration. When the+    -- state is @ACTIVE@, the configuration is ready for recording a channel+    -- stream.+    state :: RecordingConfigurationState+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RecordingConfigurationSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'name', 'recordingConfigurationSummary_name' - Recording-configuration name. The value does not need to be unique.+--+-- 'tags', 'recordingConfigurationSummary_tags' - Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+--+-- 'arn', 'recordingConfigurationSummary_arn' - Recording-configuration ARN.+--+-- 'destinationConfiguration', 'recordingConfigurationSummary_destinationConfiguration' - A complex type that contains information about where recorded video will+-- be stored.+--+-- 'state', 'recordingConfigurationSummary_state' - Indicates the current state of the recording configuration. When the+-- state is @ACTIVE@, the configuration is ready for recording a channel+-- stream.+newRecordingConfigurationSummary ::+  -- | 'arn'+  Prelude.Text ->+  -- | 'destinationConfiguration'+  DestinationConfiguration ->+  -- | 'state'+  RecordingConfigurationState ->+  RecordingConfigurationSummary+newRecordingConfigurationSummary+  pArn_+  pDestinationConfiguration_+  pState_ =+    RecordingConfigurationSummary'+      { name =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        arn = pArn_,+        destinationConfiguration =+          pDestinationConfiguration_,+        state = pState_+      }++-- | Recording-configuration name. The value does not need to be unique.+recordingConfigurationSummary_name :: Lens.Lens' RecordingConfigurationSummary (Prelude.Maybe Prelude.Text)+recordingConfigurationSummary_name = Lens.lens (\RecordingConfigurationSummary' {name} -> name) (\s@RecordingConfigurationSummary' {} a -> s {name = a} :: RecordingConfigurationSummary)++-- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+recordingConfigurationSummary_tags :: Lens.Lens' RecordingConfigurationSummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+recordingConfigurationSummary_tags = Lens.lens (\RecordingConfigurationSummary' {tags} -> tags) (\s@RecordingConfigurationSummary' {} a -> s {tags = a} :: RecordingConfigurationSummary) Prelude.. Lens.mapping Lens.coerced++-- | Recording-configuration ARN.+recordingConfigurationSummary_arn :: Lens.Lens' RecordingConfigurationSummary Prelude.Text+recordingConfigurationSummary_arn = Lens.lens (\RecordingConfigurationSummary' {arn} -> arn) (\s@RecordingConfigurationSummary' {} a -> s {arn = a} :: RecordingConfigurationSummary)++-- | A complex type that contains information about where recorded video will+-- be stored.+recordingConfigurationSummary_destinationConfiguration :: Lens.Lens' RecordingConfigurationSummary DestinationConfiguration+recordingConfigurationSummary_destinationConfiguration = Lens.lens (\RecordingConfigurationSummary' {destinationConfiguration} -> destinationConfiguration) (\s@RecordingConfigurationSummary' {} a -> s {destinationConfiguration = a} :: RecordingConfigurationSummary)++-- | Indicates the current state of the recording configuration. When the+-- state is @ACTIVE@, the configuration is ready for recording a channel+-- stream.+recordingConfigurationSummary_state :: Lens.Lens' RecordingConfigurationSummary RecordingConfigurationState+recordingConfigurationSummary_state = Lens.lens (\RecordingConfigurationSummary' {state} -> state) (\s@RecordingConfigurationSummary' {} a -> s {state = a} :: RecordingConfigurationSummary)++instance Data.FromJSON RecordingConfigurationSummary where+  parseJSON =+    Data.withObject+      "RecordingConfigurationSummary"+      ( \x ->+          RecordingConfigurationSummary'+            Prelude.<$> (x Data..:? "name")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..: "arn")+            Prelude.<*> (x Data..: "destinationConfiguration")+            Prelude.<*> (x Data..: "state")+      )++instance+  Prelude.Hashable+    RecordingConfigurationSummary+  where+  hashWithSalt _salt RecordingConfigurationSummary' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` destinationConfiguration+      `Prelude.hashWithSalt` state++instance Prelude.NFData RecordingConfigurationSummary where+  rnf RecordingConfigurationSummary' {..} =+    Prelude.rnf name+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf arn+      `Prelude.seq` Prelude.rnf destinationConfiguration+      `Prelude.seq` Prelude.rnf state
+ gen/Amazonka/IVS/Types/RecordingMode.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.IVS.Types.RecordingMode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.RecordingMode+  ( RecordingMode+      ( ..,+        RecordingMode_DISABLED,+        RecordingMode_INTERVAL+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RecordingMode = RecordingMode'+  { fromRecordingMode ::+      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 RecordingMode_DISABLED :: RecordingMode+pattern RecordingMode_DISABLED = RecordingMode' "DISABLED"++pattern RecordingMode_INTERVAL :: RecordingMode+pattern RecordingMode_INTERVAL = RecordingMode' "INTERVAL"++{-# COMPLETE+  RecordingMode_DISABLED,+  RecordingMode_INTERVAL,+  RecordingMode'+  #-}
+ gen/Amazonka/IVS/Types/S3DestinationConfiguration.hs view
@@ -0,0 +1,82 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.S3DestinationConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.S3DestinationConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | A complex type that describes an S3 location where recorded videos will+-- be stored.+--+-- /See:/ 'newS3DestinationConfiguration' smart constructor.+data S3DestinationConfiguration = S3DestinationConfiguration'+  { -- | Location (S3 bucket name) where recorded videos will be stored.+    bucketName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'S3DestinationConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'bucketName', 's3DestinationConfiguration_bucketName' - Location (S3 bucket name) where recorded videos will be stored.+newS3DestinationConfiguration ::+  -- | 'bucketName'+  Prelude.Text ->+  S3DestinationConfiguration+newS3DestinationConfiguration pBucketName_ =+  S3DestinationConfiguration'+    { bucketName =+        pBucketName_+    }++-- | Location (S3 bucket name) where recorded videos will be stored.+s3DestinationConfiguration_bucketName :: Lens.Lens' S3DestinationConfiguration Prelude.Text+s3DestinationConfiguration_bucketName = Lens.lens (\S3DestinationConfiguration' {bucketName} -> bucketName) (\s@S3DestinationConfiguration' {} a -> s {bucketName = a} :: S3DestinationConfiguration)++instance Data.FromJSON S3DestinationConfiguration where+  parseJSON =+    Data.withObject+      "S3DestinationConfiguration"+      ( \x ->+          S3DestinationConfiguration'+            Prelude.<$> (x Data..: "bucketName")+      )++instance Prelude.Hashable S3DestinationConfiguration where+  hashWithSalt _salt S3DestinationConfiguration' {..} =+    _salt `Prelude.hashWithSalt` bucketName++instance Prelude.NFData S3DestinationConfiguration where+  rnf S3DestinationConfiguration' {..} =+    Prelude.rnf bucketName++instance Data.ToJSON S3DestinationConfiguration where+  toJSON S3DestinationConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("bucketName" Data..= bucketName)]+      )
+ gen/Amazonka/IVS/Types/Stream.hs view
@@ -0,0 +1,167 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.Stream+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.Stream where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types.StreamHealth+import Amazonka.IVS.Types.StreamState+import qualified Amazonka.Prelude as Prelude++-- | Specifies a live video stream that has been ingested and distributed.+--+-- /See:/ 'newStream' smart constructor.+data Stream = Stream'+  { -- | Channel ARN for the stream.+    channelArn :: Prelude.Maybe Prelude.Text,+    -- | The stream’s health.+    health :: Prelude.Maybe StreamHealth,+    -- | URL of the master playlist, required by the video player to play the HLS+    -- stream.+    playbackUrl :: Prelude.Maybe Prelude.Text,+    -- | Time of the stream’s start. This is an ISO 8601 timestamp; /note that+    -- this is returned as a string/.+    startTime :: Prelude.Maybe Data.ISO8601,+    -- | The stream’s state.+    state :: Prelude.Maybe StreamState,+    -- | Unique identifier for a live or previously live stream in the specified+    -- channel.+    streamId :: Prelude.Maybe Prelude.Text,+    -- | A count of concurrent views of the stream. Typically, a new view appears+    -- in @viewerCount@ within 15 seconds of when video playback starts and a+    -- view is removed from @viewerCount@ within 1 minute of when video+    -- playback ends. A value of -1 indicates that the request timed out; in+    -- this case, retry.+    viewerCount :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Stream' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channelArn', 'stream_channelArn' - Channel ARN for the stream.+--+-- 'health', 'stream_health' - The stream’s health.+--+-- 'playbackUrl', 'stream_playbackUrl' - URL of the master playlist, required by the video player to play the HLS+-- stream.+--+-- 'startTime', 'stream_startTime' - Time of the stream’s start. This is an ISO 8601 timestamp; /note that+-- this is returned as a string/.+--+-- 'state', 'stream_state' - The stream’s state.+--+-- 'streamId', 'stream_streamId' - Unique identifier for a live or previously live stream in the specified+-- channel.+--+-- 'viewerCount', 'stream_viewerCount' - A count of concurrent views of the stream. Typically, a new view appears+-- in @viewerCount@ within 15 seconds of when video playback starts and a+-- view is removed from @viewerCount@ within 1 minute of when video+-- playback ends. A value of -1 indicates that the request timed out; in+-- this case, retry.+newStream ::+  Stream+newStream =+  Stream'+    { channelArn = Prelude.Nothing,+      health = Prelude.Nothing,+      playbackUrl = Prelude.Nothing,+      startTime = Prelude.Nothing,+      state = Prelude.Nothing,+      streamId = Prelude.Nothing,+      viewerCount = Prelude.Nothing+    }++-- | Channel ARN for the stream.+stream_channelArn :: Lens.Lens' Stream (Prelude.Maybe Prelude.Text)+stream_channelArn = Lens.lens (\Stream' {channelArn} -> channelArn) (\s@Stream' {} a -> s {channelArn = a} :: Stream)++-- | The stream’s health.+stream_health :: Lens.Lens' Stream (Prelude.Maybe StreamHealth)+stream_health = Lens.lens (\Stream' {health} -> health) (\s@Stream' {} a -> s {health = a} :: Stream)++-- | URL of the master playlist, required by the video player to play the HLS+-- stream.+stream_playbackUrl :: Lens.Lens' Stream (Prelude.Maybe Prelude.Text)+stream_playbackUrl = Lens.lens (\Stream' {playbackUrl} -> playbackUrl) (\s@Stream' {} a -> s {playbackUrl = a} :: Stream)++-- | Time of the stream’s start. This is an ISO 8601 timestamp; /note that+-- this is returned as a string/.+stream_startTime :: Lens.Lens' Stream (Prelude.Maybe Prelude.UTCTime)+stream_startTime = Lens.lens (\Stream' {startTime} -> startTime) (\s@Stream' {} a -> s {startTime = a} :: Stream) Prelude.. Lens.mapping Data._Time++-- | The stream’s state.+stream_state :: Lens.Lens' Stream (Prelude.Maybe StreamState)+stream_state = Lens.lens (\Stream' {state} -> state) (\s@Stream' {} a -> s {state = a} :: Stream)++-- | Unique identifier for a live or previously live stream in the specified+-- channel.+stream_streamId :: Lens.Lens' Stream (Prelude.Maybe Prelude.Text)+stream_streamId = Lens.lens (\Stream' {streamId} -> streamId) (\s@Stream' {} a -> s {streamId = a} :: Stream)++-- | A count of concurrent views of the stream. Typically, a new view appears+-- in @viewerCount@ within 15 seconds of when video playback starts and a+-- view is removed from @viewerCount@ within 1 minute of when video+-- playback ends. A value of -1 indicates that the request timed out; in+-- this case, retry.+stream_viewerCount :: Lens.Lens' Stream (Prelude.Maybe Prelude.Integer)+stream_viewerCount = Lens.lens (\Stream' {viewerCount} -> viewerCount) (\s@Stream' {} a -> s {viewerCount = a} :: Stream)++instance Data.FromJSON Stream where+  parseJSON =+    Data.withObject+      "Stream"+      ( \x ->+          Stream'+            Prelude.<$> (x Data..:? "channelArn")+            Prelude.<*> (x Data..:? "health")+            Prelude.<*> (x Data..:? "playbackUrl")+            Prelude.<*> (x Data..:? "startTime")+            Prelude.<*> (x Data..:? "state")+            Prelude.<*> (x Data..:? "streamId")+            Prelude.<*> (x Data..:? "viewerCount")+      )++instance Prelude.Hashable Stream where+  hashWithSalt _salt Stream' {..} =+    _salt+      `Prelude.hashWithSalt` channelArn+      `Prelude.hashWithSalt` health+      `Prelude.hashWithSalt` playbackUrl+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` state+      `Prelude.hashWithSalt` streamId+      `Prelude.hashWithSalt` viewerCount++instance Prelude.NFData Stream where+  rnf Stream' {..} =+    Prelude.rnf channelArn+      `Prelude.seq` Prelude.rnf health+      `Prelude.seq` Prelude.rnf playbackUrl+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf state+      `Prelude.seq` Prelude.rnf streamId+      `Prelude.seq` Prelude.rnf viewerCount
+ gen/Amazonka/IVS/Types/StreamEvent.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.IVS.Types.StreamEvent+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.StreamEvent 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++-- | Object specifying a stream’s events. For a list of events, see+-- <https://docs.aws.amazon.com/ivs/latest/userguide/eventbridge.html Using Amazon EventBridge with Amazon IVS>.+--+-- /See:/ 'newStreamEvent' smart constructor.+data StreamEvent = StreamEvent'+  { -- | Time when the event occurred. This is an ISO 8601 timestamp; /note that+    -- this is returned as a string/.+    eventTime :: Prelude.Maybe Data.ISO8601,+    -- | Name that identifies the stream event within a @type@.+    name :: Prelude.Maybe Prelude.Text,+    -- | Logical group for certain events.+    type' :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StreamEvent' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'eventTime', 'streamEvent_eventTime' - Time when the event occurred. This is an ISO 8601 timestamp; /note that+-- this is returned as a string/.+--+-- 'name', 'streamEvent_name' - Name that identifies the stream event within a @type@.+--+-- 'type'', 'streamEvent_type' - Logical group for certain events.+newStreamEvent ::+  StreamEvent+newStreamEvent =+  StreamEvent'+    { eventTime = Prelude.Nothing,+      name = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | Time when the event occurred. This is an ISO 8601 timestamp; /note that+-- this is returned as a string/.+streamEvent_eventTime :: Lens.Lens' StreamEvent (Prelude.Maybe Prelude.UTCTime)+streamEvent_eventTime = Lens.lens (\StreamEvent' {eventTime} -> eventTime) (\s@StreamEvent' {} a -> s {eventTime = a} :: StreamEvent) Prelude.. Lens.mapping Data._Time++-- | Name that identifies the stream event within a @type@.+streamEvent_name :: Lens.Lens' StreamEvent (Prelude.Maybe Prelude.Text)+streamEvent_name = Lens.lens (\StreamEvent' {name} -> name) (\s@StreamEvent' {} a -> s {name = a} :: StreamEvent)++-- | Logical group for certain events.+streamEvent_type :: Lens.Lens' StreamEvent (Prelude.Maybe Prelude.Text)+streamEvent_type = Lens.lens (\StreamEvent' {type'} -> type') (\s@StreamEvent' {} a -> s {type' = a} :: StreamEvent)++instance Data.FromJSON StreamEvent where+  parseJSON =+    Data.withObject+      "StreamEvent"+      ( \x ->+          StreamEvent'+            Prelude.<$> (x Data..:? "eventTime")+            Prelude.<*> (x Data..:? "name")+            Prelude.<*> (x Data..:? "type")+      )++instance Prelude.Hashable StreamEvent where+  hashWithSalt _salt StreamEvent' {..} =+    _salt+      `Prelude.hashWithSalt` eventTime+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` type'++instance Prelude.NFData StreamEvent where+  rnf StreamEvent' {..} =+    Prelude.rnf eventTime+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/IVS/Types/StreamFilters.hs view
@@ -0,0 +1,67 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.StreamFilters+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.StreamFilters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types.StreamHealth+import qualified Amazonka.Prelude as Prelude++-- | Object specifying the stream attribute on which to filter.+--+-- /See:/ 'newStreamFilters' smart constructor.+data StreamFilters = StreamFilters'+  { -- | The stream’s health.+    health :: Prelude.Maybe StreamHealth+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StreamFilters' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'health', 'streamFilters_health' - The stream’s health.+newStreamFilters ::+  StreamFilters+newStreamFilters =+  StreamFilters' {health = Prelude.Nothing}++-- | The stream’s health.+streamFilters_health :: Lens.Lens' StreamFilters (Prelude.Maybe StreamHealth)+streamFilters_health = Lens.lens (\StreamFilters' {health} -> health) (\s@StreamFilters' {} a -> s {health = a} :: StreamFilters)++instance Prelude.Hashable StreamFilters where+  hashWithSalt _salt StreamFilters' {..} =+    _salt `Prelude.hashWithSalt` health++instance Prelude.NFData StreamFilters where+  rnf StreamFilters' {..} = Prelude.rnf health++instance Data.ToJSON StreamFilters where+  toJSON StreamFilters' {..} =+    Data.object+      ( Prelude.catMaybes+          [("health" Data..=) Prelude.<$> health]+      )
+ gen/Amazonka/IVS/Types/StreamHealth.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.IVS.Types.StreamHealth+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.StreamHealth+  ( StreamHealth+      ( ..,+        StreamHealth_HEALTHY,+        StreamHealth_STARVING,+        StreamHealth_UNKNOWN+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype StreamHealth = StreamHealth'+  { fromStreamHealth ::+      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 StreamHealth_HEALTHY :: StreamHealth+pattern StreamHealth_HEALTHY = StreamHealth' "HEALTHY"++pattern StreamHealth_STARVING :: StreamHealth+pattern StreamHealth_STARVING = StreamHealth' "STARVING"++pattern StreamHealth_UNKNOWN :: StreamHealth+pattern StreamHealth_UNKNOWN = StreamHealth' "UNKNOWN"++{-# COMPLETE+  StreamHealth_HEALTHY,+  StreamHealth_STARVING,+  StreamHealth_UNKNOWN,+  StreamHealth'+  #-}
+ gen/Amazonka/IVS/Types/StreamKey.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.IVS.Types.StreamKey+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.StreamKey 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++-- | Object specifying a stream key.+--+-- /See:/ 'newStreamKey' smart constructor.+data StreamKey = StreamKey'+  { -- | Stream-key ARN.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Channel ARN for the stream.+    channelArn :: Prelude.Maybe Prelude.Text,+    -- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | Stream-key value.+    value :: Prelude.Maybe (Data.Sensitive Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StreamKey' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'streamKey_arn' - Stream-key ARN.+--+-- 'channelArn', 'streamKey_channelArn' - Channel ARN for the stream.+--+-- 'tags', 'streamKey_tags' - Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+--+-- 'value', 'streamKey_value' - Stream-key value.+newStreamKey ::+  StreamKey+newStreamKey =+  StreamKey'+    { arn = Prelude.Nothing,+      channelArn = Prelude.Nothing,+      tags = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | Stream-key ARN.+streamKey_arn :: Lens.Lens' StreamKey (Prelude.Maybe Prelude.Text)+streamKey_arn = Lens.lens (\StreamKey' {arn} -> arn) (\s@StreamKey' {} a -> s {arn = a} :: StreamKey)++-- | Channel ARN for the stream.+streamKey_channelArn :: Lens.Lens' StreamKey (Prelude.Maybe Prelude.Text)+streamKey_channelArn = Lens.lens (\StreamKey' {channelArn} -> channelArn) (\s@StreamKey' {} a -> s {channelArn = a} :: StreamKey)++-- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+streamKey_tags :: Lens.Lens' StreamKey (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+streamKey_tags = Lens.lens (\StreamKey' {tags} -> tags) (\s@StreamKey' {} a -> s {tags = a} :: StreamKey) Prelude.. Lens.mapping Lens.coerced++-- | Stream-key value.+streamKey_value :: Lens.Lens' StreamKey (Prelude.Maybe Prelude.Text)+streamKey_value = Lens.lens (\StreamKey' {value} -> value) (\s@StreamKey' {} a -> s {value = a} :: StreamKey) Prelude.. Lens.mapping Data._Sensitive++instance Data.FromJSON StreamKey where+  parseJSON =+    Data.withObject+      "StreamKey"+      ( \x ->+          StreamKey'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "channelArn")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "value")+      )++instance Prelude.Hashable StreamKey where+  hashWithSalt _salt StreamKey' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` channelArn+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` value++instance Prelude.NFData StreamKey where+  rnf StreamKey' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf channelArn+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf value
+ gen/Amazonka/IVS/Types/StreamKeySummary.hs view
@@ -0,0 +1,108 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.StreamKeySummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.StreamKeySummary 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++-- | Summary information about a stream key.+--+-- /See:/ 'newStreamKeySummary' smart constructor.+data StreamKeySummary = StreamKeySummary'+  { -- | Stream-key ARN.+    arn :: Prelude.Maybe Prelude.Text,+    -- | Channel ARN for the stream.+    channelArn :: Prelude.Maybe Prelude.Text,+    -- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StreamKeySummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'streamKeySummary_arn' - Stream-key ARN.+--+-- 'channelArn', 'streamKeySummary_channelArn' - Channel ARN for the stream.+--+-- 'tags', 'streamKeySummary_tags' - Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+newStreamKeySummary ::+  StreamKeySummary+newStreamKeySummary =+  StreamKeySummary'+    { arn = Prelude.Nothing,+      channelArn = Prelude.Nothing,+      tags = Prelude.Nothing+    }++-- | Stream-key ARN.+streamKeySummary_arn :: Lens.Lens' StreamKeySummary (Prelude.Maybe Prelude.Text)+streamKeySummary_arn = Lens.lens (\StreamKeySummary' {arn} -> arn) (\s@StreamKeySummary' {} a -> s {arn = a} :: StreamKeySummary)++-- | Channel ARN for the stream.+streamKeySummary_channelArn :: Lens.Lens' StreamKeySummary (Prelude.Maybe Prelude.Text)+streamKeySummary_channelArn = Lens.lens (\StreamKeySummary' {channelArn} -> channelArn) (\s@StreamKeySummary' {} a -> s {channelArn = a} :: StreamKeySummary)++-- | Array of 1-50 maps, each of the form @string:string (key:value)@. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+streamKeySummary_tags :: Lens.Lens' StreamKeySummary (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+streamKeySummary_tags = Lens.lens (\StreamKeySummary' {tags} -> tags) (\s@StreamKeySummary' {} a -> s {tags = a} :: StreamKeySummary) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON StreamKeySummary where+  parseJSON =+    Data.withObject+      "StreamKeySummary"+      ( \x ->+          StreamKeySummary'+            Prelude.<$> (x Data..:? "arn")+            Prelude.<*> (x Data..:? "channelArn")+            Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable StreamKeySummary where+  hashWithSalt _salt StreamKeySummary' {..} =+    _salt+      `Prelude.hashWithSalt` arn+      `Prelude.hashWithSalt` channelArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData StreamKeySummary where+  rnf StreamKeySummary' {..} =+    Prelude.rnf arn+      `Prelude.seq` Prelude.rnf channelArn+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/IVS/Types/StreamSession.hs view
@@ -0,0 +1,171 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.StreamSession+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.StreamSession where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types.Channel+import Amazonka.IVS.Types.IngestConfiguration+import Amazonka.IVS.Types.RecordingConfiguration+import Amazonka.IVS.Types.StreamEvent+import qualified Amazonka.Prelude as Prelude++-- | Object that captures the Amazon IVS configuration that the customer+-- provisioned, the ingest configurations that the broadcaster used, and+-- the most recent Amazon IVS stream events it encountered.+--+-- /See:/ 'newStreamSession' smart constructor.+data StreamSession = StreamSession'+  { -- | The properties of the channel at the time of going live.+    channel :: Prelude.Maybe Channel,+    -- | Time when the channel went offline. This is an ISO 8601 timestamp; /note+    -- that this is returned as a string/. For live streams, this is @NULL@.+    endTime :: Prelude.Maybe Data.ISO8601,+    -- | The properties of the incoming RTMP stream for the stream.+    ingestConfiguration :: Prelude.Maybe IngestConfiguration,+    -- | The properties of recording the live stream.+    recordingConfiguration :: Prelude.Maybe RecordingConfiguration,+    -- | Time when the channel went live. This is an ISO 8601 timestamp; /note+    -- that this is returned as a string/.+    startTime :: Prelude.Maybe Data.ISO8601,+    -- | Unique identifier for a live or previously live stream in the specified+    -- channel.+    streamId :: Prelude.Maybe Prelude.Text,+    -- | List of Amazon IVS events that the stream encountered. The list is+    -- sorted by most recent events and contains up to 500 events. For Amazon+    -- IVS events, see+    -- <https://docs.aws.amazon.com/ivs/latest/userguide/eventbridge.html Using Amazon EventBridge with Amazon IVS>.+    truncatedEvents :: Prelude.Maybe [StreamEvent]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StreamSession' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channel', 'streamSession_channel' - The properties of the channel at the time of going live.+--+-- 'endTime', 'streamSession_endTime' - Time when the channel went offline. This is an ISO 8601 timestamp; /note+-- that this is returned as a string/. For live streams, this is @NULL@.+--+-- 'ingestConfiguration', 'streamSession_ingestConfiguration' - The properties of the incoming RTMP stream for the stream.+--+-- 'recordingConfiguration', 'streamSession_recordingConfiguration' - The properties of recording the live stream.+--+-- 'startTime', 'streamSession_startTime' - Time when the channel went live. This is an ISO 8601 timestamp; /note+-- that this is returned as a string/.+--+-- 'streamId', 'streamSession_streamId' - Unique identifier for a live or previously live stream in the specified+-- channel.+--+-- 'truncatedEvents', 'streamSession_truncatedEvents' - List of Amazon IVS events that the stream encountered. The list is+-- sorted by most recent events and contains up to 500 events. For Amazon+-- IVS events, see+-- <https://docs.aws.amazon.com/ivs/latest/userguide/eventbridge.html Using Amazon EventBridge with Amazon IVS>.+newStreamSession ::+  StreamSession+newStreamSession =+  StreamSession'+    { channel = Prelude.Nothing,+      endTime = Prelude.Nothing,+      ingestConfiguration = Prelude.Nothing,+      recordingConfiguration = Prelude.Nothing,+      startTime = Prelude.Nothing,+      streamId = Prelude.Nothing,+      truncatedEvents = Prelude.Nothing+    }++-- | The properties of the channel at the time of going live.+streamSession_channel :: Lens.Lens' StreamSession (Prelude.Maybe Channel)+streamSession_channel = Lens.lens (\StreamSession' {channel} -> channel) (\s@StreamSession' {} a -> s {channel = a} :: StreamSession)++-- | Time when the channel went offline. This is an ISO 8601 timestamp; /note+-- that this is returned as a string/. For live streams, this is @NULL@.+streamSession_endTime :: Lens.Lens' StreamSession (Prelude.Maybe Prelude.UTCTime)+streamSession_endTime = Lens.lens (\StreamSession' {endTime} -> endTime) (\s@StreamSession' {} a -> s {endTime = a} :: StreamSession) Prelude.. Lens.mapping Data._Time++-- | The properties of the incoming RTMP stream for the stream.+streamSession_ingestConfiguration :: Lens.Lens' StreamSession (Prelude.Maybe IngestConfiguration)+streamSession_ingestConfiguration = Lens.lens (\StreamSession' {ingestConfiguration} -> ingestConfiguration) (\s@StreamSession' {} a -> s {ingestConfiguration = a} :: StreamSession)++-- | The properties of recording the live stream.+streamSession_recordingConfiguration :: Lens.Lens' StreamSession (Prelude.Maybe RecordingConfiguration)+streamSession_recordingConfiguration = Lens.lens (\StreamSession' {recordingConfiguration} -> recordingConfiguration) (\s@StreamSession' {} a -> s {recordingConfiguration = a} :: StreamSession)++-- | Time when the channel went live. This is an ISO 8601 timestamp; /note+-- that this is returned as a string/.+streamSession_startTime :: Lens.Lens' StreamSession (Prelude.Maybe Prelude.UTCTime)+streamSession_startTime = Lens.lens (\StreamSession' {startTime} -> startTime) (\s@StreamSession' {} a -> s {startTime = a} :: StreamSession) Prelude.. Lens.mapping Data._Time++-- | Unique identifier for a live or previously live stream in the specified+-- channel.+streamSession_streamId :: Lens.Lens' StreamSession (Prelude.Maybe Prelude.Text)+streamSession_streamId = Lens.lens (\StreamSession' {streamId} -> streamId) (\s@StreamSession' {} a -> s {streamId = a} :: StreamSession)++-- | List of Amazon IVS events that the stream encountered. The list is+-- sorted by most recent events and contains up to 500 events. For Amazon+-- IVS events, see+-- <https://docs.aws.amazon.com/ivs/latest/userguide/eventbridge.html Using Amazon EventBridge with Amazon IVS>.+streamSession_truncatedEvents :: Lens.Lens' StreamSession (Prelude.Maybe [StreamEvent])+streamSession_truncatedEvents = Lens.lens (\StreamSession' {truncatedEvents} -> truncatedEvents) (\s@StreamSession' {} a -> s {truncatedEvents = a} :: StreamSession) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON StreamSession where+  parseJSON =+    Data.withObject+      "StreamSession"+      ( \x ->+          StreamSession'+            Prelude.<$> (x Data..:? "channel")+            Prelude.<*> (x Data..:? "endTime")+            Prelude.<*> (x Data..:? "ingestConfiguration")+            Prelude.<*> (x Data..:? "recordingConfiguration")+            Prelude.<*> (x Data..:? "startTime")+            Prelude.<*> (x Data..:? "streamId")+            Prelude.<*> ( x+                            Data..:? "truncatedEvents"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable StreamSession where+  hashWithSalt _salt StreamSession' {..} =+    _salt+      `Prelude.hashWithSalt` channel+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` ingestConfiguration+      `Prelude.hashWithSalt` recordingConfiguration+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` streamId+      `Prelude.hashWithSalt` truncatedEvents++instance Prelude.NFData StreamSession where+  rnf StreamSession' {..} =+    Prelude.rnf channel+      `Prelude.seq` Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf ingestConfiguration+      `Prelude.seq` Prelude.rnf recordingConfiguration+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf streamId+      `Prelude.seq` Prelude.rnf truncatedEvents
+ gen/Amazonka/IVS/Types/StreamSessionSummary.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.IVS.Types.StreamSessionSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.StreamSessionSummary 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++-- | Summary information about a stream session.+--+-- /See:/ 'newStreamSessionSummary' smart constructor.+data StreamSessionSummary = StreamSessionSummary'+  { -- | Time when the channel went offline. This is an ISO 8601 timestamp; /note+    -- that this is returned as a string/. For live streams, this is @NULL@.+    endTime :: Prelude.Maybe Data.ISO8601,+    -- | If @true@, this stream encountered a quota breach or failure.+    hasErrorEvent :: Prelude.Maybe Prelude.Bool,+    -- | Time when the channel went live. This is an ISO 8601 timestamp; /note+    -- that this is returned as a string/.+    startTime :: Prelude.Maybe Data.ISO8601,+    -- | Unique identifier for a live or previously live stream in the specified+    -- channel.+    streamId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StreamSessionSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'endTime', 'streamSessionSummary_endTime' - Time when the channel went offline. This is an ISO 8601 timestamp; /note+-- that this is returned as a string/. For live streams, this is @NULL@.+--+-- 'hasErrorEvent', 'streamSessionSummary_hasErrorEvent' - If @true@, this stream encountered a quota breach or failure.+--+-- 'startTime', 'streamSessionSummary_startTime' - Time when the channel went live. This is an ISO 8601 timestamp; /note+-- that this is returned as a string/.+--+-- 'streamId', 'streamSessionSummary_streamId' - Unique identifier for a live or previously live stream in the specified+-- channel.+newStreamSessionSummary ::+  StreamSessionSummary+newStreamSessionSummary =+  StreamSessionSummary'+    { endTime = Prelude.Nothing,+      hasErrorEvent = Prelude.Nothing,+      startTime = Prelude.Nothing,+      streamId = Prelude.Nothing+    }++-- | Time when the channel went offline. This is an ISO 8601 timestamp; /note+-- that this is returned as a string/. For live streams, this is @NULL@.+streamSessionSummary_endTime :: Lens.Lens' StreamSessionSummary (Prelude.Maybe Prelude.UTCTime)+streamSessionSummary_endTime = Lens.lens (\StreamSessionSummary' {endTime} -> endTime) (\s@StreamSessionSummary' {} a -> s {endTime = a} :: StreamSessionSummary) Prelude.. Lens.mapping Data._Time++-- | If @true@, this stream encountered a quota breach or failure.+streamSessionSummary_hasErrorEvent :: Lens.Lens' StreamSessionSummary (Prelude.Maybe Prelude.Bool)+streamSessionSummary_hasErrorEvent = Lens.lens (\StreamSessionSummary' {hasErrorEvent} -> hasErrorEvent) (\s@StreamSessionSummary' {} a -> s {hasErrorEvent = a} :: StreamSessionSummary)++-- | Time when the channel went live. This is an ISO 8601 timestamp; /note+-- that this is returned as a string/.+streamSessionSummary_startTime :: Lens.Lens' StreamSessionSummary (Prelude.Maybe Prelude.UTCTime)+streamSessionSummary_startTime = Lens.lens (\StreamSessionSummary' {startTime} -> startTime) (\s@StreamSessionSummary' {} a -> s {startTime = a} :: StreamSessionSummary) Prelude.. Lens.mapping Data._Time++-- | Unique identifier for a live or previously live stream in the specified+-- channel.+streamSessionSummary_streamId :: Lens.Lens' StreamSessionSummary (Prelude.Maybe Prelude.Text)+streamSessionSummary_streamId = Lens.lens (\StreamSessionSummary' {streamId} -> streamId) (\s@StreamSessionSummary' {} a -> s {streamId = a} :: StreamSessionSummary)++instance Data.FromJSON StreamSessionSummary where+  parseJSON =+    Data.withObject+      "StreamSessionSummary"+      ( \x ->+          StreamSessionSummary'+            Prelude.<$> (x Data..:? "endTime")+            Prelude.<*> (x Data..:? "hasErrorEvent")+            Prelude.<*> (x Data..:? "startTime")+            Prelude.<*> (x Data..:? "streamId")+      )++instance Prelude.Hashable StreamSessionSummary where+  hashWithSalt _salt StreamSessionSummary' {..} =+    _salt+      `Prelude.hashWithSalt` endTime+      `Prelude.hashWithSalt` hasErrorEvent+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` streamId++instance Prelude.NFData StreamSessionSummary where+  rnf StreamSessionSummary' {..} =+    Prelude.rnf endTime+      `Prelude.seq` Prelude.rnf hasErrorEvent+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf streamId
+ gen/Amazonka/IVS/Types/StreamState.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.IVS.Types.StreamState+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.StreamState+  ( StreamState+      ( ..,+        StreamState_LIVE,+        StreamState_OFFLINE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype StreamState = StreamState'+  { fromStreamState ::+      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 StreamState_LIVE :: StreamState+pattern StreamState_LIVE = StreamState' "LIVE"++pattern StreamState_OFFLINE :: StreamState+pattern StreamState_OFFLINE = StreamState' "OFFLINE"++{-# COMPLETE+  StreamState_LIVE,+  StreamState_OFFLINE,+  StreamState'+  #-}
+ gen/Amazonka/IVS/Types/StreamSummary.hs view
@@ -0,0 +1,152 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.StreamSummary+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.StreamSummary where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types.StreamHealth+import Amazonka.IVS.Types.StreamState+import qualified Amazonka.Prelude as Prelude++-- | Summary information about a stream.+--+-- /See:/ 'newStreamSummary' smart constructor.+data StreamSummary = StreamSummary'+  { -- | Channel ARN for the stream.+    channelArn :: Prelude.Maybe Prelude.Text,+    -- | The stream’s health.+    health :: Prelude.Maybe StreamHealth,+    -- | Time of the stream’s start. This is an ISO 8601 timestamp; /note that+    -- this is returned as a string/.+    startTime :: Prelude.Maybe Data.ISO8601,+    -- | The stream’s state.+    state :: Prelude.Maybe StreamState,+    -- | Unique identifier for a live or previously live stream in the specified+    -- channel.+    streamId :: Prelude.Maybe Prelude.Text,+    -- | A count of concurrent views of the stream. Typically, a new view appears+    -- in @viewerCount@ within 15 seconds of when video playback starts and a+    -- view is removed from @viewerCount@ within 1 minute of when video+    -- playback ends. A value of -1 indicates that the request timed out; in+    -- this case, retry.+    viewerCount :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'StreamSummary' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channelArn', 'streamSummary_channelArn' - Channel ARN for the stream.+--+-- 'health', 'streamSummary_health' - The stream’s health.+--+-- 'startTime', 'streamSummary_startTime' - Time of the stream’s start. This is an ISO 8601 timestamp; /note that+-- this is returned as a string/.+--+-- 'state', 'streamSummary_state' - The stream’s state.+--+-- 'streamId', 'streamSummary_streamId' - Unique identifier for a live or previously live stream in the specified+-- channel.+--+-- 'viewerCount', 'streamSummary_viewerCount' - A count of concurrent views of the stream. Typically, a new view appears+-- in @viewerCount@ within 15 seconds of when video playback starts and a+-- view is removed from @viewerCount@ within 1 minute of when video+-- playback ends. A value of -1 indicates that the request timed out; in+-- this case, retry.+newStreamSummary ::+  StreamSummary+newStreamSummary =+  StreamSummary'+    { channelArn = Prelude.Nothing,+      health = Prelude.Nothing,+      startTime = Prelude.Nothing,+      state = Prelude.Nothing,+      streamId = Prelude.Nothing,+      viewerCount = Prelude.Nothing+    }++-- | Channel ARN for the stream.+streamSummary_channelArn :: Lens.Lens' StreamSummary (Prelude.Maybe Prelude.Text)+streamSummary_channelArn = Lens.lens (\StreamSummary' {channelArn} -> channelArn) (\s@StreamSummary' {} a -> s {channelArn = a} :: StreamSummary)++-- | The stream’s health.+streamSummary_health :: Lens.Lens' StreamSummary (Prelude.Maybe StreamHealth)+streamSummary_health = Lens.lens (\StreamSummary' {health} -> health) (\s@StreamSummary' {} a -> s {health = a} :: StreamSummary)++-- | Time of the stream’s start. This is an ISO 8601 timestamp; /note that+-- this is returned as a string/.+streamSummary_startTime :: Lens.Lens' StreamSummary (Prelude.Maybe Prelude.UTCTime)+streamSummary_startTime = Lens.lens (\StreamSummary' {startTime} -> startTime) (\s@StreamSummary' {} a -> s {startTime = a} :: StreamSummary) Prelude.. Lens.mapping Data._Time++-- | The stream’s state.+streamSummary_state :: Lens.Lens' StreamSummary (Prelude.Maybe StreamState)+streamSummary_state = Lens.lens (\StreamSummary' {state} -> state) (\s@StreamSummary' {} a -> s {state = a} :: StreamSummary)++-- | Unique identifier for a live or previously live stream in the specified+-- channel.+streamSummary_streamId :: Lens.Lens' StreamSummary (Prelude.Maybe Prelude.Text)+streamSummary_streamId = Lens.lens (\StreamSummary' {streamId} -> streamId) (\s@StreamSummary' {} a -> s {streamId = a} :: StreamSummary)++-- | A count of concurrent views of the stream. Typically, a new view appears+-- in @viewerCount@ within 15 seconds of when video playback starts and a+-- view is removed from @viewerCount@ within 1 minute of when video+-- playback ends. A value of -1 indicates that the request timed out; in+-- this case, retry.+streamSummary_viewerCount :: Lens.Lens' StreamSummary (Prelude.Maybe Prelude.Integer)+streamSummary_viewerCount = Lens.lens (\StreamSummary' {viewerCount} -> viewerCount) (\s@StreamSummary' {} a -> s {viewerCount = a} :: StreamSummary)++instance Data.FromJSON StreamSummary where+  parseJSON =+    Data.withObject+      "StreamSummary"+      ( \x ->+          StreamSummary'+            Prelude.<$> (x Data..:? "channelArn")+            Prelude.<*> (x Data..:? "health")+            Prelude.<*> (x Data..:? "startTime")+            Prelude.<*> (x Data..:? "state")+            Prelude.<*> (x Data..:? "streamId")+            Prelude.<*> (x Data..:? "viewerCount")+      )++instance Prelude.Hashable StreamSummary where+  hashWithSalt _salt StreamSummary' {..} =+    _salt+      `Prelude.hashWithSalt` channelArn+      `Prelude.hashWithSalt` health+      `Prelude.hashWithSalt` startTime+      `Prelude.hashWithSalt` state+      `Prelude.hashWithSalt` streamId+      `Prelude.hashWithSalt` viewerCount++instance Prelude.NFData StreamSummary where+  rnf StreamSummary' {..} =+    Prelude.rnf channelArn+      `Prelude.seq` Prelude.rnf health+      `Prelude.seq` Prelude.rnf startTime+      `Prelude.seq` Prelude.rnf state+      `Prelude.seq` Prelude.rnf streamId+      `Prelude.seq` Prelude.rnf viewerCount
+ gen/Amazonka/IVS/Types/ThumbnailConfiguration.hs view
@@ -0,0 +1,129 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.ThumbnailConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.ThumbnailConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types.RecordingMode+import qualified Amazonka.Prelude as Prelude++-- | An object representing a configuration of thumbnails for recorded video.+--+-- /See:/ 'newThumbnailConfiguration' smart constructor.+data ThumbnailConfiguration = ThumbnailConfiguration'+  { -- | Thumbnail recording mode. Default: @INTERVAL@.+    recordingMode :: Prelude.Maybe RecordingMode,+    -- | The targeted thumbnail-generation interval in seconds. This is+    -- configurable (and required) only if @recordingMode@ is @INTERVAL@.+    -- Default: 60.+    --+    -- __Important:__ Setting a value for @targetIntervalSeconds@ does not+    -- guarantee that thumbnails are generated at the specified interval. For+    -- thumbnails to be generated at the @targetIntervalSeconds@ interval, the+    -- @IDR\/Keyframe@ value for the input video must be less than the+    -- @targetIntervalSeconds@ value. See+    -- <https://docs.aws.amazon.com/ivs/latest/userguide/streaming-config.html Amazon IVS Streaming Configuration>+    -- for information on setting @IDR\/Keyframe@ to the recommended value in+    -- video-encoder settings.+    targetIntervalSeconds :: Prelude.Maybe Prelude.Natural+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ThumbnailConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'recordingMode', 'thumbnailConfiguration_recordingMode' - Thumbnail recording mode. Default: @INTERVAL@.+--+-- 'targetIntervalSeconds', 'thumbnailConfiguration_targetIntervalSeconds' - The targeted thumbnail-generation interval in seconds. This is+-- configurable (and required) only if @recordingMode@ is @INTERVAL@.+-- Default: 60.+--+-- __Important:__ Setting a value for @targetIntervalSeconds@ does not+-- guarantee that thumbnails are generated at the specified interval. For+-- thumbnails to be generated at the @targetIntervalSeconds@ interval, the+-- @IDR\/Keyframe@ value for the input video must be less than the+-- @targetIntervalSeconds@ value. See+-- <https://docs.aws.amazon.com/ivs/latest/userguide/streaming-config.html Amazon IVS Streaming Configuration>+-- for information on setting @IDR\/Keyframe@ to the recommended value in+-- video-encoder settings.+newThumbnailConfiguration ::+  ThumbnailConfiguration+newThumbnailConfiguration =+  ThumbnailConfiguration'+    { recordingMode =+        Prelude.Nothing,+      targetIntervalSeconds = Prelude.Nothing+    }++-- | Thumbnail recording mode. Default: @INTERVAL@.+thumbnailConfiguration_recordingMode :: Lens.Lens' ThumbnailConfiguration (Prelude.Maybe RecordingMode)+thumbnailConfiguration_recordingMode = Lens.lens (\ThumbnailConfiguration' {recordingMode} -> recordingMode) (\s@ThumbnailConfiguration' {} a -> s {recordingMode = a} :: ThumbnailConfiguration)++-- | The targeted thumbnail-generation interval in seconds. This is+-- configurable (and required) only if @recordingMode@ is @INTERVAL@.+-- Default: 60.+--+-- __Important:__ Setting a value for @targetIntervalSeconds@ does not+-- guarantee that thumbnails are generated at the specified interval. For+-- thumbnails to be generated at the @targetIntervalSeconds@ interval, the+-- @IDR\/Keyframe@ value for the input video must be less than the+-- @targetIntervalSeconds@ value. See+-- <https://docs.aws.amazon.com/ivs/latest/userguide/streaming-config.html Amazon IVS Streaming Configuration>+-- for information on setting @IDR\/Keyframe@ to the recommended value in+-- video-encoder settings.+thumbnailConfiguration_targetIntervalSeconds :: Lens.Lens' ThumbnailConfiguration (Prelude.Maybe Prelude.Natural)+thumbnailConfiguration_targetIntervalSeconds = Lens.lens (\ThumbnailConfiguration' {targetIntervalSeconds} -> targetIntervalSeconds) (\s@ThumbnailConfiguration' {} a -> s {targetIntervalSeconds = a} :: ThumbnailConfiguration)++instance Data.FromJSON ThumbnailConfiguration where+  parseJSON =+    Data.withObject+      "ThumbnailConfiguration"+      ( \x ->+          ThumbnailConfiguration'+            Prelude.<$> (x Data..:? "recordingMode")+            Prelude.<*> (x Data..:? "targetIntervalSeconds")+      )++instance Prelude.Hashable ThumbnailConfiguration where+  hashWithSalt _salt ThumbnailConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` recordingMode+      `Prelude.hashWithSalt` targetIntervalSeconds++instance Prelude.NFData ThumbnailConfiguration where+  rnf ThumbnailConfiguration' {..} =+    Prelude.rnf recordingMode+      `Prelude.seq` Prelude.rnf targetIntervalSeconds++instance Data.ToJSON ThumbnailConfiguration where+  toJSON ThumbnailConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("recordingMode" Data..=) Prelude.<$> recordingMode,+            ("targetIntervalSeconds" Data..=)+              Prelude.<$> targetIntervalSeconds+          ]+      )
+ gen/Amazonka/IVS/Types/VideoConfiguration.hs view
@@ -0,0 +1,170 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.Types.VideoConfiguration+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.IVS.Types.VideoConfiguration 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++-- | Object specifying a stream’s video configuration, as set up by the+-- broadcaster (usually in an encoder). This is part of the+-- IngestConfiguration object and used for monitoring stream health.+--+-- /See:/ 'newVideoConfiguration' smart constructor.+data VideoConfiguration = VideoConfiguration'+  { -- | Indicates the degree of required decoder performance for a profile.+    -- Normally this is set automatically by the encoder. For details, see the+    -- H.264 specification.+    avcLevel :: Prelude.Maybe Prelude.Text,+    -- | Indicates to the decoder the requirements for decoding the stream. For+    -- definitions of the valid values, see the H.264 specification.+    avcProfile :: Prelude.Maybe Prelude.Text,+    -- | Codec used for the video encoding.+    codec :: Prelude.Maybe Prelude.Text,+    -- | Software or hardware used to encode the video.+    encoder :: Prelude.Maybe Prelude.Text,+    -- | The expected ingest bitrate (bits per second). This is configured in the+    -- encoder.+    targetBitrate :: Prelude.Maybe Prelude.Integer,+    -- | The expected ingest framerate. This is configured in the encoder.+    targetFramerate :: Prelude.Maybe Prelude.Integer,+    -- | Video-resolution height in pixels.+    videoHeight :: Prelude.Maybe Prelude.Integer,+    -- | Video-resolution width in pixels.+    videoWidth :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VideoConfiguration' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'avcLevel', 'videoConfiguration_avcLevel' - Indicates the degree of required decoder performance for a profile.+-- Normally this is set automatically by the encoder. For details, see the+-- H.264 specification.+--+-- 'avcProfile', 'videoConfiguration_avcProfile' - Indicates to the decoder the requirements for decoding the stream. For+-- definitions of the valid values, see the H.264 specification.+--+-- 'codec', 'videoConfiguration_codec' - Codec used for the video encoding.+--+-- 'encoder', 'videoConfiguration_encoder' - Software or hardware used to encode the video.+--+-- 'targetBitrate', 'videoConfiguration_targetBitrate' - The expected ingest bitrate (bits per second). This is configured in the+-- encoder.+--+-- 'targetFramerate', 'videoConfiguration_targetFramerate' - The expected ingest framerate. This is configured in the encoder.+--+-- 'videoHeight', 'videoConfiguration_videoHeight' - Video-resolution height in pixels.+--+-- 'videoWidth', 'videoConfiguration_videoWidth' - Video-resolution width in pixels.+newVideoConfiguration ::+  VideoConfiguration+newVideoConfiguration =+  VideoConfiguration'+    { avcLevel = Prelude.Nothing,+      avcProfile = Prelude.Nothing,+      codec = Prelude.Nothing,+      encoder = Prelude.Nothing,+      targetBitrate = Prelude.Nothing,+      targetFramerate = Prelude.Nothing,+      videoHeight = Prelude.Nothing,+      videoWidth = Prelude.Nothing+    }++-- | Indicates the degree of required decoder performance for a profile.+-- Normally this is set automatically by the encoder. For details, see the+-- H.264 specification.+videoConfiguration_avcLevel :: Lens.Lens' VideoConfiguration (Prelude.Maybe Prelude.Text)+videoConfiguration_avcLevel = Lens.lens (\VideoConfiguration' {avcLevel} -> avcLevel) (\s@VideoConfiguration' {} a -> s {avcLevel = a} :: VideoConfiguration)++-- | Indicates to the decoder the requirements for decoding the stream. For+-- definitions of the valid values, see the H.264 specification.+videoConfiguration_avcProfile :: Lens.Lens' VideoConfiguration (Prelude.Maybe Prelude.Text)+videoConfiguration_avcProfile = Lens.lens (\VideoConfiguration' {avcProfile} -> avcProfile) (\s@VideoConfiguration' {} a -> s {avcProfile = a} :: VideoConfiguration)++-- | Codec used for the video encoding.+videoConfiguration_codec :: Lens.Lens' VideoConfiguration (Prelude.Maybe Prelude.Text)+videoConfiguration_codec = Lens.lens (\VideoConfiguration' {codec} -> codec) (\s@VideoConfiguration' {} a -> s {codec = a} :: VideoConfiguration)++-- | Software or hardware used to encode the video.+videoConfiguration_encoder :: Lens.Lens' VideoConfiguration (Prelude.Maybe Prelude.Text)+videoConfiguration_encoder = Lens.lens (\VideoConfiguration' {encoder} -> encoder) (\s@VideoConfiguration' {} a -> s {encoder = a} :: VideoConfiguration)++-- | The expected ingest bitrate (bits per second). This is configured in the+-- encoder.+videoConfiguration_targetBitrate :: Lens.Lens' VideoConfiguration (Prelude.Maybe Prelude.Integer)+videoConfiguration_targetBitrate = Lens.lens (\VideoConfiguration' {targetBitrate} -> targetBitrate) (\s@VideoConfiguration' {} a -> s {targetBitrate = a} :: VideoConfiguration)++-- | The expected ingest framerate. This is configured in the encoder.+videoConfiguration_targetFramerate :: Lens.Lens' VideoConfiguration (Prelude.Maybe Prelude.Integer)+videoConfiguration_targetFramerate = Lens.lens (\VideoConfiguration' {targetFramerate} -> targetFramerate) (\s@VideoConfiguration' {} a -> s {targetFramerate = a} :: VideoConfiguration)++-- | Video-resolution height in pixels.+videoConfiguration_videoHeight :: Lens.Lens' VideoConfiguration (Prelude.Maybe Prelude.Integer)+videoConfiguration_videoHeight = Lens.lens (\VideoConfiguration' {videoHeight} -> videoHeight) (\s@VideoConfiguration' {} a -> s {videoHeight = a} :: VideoConfiguration)++-- | Video-resolution width in pixels.+videoConfiguration_videoWidth :: Lens.Lens' VideoConfiguration (Prelude.Maybe Prelude.Integer)+videoConfiguration_videoWidth = Lens.lens (\VideoConfiguration' {videoWidth} -> videoWidth) (\s@VideoConfiguration' {} a -> s {videoWidth = a} :: VideoConfiguration)++instance Data.FromJSON VideoConfiguration where+  parseJSON =+    Data.withObject+      "VideoConfiguration"+      ( \x ->+          VideoConfiguration'+            Prelude.<$> (x Data..:? "avcLevel")+            Prelude.<*> (x Data..:? "avcProfile")+            Prelude.<*> (x Data..:? "codec")+            Prelude.<*> (x Data..:? "encoder")+            Prelude.<*> (x Data..:? "targetBitrate")+            Prelude.<*> (x Data..:? "targetFramerate")+            Prelude.<*> (x Data..:? "videoHeight")+            Prelude.<*> (x Data..:? "videoWidth")+      )++instance Prelude.Hashable VideoConfiguration where+  hashWithSalt _salt VideoConfiguration' {..} =+    _salt+      `Prelude.hashWithSalt` avcLevel+      `Prelude.hashWithSalt` avcProfile+      `Prelude.hashWithSalt` codec+      `Prelude.hashWithSalt` encoder+      `Prelude.hashWithSalt` targetBitrate+      `Prelude.hashWithSalt` targetFramerate+      `Prelude.hashWithSalt` videoHeight+      `Prelude.hashWithSalt` videoWidth++instance Prelude.NFData VideoConfiguration where+  rnf VideoConfiguration' {..} =+    Prelude.rnf avcLevel+      `Prelude.seq` Prelude.rnf avcProfile+      `Prelude.seq` Prelude.rnf codec+      `Prelude.seq` Prelude.rnf encoder+      `Prelude.seq` Prelude.rnf targetBitrate+      `Prelude.seq` Prelude.rnf targetFramerate+      `Prelude.seq` Prelude.rnf videoHeight+      `Prelude.seq` Prelude.rnf videoWidth
+ gen/Amazonka/IVS/UntagResource.hs view
@@ -0,0 +1,176 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.IVS.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 tags from the resource with the specified ARN.+module Amazonka.IVS.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.IVS.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'+  { -- | ARN of the resource for which tags are to be removed. The ARN must be+    -- URL-encoded.+    resourceArn :: Prelude.Text,+    -- | Array of tags to be removed. See+    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+    -- for more information, including restrictions that apply to tags and+    -- \"Tag naming limits and requirements\"; Amazon IVS has no+    -- service-specific constraints beyond what is documented there.+    tagKeys :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'untagResource_resourceArn' - ARN of the resource for which tags are to be removed. The ARN must be+-- URL-encoded.+--+-- 'tagKeys', 'untagResource_tagKeys' - Array of tags to be removed. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Prelude.mempty+    }++-- | ARN of the resource for which tags are to be removed. The ARN must be+-- URL-encoded.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | Array of tags to be removed. See+-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services Resources>+-- for more information, including restrictions that apply to tags and+-- \"Tag naming limits and requirements\"; Amazon IVS has no+-- service-specific constraints beyond what is documented there.+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath UntagResource where+  toPath 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/IVS/UpdateChannel.hs view
@@ -0,0 +1,298 @@+{-# 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.IVS.UpdateChannel+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Updates a channel\'s configuration. This does not affect an ongoing+-- stream of this channel. You must stop and restart the stream for the+-- changes to take effect.+module Amazonka.IVS.UpdateChannel+  ( -- * Creating a Request+    UpdateChannel (..),+    newUpdateChannel,++    -- * Request Lenses+    updateChannel_authorized,+    updateChannel_latencyMode,+    updateChannel_name,+    updateChannel_recordingConfigurationArn,+    updateChannel_type,+    updateChannel_arn,++    -- * Destructuring the Response+    UpdateChannelResponse (..),+    newUpdateChannelResponse,++    -- * Response Lenses+    updateChannelResponse_channel,+    updateChannelResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUpdateChannel' smart constructor.+data UpdateChannel = UpdateChannel'+  { -- | Whether the channel is private (enabled for playback authorization).+    authorized :: Prelude.Maybe Prelude.Bool,+    -- | Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+    -- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+    -- (Note: In the Amazon IVS console, @LOW@ and @NORMAL@ correspond to+    -- Ultra-low and Standard, respectively.)+    latencyMode :: Prelude.Maybe ChannelLatencyMode,+    -- | Channel name.+    name :: Prelude.Maybe Prelude.Text,+    -- | Recording-configuration ARN. If this is set to an empty string,+    -- recording is disabled. A value other than an empty string indicates that+    -- recording is enabled+    recordingConfigurationArn :: Prelude.Maybe Prelude.Text,+    -- | Channel type, which determines the allowable resolution and bitrate. /If+    -- you exceed the allowable resolution or bitrate, the stream probably will+    -- disconnect immediately/. Valid values:+    --+    -- -   @STANDARD@: Video is transcoded: multiple qualities are generated+    --     from the original input, to automatically give viewers the best+    --     experience for their devices and network conditions. Transcoding+    --     allows higher playback quality across a range of download speeds.+    --     Resolution can be up to 1080p and bitrate can be up to 8.5 Mbps.+    --     Audio is transcoded only for renditions 360p and below; above that,+    --     audio is passed through. This is the default.+    --+    -- -   @BASIC@: Video is transmuxed: Amazon IVS delivers the original input+    --     to viewers. The viewer’s video-quality choice is limited to the+    --     original input. Resolution can be up to 1080p and bitrate can be up+    --     to 1.5 Mbps for 480p and up to 3.5 Mbps for resolutions between 480p+    --     and 1080p.+    type' :: Prelude.Maybe ChannelType,+    -- | ARN of the channel to be updated.+    arn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateChannel' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'authorized', 'updateChannel_authorized' - Whether the channel is private (enabled for playback authorization).+--+-- 'latencyMode', 'updateChannel_latencyMode' - Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+-- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+-- (Note: In the Amazon IVS console, @LOW@ and @NORMAL@ correspond to+-- Ultra-low and Standard, respectively.)+--+-- 'name', 'updateChannel_name' - Channel name.+--+-- 'recordingConfigurationArn', 'updateChannel_recordingConfigurationArn' - Recording-configuration ARN. If this is set to an empty string,+-- recording is disabled. A value other than an empty string indicates that+-- recording is enabled+--+-- 'type'', 'updateChannel_type' - Channel type, which determines the allowable resolution and bitrate. /If+-- you exceed the allowable resolution or bitrate, the stream probably will+-- disconnect immediately/. Valid values:+--+-- -   @STANDARD@: Video is transcoded: multiple qualities are generated+--     from the original input, to automatically give viewers the best+--     experience for their devices and network conditions. Transcoding+--     allows higher playback quality across a range of download speeds.+--     Resolution can be up to 1080p and bitrate can be up to 8.5 Mbps.+--     Audio is transcoded only for renditions 360p and below; above that,+--     audio is passed through. This is the default.+--+-- -   @BASIC@: Video is transmuxed: Amazon IVS delivers the original input+--     to viewers. The viewer’s video-quality choice is limited to the+--     original input. Resolution can be up to 1080p and bitrate can be up+--     to 1.5 Mbps for 480p and up to 3.5 Mbps for resolutions between 480p+--     and 1080p.+--+-- 'arn', 'updateChannel_arn' - ARN of the channel to be updated.+newUpdateChannel ::+  -- | 'arn'+  Prelude.Text ->+  UpdateChannel+newUpdateChannel pArn_ =+  UpdateChannel'+    { authorized = Prelude.Nothing,+      latencyMode = Prelude.Nothing,+      name = Prelude.Nothing,+      recordingConfigurationArn = Prelude.Nothing,+      type' = Prelude.Nothing,+      arn = pArn_+    }++-- | Whether the channel is private (enabled for playback authorization).+updateChannel_authorized :: Lens.Lens' UpdateChannel (Prelude.Maybe Prelude.Bool)+updateChannel_authorized = Lens.lens (\UpdateChannel' {authorized} -> authorized) (\s@UpdateChannel' {} a -> s {authorized = a} :: UpdateChannel)++-- | Channel latency mode. Use @NORMAL@ to broadcast and deliver live video+-- up to Full HD. Use @LOW@ for near-real-time interaction with viewers.+-- (Note: In the Amazon IVS console, @LOW@ and @NORMAL@ correspond to+-- Ultra-low and Standard, respectively.)+updateChannel_latencyMode :: Lens.Lens' UpdateChannel (Prelude.Maybe ChannelLatencyMode)+updateChannel_latencyMode = Lens.lens (\UpdateChannel' {latencyMode} -> latencyMode) (\s@UpdateChannel' {} a -> s {latencyMode = a} :: UpdateChannel)++-- | Channel name.+updateChannel_name :: Lens.Lens' UpdateChannel (Prelude.Maybe Prelude.Text)+updateChannel_name = Lens.lens (\UpdateChannel' {name} -> name) (\s@UpdateChannel' {} a -> s {name = a} :: UpdateChannel)++-- | Recording-configuration ARN. If this is set to an empty string,+-- recording is disabled. A value other than an empty string indicates that+-- recording is enabled+updateChannel_recordingConfigurationArn :: Lens.Lens' UpdateChannel (Prelude.Maybe Prelude.Text)+updateChannel_recordingConfigurationArn = Lens.lens (\UpdateChannel' {recordingConfigurationArn} -> recordingConfigurationArn) (\s@UpdateChannel' {} a -> s {recordingConfigurationArn = a} :: UpdateChannel)++-- | Channel type, which determines the allowable resolution and bitrate. /If+-- you exceed the allowable resolution or bitrate, the stream probably will+-- disconnect immediately/. Valid values:+--+-- -   @STANDARD@: Video is transcoded: multiple qualities are generated+--     from the original input, to automatically give viewers the best+--     experience for their devices and network conditions. Transcoding+--     allows higher playback quality across a range of download speeds.+--     Resolution can be up to 1080p and bitrate can be up to 8.5 Mbps.+--     Audio is transcoded only for renditions 360p and below; above that,+--     audio is passed through. This is the default.+--+-- -   @BASIC@: Video is transmuxed: Amazon IVS delivers the original input+--     to viewers. The viewer’s video-quality choice is limited to the+--     original input. Resolution can be up to 1080p and bitrate can be up+--     to 1.5 Mbps for 480p and up to 3.5 Mbps for resolutions between 480p+--     and 1080p.+updateChannel_type :: Lens.Lens' UpdateChannel (Prelude.Maybe ChannelType)+updateChannel_type = Lens.lens (\UpdateChannel' {type'} -> type') (\s@UpdateChannel' {} a -> s {type' = a} :: UpdateChannel)++-- | ARN of the channel to be updated.+updateChannel_arn :: Lens.Lens' UpdateChannel Prelude.Text+updateChannel_arn = Lens.lens (\UpdateChannel' {arn} -> arn) (\s@UpdateChannel' {} a -> s {arn = a} :: UpdateChannel)++instance Core.AWSRequest UpdateChannel where+  type+    AWSResponse UpdateChannel =+      UpdateChannelResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UpdateChannelResponse'+            Prelude.<$> (x Data..?> "channel")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateChannel where+  hashWithSalt _salt UpdateChannel' {..} =+    _salt+      `Prelude.hashWithSalt` authorized+      `Prelude.hashWithSalt` latencyMode+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` recordingConfigurationArn+      `Prelude.hashWithSalt` type'+      `Prelude.hashWithSalt` arn++instance Prelude.NFData UpdateChannel where+  rnf UpdateChannel' {..} =+    Prelude.rnf authorized+      `Prelude.seq` Prelude.rnf latencyMode+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf recordingConfigurationArn+      `Prelude.seq` Prelude.rnf type'+      `Prelude.seq` Prelude.rnf arn++instance Data.ToHeaders UpdateChannel where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateChannel where+  toJSON UpdateChannel' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("authorized" Data..=) Prelude.<$> authorized,+            ("latencyMode" Data..=) Prelude.<$> latencyMode,+            ("name" Data..=) Prelude.<$> name,+            ("recordingConfigurationArn" Data..=)+              Prelude.<$> recordingConfigurationArn,+            ("type" Data..=) Prelude.<$> type',+            Prelude.Just ("arn" Data..= arn)+          ]+      )++instance Data.ToPath UpdateChannel where+  toPath = Prelude.const "/UpdateChannel"++instance Data.ToQuery UpdateChannel where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateChannelResponse' smart constructor.+data UpdateChannelResponse = UpdateChannelResponse'+  { channel :: Prelude.Maybe Channel,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateChannelResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'channel', 'updateChannelResponse_channel' - Undocumented member.+--+-- 'httpStatus', 'updateChannelResponse_httpStatus' - The response's http status code.+newUpdateChannelResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateChannelResponse+newUpdateChannelResponse pHttpStatus_ =+  UpdateChannelResponse'+    { channel = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+updateChannelResponse_channel :: Lens.Lens' UpdateChannelResponse (Prelude.Maybe Channel)+updateChannelResponse_channel = Lens.lens (\UpdateChannelResponse' {channel} -> channel) (\s@UpdateChannelResponse' {} a -> s {channel = a} :: UpdateChannelResponse)++-- | The response's http status code.+updateChannelResponse_httpStatus :: Lens.Lens' UpdateChannelResponse Prelude.Int+updateChannelResponse_httpStatus = Lens.lens (\UpdateChannelResponse' {httpStatus} -> httpStatus) (\s@UpdateChannelResponse' {} a -> s {httpStatus = a} :: UpdateChannelResponse)++instance Prelude.NFData UpdateChannelResponse where+  rnf UpdateChannelResponse' {..} =+    Prelude.rnf channel+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/IVS/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.IVS.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.IVS.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.IVS.Lens+import Amazonka.IVS.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.IVS+import Test.Amazonka.IVS.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "IVS"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/IVS.hs view
@@ -0,0 +1,598 @@+{-# 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.IVS+-- Copyright   : (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.IVS where++import Amazonka.IVS+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.IVS.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"+--         [ requestBatchGetChannel $+--             newBatchGetChannel+--+--         , requestBatchGetStreamKey $+--             newBatchGetStreamKey+--+--         , requestCreateChannel $+--             newCreateChannel+--+--         , requestCreateRecordingConfiguration $+--             newCreateRecordingConfiguration+--+--         , requestCreateStreamKey $+--             newCreateStreamKey+--+--         , requestDeleteChannel $+--             newDeleteChannel+--+--         , requestDeletePlaybackKeyPair $+--             newDeletePlaybackKeyPair+--+--         , requestDeleteRecordingConfiguration $+--             newDeleteRecordingConfiguration+--+--         , requestDeleteStreamKey $+--             newDeleteStreamKey+--+--         , requestGetChannel $+--             newGetChannel+--+--         , requestGetPlaybackKeyPair $+--             newGetPlaybackKeyPair+--+--         , requestGetRecordingConfiguration $+--             newGetRecordingConfiguration+--+--         , requestGetStream $+--             newGetStream+--+--         , requestGetStreamKey $+--             newGetStreamKey+--+--         , requestGetStreamSession $+--             newGetStreamSession+--+--         , requestImportPlaybackKeyPair $+--             newImportPlaybackKeyPair+--+--         , requestListChannels $+--             newListChannels+--+--         , requestListPlaybackKeyPairs $+--             newListPlaybackKeyPairs+--+--         , requestListRecordingConfigurations $+--             newListRecordingConfigurations+--+--         , requestListStreamKeys $+--             newListStreamKeys+--+--         , requestListStreamSessions $+--             newListStreamSessions+--+--         , requestListStreams $+--             newListStreams+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestPutMetadata $+--             newPutMetadata+--+--         , requestStopStream $+--             newStopStream+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateChannel $+--             newUpdateChannel+--+--           ]++--     , testGroup "response"+--         [ responseBatchGetChannel $+--             newBatchGetChannelResponse+--+--         , responseBatchGetStreamKey $+--             newBatchGetStreamKeyResponse+--+--         , responseCreateChannel $+--             newCreateChannelResponse+--+--         , responseCreateRecordingConfiguration $+--             newCreateRecordingConfigurationResponse+--+--         , responseCreateStreamKey $+--             newCreateStreamKeyResponse+--+--         , responseDeleteChannel $+--             newDeleteChannelResponse+--+--         , responseDeletePlaybackKeyPair $+--             newDeletePlaybackKeyPairResponse+--+--         , responseDeleteRecordingConfiguration $+--             newDeleteRecordingConfigurationResponse+--+--         , responseDeleteStreamKey $+--             newDeleteStreamKeyResponse+--+--         , responseGetChannel $+--             newGetChannelResponse+--+--         , responseGetPlaybackKeyPair $+--             newGetPlaybackKeyPairResponse+--+--         , responseGetRecordingConfiguration $+--             newGetRecordingConfigurationResponse+--+--         , responseGetStream $+--             newGetStreamResponse+--+--         , responseGetStreamKey $+--             newGetStreamKeyResponse+--+--         , responseGetStreamSession $+--             newGetStreamSessionResponse+--+--         , responseImportPlaybackKeyPair $+--             newImportPlaybackKeyPairResponse+--+--         , responseListChannels $+--             newListChannelsResponse+--+--         , responseListPlaybackKeyPairs $+--             newListPlaybackKeyPairsResponse+--+--         , responseListRecordingConfigurations $+--             newListRecordingConfigurationsResponse+--+--         , responseListStreamKeys $+--             newListStreamKeysResponse+--+--         , responseListStreamSessions $+--             newListStreamSessionsResponse+--+--         , responseListStreams $+--             newListStreamsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responsePutMetadata $+--             newPutMetadataResponse+--+--         , responseStopStream $+--             newStopStreamResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateChannel $+--             newUpdateChannelResponse+--+--           ]+--     ]++-- Requests++requestBatchGetChannel :: BatchGetChannel -> TestTree+requestBatchGetChannel =+  req+    "BatchGetChannel"+    "fixture/BatchGetChannel.yaml"++requestBatchGetStreamKey :: BatchGetStreamKey -> TestTree+requestBatchGetStreamKey =+  req+    "BatchGetStreamKey"+    "fixture/BatchGetStreamKey.yaml"++requestCreateChannel :: CreateChannel -> TestTree+requestCreateChannel =+  req+    "CreateChannel"+    "fixture/CreateChannel.yaml"++requestCreateRecordingConfiguration :: CreateRecordingConfiguration -> TestTree+requestCreateRecordingConfiguration =+  req+    "CreateRecordingConfiguration"+    "fixture/CreateRecordingConfiguration.yaml"++requestCreateStreamKey :: CreateStreamKey -> TestTree+requestCreateStreamKey =+  req+    "CreateStreamKey"+    "fixture/CreateStreamKey.yaml"++requestDeleteChannel :: DeleteChannel -> TestTree+requestDeleteChannel =+  req+    "DeleteChannel"+    "fixture/DeleteChannel.yaml"++requestDeletePlaybackKeyPair :: DeletePlaybackKeyPair -> TestTree+requestDeletePlaybackKeyPair =+  req+    "DeletePlaybackKeyPair"+    "fixture/DeletePlaybackKeyPair.yaml"++requestDeleteRecordingConfiguration :: DeleteRecordingConfiguration -> TestTree+requestDeleteRecordingConfiguration =+  req+    "DeleteRecordingConfiguration"+    "fixture/DeleteRecordingConfiguration.yaml"++requestDeleteStreamKey :: DeleteStreamKey -> TestTree+requestDeleteStreamKey =+  req+    "DeleteStreamKey"+    "fixture/DeleteStreamKey.yaml"++requestGetChannel :: GetChannel -> TestTree+requestGetChannel =+  req+    "GetChannel"+    "fixture/GetChannel.yaml"++requestGetPlaybackKeyPair :: GetPlaybackKeyPair -> TestTree+requestGetPlaybackKeyPair =+  req+    "GetPlaybackKeyPair"+    "fixture/GetPlaybackKeyPair.yaml"++requestGetRecordingConfiguration :: GetRecordingConfiguration -> TestTree+requestGetRecordingConfiguration =+  req+    "GetRecordingConfiguration"+    "fixture/GetRecordingConfiguration.yaml"++requestGetStream :: GetStream -> TestTree+requestGetStream =+  req+    "GetStream"+    "fixture/GetStream.yaml"++requestGetStreamKey :: GetStreamKey -> TestTree+requestGetStreamKey =+  req+    "GetStreamKey"+    "fixture/GetStreamKey.yaml"++requestGetStreamSession :: GetStreamSession -> TestTree+requestGetStreamSession =+  req+    "GetStreamSession"+    "fixture/GetStreamSession.yaml"++requestImportPlaybackKeyPair :: ImportPlaybackKeyPair -> TestTree+requestImportPlaybackKeyPair =+  req+    "ImportPlaybackKeyPair"+    "fixture/ImportPlaybackKeyPair.yaml"++requestListChannels :: ListChannels -> TestTree+requestListChannels =+  req+    "ListChannels"+    "fixture/ListChannels.yaml"++requestListPlaybackKeyPairs :: ListPlaybackKeyPairs -> TestTree+requestListPlaybackKeyPairs =+  req+    "ListPlaybackKeyPairs"+    "fixture/ListPlaybackKeyPairs.yaml"++requestListRecordingConfigurations :: ListRecordingConfigurations -> TestTree+requestListRecordingConfigurations =+  req+    "ListRecordingConfigurations"+    "fixture/ListRecordingConfigurations.yaml"++requestListStreamKeys :: ListStreamKeys -> TestTree+requestListStreamKeys =+  req+    "ListStreamKeys"+    "fixture/ListStreamKeys.yaml"++requestListStreamSessions :: ListStreamSessions -> TestTree+requestListStreamSessions =+  req+    "ListStreamSessions"+    "fixture/ListStreamSessions.yaml"++requestListStreams :: ListStreams -> TestTree+requestListStreams =+  req+    "ListStreams"+    "fixture/ListStreams.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestPutMetadata :: PutMetadata -> TestTree+requestPutMetadata =+  req+    "PutMetadata"+    "fixture/PutMetadata.yaml"++requestStopStream :: StopStream -> TestTree+requestStopStream =+  req+    "StopStream"+    "fixture/StopStream.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateChannel :: UpdateChannel -> TestTree+requestUpdateChannel =+  req+    "UpdateChannel"+    "fixture/UpdateChannel.yaml"++-- Responses++responseBatchGetChannel :: BatchGetChannelResponse -> TestTree+responseBatchGetChannel =+  res+    "BatchGetChannelResponse"+    "fixture/BatchGetChannelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchGetChannel)++responseBatchGetStreamKey :: BatchGetStreamKeyResponse -> TestTree+responseBatchGetStreamKey =+  res+    "BatchGetStreamKeyResponse"+    "fixture/BatchGetStreamKeyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchGetStreamKey)++responseCreateChannel :: CreateChannelResponse -> TestTree+responseCreateChannel =+  res+    "CreateChannelResponse"+    "fixture/CreateChannelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateChannel)++responseCreateRecordingConfiguration :: CreateRecordingConfigurationResponse -> TestTree+responseCreateRecordingConfiguration =+  res+    "CreateRecordingConfigurationResponse"+    "fixture/CreateRecordingConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateRecordingConfiguration)++responseCreateStreamKey :: CreateStreamKeyResponse -> TestTree+responseCreateStreamKey =+  res+    "CreateStreamKeyResponse"+    "fixture/CreateStreamKeyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateStreamKey)++responseDeleteChannel :: DeleteChannelResponse -> TestTree+responseDeleteChannel =+  res+    "DeleteChannelResponse"+    "fixture/DeleteChannelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteChannel)++responseDeletePlaybackKeyPair :: DeletePlaybackKeyPairResponse -> TestTree+responseDeletePlaybackKeyPair =+  res+    "DeletePlaybackKeyPairResponse"+    "fixture/DeletePlaybackKeyPairResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeletePlaybackKeyPair)++responseDeleteRecordingConfiguration :: DeleteRecordingConfigurationResponse -> TestTree+responseDeleteRecordingConfiguration =+  res+    "DeleteRecordingConfigurationResponse"+    "fixture/DeleteRecordingConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteRecordingConfiguration)++responseDeleteStreamKey :: DeleteStreamKeyResponse -> TestTree+responseDeleteStreamKey =+  res+    "DeleteStreamKeyResponse"+    "fixture/DeleteStreamKeyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteStreamKey)++responseGetChannel :: GetChannelResponse -> TestTree+responseGetChannel =+  res+    "GetChannelResponse"+    "fixture/GetChannelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetChannel)++responseGetPlaybackKeyPair :: GetPlaybackKeyPairResponse -> TestTree+responseGetPlaybackKeyPair =+  res+    "GetPlaybackKeyPairResponse"+    "fixture/GetPlaybackKeyPairResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetPlaybackKeyPair)++responseGetRecordingConfiguration :: GetRecordingConfigurationResponse -> TestTree+responseGetRecordingConfiguration =+  res+    "GetRecordingConfigurationResponse"+    "fixture/GetRecordingConfigurationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetRecordingConfiguration)++responseGetStream :: GetStreamResponse -> TestTree+responseGetStream =+  res+    "GetStreamResponse"+    "fixture/GetStreamResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetStream)++responseGetStreamKey :: GetStreamKeyResponse -> TestTree+responseGetStreamKey =+  res+    "GetStreamKeyResponse"+    "fixture/GetStreamKeyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetStreamKey)++responseGetStreamSession :: GetStreamSessionResponse -> TestTree+responseGetStreamSession =+  res+    "GetStreamSessionResponse"+    "fixture/GetStreamSessionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetStreamSession)++responseImportPlaybackKeyPair :: ImportPlaybackKeyPairResponse -> TestTree+responseImportPlaybackKeyPair =+  res+    "ImportPlaybackKeyPairResponse"+    "fixture/ImportPlaybackKeyPairResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ImportPlaybackKeyPair)++responseListChannels :: ListChannelsResponse -> TestTree+responseListChannels =+  res+    "ListChannelsResponse"+    "fixture/ListChannelsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListChannels)++responseListPlaybackKeyPairs :: ListPlaybackKeyPairsResponse -> TestTree+responseListPlaybackKeyPairs =+  res+    "ListPlaybackKeyPairsResponse"+    "fixture/ListPlaybackKeyPairsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListPlaybackKeyPairs)++responseListRecordingConfigurations :: ListRecordingConfigurationsResponse -> TestTree+responseListRecordingConfigurations =+  res+    "ListRecordingConfigurationsResponse"+    "fixture/ListRecordingConfigurationsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListRecordingConfigurations)++responseListStreamKeys :: ListStreamKeysResponse -> TestTree+responseListStreamKeys =+  res+    "ListStreamKeysResponse"+    "fixture/ListStreamKeysResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListStreamKeys)++responseListStreamSessions :: ListStreamSessionsResponse -> TestTree+responseListStreamSessions =+  res+    "ListStreamSessionsResponse"+    "fixture/ListStreamSessionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListStreamSessions)++responseListStreams :: ListStreamsResponse -> TestTree+responseListStreams =+  res+    "ListStreamsResponse"+    "fixture/ListStreamsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListStreams)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responsePutMetadata :: PutMetadataResponse -> TestTree+responsePutMetadata =+  res+    "PutMetadataResponse"+    "fixture/PutMetadataResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutMetadata)++responseStopStream :: StopStreamResponse -> TestTree+responseStopStream =+  res+    "StopStreamResponse"+    "fixture/StopStreamResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy StopStream)++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)++responseUpdateChannel :: UpdateChannelResponse -> TestTree+responseUpdateChannel =+  res+    "UpdateChannelResponse"+    "fixture/UpdateChannelResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateChannel)
+ test/Test/Amazonka/IVS.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.IVS+-- Copyright   : (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.IVS+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/IVS/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.IVS.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.IVS.Internal where