packages feed

amazonka-ecr-public (empty) → 2.0

raw patch · 101 files changed

+10315/−0 lines, 101 filesdep +amazonka-coredep +amazonka-ecr-publicdep +amazonka-test

Dependencies added: amazonka-core, amazonka-ecr-public, 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 Elastic Container Registry Public SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2020-10-30@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-ecr-public)+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.ECRPublic](http://hackage.haskell.org/package/amazonka-ecr-public/docs/Amazonka-ECRPublic.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-ecr-public` 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-ecr-public.cabal view
@@ -0,0 +1,126 @@+cabal-version:      2.2+name:               amazonka-ecr-public+version:            2.0+synopsis:           Amazon Elastic Container Registry Public 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-10-30@ of the AWS service descriptions, licensed under Apache 2.0.+  .+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.+  .+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.+  .+  Generated lenses can be found in "Amazonka.ECRPublic.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.ECRPublic" 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-ecr-public++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.ECRPublic+    Amazonka.ECRPublic.BatchCheckLayerAvailability+    Amazonka.ECRPublic.BatchDeleteImage+    Amazonka.ECRPublic.CompleteLayerUpload+    Amazonka.ECRPublic.CreateRepository+    Amazonka.ECRPublic.DeleteRepository+    Amazonka.ECRPublic.DeleteRepositoryPolicy+    Amazonka.ECRPublic.DescribeImages+    Amazonka.ECRPublic.DescribeImageTags+    Amazonka.ECRPublic.DescribeRegistries+    Amazonka.ECRPublic.DescribeRepositories+    Amazonka.ECRPublic.GetAuthorizationToken+    Amazonka.ECRPublic.GetRegistryCatalogData+    Amazonka.ECRPublic.GetRepositoryCatalogData+    Amazonka.ECRPublic.GetRepositoryPolicy+    Amazonka.ECRPublic.InitiateLayerUpload+    Amazonka.ECRPublic.Lens+    Amazonka.ECRPublic.ListTagsForResource+    Amazonka.ECRPublic.PutImage+    Amazonka.ECRPublic.PutRegistryCatalogData+    Amazonka.ECRPublic.PutRepositoryCatalogData+    Amazonka.ECRPublic.SetRepositoryPolicy+    Amazonka.ECRPublic.TagResource+    Amazonka.ECRPublic.Types+    Amazonka.ECRPublic.Types.AuthorizationData+    Amazonka.ECRPublic.Types.Image+    Amazonka.ECRPublic.Types.ImageDetail+    Amazonka.ECRPublic.Types.ImageFailure+    Amazonka.ECRPublic.Types.ImageFailureCode+    Amazonka.ECRPublic.Types.ImageIdentifier+    Amazonka.ECRPublic.Types.ImageTagDetail+    Amazonka.ECRPublic.Types.Layer+    Amazonka.ECRPublic.Types.LayerAvailability+    Amazonka.ECRPublic.Types.LayerFailure+    Amazonka.ECRPublic.Types.LayerFailureCode+    Amazonka.ECRPublic.Types.ReferencedImageDetail+    Amazonka.ECRPublic.Types.Registry+    Amazonka.ECRPublic.Types.RegistryAlias+    Amazonka.ECRPublic.Types.RegistryAliasStatus+    Amazonka.ECRPublic.Types.RegistryCatalogData+    Amazonka.ECRPublic.Types.Repository+    Amazonka.ECRPublic.Types.RepositoryCatalogData+    Amazonka.ECRPublic.Types.RepositoryCatalogDataInput+    Amazonka.ECRPublic.Types.Tag+    Amazonka.ECRPublic.UntagResource+    Amazonka.ECRPublic.UploadLayerPart+    Amazonka.ECRPublic.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-ecr-public-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.ECRPublic+    Test.Amazonka.ECRPublic.Internal+    Test.Amazonka.Gen.ECRPublic++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-ecr-public+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/BatchCheckLayerAvailability.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/BatchCheckLayerAvailabilityResponse.proto view
+ fixture/BatchDeleteImage.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/BatchDeleteImageResponse.proto view
+ fixture/CompleteLayerUpload.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/CompleteLayerUploadResponse.proto view
+ fixture/CreateRepository.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/CreateRepositoryResponse.proto view
+ fixture/DeleteRepository.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/DeleteRepositoryPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/DeleteRepositoryPolicyResponse.proto view
+ fixture/DeleteRepositoryResponse.proto view
+ fixture/DescribeImageTags.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/DescribeImageTagsResponse.proto view
+ fixture/DescribeImages.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/DescribeImagesResponse.proto view
+ fixture/DescribeRegistries.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/DescribeRegistriesResponse.proto view
+ fixture/DescribeRepositories.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/DescribeRepositoriesResponse.proto view
+ fixture/GetAuthorizationToken.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/GetAuthorizationTokenResponse.proto view
+ fixture/GetRegistryCatalogData.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/GetRegistryCatalogDataResponse.proto view
+ fixture/GetRepositoryCatalogData.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/GetRepositoryCatalogDataResponse.proto view
+ fixture/GetRepositoryPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/GetRepositoryPolicyResponse.proto view
+ fixture/InitiateLayerUpload.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/InitiateLayerUploadResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/PutImage.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/PutImageResponse.proto view
+ fixture/PutRegistryCatalogData.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/PutRegistryCatalogDataResponse.proto view
+ fixture/PutRepositoryCatalogData.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/PutRepositoryCatalogDataResponse.proto view
+ fixture/SetRepositoryPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/SetRepositoryPolicyResponse.proto view
+ fixture/TagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.us-east-1.amazonaws.com+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8+  X-Amz-Content-SHA256:  abcdef+  X-Amz-Date:            20091028T223200Z+body:+  ''
+ fixture/TagResourceResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/UploadLayerPart.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/api.ecr-public/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+  Host:                  api.ecr-public.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/UploadLayerPartResponse.proto view
+ gen/Amazonka/ECRPublic.hs view
@@ -0,0 +1,377 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.ECRPublic+-- 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-10-30@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- Amazon Elastic Container Registry Public+--+-- Amazon Elastic Container Registry (Amazon ECR) is a managed container+-- image registry service. Amazon ECR provides both public and private+-- registries to host your container images. You can use the familiar+-- Docker CLI, or their preferred client, to push, pull, and manage images.+-- Amazon ECR provides a secure, scalable, and reliable registry for your+-- Docker or Open Container Initiative (OCI) images. Amazon ECR supports+-- public repositories with this API. For information about the Amazon ECR+-- API for private repositories, see+-- <https://docs.aws.amazon.com/AmazonECR/latest/APIReference/Welcome.html Amazon Elastic Container Registry API Reference>.+module Amazonka.ECRPublic+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** EmptyUploadException+    _EmptyUploadException,++    -- ** ImageAlreadyExistsException+    _ImageAlreadyExistsException,++    -- ** ImageDigestDoesNotMatchException+    _ImageDigestDoesNotMatchException,++    -- ** ImageNotFoundException+    _ImageNotFoundException,++    -- ** ImageTagAlreadyExistsException+    _ImageTagAlreadyExistsException,++    -- ** InvalidLayerException+    _InvalidLayerException,++    -- ** InvalidLayerPartException+    _InvalidLayerPartException,++    -- ** InvalidParameterException+    _InvalidParameterException,++    -- ** InvalidTagParameterException+    _InvalidTagParameterException,++    -- ** LayerAlreadyExistsException+    _LayerAlreadyExistsException,++    -- ** LayerPartTooSmallException+    _LayerPartTooSmallException,++    -- ** LayersNotFoundException+    _LayersNotFoundException,++    -- ** LimitExceededException+    _LimitExceededException,++    -- ** ReferencedImagesNotFoundException+    _ReferencedImagesNotFoundException,++    -- ** RegistryNotFoundException+    _RegistryNotFoundException,++    -- ** RepositoryAlreadyExistsException+    _RepositoryAlreadyExistsException,++    -- ** RepositoryNotEmptyException+    _RepositoryNotEmptyException,++    -- ** RepositoryNotFoundException+    _RepositoryNotFoundException,++    -- ** RepositoryPolicyNotFoundException+    _RepositoryPolicyNotFoundException,++    -- ** ServerException+    _ServerException,++    -- ** TooManyTagsException+    _TooManyTagsException,++    -- ** UnsupportedCommandException+    _UnsupportedCommandException,++    -- ** UploadNotFoundException+    _UploadNotFoundException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** BatchCheckLayerAvailability+    BatchCheckLayerAvailability (BatchCheckLayerAvailability'),+    newBatchCheckLayerAvailability,+    BatchCheckLayerAvailabilityResponse (BatchCheckLayerAvailabilityResponse'),+    newBatchCheckLayerAvailabilityResponse,++    -- ** BatchDeleteImage+    BatchDeleteImage (BatchDeleteImage'),+    newBatchDeleteImage,+    BatchDeleteImageResponse (BatchDeleteImageResponse'),+    newBatchDeleteImageResponse,++    -- ** CompleteLayerUpload+    CompleteLayerUpload (CompleteLayerUpload'),+    newCompleteLayerUpload,+    CompleteLayerUploadResponse (CompleteLayerUploadResponse'),+    newCompleteLayerUploadResponse,++    -- ** CreateRepository+    CreateRepository (CreateRepository'),+    newCreateRepository,+    CreateRepositoryResponse (CreateRepositoryResponse'),+    newCreateRepositoryResponse,++    -- ** DeleteRepository+    DeleteRepository (DeleteRepository'),+    newDeleteRepository,+    DeleteRepositoryResponse (DeleteRepositoryResponse'),+    newDeleteRepositoryResponse,++    -- ** DeleteRepositoryPolicy+    DeleteRepositoryPolicy (DeleteRepositoryPolicy'),+    newDeleteRepositoryPolicy,+    DeleteRepositoryPolicyResponse (DeleteRepositoryPolicyResponse'),+    newDeleteRepositoryPolicyResponse,++    -- ** DescribeImageTags (Paginated)+    DescribeImageTags (DescribeImageTags'),+    newDescribeImageTags,+    DescribeImageTagsResponse (DescribeImageTagsResponse'),+    newDescribeImageTagsResponse,++    -- ** DescribeImages (Paginated)+    DescribeImages (DescribeImages'),+    newDescribeImages,+    DescribeImagesResponse (DescribeImagesResponse'),+    newDescribeImagesResponse,++    -- ** DescribeRegistries (Paginated)+    DescribeRegistries (DescribeRegistries'),+    newDescribeRegistries,+    DescribeRegistriesResponse (DescribeRegistriesResponse'),+    newDescribeRegistriesResponse,++    -- ** DescribeRepositories (Paginated)+    DescribeRepositories (DescribeRepositories'),+    newDescribeRepositories,+    DescribeRepositoriesResponse (DescribeRepositoriesResponse'),+    newDescribeRepositoriesResponse,++    -- ** GetAuthorizationToken+    GetAuthorizationToken (GetAuthorizationToken'),+    newGetAuthorizationToken,+    GetAuthorizationTokenResponse (GetAuthorizationTokenResponse'),+    newGetAuthorizationTokenResponse,++    -- ** GetRegistryCatalogData+    GetRegistryCatalogData (GetRegistryCatalogData'),+    newGetRegistryCatalogData,+    GetRegistryCatalogDataResponse (GetRegistryCatalogDataResponse'),+    newGetRegistryCatalogDataResponse,++    -- ** GetRepositoryCatalogData+    GetRepositoryCatalogData (GetRepositoryCatalogData'),+    newGetRepositoryCatalogData,+    GetRepositoryCatalogDataResponse (GetRepositoryCatalogDataResponse'),+    newGetRepositoryCatalogDataResponse,++    -- ** GetRepositoryPolicy+    GetRepositoryPolicy (GetRepositoryPolicy'),+    newGetRepositoryPolicy,+    GetRepositoryPolicyResponse (GetRepositoryPolicyResponse'),+    newGetRepositoryPolicyResponse,++    -- ** InitiateLayerUpload+    InitiateLayerUpload (InitiateLayerUpload'),+    newInitiateLayerUpload,+    InitiateLayerUploadResponse (InitiateLayerUploadResponse'),+    newInitiateLayerUploadResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** PutImage+    PutImage (PutImage'),+    newPutImage,+    PutImageResponse (PutImageResponse'),+    newPutImageResponse,++    -- ** PutRegistryCatalogData+    PutRegistryCatalogData (PutRegistryCatalogData'),+    newPutRegistryCatalogData,+    PutRegistryCatalogDataResponse (PutRegistryCatalogDataResponse'),+    newPutRegistryCatalogDataResponse,++    -- ** PutRepositoryCatalogData+    PutRepositoryCatalogData (PutRepositoryCatalogData'),+    newPutRepositoryCatalogData,+    PutRepositoryCatalogDataResponse (PutRepositoryCatalogDataResponse'),+    newPutRepositoryCatalogDataResponse,++    -- ** SetRepositoryPolicy+    SetRepositoryPolicy (SetRepositoryPolicy'),+    newSetRepositoryPolicy,+    SetRepositoryPolicyResponse (SetRepositoryPolicyResponse'),+    newSetRepositoryPolicyResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UploadLayerPart+    UploadLayerPart (UploadLayerPart'),+    newUploadLayerPart,+    UploadLayerPartResponse (UploadLayerPartResponse'),+    newUploadLayerPartResponse,++    -- * Types++    -- ** ImageFailureCode+    ImageFailureCode (..),++    -- ** LayerAvailability+    LayerAvailability (..),++    -- ** LayerFailureCode+    LayerFailureCode (..),++    -- ** RegistryAliasStatus+    RegistryAliasStatus (..),++    -- ** AuthorizationData+    AuthorizationData (AuthorizationData'),+    newAuthorizationData,++    -- ** Image+    Image (Image'),+    newImage,++    -- ** ImageDetail+    ImageDetail (ImageDetail'),+    newImageDetail,++    -- ** ImageFailure+    ImageFailure (ImageFailure'),+    newImageFailure,++    -- ** ImageIdentifier+    ImageIdentifier (ImageIdentifier'),+    newImageIdentifier,++    -- ** ImageTagDetail+    ImageTagDetail (ImageTagDetail'),+    newImageTagDetail,++    -- ** Layer+    Layer (Layer'),+    newLayer,++    -- ** LayerFailure+    LayerFailure (LayerFailure'),+    newLayerFailure,++    -- ** ReferencedImageDetail+    ReferencedImageDetail (ReferencedImageDetail'),+    newReferencedImageDetail,++    -- ** Registry+    Registry (Registry'),+    newRegistry,++    -- ** RegistryAlias+    RegistryAlias (RegistryAlias'),+    newRegistryAlias,++    -- ** RegistryCatalogData+    RegistryCatalogData (RegistryCatalogData'),+    newRegistryCatalogData,++    -- ** Repository+    Repository (Repository'),+    newRepository,++    -- ** RepositoryCatalogData+    RepositoryCatalogData (RepositoryCatalogData'),+    newRepositoryCatalogData,++    -- ** RepositoryCatalogDataInput+    RepositoryCatalogDataInput (RepositoryCatalogDataInput'),+    newRepositoryCatalogDataInput,++    -- ** Tag+    Tag (Tag'),+    newTag,+  )+where++import Amazonka.ECRPublic.BatchCheckLayerAvailability+import Amazonka.ECRPublic.BatchDeleteImage+import Amazonka.ECRPublic.CompleteLayerUpload+import Amazonka.ECRPublic.CreateRepository+import Amazonka.ECRPublic.DeleteRepository+import Amazonka.ECRPublic.DeleteRepositoryPolicy+import Amazonka.ECRPublic.DescribeImageTags+import Amazonka.ECRPublic.DescribeImages+import Amazonka.ECRPublic.DescribeRegistries+import Amazonka.ECRPublic.DescribeRepositories+import Amazonka.ECRPublic.GetAuthorizationToken+import Amazonka.ECRPublic.GetRegistryCatalogData+import Amazonka.ECRPublic.GetRepositoryCatalogData+import Amazonka.ECRPublic.GetRepositoryPolicy+import Amazonka.ECRPublic.InitiateLayerUpload+import Amazonka.ECRPublic.Lens+import Amazonka.ECRPublic.ListTagsForResource+import Amazonka.ECRPublic.PutImage+import Amazonka.ECRPublic.PutRegistryCatalogData+import Amazonka.ECRPublic.PutRepositoryCatalogData+import Amazonka.ECRPublic.SetRepositoryPolicy+import Amazonka.ECRPublic.TagResource+import Amazonka.ECRPublic.Types+import Amazonka.ECRPublic.UntagResource+import Amazonka.ECRPublic.UploadLayerPart+import Amazonka.ECRPublic.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 'ECRPublic'.++-- $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/ECRPublic/BatchCheckLayerAvailability.hs view
@@ -0,0 +1,240 @@+{-# 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.ECRPublic.BatchCheckLayerAvailability+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Checks the availability of one or more image layers within a repository+-- in a public registry. When an image is pushed to a repository, each+-- image layer is checked to verify if it has been uploaded before. If it+-- has been uploaded, then the image layer is skipped.+--+-- This operation is used by the Amazon ECR proxy and is not generally used+-- by customers for pulling and pushing images. In most cases, you should+-- use the @docker@ CLI to pull, tag, and push images.+module Amazonka.ECRPublic.BatchCheckLayerAvailability+  ( -- * Creating a Request+    BatchCheckLayerAvailability (..),+    newBatchCheckLayerAvailability,++    -- * Request Lenses+    batchCheckLayerAvailability_registryId,+    batchCheckLayerAvailability_repositoryName,+    batchCheckLayerAvailability_layerDigests,++    -- * Destructuring the Response+    BatchCheckLayerAvailabilityResponse (..),+    newBatchCheckLayerAvailabilityResponse,++    -- * Response Lenses+    batchCheckLayerAvailabilityResponse_failures,+    batchCheckLayerAvailabilityResponse_layers,+    batchCheckLayerAvailabilityResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchCheckLayerAvailability' smart constructor.+data BatchCheckLayerAvailability = BatchCheckLayerAvailability'+  { -- | The AWS account ID associated with the public registry that contains the+    -- image layers to check. If you do not specify a registry, the default+    -- public registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository that is associated with the image layers to+    -- check.+    repositoryName :: Prelude.Text,+    -- | The digests of the image layers to check.+    layerDigests :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchCheckLayerAvailability' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'registryId', 'batchCheckLayerAvailability_registryId' - The AWS account ID associated with the public registry that contains the+-- image layers to check. If you do not specify a registry, the default+-- public registry is assumed.+--+-- 'repositoryName', 'batchCheckLayerAvailability_repositoryName' - The name of the repository that is associated with the image layers to+-- check.+--+-- 'layerDigests', 'batchCheckLayerAvailability_layerDigests' - The digests of the image layers to check.+newBatchCheckLayerAvailability ::+  -- | 'repositoryName'+  Prelude.Text ->+  -- | 'layerDigests'+  Prelude.NonEmpty Prelude.Text ->+  BatchCheckLayerAvailability+newBatchCheckLayerAvailability+  pRepositoryName_+  pLayerDigests_ =+    BatchCheckLayerAvailability'+      { registryId =+          Prelude.Nothing,+        repositoryName = pRepositoryName_,+        layerDigests =+          Lens.coerced Lens.# pLayerDigests_+      }++-- | The AWS account ID associated with the public registry that contains the+-- image layers to check. If you do not specify a registry, the default+-- public registry is assumed.+batchCheckLayerAvailability_registryId :: Lens.Lens' BatchCheckLayerAvailability (Prelude.Maybe Prelude.Text)+batchCheckLayerAvailability_registryId = Lens.lens (\BatchCheckLayerAvailability' {registryId} -> registryId) (\s@BatchCheckLayerAvailability' {} a -> s {registryId = a} :: BatchCheckLayerAvailability)++-- | The name of the repository that is associated with the image layers to+-- check.+batchCheckLayerAvailability_repositoryName :: Lens.Lens' BatchCheckLayerAvailability Prelude.Text+batchCheckLayerAvailability_repositoryName = Lens.lens (\BatchCheckLayerAvailability' {repositoryName} -> repositoryName) (\s@BatchCheckLayerAvailability' {} a -> s {repositoryName = a} :: BatchCheckLayerAvailability)++-- | The digests of the image layers to check.+batchCheckLayerAvailability_layerDigests :: Lens.Lens' BatchCheckLayerAvailability (Prelude.NonEmpty Prelude.Text)+batchCheckLayerAvailability_layerDigests = Lens.lens (\BatchCheckLayerAvailability' {layerDigests} -> layerDigests) (\s@BatchCheckLayerAvailability' {} a -> s {layerDigests = a} :: BatchCheckLayerAvailability) Prelude.. Lens.coerced++instance Core.AWSRequest BatchCheckLayerAvailability where+  type+    AWSResponse BatchCheckLayerAvailability =+      BatchCheckLayerAvailabilityResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchCheckLayerAvailabilityResponse'+            Prelude.<$> (x Data..?> "failures" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "layers" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable BatchCheckLayerAvailability where+  hashWithSalt _salt BatchCheckLayerAvailability' {..} =+    _salt+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName+      `Prelude.hashWithSalt` layerDigests++instance Prelude.NFData BatchCheckLayerAvailability where+  rnf BatchCheckLayerAvailability' {..} =+    Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf layerDigests++instance Data.ToHeaders BatchCheckLayerAvailability where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.BatchCheckLayerAvailability" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchCheckLayerAvailability where+  toJSON BatchCheckLayerAvailability' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName),+            Prelude.Just ("layerDigests" Data..= layerDigests)+          ]+      )++instance Data.ToPath BatchCheckLayerAvailability where+  toPath = Prelude.const "/"++instance Data.ToQuery BatchCheckLayerAvailability where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchCheckLayerAvailabilityResponse' smart constructor.+data BatchCheckLayerAvailabilityResponse = BatchCheckLayerAvailabilityResponse'+  { -- | Any failures associated with the call.+    failures :: Prelude.Maybe [LayerFailure],+    -- | A list of image layer objects corresponding to the image layer+    -- references in the request.+    layers :: Prelude.Maybe [Layer],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchCheckLayerAvailabilityResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'failures', 'batchCheckLayerAvailabilityResponse_failures' - Any failures associated with the call.+--+-- 'layers', 'batchCheckLayerAvailabilityResponse_layers' - A list of image layer objects corresponding to the image layer+-- references in the request.+--+-- 'httpStatus', 'batchCheckLayerAvailabilityResponse_httpStatus' - The response's http status code.+newBatchCheckLayerAvailabilityResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchCheckLayerAvailabilityResponse+newBatchCheckLayerAvailabilityResponse pHttpStatus_ =+  BatchCheckLayerAvailabilityResponse'+    { failures =+        Prelude.Nothing,+      layers = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Any failures associated with the call.+batchCheckLayerAvailabilityResponse_failures :: Lens.Lens' BatchCheckLayerAvailabilityResponse (Prelude.Maybe [LayerFailure])+batchCheckLayerAvailabilityResponse_failures = Lens.lens (\BatchCheckLayerAvailabilityResponse' {failures} -> failures) (\s@BatchCheckLayerAvailabilityResponse' {} a -> s {failures = a} :: BatchCheckLayerAvailabilityResponse) Prelude.. Lens.mapping Lens.coerced++-- | A list of image layer objects corresponding to the image layer+-- references in the request.+batchCheckLayerAvailabilityResponse_layers :: Lens.Lens' BatchCheckLayerAvailabilityResponse (Prelude.Maybe [Layer])+batchCheckLayerAvailabilityResponse_layers = Lens.lens (\BatchCheckLayerAvailabilityResponse' {layers} -> layers) (\s@BatchCheckLayerAvailabilityResponse' {} a -> s {layers = a} :: BatchCheckLayerAvailabilityResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchCheckLayerAvailabilityResponse_httpStatus :: Lens.Lens' BatchCheckLayerAvailabilityResponse Prelude.Int+batchCheckLayerAvailabilityResponse_httpStatus = Lens.lens (\BatchCheckLayerAvailabilityResponse' {httpStatus} -> httpStatus) (\s@BatchCheckLayerAvailabilityResponse' {} a -> s {httpStatus = a} :: BatchCheckLayerAvailabilityResponse)++instance+  Prelude.NFData+    BatchCheckLayerAvailabilityResponse+  where+  rnf BatchCheckLayerAvailabilityResponse' {..} =+    Prelude.rnf failures+      `Prelude.seq` Prelude.rnf layers+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/BatchDeleteImage.hs view
@@ -0,0 +1,235 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.BatchDeleteImage+-- 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 list of specified images within a repository in a public+-- registry. Images are specified with either an @imageTag@ or+-- @imageDigest@.+--+-- You can remove a tag from an image by specifying the image\'s tag in+-- your request. When you remove the last tag from an image, the image is+-- deleted from your repository.+--+-- You can completely delete an image (and all of its tags) by specifying+-- the image\'s digest in your request.+module Amazonka.ECRPublic.BatchDeleteImage+  ( -- * Creating a Request+    BatchDeleteImage (..),+    newBatchDeleteImage,++    -- * Request Lenses+    batchDeleteImage_registryId,+    batchDeleteImage_repositoryName,+    batchDeleteImage_imageIds,++    -- * Destructuring the Response+    BatchDeleteImageResponse (..),+    newBatchDeleteImageResponse,++    -- * Response Lenses+    batchDeleteImageResponse_failures,+    batchDeleteImageResponse_imageIds,+    batchDeleteImageResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newBatchDeleteImage' smart constructor.+data BatchDeleteImage = BatchDeleteImage'+  { -- | The AWS account ID associated with the registry that contains the image+    -- to delete. If you do not specify a registry, the default public registry+    -- is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The repository in a public registry that contains the image to delete.+    repositoryName :: Prelude.Text,+    -- | A list of image ID references that correspond to images to delete. The+    -- format of the @imageIds@ reference is @imageTag=tag@ or+    -- @imageDigest=digest@.+    imageIds :: Prelude.NonEmpty ImageIdentifier+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDeleteImage' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'registryId', 'batchDeleteImage_registryId' - The AWS account ID associated with the registry that contains the image+-- to delete. If you do not specify a registry, the default public registry+-- is assumed.+--+-- 'repositoryName', 'batchDeleteImage_repositoryName' - The repository in a public registry that contains the image to delete.+--+-- 'imageIds', 'batchDeleteImage_imageIds' - A list of image ID references that correspond to images to delete. The+-- format of the @imageIds@ reference is @imageTag=tag@ or+-- @imageDigest=digest@.+newBatchDeleteImage ::+  -- | 'repositoryName'+  Prelude.Text ->+  -- | 'imageIds'+  Prelude.NonEmpty ImageIdentifier ->+  BatchDeleteImage+newBatchDeleteImage pRepositoryName_ pImageIds_ =+  BatchDeleteImage'+    { registryId = Prelude.Nothing,+      repositoryName = pRepositoryName_,+      imageIds = Lens.coerced Lens.# pImageIds_+    }++-- | The AWS account ID associated with the registry that contains the image+-- to delete. If you do not specify a registry, the default public registry+-- is assumed.+batchDeleteImage_registryId :: Lens.Lens' BatchDeleteImage (Prelude.Maybe Prelude.Text)+batchDeleteImage_registryId = Lens.lens (\BatchDeleteImage' {registryId} -> registryId) (\s@BatchDeleteImage' {} a -> s {registryId = a} :: BatchDeleteImage)++-- | The repository in a public registry that contains the image to delete.+batchDeleteImage_repositoryName :: Lens.Lens' BatchDeleteImage Prelude.Text+batchDeleteImage_repositoryName = Lens.lens (\BatchDeleteImage' {repositoryName} -> repositoryName) (\s@BatchDeleteImage' {} a -> s {repositoryName = a} :: BatchDeleteImage)++-- | A list of image ID references that correspond to images to delete. The+-- format of the @imageIds@ reference is @imageTag=tag@ or+-- @imageDigest=digest@.+batchDeleteImage_imageIds :: Lens.Lens' BatchDeleteImage (Prelude.NonEmpty ImageIdentifier)+batchDeleteImage_imageIds = Lens.lens (\BatchDeleteImage' {imageIds} -> imageIds) (\s@BatchDeleteImage' {} a -> s {imageIds = a} :: BatchDeleteImage) Prelude.. Lens.coerced++instance Core.AWSRequest BatchDeleteImage where+  type+    AWSResponse BatchDeleteImage =+      BatchDeleteImageResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchDeleteImageResponse'+            Prelude.<$> (x Data..?> "failures" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "imageIds")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable BatchDeleteImage where+  hashWithSalt _salt BatchDeleteImage' {..} =+    _salt+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName+      `Prelude.hashWithSalt` imageIds++instance Prelude.NFData BatchDeleteImage where+  rnf BatchDeleteImage' {..} =+    Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf imageIds++instance Data.ToHeaders BatchDeleteImage where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.BatchDeleteImage" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchDeleteImage where+  toJSON BatchDeleteImage' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName),+            Prelude.Just ("imageIds" Data..= imageIds)+          ]+      )++instance Data.ToPath BatchDeleteImage where+  toPath = Prelude.const "/"++instance Data.ToQuery BatchDeleteImage where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newBatchDeleteImageResponse' smart constructor.+data BatchDeleteImageResponse = BatchDeleteImageResponse'+  { -- | Any failures associated with the call.+    failures :: Prelude.Maybe [ImageFailure],+    -- | The image IDs of the deleted images.+    imageIds :: Prelude.Maybe (Prelude.NonEmpty ImageIdentifier),+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchDeleteImageResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'failures', 'batchDeleteImageResponse_failures' - Any failures associated with the call.+--+-- 'imageIds', 'batchDeleteImageResponse_imageIds' - The image IDs of the deleted images.+--+-- 'httpStatus', 'batchDeleteImageResponse_httpStatus' - The response's http status code.+newBatchDeleteImageResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchDeleteImageResponse+newBatchDeleteImageResponse pHttpStatus_ =+  BatchDeleteImageResponse'+    { failures =+        Prelude.Nothing,+      imageIds = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Any failures associated with the call.+batchDeleteImageResponse_failures :: Lens.Lens' BatchDeleteImageResponse (Prelude.Maybe [ImageFailure])+batchDeleteImageResponse_failures = Lens.lens (\BatchDeleteImageResponse' {failures} -> failures) (\s@BatchDeleteImageResponse' {} a -> s {failures = a} :: BatchDeleteImageResponse) Prelude.. Lens.mapping Lens.coerced++-- | The image IDs of the deleted images.+batchDeleteImageResponse_imageIds :: Lens.Lens' BatchDeleteImageResponse (Prelude.Maybe (Prelude.NonEmpty ImageIdentifier))+batchDeleteImageResponse_imageIds = Lens.lens (\BatchDeleteImageResponse' {imageIds} -> imageIds) (\s@BatchDeleteImageResponse' {} a -> s {imageIds = a} :: BatchDeleteImageResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchDeleteImageResponse_httpStatus :: Lens.Lens' BatchDeleteImageResponse Prelude.Int+batchDeleteImageResponse_httpStatus = Lens.lens (\BatchDeleteImageResponse' {httpStatus} -> httpStatus) (\s@BatchDeleteImageResponse' {} a -> s {httpStatus = a} :: BatchDeleteImageResponse)++instance Prelude.NFData BatchDeleteImageResponse where+  rnf BatchDeleteImageResponse' {..} =+    Prelude.rnf failures+      `Prelude.seq` Prelude.rnf imageIds+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/CompleteLayerUpload.hs view
@@ -0,0 +1,278 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.CompleteLayerUpload+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Informs Amazon ECR that the image layer upload has completed for a+-- specified public registry, repository name, and upload ID. You can+-- optionally provide a @sha256@ digest of the image layer for data+-- validation purposes.+--+-- When an image is pushed, the CompleteLayerUpload API is called once per+-- each new image layer to verify that the upload has completed.+--+-- This operation is used by the Amazon ECR proxy and is not generally used+-- by customers for pulling and pushing images. In most cases, you should+-- use the @docker@ CLI to pull, tag, and push images.+module Amazonka.ECRPublic.CompleteLayerUpload+  ( -- * Creating a Request+    CompleteLayerUpload (..),+    newCompleteLayerUpload,++    -- * Request Lenses+    completeLayerUpload_registryId,+    completeLayerUpload_repositoryName,+    completeLayerUpload_uploadId,+    completeLayerUpload_layerDigests,++    -- * Destructuring the Response+    CompleteLayerUploadResponse (..),+    newCompleteLayerUploadResponse,++    -- * Response Lenses+    completeLayerUploadResponse_layerDigest,+    completeLayerUploadResponse_registryId,+    completeLayerUploadResponse_repositoryName,+    completeLayerUploadResponse_uploadId,+    completeLayerUploadResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCompleteLayerUpload' smart constructor.+data CompleteLayerUpload = CompleteLayerUpload'+  { -- | The AWS account ID associated with the registry to which to upload+    -- layers. If you do not specify a registry, the default public registry is+    -- assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository in a public registry to associate with the+    -- image layer.+    repositoryName :: Prelude.Text,+    -- | The upload ID from a previous InitiateLayerUpload operation to associate+    -- with the image layer.+    uploadId :: Prelude.Text,+    -- | The @sha256@ digest of the image layer.+    layerDigests :: Prelude.NonEmpty Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CompleteLayerUpload' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'registryId', 'completeLayerUpload_registryId' - The AWS account ID associated with the registry to which to upload+-- layers. If you do not specify a registry, the default public registry is+-- assumed.+--+-- 'repositoryName', 'completeLayerUpload_repositoryName' - The name of the repository in a public registry to associate with the+-- image layer.+--+-- 'uploadId', 'completeLayerUpload_uploadId' - The upload ID from a previous InitiateLayerUpload operation to associate+-- with the image layer.+--+-- 'layerDigests', 'completeLayerUpload_layerDigests' - The @sha256@ digest of the image layer.+newCompleteLayerUpload ::+  -- | 'repositoryName'+  Prelude.Text ->+  -- | 'uploadId'+  Prelude.Text ->+  -- | 'layerDigests'+  Prelude.NonEmpty Prelude.Text ->+  CompleteLayerUpload+newCompleteLayerUpload+  pRepositoryName_+  pUploadId_+  pLayerDigests_ =+    CompleteLayerUpload'+      { registryId = Prelude.Nothing,+        repositoryName = pRepositoryName_,+        uploadId = pUploadId_,+        layerDigests = Lens.coerced Lens.# pLayerDigests_+      }++-- | The AWS account ID associated with the registry to which to upload+-- layers. If you do not specify a registry, the default public registry is+-- assumed.+completeLayerUpload_registryId :: Lens.Lens' CompleteLayerUpload (Prelude.Maybe Prelude.Text)+completeLayerUpload_registryId = Lens.lens (\CompleteLayerUpload' {registryId} -> registryId) (\s@CompleteLayerUpload' {} a -> s {registryId = a} :: CompleteLayerUpload)++-- | The name of the repository in a public registry to associate with the+-- image layer.+completeLayerUpload_repositoryName :: Lens.Lens' CompleteLayerUpload Prelude.Text+completeLayerUpload_repositoryName = Lens.lens (\CompleteLayerUpload' {repositoryName} -> repositoryName) (\s@CompleteLayerUpload' {} a -> s {repositoryName = a} :: CompleteLayerUpload)++-- | The upload ID from a previous InitiateLayerUpload operation to associate+-- with the image layer.+completeLayerUpload_uploadId :: Lens.Lens' CompleteLayerUpload Prelude.Text+completeLayerUpload_uploadId = Lens.lens (\CompleteLayerUpload' {uploadId} -> uploadId) (\s@CompleteLayerUpload' {} a -> s {uploadId = a} :: CompleteLayerUpload)++-- | The @sha256@ digest of the image layer.+completeLayerUpload_layerDigests :: Lens.Lens' CompleteLayerUpload (Prelude.NonEmpty Prelude.Text)+completeLayerUpload_layerDigests = Lens.lens (\CompleteLayerUpload' {layerDigests} -> layerDigests) (\s@CompleteLayerUpload' {} a -> s {layerDigests = a} :: CompleteLayerUpload) Prelude.. Lens.coerced++instance Core.AWSRequest CompleteLayerUpload where+  type+    AWSResponse CompleteLayerUpload =+      CompleteLayerUploadResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CompleteLayerUploadResponse'+            Prelude.<$> (x Data..?> "layerDigest")+            Prelude.<*> (x Data..?> "registryId")+            Prelude.<*> (x Data..?> "repositoryName")+            Prelude.<*> (x Data..?> "uploadId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CompleteLayerUpload where+  hashWithSalt _salt CompleteLayerUpload' {..} =+    _salt+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName+      `Prelude.hashWithSalt` uploadId+      `Prelude.hashWithSalt` layerDigests++instance Prelude.NFData CompleteLayerUpload where+  rnf CompleteLayerUpload' {..} =+    Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf uploadId+      `Prelude.seq` Prelude.rnf layerDigests++instance Data.ToHeaders CompleteLayerUpload where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.CompleteLayerUpload" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CompleteLayerUpload where+  toJSON CompleteLayerUpload' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName),+            Prelude.Just ("uploadId" Data..= uploadId),+            Prelude.Just ("layerDigests" Data..= layerDigests)+          ]+      )++instance Data.ToPath CompleteLayerUpload where+  toPath = Prelude.const "/"++instance Data.ToQuery CompleteLayerUpload where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCompleteLayerUploadResponse' smart constructor.+data CompleteLayerUploadResponse = CompleteLayerUploadResponse'+  { -- | The @sha256@ digest of the image layer.+    layerDigest :: Prelude.Maybe Prelude.Text,+    -- | The public registry ID associated with the request.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The repository name associated with the request.+    repositoryName :: Prelude.Maybe Prelude.Text,+    -- | The upload ID associated with the layer.+    uploadId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CompleteLayerUploadResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'layerDigest', 'completeLayerUploadResponse_layerDigest' - The @sha256@ digest of the image layer.+--+-- 'registryId', 'completeLayerUploadResponse_registryId' - The public registry ID associated with the request.+--+-- 'repositoryName', 'completeLayerUploadResponse_repositoryName' - The repository name associated with the request.+--+-- 'uploadId', 'completeLayerUploadResponse_uploadId' - The upload ID associated with the layer.+--+-- 'httpStatus', 'completeLayerUploadResponse_httpStatus' - The response's http status code.+newCompleteLayerUploadResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CompleteLayerUploadResponse+newCompleteLayerUploadResponse pHttpStatus_ =+  CompleteLayerUploadResponse'+    { layerDigest =+        Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = Prelude.Nothing,+      uploadId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The @sha256@ digest of the image layer.+completeLayerUploadResponse_layerDigest :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)+completeLayerUploadResponse_layerDigest = Lens.lens (\CompleteLayerUploadResponse' {layerDigest} -> layerDigest) (\s@CompleteLayerUploadResponse' {} a -> s {layerDigest = a} :: CompleteLayerUploadResponse)++-- | The public registry ID associated with the request.+completeLayerUploadResponse_registryId :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)+completeLayerUploadResponse_registryId = Lens.lens (\CompleteLayerUploadResponse' {registryId} -> registryId) (\s@CompleteLayerUploadResponse' {} a -> s {registryId = a} :: CompleteLayerUploadResponse)++-- | The repository name associated with the request.+completeLayerUploadResponse_repositoryName :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)+completeLayerUploadResponse_repositoryName = Lens.lens (\CompleteLayerUploadResponse' {repositoryName} -> repositoryName) (\s@CompleteLayerUploadResponse' {} a -> s {repositoryName = a} :: CompleteLayerUploadResponse)++-- | The upload ID associated with the layer.+completeLayerUploadResponse_uploadId :: Lens.Lens' CompleteLayerUploadResponse (Prelude.Maybe Prelude.Text)+completeLayerUploadResponse_uploadId = Lens.lens (\CompleteLayerUploadResponse' {uploadId} -> uploadId) (\s@CompleteLayerUploadResponse' {} a -> s {uploadId = a} :: CompleteLayerUploadResponse)++-- | The response's http status code.+completeLayerUploadResponse_httpStatus :: Lens.Lens' CompleteLayerUploadResponse Prelude.Int+completeLayerUploadResponse_httpStatus = Lens.lens (\CompleteLayerUploadResponse' {httpStatus} -> httpStatus) (\s@CompleteLayerUploadResponse' {} a -> s {httpStatus = a} :: CompleteLayerUploadResponse)++instance Prelude.NFData CompleteLayerUploadResponse where+  rnf CompleteLayerUploadResponse' {..} =+    Prelude.rnf layerDigest+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf uploadId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/CreateRepository.hs view
@@ -0,0 +1,237 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.CreateRepository+-- 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 repository in a public registry. For more information, see+-- <https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html Amazon ECR repositories>+-- in the /Amazon Elastic Container Registry User Guide/.+module Amazonka.ECRPublic.CreateRepository+  ( -- * Creating a Request+    CreateRepository (..),+    newCreateRepository,++    -- * Request Lenses+    createRepository_catalogData,+    createRepository_tags,+    createRepository_repositoryName,++    -- * Destructuring the Response+    CreateRepositoryResponse (..),+    newCreateRepositoryResponse,++    -- * Response Lenses+    createRepositoryResponse_catalogData,+    createRepositoryResponse_repository,+    createRepositoryResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newCreateRepository' smart constructor.+data CreateRepository = CreateRepository'+  { -- | The details about the repository that are publicly visible in the Amazon+    -- ECR Public Gallery.+    catalogData :: Prelude.Maybe RepositoryCatalogDataInput,+    -- | The metadata that you apply to the repository to help you categorize and+    -- organize them. Each tag consists of a key and an optional value, both of+    -- which you define. Tag keys can have a maximum character length of 128+    -- characters, and tag values can have a maximum length of 256 characters.+    tags :: Prelude.Maybe [Tag],+    -- | The name to use for the repository. This appears publicly in the Amazon+    -- ECR Public Gallery. The repository name may be specified on its own+    -- (such as @nginx-web-app@) or it can be prepended with a namespace to+    -- group the repository into a category (such as+    -- @project-a\/nginx-web-app@).+    repositoryName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateRepository' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogData', 'createRepository_catalogData' - The details about the repository that are publicly visible in the Amazon+-- ECR Public Gallery.+--+-- 'tags', 'createRepository_tags' - The metadata that you apply to the repository to help you categorize and+-- organize them. Each tag consists of a key and an optional value, both of+-- which you define. Tag keys can have a maximum character length of 128+-- characters, and tag values can have a maximum length of 256 characters.+--+-- 'repositoryName', 'createRepository_repositoryName' - The name to use for the repository. This appears publicly in the Amazon+-- ECR Public Gallery. The repository name may be specified on its own+-- (such as @nginx-web-app@) or it can be prepended with a namespace to+-- group the repository into a category (such as+-- @project-a\/nginx-web-app@).+newCreateRepository ::+  -- | 'repositoryName'+  Prelude.Text ->+  CreateRepository+newCreateRepository pRepositoryName_ =+  CreateRepository'+    { catalogData = Prelude.Nothing,+      tags = Prelude.Nothing,+      repositoryName = pRepositoryName_+    }++-- | The details about the repository that are publicly visible in the Amazon+-- ECR Public Gallery.+createRepository_catalogData :: Lens.Lens' CreateRepository (Prelude.Maybe RepositoryCatalogDataInput)+createRepository_catalogData = Lens.lens (\CreateRepository' {catalogData} -> catalogData) (\s@CreateRepository' {} a -> s {catalogData = a} :: CreateRepository)++-- | The metadata that you apply to the repository to help you categorize and+-- organize them. Each tag consists of a key and an optional value, both of+-- which you define. Tag keys can have a maximum character length of 128+-- characters, and tag values can have a maximum length of 256 characters.+createRepository_tags :: Lens.Lens' CreateRepository (Prelude.Maybe [Tag])+createRepository_tags = Lens.lens (\CreateRepository' {tags} -> tags) (\s@CreateRepository' {} a -> s {tags = a} :: CreateRepository) Prelude.. Lens.mapping Lens.coerced++-- | The name to use for the repository. This appears publicly in the Amazon+-- ECR Public Gallery. The repository name may be specified on its own+-- (such as @nginx-web-app@) or it can be prepended with a namespace to+-- group the repository into a category (such as+-- @project-a\/nginx-web-app@).+createRepository_repositoryName :: Lens.Lens' CreateRepository Prelude.Text+createRepository_repositoryName = Lens.lens (\CreateRepository' {repositoryName} -> repositoryName) (\s@CreateRepository' {} a -> s {repositoryName = a} :: CreateRepository)++instance Core.AWSRequest CreateRepository where+  type+    AWSResponse CreateRepository =+      CreateRepositoryResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateRepositoryResponse'+            Prelude.<$> (x Data..?> "catalogData")+            Prelude.<*> (x Data..?> "repository")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateRepository where+  hashWithSalt _salt CreateRepository' {..} =+    _salt+      `Prelude.hashWithSalt` catalogData+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` repositoryName++instance Prelude.NFData CreateRepository where+  rnf CreateRepository' {..} =+    Prelude.rnf catalogData+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf repositoryName++instance Data.ToHeaders CreateRepository where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.CreateRepository" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateRepository where+  toJSON CreateRepository' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("catalogData" Data..=) Prelude.<$> catalogData,+            ("tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("repositoryName" Data..= repositoryName)+          ]+      )++instance Data.ToPath CreateRepository where+  toPath = Prelude.const "/"++instance Data.ToQuery CreateRepository where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateRepositoryResponse' smart constructor.+data CreateRepositoryResponse = CreateRepositoryResponse'+  { catalogData :: Prelude.Maybe RepositoryCatalogData,+    -- | The repository that was created.+    repository :: Prelude.Maybe Repository,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateRepositoryResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogData', 'createRepositoryResponse_catalogData' - Undocumented member.+--+-- 'repository', 'createRepositoryResponse_repository' - The repository that was created.+--+-- 'httpStatus', 'createRepositoryResponse_httpStatus' - The response's http status code.+newCreateRepositoryResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateRepositoryResponse+newCreateRepositoryResponse pHttpStatus_ =+  CreateRepositoryResponse'+    { catalogData =+        Prelude.Nothing,+      repository = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Undocumented member.+createRepositoryResponse_catalogData :: Lens.Lens' CreateRepositoryResponse (Prelude.Maybe RepositoryCatalogData)+createRepositoryResponse_catalogData = Lens.lens (\CreateRepositoryResponse' {catalogData} -> catalogData) (\s@CreateRepositoryResponse' {} a -> s {catalogData = a} :: CreateRepositoryResponse)++-- | The repository that was created.+createRepositoryResponse_repository :: Lens.Lens' CreateRepositoryResponse (Prelude.Maybe Repository)+createRepositoryResponse_repository = Lens.lens (\CreateRepositoryResponse' {repository} -> repository) (\s@CreateRepositoryResponse' {} a -> s {repository = a} :: CreateRepositoryResponse)++-- | The response's http status code.+createRepositoryResponse_httpStatus :: Lens.Lens' CreateRepositoryResponse Prelude.Int+createRepositoryResponse_httpStatus = Lens.lens (\CreateRepositoryResponse' {httpStatus} -> httpStatus) (\s@CreateRepositoryResponse' {} a -> s {httpStatus = a} :: CreateRepositoryResponse)++instance Prelude.NFData CreateRepositoryResponse where+  rnf CreateRepositoryResponse' {..} =+    Prelude.rnf catalogData+      `Prelude.seq` Prelude.rnf repository+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/DeleteRepository.hs view
@@ -0,0 +1,209 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.DeleteRepository+-- 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 repository in a public registry. If the repository contains+-- images, you must either delete all images in the repository or use the+-- @force@ option which deletes all images on your behalf before deleting+-- the repository.+module Amazonka.ECRPublic.DeleteRepository+  ( -- * Creating a Request+    DeleteRepository (..),+    newDeleteRepository,++    -- * Request Lenses+    deleteRepository_force,+    deleteRepository_registryId,+    deleteRepository_repositoryName,++    -- * Destructuring the Response+    DeleteRepositoryResponse (..),+    newDeleteRepositoryResponse,++    -- * Response Lenses+    deleteRepositoryResponse_repository,+    deleteRepositoryResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteRepository' smart constructor.+data DeleteRepository = DeleteRepository'+  { -- | If a repository contains images, forces the deletion.+    force :: Prelude.Maybe Prelude.Bool,+    -- | The AWS account ID associated with the public registry that contains the+    -- repository to delete. If you do not specify a registry, the default+    -- public registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository to delete.+    repositoryName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRepository' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'force', 'deleteRepository_force' - If a repository contains images, forces the deletion.+--+-- 'registryId', 'deleteRepository_registryId' - The AWS account ID associated with the public registry that contains the+-- repository to delete. If you do not specify a registry, the default+-- public registry is assumed.+--+-- 'repositoryName', 'deleteRepository_repositoryName' - The name of the repository to delete.+newDeleteRepository ::+  -- | 'repositoryName'+  Prelude.Text ->+  DeleteRepository+newDeleteRepository pRepositoryName_ =+  DeleteRepository'+    { force = Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = pRepositoryName_+    }++-- | If a repository contains images, forces the deletion.+deleteRepository_force :: Lens.Lens' DeleteRepository (Prelude.Maybe Prelude.Bool)+deleteRepository_force = Lens.lens (\DeleteRepository' {force} -> force) (\s@DeleteRepository' {} a -> s {force = a} :: DeleteRepository)++-- | The AWS account ID associated with the public registry that contains the+-- repository to delete. If you do not specify a registry, the default+-- public registry is assumed.+deleteRepository_registryId :: Lens.Lens' DeleteRepository (Prelude.Maybe Prelude.Text)+deleteRepository_registryId = Lens.lens (\DeleteRepository' {registryId} -> registryId) (\s@DeleteRepository' {} a -> s {registryId = a} :: DeleteRepository)++-- | The name of the repository to delete.+deleteRepository_repositoryName :: Lens.Lens' DeleteRepository Prelude.Text+deleteRepository_repositoryName = Lens.lens (\DeleteRepository' {repositoryName} -> repositoryName) (\s@DeleteRepository' {} a -> s {repositoryName = a} :: DeleteRepository)++instance Core.AWSRequest DeleteRepository where+  type+    AWSResponse DeleteRepository =+      DeleteRepositoryResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteRepositoryResponse'+            Prelude.<$> (x Data..?> "repository")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteRepository where+  hashWithSalt _salt DeleteRepository' {..} =+    _salt+      `Prelude.hashWithSalt` force+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName++instance Prelude.NFData DeleteRepository where+  rnf DeleteRepository' {..} =+    Prelude.rnf force+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName++instance Data.ToHeaders DeleteRepository where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.DeleteRepository" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteRepository where+  toJSON DeleteRepository' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("force" Data..=) Prelude.<$> force,+            ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName)+          ]+      )++instance Data.ToPath DeleteRepository where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteRepository where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteRepositoryResponse' smart constructor.+data DeleteRepositoryResponse = DeleteRepositoryResponse'+  { -- | The repository that was deleted.+    repository :: Prelude.Maybe Repository,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRepositoryResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'repository', 'deleteRepositoryResponse_repository' - The repository that was deleted.+--+-- 'httpStatus', 'deleteRepositoryResponse_httpStatus' - The response's http status code.+newDeleteRepositoryResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteRepositoryResponse+newDeleteRepositoryResponse pHttpStatus_ =+  DeleteRepositoryResponse'+    { repository =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The repository that was deleted.+deleteRepositoryResponse_repository :: Lens.Lens' DeleteRepositoryResponse (Prelude.Maybe Repository)+deleteRepositoryResponse_repository = Lens.lens (\DeleteRepositoryResponse' {repository} -> repository) (\s@DeleteRepositoryResponse' {} a -> s {repository = a} :: DeleteRepositoryResponse)++-- | The response's http status code.+deleteRepositoryResponse_httpStatus :: Lens.Lens' DeleteRepositoryResponse Prelude.Int+deleteRepositoryResponse_httpStatus = Lens.lens (\DeleteRepositoryResponse' {httpStatus} -> httpStatus) (\s@DeleteRepositoryResponse' {} a -> s {httpStatus = a} :: DeleteRepositoryResponse)++instance Prelude.NFData DeleteRepositoryResponse where+  rnf DeleteRepositoryResponse' {..} =+    Prelude.rnf repository+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/DeleteRepositoryPolicy.hs view
@@ -0,0 +1,224 @@+{-# 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.ECRPublic.DeleteRepositoryPolicy+-- 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 repository policy associated with the specified repository.+module Amazonka.ECRPublic.DeleteRepositoryPolicy+  ( -- * Creating a Request+    DeleteRepositoryPolicy (..),+    newDeleteRepositoryPolicy,++    -- * Request Lenses+    deleteRepositoryPolicy_registryId,+    deleteRepositoryPolicy_repositoryName,++    -- * Destructuring the Response+    DeleteRepositoryPolicyResponse (..),+    newDeleteRepositoryPolicyResponse,++    -- * Response Lenses+    deleteRepositoryPolicyResponse_policyText,+    deleteRepositoryPolicyResponse_registryId,+    deleteRepositoryPolicyResponse_repositoryName,+    deleteRepositoryPolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDeleteRepositoryPolicy' smart constructor.+data DeleteRepositoryPolicy = DeleteRepositoryPolicy'+  { -- | The AWS account ID associated with the public registry that contains the+    -- repository policy to delete. If you do not specify a registry, the+    -- default public registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository that is associated with the repository policy+    -- to delete.+    repositoryName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRepositoryPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'registryId', 'deleteRepositoryPolicy_registryId' - The AWS account ID associated with the public registry that contains the+-- repository policy to delete. If you do not specify a registry, the+-- default public registry is assumed.+--+-- 'repositoryName', 'deleteRepositoryPolicy_repositoryName' - The name of the repository that is associated with the repository policy+-- to delete.+newDeleteRepositoryPolicy ::+  -- | 'repositoryName'+  Prelude.Text ->+  DeleteRepositoryPolicy+newDeleteRepositoryPolicy pRepositoryName_ =+  DeleteRepositoryPolicy'+    { registryId =+        Prelude.Nothing,+      repositoryName = pRepositoryName_+    }++-- | The AWS account ID associated with the public registry that contains the+-- repository policy to delete. If you do not specify a registry, the+-- default public registry is assumed.+deleteRepositoryPolicy_registryId :: Lens.Lens' DeleteRepositoryPolicy (Prelude.Maybe Prelude.Text)+deleteRepositoryPolicy_registryId = Lens.lens (\DeleteRepositoryPolicy' {registryId} -> registryId) (\s@DeleteRepositoryPolicy' {} a -> s {registryId = a} :: DeleteRepositoryPolicy)++-- | The name of the repository that is associated with the repository policy+-- to delete.+deleteRepositoryPolicy_repositoryName :: Lens.Lens' DeleteRepositoryPolicy Prelude.Text+deleteRepositoryPolicy_repositoryName = Lens.lens (\DeleteRepositoryPolicy' {repositoryName} -> repositoryName) (\s@DeleteRepositoryPolicy' {} a -> s {repositoryName = a} :: DeleteRepositoryPolicy)++instance Core.AWSRequest DeleteRepositoryPolicy where+  type+    AWSResponse DeleteRepositoryPolicy =+      DeleteRepositoryPolicyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DeleteRepositoryPolicyResponse'+            Prelude.<$> (x Data..?> "policyText")+            Prelude.<*> (x Data..?> "registryId")+            Prelude.<*> (x Data..?> "repositoryName")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteRepositoryPolicy where+  hashWithSalt _salt DeleteRepositoryPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName++instance Prelude.NFData DeleteRepositoryPolicy where+  rnf DeleteRepositoryPolicy' {..} =+    Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName++instance Data.ToHeaders DeleteRepositoryPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.DeleteRepositoryPolicy" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DeleteRepositoryPolicy where+  toJSON DeleteRepositoryPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName)+          ]+      )++instance Data.ToPath DeleteRepositoryPolicy where+  toPath = Prelude.const "/"++instance Data.ToQuery DeleteRepositoryPolicy where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteRepositoryPolicyResponse' smart constructor.+data DeleteRepositoryPolicyResponse = DeleteRepositoryPolicyResponse'+  { -- | The JSON repository policy that was deleted from the repository.+    policyText :: Prelude.Maybe Prelude.Text,+    -- | The registry ID associated with the request.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The repository name associated with the request.+    repositoryName :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteRepositoryPolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'policyText', 'deleteRepositoryPolicyResponse_policyText' - The JSON repository policy that was deleted from the repository.+--+-- 'registryId', 'deleteRepositoryPolicyResponse_registryId' - The registry ID associated with the request.+--+-- 'repositoryName', 'deleteRepositoryPolicyResponse_repositoryName' - The repository name associated with the request.+--+-- 'httpStatus', 'deleteRepositoryPolicyResponse_httpStatus' - The response's http status code.+newDeleteRepositoryPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteRepositoryPolicyResponse+newDeleteRepositoryPolicyResponse pHttpStatus_ =+  DeleteRepositoryPolicyResponse'+    { policyText =+        Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The JSON repository policy that was deleted from the repository.+deleteRepositoryPolicyResponse_policyText :: Lens.Lens' DeleteRepositoryPolicyResponse (Prelude.Maybe Prelude.Text)+deleteRepositoryPolicyResponse_policyText = Lens.lens (\DeleteRepositoryPolicyResponse' {policyText} -> policyText) (\s@DeleteRepositoryPolicyResponse' {} a -> s {policyText = a} :: DeleteRepositoryPolicyResponse)++-- | The registry ID associated with the request.+deleteRepositoryPolicyResponse_registryId :: Lens.Lens' DeleteRepositoryPolicyResponse (Prelude.Maybe Prelude.Text)+deleteRepositoryPolicyResponse_registryId = Lens.lens (\DeleteRepositoryPolicyResponse' {registryId} -> registryId) (\s@DeleteRepositoryPolicyResponse' {} a -> s {registryId = a} :: DeleteRepositoryPolicyResponse)++-- | The repository name associated with the request.+deleteRepositoryPolicyResponse_repositoryName :: Lens.Lens' DeleteRepositoryPolicyResponse (Prelude.Maybe Prelude.Text)+deleteRepositoryPolicyResponse_repositoryName = Lens.lens (\DeleteRepositoryPolicyResponse' {repositoryName} -> repositoryName) (\s@DeleteRepositoryPolicyResponse' {} a -> s {repositoryName = a} :: DeleteRepositoryPolicyResponse)++-- | The response's http status code.+deleteRepositoryPolicyResponse_httpStatus :: Lens.Lens' DeleteRepositoryPolicyResponse Prelude.Int+deleteRepositoryPolicyResponse_httpStatus = Lens.lens (\DeleteRepositoryPolicyResponse' {httpStatus} -> httpStatus) (\s@DeleteRepositoryPolicyResponse' {} a -> s {httpStatus = a} :: DeleteRepositoryPolicyResponse)++instance+  Prelude.NFData+    DeleteRepositoryPolicyResponse+  where+  rnf DeleteRepositoryPolicyResponse' {..} =+    Prelude.rnf policyText+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/DescribeImageTags.hs view
@@ -0,0 +1,309 @@+{-# 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.ECRPublic.DescribeImageTags+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns the image tag details for a repository in a public registry.+--+-- This operation returns paginated results.+module Amazonka.ECRPublic.DescribeImageTags+  ( -- * Creating a Request+    DescribeImageTags (..),+    newDescribeImageTags,++    -- * Request Lenses+    describeImageTags_maxResults,+    describeImageTags_nextToken,+    describeImageTags_registryId,+    describeImageTags_repositoryName,++    -- * Destructuring the Response+    DescribeImageTagsResponse (..),+    newDescribeImageTagsResponse,++    -- * Response Lenses+    describeImageTagsResponse_imageTagDetails,+    describeImageTagsResponse_nextToken,+    describeImageTagsResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeImageTags' smart constructor.+data DescribeImageTags = DescribeImageTags'+  { -- | The maximum number of repository results returned by @DescribeImageTags@+    -- in paginated output. When this parameter is used, @DescribeImageTags@+    -- only returns @maxResults@ results in a single page along with a+    -- @nextToken@ response element. The remaining results of the initial+    -- request can be seen by sending another @DescribeImageTags@ request with+    -- the returned @nextToken@ value. This value can be between 1 and 1000. If+    -- this parameter is not used, then @DescribeImageTags@ returns up to 100+    -- results and a @nextToken@ value, if applicable. This option cannot be+    -- used when you specify images with @imageIds@.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @DescribeImageTags@ request where @maxResults@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value. This value+    -- is @null@ when there are no more results to return. This option cannot+    -- be used when you specify images with @imageIds@.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The AWS account ID associated with the public registry that contains the+    -- repository in which to describe images. If you do not specify a+    -- registry, the default public registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository that contains the image tag details to+    -- describe.+    repositoryName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeImageTags' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeImageTags_maxResults' - The maximum number of repository results returned by @DescribeImageTags@+-- in paginated output. When this parameter is used, @DescribeImageTags@+-- only returns @maxResults@ results in a single page along with a+-- @nextToken@ response element. The remaining results of the initial+-- request can be seen by sending another @DescribeImageTags@ request with+-- the returned @nextToken@ value. This value can be between 1 and 1000. If+-- this parameter is not used, then @DescribeImageTags@ returns up to 100+-- results and a @nextToken@ value, if applicable. This option cannot be+-- used when you specify images with @imageIds@.+--+-- 'nextToken', 'describeImageTags_nextToken' - The @nextToken@ value returned from a previous paginated+-- @DescribeImageTags@ request where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value. This value+-- is @null@ when there are no more results to return. This option cannot+-- be used when you specify images with @imageIds@.+--+-- 'registryId', 'describeImageTags_registryId' - The AWS account ID associated with the public registry that contains the+-- repository in which to describe images. If you do not specify a+-- registry, the default public registry is assumed.+--+-- 'repositoryName', 'describeImageTags_repositoryName' - The name of the repository that contains the image tag details to+-- describe.+newDescribeImageTags ::+  -- | 'repositoryName'+  Prelude.Text ->+  DescribeImageTags+newDescribeImageTags pRepositoryName_ =+  DescribeImageTags'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = pRepositoryName_+    }++-- | The maximum number of repository results returned by @DescribeImageTags@+-- in paginated output. When this parameter is used, @DescribeImageTags@+-- only returns @maxResults@ results in a single page along with a+-- @nextToken@ response element. The remaining results of the initial+-- request can be seen by sending another @DescribeImageTags@ request with+-- the returned @nextToken@ value. This value can be between 1 and 1000. If+-- this parameter is not used, then @DescribeImageTags@ returns up to 100+-- results and a @nextToken@ value, if applicable. This option cannot be+-- used when you specify images with @imageIds@.+describeImageTags_maxResults :: Lens.Lens' DescribeImageTags (Prelude.Maybe Prelude.Natural)+describeImageTags_maxResults = Lens.lens (\DescribeImageTags' {maxResults} -> maxResults) (\s@DescribeImageTags' {} a -> s {maxResults = a} :: DescribeImageTags)++-- | The @nextToken@ value returned from a previous paginated+-- @DescribeImageTags@ request where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value. This value+-- is @null@ when there are no more results to return. This option cannot+-- be used when you specify images with @imageIds@.+describeImageTags_nextToken :: Lens.Lens' DescribeImageTags (Prelude.Maybe Prelude.Text)+describeImageTags_nextToken = Lens.lens (\DescribeImageTags' {nextToken} -> nextToken) (\s@DescribeImageTags' {} a -> s {nextToken = a} :: DescribeImageTags)++-- | The AWS account ID associated with the public registry that contains the+-- repository in which to describe images. If you do not specify a+-- registry, the default public registry is assumed.+describeImageTags_registryId :: Lens.Lens' DescribeImageTags (Prelude.Maybe Prelude.Text)+describeImageTags_registryId = Lens.lens (\DescribeImageTags' {registryId} -> registryId) (\s@DescribeImageTags' {} a -> s {registryId = a} :: DescribeImageTags)++-- | The name of the repository that contains the image tag details to+-- describe.+describeImageTags_repositoryName :: Lens.Lens' DescribeImageTags Prelude.Text+describeImageTags_repositoryName = Lens.lens (\DescribeImageTags' {repositoryName} -> repositoryName) (\s@DescribeImageTags' {} a -> s {repositoryName = a} :: DescribeImageTags)++instance Core.AWSPager DescribeImageTags where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeImageTagsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeImageTagsResponse_imageTagDetails+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeImageTags_nextToken+          Lens..~ rs+          Lens.^? describeImageTagsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeImageTags where+  type+    AWSResponse DescribeImageTags =+      DescribeImageTagsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeImageTagsResponse'+            Prelude.<$> ( x+                            Data..?> "imageTagDetails"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeImageTags where+  hashWithSalt _salt DescribeImageTags' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName++instance Prelude.NFData DescribeImageTags where+  rnf DescribeImageTags' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName++instance Data.ToHeaders DescribeImageTags where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.DescribeImageTags" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeImageTags where+  toJSON DescribeImageTags' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName)+          ]+      )++instance Data.ToPath DescribeImageTags where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeImageTags where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeImageTagsResponse' smart constructor.+data DescribeImageTagsResponse = DescribeImageTagsResponse'+  { -- | The image tag details for the images in the requested repository.+    imageTagDetails :: Prelude.Maybe [ImageTagDetail],+    -- | The @nextToken@ value to include in a future @DescribeImageTags@+    -- request. When the results of a @DescribeImageTags@ request exceed+    -- @maxResults@, this value can be used to retrieve the next page of+    -- results. This value is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeImageTagsResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageTagDetails', 'describeImageTagsResponse_imageTagDetails' - The image tag details for the images in the requested repository.+--+-- 'nextToken', 'describeImageTagsResponse_nextToken' - The @nextToken@ value to include in a future @DescribeImageTags@+-- request. When the results of a @DescribeImageTags@ request exceed+-- @maxResults@, this value can be used to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+--+-- 'httpStatus', 'describeImageTagsResponse_httpStatus' - The response's http status code.+newDescribeImageTagsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeImageTagsResponse+newDescribeImageTagsResponse pHttpStatus_ =+  DescribeImageTagsResponse'+    { imageTagDetails =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The image tag details for the images in the requested repository.+describeImageTagsResponse_imageTagDetails :: Lens.Lens' DescribeImageTagsResponse (Prelude.Maybe [ImageTagDetail])+describeImageTagsResponse_imageTagDetails = Lens.lens (\DescribeImageTagsResponse' {imageTagDetails} -> imageTagDetails) (\s@DescribeImageTagsResponse' {} a -> s {imageTagDetails = a} :: DescribeImageTagsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The @nextToken@ value to include in a future @DescribeImageTags@+-- request. When the results of a @DescribeImageTags@ request exceed+-- @maxResults@, this value can be used to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+describeImageTagsResponse_nextToken :: Lens.Lens' DescribeImageTagsResponse (Prelude.Maybe Prelude.Text)+describeImageTagsResponse_nextToken = Lens.lens (\DescribeImageTagsResponse' {nextToken} -> nextToken) (\s@DescribeImageTagsResponse' {} a -> s {nextToken = a} :: DescribeImageTagsResponse)++-- | The response's http status code.+describeImageTagsResponse_httpStatus :: Lens.Lens' DescribeImageTagsResponse Prelude.Int+describeImageTagsResponse_httpStatus = Lens.lens (\DescribeImageTagsResponse' {httpStatus} -> httpStatus) (\s@DescribeImageTagsResponse' {} a -> s {httpStatus = a} :: DescribeImageTagsResponse)++instance Prelude.NFData DescribeImageTagsResponse where+  rnf DescribeImageTagsResponse' {..} =+    Prelude.rnf imageTagDetails+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/DescribeImages.hs view
@@ -0,0 +1,322 @@+{-# 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.ECRPublic.DescribeImages+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns metadata about the images in a repository in a public registry.+--+-- Beginning with Docker version 1.9, the Docker client compresses image+-- layers before pushing them to a V2 Docker registry. The output of the+-- @docker images@ command shows the uncompressed image size, so it may+-- return a larger image size than the image sizes returned by+-- DescribeImages.+--+-- This operation returns paginated results.+module Amazonka.ECRPublic.DescribeImages+  ( -- * Creating a Request+    DescribeImages (..),+    newDescribeImages,++    -- * Request Lenses+    describeImages_imageIds,+    describeImages_maxResults,+    describeImages_nextToken,+    describeImages_registryId,+    describeImages_repositoryName,++    -- * Destructuring the Response+    DescribeImagesResponse (..),+    newDescribeImagesResponse,++    -- * Response Lenses+    describeImagesResponse_imageDetails,+    describeImagesResponse_nextToken,+    describeImagesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeImages' smart constructor.+data DescribeImages = DescribeImages'+  { -- | The list of image IDs for the requested repository.+    imageIds :: Prelude.Maybe (Prelude.NonEmpty ImageIdentifier),+    -- | The maximum number of repository results returned by @DescribeImages@ in+    -- paginated output. When this parameter is used, @DescribeImages@ only+    -- returns @maxResults@ results in a single page along with a @nextToken@+    -- response element. The remaining results of the initial request can be+    -- seen by sending another @DescribeImages@ request with the returned+    -- @nextToken@ value. This value can be between 1 and 1000. If this+    -- parameter is not used, then @DescribeImages@ returns up to 100 results+    -- and a @nextToken@ value, if applicable. This option cannot be used when+    -- you specify images with @imageIds@.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @DescribeImages@ request where @maxResults@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value. This value+    -- is @null@ when there are no more results to return. This option cannot+    -- be used when you specify images with @imageIds@.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The AWS account ID associated with the public registry that contains the+    -- repository in which to describe images. If you do not specify a+    -- registry, the default public registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The repository that contains the images to describe.+    repositoryName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeImages' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageIds', 'describeImages_imageIds' - The list of image IDs for the requested repository.+--+-- 'maxResults', 'describeImages_maxResults' - The maximum number of repository results returned by @DescribeImages@ in+-- paginated output. When this parameter is used, @DescribeImages@ only+-- returns @maxResults@ results in a single page along with a @nextToken@+-- response element. The remaining results of the initial request can be+-- seen by sending another @DescribeImages@ request with the returned+-- @nextToken@ value. This value can be between 1 and 1000. If this+-- parameter is not used, then @DescribeImages@ returns up to 100 results+-- and a @nextToken@ value, if applicable. This option cannot be used when+-- you specify images with @imageIds@.+--+-- 'nextToken', 'describeImages_nextToken' - The @nextToken@ value returned from a previous paginated+-- @DescribeImages@ request where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value. This value+-- is @null@ when there are no more results to return. This option cannot+-- be used when you specify images with @imageIds@.+--+-- 'registryId', 'describeImages_registryId' - The AWS account ID associated with the public registry that contains the+-- repository in which to describe images. If you do not specify a+-- registry, the default public registry is assumed.+--+-- 'repositoryName', 'describeImages_repositoryName' - The repository that contains the images to describe.+newDescribeImages ::+  -- | 'repositoryName'+  Prelude.Text ->+  DescribeImages+newDescribeImages pRepositoryName_ =+  DescribeImages'+    { imageIds = Prelude.Nothing,+      maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = pRepositoryName_+    }++-- | The list of image IDs for the requested repository.+describeImages_imageIds :: Lens.Lens' DescribeImages (Prelude.Maybe (Prelude.NonEmpty ImageIdentifier))+describeImages_imageIds = Lens.lens (\DescribeImages' {imageIds} -> imageIds) (\s@DescribeImages' {} a -> s {imageIds = a} :: DescribeImages) Prelude.. Lens.mapping Lens.coerced++-- | The maximum number of repository results returned by @DescribeImages@ in+-- paginated output. When this parameter is used, @DescribeImages@ only+-- returns @maxResults@ results in a single page along with a @nextToken@+-- response element. The remaining results of the initial request can be+-- seen by sending another @DescribeImages@ request with the returned+-- @nextToken@ value. This value can be between 1 and 1000. If this+-- parameter is not used, then @DescribeImages@ returns up to 100 results+-- and a @nextToken@ value, if applicable. This option cannot be used when+-- you specify images with @imageIds@.+describeImages_maxResults :: Lens.Lens' DescribeImages (Prelude.Maybe Prelude.Natural)+describeImages_maxResults = Lens.lens (\DescribeImages' {maxResults} -> maxResults) (\s@DescribeImages' {} a -> s {maxResults = a} :: DescribeImages)++-- | The @nextToken@ value returned from a previous paginated+-- @DescribeImages@ request where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value. This value+-- is @null@ when there are no more results to return. This option cannot+-- be used when you specify images with @imageIds@.+describeImages_nextToken :: Lens.Lens' DescribeImages (Prelude.Maybe Prelude.Text)+describeImages_nextToken = Lens.lens (\DescribeImages' {nextToken} -> nextToken) (\s@DescribeImages' {} a -> s {nextToken = a} :: DescribeImages)++-- | The AWS account ID associated with the public registry that contains the+-- repository in which to describe images. If you do not specify a+-- registry, the default public registry is assumed.+describeImages_registryId :: Lens.Lens' DescribeImages (Prelude.Maybe Prelude.Text)+describeImages_registryId = Lens.lens (\DescribeImages' {registryId} -> registryId) (\s@DescribeImages' {} a -> s {registryId = a} :: DescribeImages)++-- | The repository that contains the images to describe.+describeImages_repositoryName :: Lens.Lens' DescribeImages Prelude.Text+describeImages_repositoryName = Lens.lens (\DescribeImages' {repositoryName} -> repositoryName) (\s@DescribeImages' {} a -> s {repositoryName = a} :: DescribeImages)++instance Core.AWSPager DescribeImages where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeImagesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeImagesResponse_imageDetails+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeImages_nextToken+          Lens..~ rs+          Lens.^? describeImagesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeImages where+  type+    AWSResponse DescribeImages =+      DescribeImagesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeImagesResponse'+            Prelude.<$> (x Data..?> "imageDetails" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeImages where+  hashWithSalt _salt DescribeImages' {..} =+    _salt+      `Prelude.hashWithSalt` imageIds+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName++instance Prelude.NFData DescribeImages where+  rnf DescribeImages' {..} =+    Prelude.rnf imageIds+      `Prelude.seq` Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName++instance Data.ToHeaders DescribeImages where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.DescribeImages" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeImages where+  toJSON DescribeImages' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("imageIds" Data..=) Prelude.<$> imageIds,+            ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName)+          ]+      )++instance Data.ToPath DescribeImages where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeImages where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeImagesResponse' smart constructor.+data DescribeImagesResponse = DescribeImagesResponse'+  { -- | A list of ImageDetail objects that contain data about the image.+    imageDetails :: Prelude.Maybe [ImageDetail],+    -- | The @nextToken@ value to include in a future @DescribeImages@ request.+    -- When the results of a @DescribeImages@ request exceed @maxResults@, this+    -- value can be used to retrieve the next page of results. This value is+    -- @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeImagesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageDetails', 'describeImagesResponse_imageDetails' - A list of ImageDetail objects that contain data about the image.+--+-- 'nextToken', 'describeImagesResponse_nextToken' - The @nextToken@ value to include in a future @DescribeImages@ request.+-- When the results of a @DescribeImages@ request exceed @maxResults@, this+-- value can be used to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+--+-- 'httpStatus', 'describeImagesResponse_httpStatus' - The response's http status code.+newDescribeImagesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeImagesResponse+newDescribeImagesResponse pHttpStatus_ =+  DescribeImagesResponse'+    { imageDetails =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of ImageDetail objects that contain data about the image.+describeImagesResponse_imageDetails :: Lens.Lens' DescribeImagesResponse (Prelude.Maybe [ImageDetail])+describeImagesResponse_imageDetails = Lens.lens (\DescribeImagesResponse' {imageDetails} -> imageDetails) (\s@DescribeImagesResponse' {} a -> s {imageDetails = a} :: DescribeImagesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The @nextToken@ value to include in a future @DescribeImages@ request.+-- When the results of a @DescribeImages@ request exceed @maxResults@, this+-- value can be used to retrieve the next page of results. This value is+-- @null@ when there are no more results to return.+describeImagesResponse_nextToken :: Lens.Lens' DescribeImagesResponse (Prelude.Maybe Prelude.Text)+describeImagesResponse_nextToken = Lens.lens (\DescribeImagesResponse' {nextToken} -> nextToken) (\s@DescribeImagesResponse' {} a -> s {nextToken = a} :: DescribeImagesResponse)++-- | The response's http status code.+describeImagesResponse_httpStatus :: Lens.Lens' DescribeImagesResponse Prelude.Int+describeImagesResponse_httpStatus = Lens.lens (\DescribeImagesResponse' {httpStatus} -> httpStatus) (\s@DescribeImagesResponse' {} a -> s {httpStatus = a} :: DescribeImagesResponse)++instance Prelude.NFData DescribeImagesResponse where+  rnf DescribeImagesResponse' {..} =+    Prelude.rnf imageDetails+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/DescribeRegistries.hs view
@@ -0,0 +1,271 @@+{-# 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.ECRPublic.DescribeRegistries+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Returns details for a public registry.+--+-- This operation returns paginated results.+module Amazonka.ECRPublic.DescribeRegistries+  ( -- * Creating a Request+    DescribeRegistries (..),+    newDescribeRegistries,++    -- * Request Lenses+    describeRegistries_maxResults,+    describeRegistries_nextToken,++    -- * Destructuring the Response+    DescribeRegistriesResponse (..),+    newDescribeRegistriesResponse,++    -- * Response Lenses+    describeRegistriesResponse_nextToken,+    describeRegistriesResponse_httpStatus,+    describeRegistriesResponse_registries,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeRegistries' smart constructor.+data DescribeRegistries = DescribeRegistries'+  { -- | The maximum number of repository results returned by+    -- @DescribeRegistries@ in paginated output. When this parameter is used,+    -- @DescribeRegistries@ only returns @maxResults@ results in a single page+    -- along with a @nextToken@ response element. The remaining results of the+    -- initial request can be seen by sending another @DescribeRegistries@+    -- request with the returned @nextToken@ value. This value can be between 1+    -- and 1000. If this parameter is not used, then @DescribeRegistries@+    -- returns up to 100 results and a @nextToken@ value, if applicable.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @DescribeRegistries@ request where @maxResults@ was used and the results+    -- exceeded the value of that parameter. Pagination continues from the end+    -- of the previous results that returned the @nextToken@ value. This value+    -- is @null@ when there are no more results to return.+    --+    -- This token should be treated as an opaque identifier that is only used+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRegistries' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeRegistries_maxResults' - The maximum number of repository results returned by+-- @DescribeRegistries@ in paginated output. When this parameter is used,+-- @DescribeRegistries@ only returns @maxResults@ results in a single page+-- along with a @nextToken@ response element. The remaining results of the+-- initial request can be seen by sending another @DescribeRegistries@+-- request with the returned @nextToken@ value. This value can be between 1+-- and 1000. If this parameter is not used, then @DescribeRegistries@+-- returns up to 100 results and a @nextToken@ value, if applicable.+--+-- 'nextToken', 'describeRegistries_nextToken' - The @nextToken@ value returned from a previous paginated+-- @DescribeRegistries@ request where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value. This value+-- is @null@ when there are no more results to return.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+newDescribeRegistries ::+  DescribeRegistries+newDescribeRegistries =+  DescribeRegistries'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing+    }++-- | The maximum number of repository results returned by+-- @DescribeRegistries@ in paginated output. When this parameter is used,+-- @DescribeRegistries@ only returns @maxResults@ results in a single page+-- along with a @nextToken@ response element. The remaining results of the+-- initial request can be seen by sending another @DescribeRegistries@+-- request with the returned @nextToken@ value. This value can be between 1+-- and 1000. If this parameter is not used, then @DescribeRegistries@+-- returns up to 100 results and a @nextToken@ value, if applicable.+describeRegistries_maxResults :: Lens.Lens' DescribeRegistries (Prelude.Maybe Prelude.Natural)+describeRegistries_maxResults = Lens.lens (\DescribeRegistries' {maxResults} -> maxResults) (\s@DescribeRegistries' {} a -> s {maxResults = a} :: DescribeRegistries)++-- | The @nextToken@ value returned from a previous paginated+-- @DescribeRegistries@ request where @maxResults@ was used and the results+-- exceeded the value of that parameter. Pagination continues from the end+-- of the previous results that returned the @nextToken@ value. This value+-- is @null@ when there are no more results to return.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+describeRegistries_nextToken :: Lens.Lens' DescribeRegistries (Prelude.Maybe Prelude.Text)+describeRegistries_nextToken = Lens.lens (\DescribeRegistries' {nextToken} -> nextToken) (\s@DescribeRegistries' {} a -> s {nextToken = a} :: DescribeRegistries)++instance Core.AWSPager DescribeRegistries where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeRegistriesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        (rs Lens.^. describeRegistriesResponse_registries) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeRegistries_nextToken+          Lens..~ rs+          Lens.^? describeRegistriesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeRegistries where+  type+    AWSResponse DescribeRegistries =+      DescribeRegistriesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeRegistriesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "registries" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable DescribeRegistries where+  hashWithSalt _salt DescribeRegistries' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken++instance Prelude.NFData DescribeRegistries where+  rnf DescribeRegistries' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken++instance Data.ToHeaders DescribeRegistries where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.DescribeRegistries" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeRegistries where+  toJSON DescribeRegistries' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken+          ]+      )++instance Data.ToPath DescribeRegistries where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeRegistries where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeRegistriesResponse' smart constructor.+data DescribeRegistriesResponse = DescribeRegistriesResponse'+  { -- | The @nextToken@ value to include in a future @DescribeRepositories@+    -- request. When the results of a @DescribeRepositories@ request exceed+    -- @maxResults@, this value can be used to retrieve the next page of+    -- results. This value is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An object containing the details for a public registry.+    registries :: [Registry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRegistriesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeRegistriesResponse_nextToken' - The @nextToken@ value to include in a future @DescribeRepositories@+-- request. When the results of a @DescribeRepositories@ request exceed+-- @maxResults@, this value can be used to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+--+-- 'httpStatus', 'describeRegistriesResponse_httpStatus' - The response's http status code.+--+-- 'registries', 'describeRegistriesResponse_registries' - An object containing the details for a public registry.+newDescribeRegistriesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeRegistriesResponse+newDescribeRegistriesResponse pHttpStatus_ =+  DescribeRegistriesResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      registries = Prelude.mempty+    }++-- | The @nextToken@ value to include in a future @DescribeRepositories@+-- request. When the results of a @DescribeRepositories@ request exceed+-- @maxResults@, this value can be used to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+describeRegistriesResponse_nextToken :: Lens.Lens' DescribeRegistriesResponse (Prelude.Maybe Prelude.Text)+describeRegistriesResponse_nextToken = Lens.lens (\DescribeRegistriesResponse' {nextToken} -> nextToken) (\s@DescribeRegistriesResponse' {} a -> s {nextToken = a} :: DescribeRegistriesResponse)++-- | The response's http status code.+describeRegistriesResponse_httpStatus :: Lens.Lens' DescribeRegistriesResponse Prelude.Int+describeRegistriesResponse_httpStatus = Lens.lens (\DescribeRegistriesResponse' {httpStatus} -> httpStatus) (\s@DescribeRegistriesResponse' {} a -> s {httpStatus = a} :: DescribeRegistriesResponse)++-- | An object containing the details for a public registry.+describeRegistriesResponse_registries :: Lens.Lens' DescribeRegistriesResponse [Registry]+describeRegistriesResponse_registries = Lens.lens (\DescribeRegistriesResponse' {registries} -> registries) (\s@DescribeRegistriesResponse' {} a -> s {registries = a} :: DescribeRegistriesResponse) Prelude.. Lens.coerced++instance Prelude.NFData DescribeRegistriesResponse where+  rnf DescribeRegistriesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf registries
+ gen/Amazonka/ECRPublic/DescribeRepositories.hs view
@@ -0,0 +1,322 @@+{-# 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.ECRPublic.DescribeRepositories+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Describes repositories in a public registry.+--+-- This operation returns paginated results.+module Amazonka.ECRPublic.DescribeRepositories+  ( -- * Creating a Request+    DescribeRepositories (..),+    newDescribeRepositories,++    -- * Request Lenses+    describeRepositories_maxResults,+    describeRepositories_nextToken,+    describeRepositories_registryId,+    describeRepositories_repositoryNames,++    -- * Destructuring the Response+    DescribeRepositoriesResponse (..),+    newDescribeRepositoriesResponse,++    -- * Response Lenses+    describeRepositoriesResponse_nextToken,+    describeRepositoriesResponse_repositories,+    describeRepositoriesResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newDescribeRepositories' smart constructor.+data DescribeRepositories = DescribeRepositories'+  { -- | The maximum number of repository results returned by+    -- @DescribeRepositories@ in paginated output. When this parameter is used,+    -- @DescribeRepositories@ only returns @maxResults@ results in a single+    -- page along with a @nextToken@ response element. The remaining results of+    -- the initial request can be seen by sending another+    -- @DescribeRepositories@ request with the returned @nextToken@ value. This+    -- value can be between 1 and 1000. If this parameter is not used, then+    -- @DescribeRepositories@ returns up to 100 results and a @nextToken@+    -- value, if applicable. This option cannot be used when you specify+    -- repositories with @repositoryNames@.+    maxResults :: Prelude.Maybe Prelude.Natural,+    -- | The @nextToken@ value returned from a previous paginated+    -- @DescribeRepositories@ request where @maxResults@ was used and the+    -- results exceeded the value of that parameter. Pagination continues from+    -- the end of the previous results that returned the @nextToken@ value.+    -- This value is @null@ when there are no more results to return. This+    -- option cannot be used when you specify repositories with+    -- @repositoryNames@.+    --+    -- This token should be treated as an opaque identifier that is only used+    -- to retrieve the next items in a list and not for other programmatic+    -- purposes.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The AWS account ID associated with the registry that contains the+    -- repositories to be described. If you do not specify a registry, the+    -- default public registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | A list of repositories to describe. If this parameter is omitted, then+    -- all repositories in a registry are described.+    repositoryNames :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRepositories' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeRepositories_maxResults' - The maximum number of repository results returned by+-- @DescribeRepositories@ in paginated output. When this parameter is used,+-- @DescribeRepositories@ only returns @maxResults@ results in a single+-- page along with a @nextToken@ response element. The remaining results of+-- the initial request can be seen by sending another+-- @DescribeRepositories@ request with the returned @nextToken@ value. This+-- value can be between 1 and 1000. If this parameter is not used, then+-- @DescribeRepositories@ returns up to 100 results and a @nextToken@+-- value, if applicable. This option cannot be used when you specify+-- repositories with @repositoryNames@.+--+-- 'nextToken', 'describeRepositories_nextToken' - The @nextToken@ value returned from a previous paginated+-- @DescribeRepositories@ request where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+-- This value is @null@ when there are no more results to return. This+-- option cannot be used when you specify repositories with+-- @repositoryNames@.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+--+-- 'registryId', 'describeRepositories_registryId' - The AWS account ID associated with the registry that contains the+-- repositories to be described. If you do not specify a registry, the+-- default public registry is assumed.+--+-- 'repositoryNames', 'describeRepositories_repositoryNames' - A list of repositories to describe. If this parameter is omitted, then+-- all repositories in a registry are described.+newDescribeRepositories ::+  DescribeRepositories+newDescribeRepositories =+  DescribeRepositories'+    { maxResults = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryNames = Prelude.Nothing+    }++-- | The maximum number of repository results returned by+-- @DescribeRepositories@ in paginated output. When this parameter is used,+-- @DescribeRepositories@ only returns @maxResults@ results in a single+-- page along with a @nextToken@ response element. The remaining results of+-- the initial request can be seen by sending another+-- @DescribeRepositories@ request with the returned @nextToken@ value. This+-- value can be between 1 and 1000. If this parameter is not used, then+-- @DescribeRepositories@ returns up to 100 results and a @nextToken@+-- value, if applicable. This option cannot be used when you specify+-- repositories with @repositoryNames@.+describeRepositories_maxResults :: Lens.Lens' DescribeRepositories (Prelude.Maybe Prelude.Natural)+describeRepositories_maxResults = Lens.lens (\DescribeRepositories' {maxResults} -> maxResults) (\s@DescribeRepositories' {} a -> s {maxResults = a} :: DescribeRepositories)++-- | The @nextToken@ value returned from a previous paginated+-- @DescribeRepositories@ request where @maxResults@ was used and the+-- results exceeded the value of that parameter. Pagination continues from+-- the end of the previous results that returned the @nextToken@ value.+-- This value is @null@ when there are no more results to return. This+-- option cannot be used when you specify repositories with+-- @repositoryNames@.+--+-- This token should be treated as an opaque identifier that is only used+-- to retrieve the next items in a list and not for other programmatic+-- purposes.+describeRepositories_nextToken :: Lens.Lens' DescribeRepositories (Prelude.Maybe Prelude.Text)+describeRepositories_nextToken = Lens.lens (\DescribeRepositories' {nextToken} -> nextToken) (\s@DescribeRepositories' {} a -> s {nextToken = a} :: DescribeRepositories)++-- | The AWS account ID associated with the registry that contains the+-- repositories to be described. If you do not specify a registry, the+-- default public registry is assumed.+describeRepositories_registryId :: Lens.Lens' DescribeRepositories (Prelude.Maybe Prelude.Text)+describeRepositories_registryId = Lens.lens (\DescribeRepositories' {registryId} -> registryId) (\s@DescribeRepositories' {} a -> s {registryId = a} :: DescribeRepositories)++-- | A list of repositories to describe. If this parameter is omitted, then+-- all repositories in a registry are described.+describeRepositories_repositoryNames :: Lens.Lens' DescribeRepositories (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+describeRepositories_repositoryNames = Lens.lens (\DescribeRepositories' {repositoryNames} -> repositoryNames) (\s@DescribeRepositories' {} a -> s {repositoryNames = a} :: DescribeRepositories) Prelude.. Lens.mapping Lens.coerced++instance Core.AWSPager DescribeRepositories where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? describeRepositoriesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? describeRepositoriesResponse_repositories+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& describeRepositories_nextToken+          Lens..~ rs+          Lens.^? describeRepositoriesResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest DescribeRepositories where+  type+    AWSResponse DescribeRepositories =+      DescribeRepositoriesResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          DescribeRepositoriesResponse'+            Prelude.<$> (x Data..?> "nextToken")+            Prelude.<*> (x Data..?> "repositories" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DescribeRepositories where+  hashWithSalt _salt DescribeRepositories' {..} =+    _salt+      `Prelude.hashWithSalt` maxResults+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryNames++instance Prelude.NFData DescribeRepositories where+  rnf DescribeRepositories' {..} =+    Prelude.rnf maxResults+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryNames++instance Data.ToHeaders DescribeRepositories where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.DescribeRepositories" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON DescribeRepositories where+  toJSON DescribeRepositories' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("maxResults" Data..=) Prelude.<$> maxResults,+            ("nextToken" Data..=) Prelude.<$> nextToken,+            ("registryId" Data..=) Prelude.<$> registryId,+            ("repositoryNames" Data..=)+              Prelude.<$> repositoryNames+          ]+      )++instance Data.ToPath DescribeRepositories where+  toPath = Prelude.const "/"++instance Data.ToQuery DescribeRepositories where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDescribeRepositoriesResponse' smart constructor.+data DescribeRepositoriesResponse = DescribeRepositoriesResponse'+  { -- | The @nextToken@ value to include in a future @DescribeRepositories@+    -- request. When the results of a @DescribeRepositories@ request exceed+    -- @maxResults@, this value can be used to retrieve the next page of+    -- results. This value is @null@ when there are no more results to return.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of repository objects corresponding to valid repositories.+    repositories :: Prelude.Maybe [Repository],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DescribeRepositoriesResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'describeRepositoriesResponse_nextToken' - The @nextToken@ value to include in a future @DescribeRepositories@+-- request. When the results of a @DescribeRepositories@ request exceed+-- @maxResults@, this value can be used to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+--+-- 'repositories', 'describeRepositoriesResponse_repositories' - A list of repository objects corresponding to valid repositories.+--+-- 'httpStatus', 'describeRepositoriesResponse_httpStatus' - The response's http status code.+newDescribeRepositoriesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DescribeRepositoriesResponse+newDescribeRepositoriesResponse pHttpStatus_ =+  DescribeRepositoriesResponse'+    { nextToken =+        Prelude.Nothing,+      repositories = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The @nextToken@ value to include in a future @DescribeRepositories@+-- request. When the results of a @DescribeRepositories@ request exceed+-- @maxResults@, this value can be used to retrieve the next page of+-- results. This value is @null@ when there are no more results to return.+describeRepositoriesResponse_nextToken :: Lens.Lens' DescribeRepositoriesResponse (Prelude.Maybe Prelude.Text)+describeRepositoriesResponse_nextToken = Lens.lens (\DescribeRepositoriesResponse' {nextToken} -> nextToken) (\s@DescribeRepositoriesResponse' {} a -> s {nextToken = a} :: DescribeRepositoriesResponse)++-- | A list of repository objects corresponding to valid repositories.+describeRepositoriesResponse_repositories :: Lens.Lens' DescribeRepositoriesResponse (Prelude.Maybe [Repository])+describeRepositoriesResponse_repositories = Lens.lens (\DescribeRepositoriesResponse' {repositories} -> repositories) (\s@DescribeRepositoriesResponse' {} a -> s {repositories = a} :: DescribeRepositoriesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+describeRepositoriesResponse_httpStatus :: Lens.Lens' DescribeRepositoriesResponse Prelude.Int+describeRepositoriesResponse_httpStatus = Lens.lens (\DescribeRepositoriesResponse' {httpStatus} -> httpStatus) (\s@DescribeRepositoriesResponse' {} a -> s {httpStatus = a} :: DescribeRepositoriesResponse)++instance Prelude.NFData DescribeRepositoriesResponse where+  rnf DescribeRepositoriesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf repositories+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/GetAuthorizationToken.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.ECRPublic.GetAuthorizationToken+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves an authorization token. An authorization token represents your+-- IAM authentication credentials and can be used to access any Amazon ECR+-- registry that your IAM principal has access to. The authorization token+-- is valid for 12 hours. This API requires the+-- @ecr-public:GetAuthorizationToken@ and @sts:GetServiceBearerToken@+-- permissions.+module Amazonka.ECRPublic.GetAuthorizationToken+  ( -- * Creating a Request+    GetAuthorizationToken (..),+    newGetAuthorizationToken,++    -- * Destructuring the Response+    GetAuthorizationTokenResponse (..),+    newGetAuthorizationTokenResponse,++    -- * Response Lenses+    getAuthorizationTokenResponse_authorizationData,+    getAuthorizationTokenResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetAuthorizationToken' smart constructor.+data GetAuthorizationToken = GetAuthorizationToken'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAuthorizationToken' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newGetAuthorizationToken ::+  GetAuthorizationToken+newGetAuthorizationToken = GetAuthorizationToken'++instance Core.AWSRequest GetAuthorizationToken where+  type+    AWSResponse GetAuthorizationToken =+      GetAuthorizationTokenResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetAuthorizationTokenResponse'+            Prelude.<$> (x Data..?> "authorizationData")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetAuthorizationToken where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData GetAuthorizationToken where+  rnf _ = ()++instance Data.ToHeaders GetAuthorizationToken where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.GetAuthorizationToken" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetAuthorizationToken where+  toJSON = Prelude.const (Data.Object Prelude.mempty)++instance Data.ToPath GetAuthorizationToken where+  toPath = Prelude.const "/"++instance Data.ToQuery GetAuthorizationToken where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetAuthorizationTokenResponse' smart constructor.+data GetAuthorizationTokenResponse = GetAuthorizationTokenResponse'+  { -- | An authorization token data object that corresponds to a public+    -- registry.+    authorizationData :: Prelude.Maybe AuthorizationData,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAuthorizationTokenResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'authorizationData', 'getAuthorizationTokenResponse_authorizationData' - An authorization token data object that corresponds to a public+-- registry.+--+-- 'httpStatus', 'getAuthorizationTokenResponse_httpStatus' - The response's http status code.+newGetAuthorizationTokenResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetAuthorizationTokenResponse+newGetAuthorizationTokenResponse pHttpStatus_ =+  GetAuthorizationTokenResponse'+    { authorizationData =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An authorization token data object that corresponds to a public+-- registry.+getAuthorizationTokenResponse_authorizationData :: Lens.Lens' GetAuthorizationTokenResponse (Prelude.Maybe AuthorizationData)+getAuthorizationTokenResponse_authorizationData = Lens.lens (\GetAuthorizationTokenResponse' {authorizationData} -> authorizationData) (\s@GetAuthorizationTokenResponse' {} a -> s {authorizationData = a} :: GetAuthorizationTokenResponse)++-- | The response's http status code.+getAuthorizationTokenResponse_httpStatus :: Lens.Lens' GetAuthorizationTokenResponse Prelude.Int+getAuthorizationTokenResponse_httpStatus = Lens.lens (\GetAuthorizationTokenResponse' {httpStatus} -> httpStatus) (\s@GetAuthorizationTokenResponse' {} a -> s {httpStatus = a} :: GetAuthorizationTokenResponse)++instance Prelude.NFData GetAuthorizationTokenResponse where+  rnf GetAuthorizationTokenResponse' {..} =+    Prelude.rnf authorizationData+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/GetRegistryCatalogData.hs view
@@ -0,0 +1,155 @@+{-# 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.ECRPublic.GetRegistryCatalogData+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves catalog metadata for a public registry.+module Amazonka.ECRPublic.GetRegistryCatalogData+  ( -- * Creating a Request+    GetRegistryCatalogData (..),+    newGetRegistryCatalogData,++    -- * Destructuring the Response+    GetRegistryCatalogDataResponse (..),+    newGetRegistryCatalogDataResponse,++    -- * Response Lenses+    getRegistryCatalogDataResponse_httpStatus,+    getRegistryCatalogDataResponse_registryCatalogData,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetRegistryCatalogData' smart constructor.+data GetRegistryCatalogData = GetRegistryCatalogData'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetRegistryCatalogData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+newGetRegistryCatalogData ::+  GetRegistryCatalogData+newGetRegistryCatalogData = GetRegistryCatalogData'++instance Core.AWSRequest GetRegistryCatalogData where+  type+    AWSResponse GetRegistryCatalogData =+      GetRegistryCatalogDataResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetRegistryCatalogDataResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "registryCatalogData")+      )++instance Prelude.Hashable GetRegistryCatalogData where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData GetRegistryCatalogData where+  rnf _ = ()++instance Data.ToHeaders GetRegistryCatalogData where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.GetRegistryCatalogData" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetRegistryCatalogData where+  toJSON = Prelude.const (Data.Object Prelude.mempty)++instance Data.ToPath GetRegistryCatalogData where+  toPath = Prelude.const "/"++instance Data.ToQuery GetRegistryCatalogData where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetRegistryCatalogDataResponse' smart constructor.+data GetRegistryCatalogDataResponse = GetRegistryCatalogDataResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The catalog metadata for the public registry.+    registryCatalogData :: RegistryCatalogData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetRegistryCatalogDataResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'getRegistryCatalogDataResponse_httpStatus' - The response's http status code.+--+-- 'registryCatalogData', 'getRegistryCatalogDataResponse_registryCatalogData' - The catalog metadata for the public registry.+newGetRegistryCatalogDataResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'registryCatalogData'+  RegistryCatalogData ->+  GetRegistryCatalogDataResponse+newGetRegistryCatalogDataResponse+  pHttpStatus_+  pRegistryCatalogData_ =+    GetRegistryCatalogDataResponse'+      { httpStatus =+          pHttpStatus_,+        registryCatalogData = pRegistryCatalogData_+      }++-- | The response's http status code.+getRegistryCatalogDataResponse_httpStatus :: Lens.Lens' GetRegistryCatalogDataResponse Prelude.Int+getRegistryCatalogDataResponse_httpStatus = Lens.lens (\GetRegistryCatalogDataResponse' {httpStatus} -> httpStatus) (\s@GetRegistryCatalogDataResponse' {} a -> s {httpStatus = a} :: GetRegistryCatalogDataResponse)++-- | The catalog metadata for the public registry.+getRegistryCatalogDataResponse_registryCatalogData :: Lens.Lens' GetRegistryCatalogDataResponse RegistryCatalogData+getRegistryCatalogDataResponse_registryCatalogData = Lens.lens (\GetRegistryCatalogDataResponse' {registryCatalogData} -> registryCatalogData) (\s@GetRegistryCatalogDataResponse' {} a -> s {registryCatalogData = a} :: GetRegistryCatalogDataResponse)++instance+  Prelude.NFData+    GetRegistryCatalogDataResponse+  where+  rnf GetRegistryCatalogDataResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf registryCatalogData
+ gen/Amazonka/ECRPublic/GetRepositoryCatalogData.hs view
@@ -0,0 +1,198 @@+{-# 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.ECRPublic.GetRepositoryCatalogData+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieve catalog metadata for a repository in a public registry. This+-- metadata is displayed publicly in the Amazon ECR Public Gallery.+module Amazonka.ECRPublic.GetRepositoryCatalogData+  ( -- * Creating a Request+    GetRepositoryCatalogData (..),+    newGetRepositoryCatalogData,++    -- * Request Lenses+    getRepositoryCatalogData_registryId,+    getRepositoryCatalogData_repositoryName,++    -- * Destructuring the Response+    GetRepositoryCatalogDataResponse (..),+    newGetRepositoryCatalogDataResponse,++    -- * Response Lenses+    getRepositoryCatalogDataResponse_catalogData,+    getRepositoryCatalogDataResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetRepositoryCatalogData' smart constructor.+data GetRepositoryCatalogData = GetRepositoryCatalogData'+  { -- | The AWS account ID associated with the registry that contains the+    -- repositories to be described. If you do not specify a registry, the+    -- default public registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository to retrieve the catalog metadata for.+    repositoryName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetRepositoryCatalogData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'registryId', 'getRepositoryCatalogData_registryId' - The AWS account ID associated with the registry that contains the+-- repositories to be described. If you do not specify a registry, the+-- default public registry is assumed.+--+-- 'repositoryName', 'getRepositoryCatalogData_repositoryName' - The name of the repository to retrieve the catalog metadata for.+newGetRepositoryCatalogData ::+  -- | 'repositoryName'+  Prelude.Text ->+  GetRepositoryCatalogData+newGetRepositoryCatalogData pRepositoryName_ =+  GetRepositoryCatalogData'+    { registryId =+        Prelude.Nothing,+      repositoryName = pRepositoryName_+    }++-- | The AWS account ID associated with the registry that contains the+-- repositories to be described. If you do not specify a registry, the+-- default public registry is assumed.+getRepositoryCatalogData_registryId :: Lens.Lens' GetRepositoryCatalogData (Prelude.Maybe Prelude.Text)+getRepositoryCatalogData_registryId = Lens.lens (\GetRepositoryCatalogData' {registryId} -> registryId) (\s@GetRepositoryCatalogData' {} a -> s {registryId = a} :: GetRepositoryCatalogData)++-- | The name of the repository to retrieve the catalog metadata for.+getRepositoryCatalogData_repositoryName :: Lens.Lens' GetRepositoryCatalogData Prelude.Text+getRepositoryCatalogData_repositoryName = Lens.lens (\GetRepositoryCatalogData' {repositoryName} -> repositoryName) (\s@GetRepositoryCatalogData' {} a -> s {repositoryName = a} :: GetRepositoryCatalogData)++instance Core.AWSRequest GetRepositoryCatalogData where+  type+    AWSResponse GetRepositoryCatalogData =+      GetRepositoryCatalogDataResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetRepositoryCatalogDataResponse'+            Prelude.<$> (x Data..?> "catalogData")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetRepositoryCatalogData where+  hashWithSalt _salt GetRepositoryCatalogData' {..} =+    _salt+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName++instance Prelude.NFData GetRepositoryCatalogData where+  rnf GetRepositoryCatalogData' {..} =+    Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName++instance Data.ToHeaders GetRepositoryCatalogData where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.GetRepositoryCatalogData" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetRepositoryCatalogData where+  toJSON GetRepositoryCatalogData' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName)+          ]+      )++instance Data.ToPath GetRepositoryCatalogData where+  toPath = Prelude.const "/"++instance Data.ToQuery GetRepositoryCatalogData where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetRepositoryCatalogDataResponse' smart constructor.+data GetRepositoryCatalogDataResponse = GetRepositoryCatalogDataResponse'+  { -- | The catalog metadata for the repository.+    catalogData :: Prelude.Maybe RepositoryCatalogData,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetRepositoryCatalogDataResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogData', 'getRepositoryCatalogDataResponse_catalogData' - The catalog metadata for the repository.+--+-- 'httpStatus', 'getRepositoryCatalogDataResponse_httpStatus' - The response's http status code.+newGetRepositoryCatalogDataResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetRepositoryCatalogDataResponse+newGetRepositoryCatalogDataResponse pHttpStatus_ =+  GetRepositoryCatalogDataResponse'+    { catalogData =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The catalog metadata for the repository.+getRepositoryCatalogDataResponse_catalogData :: Lens.Lens' GetRepositoryCatalogDataResponse (Prelude.Maybe RepositoryCatalogData)+getRepositoryCatalogDataResponse_catalogData = Lens.lens (\GetRepositoryCatalogDataResponse' {catalogData} -> catalogData) (\s@GetRepositoryCatalogDataResponse' {} a -> s {catalogData = a} :: GetRepositoryCatalogDataResponse)++-- | The response's http status code.+getRepositoryCatalogDataResponse_httpStatus :: Lens.Lens' GetRepositoryCatalogDataResponse Prelude.Int+getRepositoryCatalogDataResponse_httpStatus = Lens.lens (\GetRepositoryCatalogDataResponse' {httpStatus} -> httpStatus) (\s@GetRepositoryCatalogDataResponse' {} a -> s {httpStatus = a} :: GetRepositoryCatalogDataResponse)++instance+  Prelude.NFData+    GetRepositoryCatalogDataResponse+  where+  rnf GetRepositoryCatalogDataResponse' {..} =+    Prelude.rnf catalogData+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/GetRepositoryPolicy.hs view
@@ -0,0 +1,220 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.GetRepositoryPolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves the repository policy for the specified repository.+module Amazonka.ECRPublic.GetRepositoryPolicy+  ( -- * Creating a Request+    GetRepositoryPolicy (..),+    newGetRepositoryPolicy,++    -- * Request Lenses+    getRepositoryPolicy_registryId,+    getRepositoryPolicy_repositoryName,++    -- * Destructuring the Response+    GetRepositoryPolicyResponse (..),+    newGetRepositoryPolicyResponse,++    -- * Response Lenses+    getRepositoryPolicyResponse_policyText,+    getRepositoryPolicyResponse_registryId,+    getRepositoryPolicyResponse_repositoryName,+    getRepositoryPolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newGetRepositoryPolicy' smart constructor.+data GetRepositoryPolicy = GetRepositoryPolicy'+  { -- | The AWS account ID associated with the public registry that contains the+    -- repository. If you do not specify a registry, the default public+    -- registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository with the policy to retrieve.+    repositoryName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetRepositoryPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'registryId', 'getRepositoryPolicy_registryId' - The AWS account ID associated with the public registry that contains the+-- repository. If you do not specify a registry, the default public+-- registry is assumed.+--+-- 'repositoryName', 'getRepositoryPolicy_repositoryName' - The name of the repository with the policy to retrieve.+newGetRepositoryPolicy ::+  -- | 'repositoryName'+  Prelude.Text ->+  GetRepositoryPolicy+newGetRepositoryPolicy pRepositoryName_ =+  GetRepositoryPolicy'+    { registryId = Prelude.Nothing,+      repositoryName = pRepositoryName_+    }++-- | The AWS account ID associated with the public registry that contains the+-- repository. If you do not specify a registry, the default public+-- registry is assumed.+getRepositoryPolicy_registryId :: Lens.Lens' GetRepositoryPolicy (Prelude.Maybe Prelude.Text)+getRepositoryPolicy_registryId = Lens.lens (\GetRepositoryPolicy' {registryId} -> registryId) (\s@GetRepositoryPolicy' {} a -> s {registryId = a} :: GetRepositoryPolicy)++-- | The name of the repository with the policy to retrieve.+getRepositoryPolicy_repositoryName :: Lens.Lens' GetRepositoryPolicy Prelude.Text+getRepositoryPolicy_repositoryName = Lens.lens (\GetRepositoryPolicy' {repositoryName} -> repositoryName) (\s@GetRepositoryPolicy' {} a -> s {repositoryName = a} :: GetRepositoryPolicy)++instance Core.AWSRequest GetRepositoryPolicy where+  type+    AWSResponse GetRepositoryPolicy =+      GetRepositoryPolicyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetRepositoryPolicyResponse'+            Prelude.<$> (x Data..?> "policyText")+            Prelude.<*> (x Data..?> "registryId")+            Prelude.<*> (x Data..?> "repositoryName")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetRepositoryPolicy where+  hashWithSalt _salt GetRepositoryPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName++instance Prelude.NFData GetRepositoryPolicy where+  rnf GetRepositoryPolicy' {..} =+    Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName++instance Data.ToHeaders GetRepositoryPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.GetRepositoryPolicy" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON GetRepositoryPolicy where+  toJSON GetRepositoryPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName)+          ]+      )++instance Data.ToPath GetRepositoryPolicy where+  toPath = Prelude.const "/"++instance Data.ToQuery GetRepositoryPolicy where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetRepositoryPolicyResponse' smart constructor.+data GetRepositoryPolicyResponse = GetRepositoryPolicyResponse'+  { -- | The repository policy text associated with the repository. The policy+    -- text will be in JSON format.+    policyText :: Prelude.Maybe Prelude.Text,+    -- | The registry ID associated with the request.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The repository name associated with the request.+    repositoryName :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetRepositoryPolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'policyText', 'getRepositoryPolicyResponse_policyText' - The repository policy text associated with the repository. The policy+-- text will be in JSON format.+--+-- 'registryId', 'getRepositoryPolicyResponse_registryId' - The registry ID associated with the request.+--+-- 'repositoryName', 'getRepositoryPolicyResponse_repositoryName' - The repository name associated with the request.+--+-- 'httpStatus', 'getRepositoryPolicyResponse_httpStatus' - The response's http status code.+newGetRepositoryPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetRepositoryPolicyResponse+newGetRepositoryPolicyResponse pHttpStatus_ =+  GetRepositoryPolicyResponse'+    { policyText =+        Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The repository policy text associated with the repository. The policy+-- text will be in JSON format.+getRepositoryPolicyResponse_policyText :: Lens.Lens' GetRepositoryPolicyResponse (Prelude.Maybe Prelude.Text)+getRepositoryPolicyResponse_policyText = Lens.lens (\GetRepositoryPolicyResponse' {policyText} -> policyText) (\s@GetRepositoryPolicyResponse' {} a -> s {policyText = a} :: GetRepositoryPolicyResponse)++-- | The registry ID associated with the request.+getRepositoryPolicyResponse_registryId :: Lens.Lens' GetRepositoryPolicyResponse (Prelude.Maybe Prelude.Text)+getRepositoryPolicyResponse_registryId = Lens.lens (\GetRepositoryPolicyResponse' {registryId} -> registryId) (\s@GetRepositoryPolicyResponse' {} a -> s {registryId = a} :: GetRepositoryPolicyResponse)++-- | The repository name associated with the request.+getRepositoryPolicyResponse_repositoryName :: Lens.Lens' GetRepositoryPolicyResponse (Prelude.Maybe Prelude.Text)+getRepositoryPolicyResponse_repositoryName = Lens.lens (\GetRepositoryPolicyResponse' {repositoryName} -> repositoryName) (\s@GetRepositoryPolicyResponse' {} a -> s {repositoryName = a} :: GetRepositoryPolicyResponse)++-- | The response's http status code.+getRepositoryPolicyResponse_httpStatus :: Lens.Lens' GetRepositoryPolicyResponse Prelude.Int+getRepositoryPolicyResponse_httpStatus = Lens.lens (\GetRepositoryPolicyResponse' {httpStatus} -> httpStatus) (\s@GetRepositoryPolicyResponse' {} a -> s {httpStatus = a} :: GetRepositoryPolicyResponse)++instance Prelude.NFData GetRepositoryPolicyResponse where+  rnf GetRepositoryPolicyResponse' {..} =+    Prelude.rnf policyText+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/InitiateLayerUpload.hs view
@@ -0,0 +1,220 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.InitiateLayerUpload+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Notifies Amazon ECR that you intend to upload an image layer.+--+-- When an image is pushed, the InitiateLayerUpload API is called once per+-- image layer that has not already been uploaded. Whether or not an image+-- layer has been uploaded is determined by the BatchCheckLayerAvailability+-- API action.+--+-- This operation is used by the Amazon ECR proxy and is not generally used+-- by customers for pulling and pushing images. In most cases, you should+-- use the @docker@ CLI to pull, tag, and push images.+module Amazonka.ECRPublic.InitiateLayerUpload+  ( -- * Creating a Request+    InitiateLayerUpload (..),+    newInitiateLayerUpload,++    -- * Request Lenses+    initiateLayerUpload_registryId,+    initiateLayerUpload_repositoryName,++    -- * Destructuring the Response+    InitiateLayerUploadResponse (..),+    newInitiateLayerUploadResponse,++    -- * Response Lenses+    initiateLayerUploadResponse_partSize,+    initiateLayerUploadResponse_uploadId,+    initiateLayerUploadResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newInitiateLayerUpload' smart constructor.+data InitiateLayerUpload = InitiateLayerUpload'+  { -- | The AWS account ID associated with the registry to which you intend to+    -- upload layers. If you do not specify a registry, the default public+    -- registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository to which you intend to upload layers.+    repositoryName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InitiateLayerUpload' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'registryId', 'initiateLayerUpload_registryId' - The AWS account ID associated with the registry to which you intend to+-- upload layers. If you do not specify a registry, the default public+-- registry is assumed.+--+-- 'repositoryName', 'initiateLayerUpload_repositoryName' - The name of the repository to which you intend to upload layers.+newInitiateLayerUpload ::+  -- | 'repositoryName'+  Prelude.Text ->+  InitiateLayerUpload+newInitiateLayerUpload pRepositoryName_ =+  InitiateLayerUpload'+    { registryId = Prelude.Nothing,+      repositoryName = pRepositoryName_+    }++-- | The AWS account ID associated with the registry to which you intend to+-- upload layers. If you do not specify a registry, the default public+-- registry is assumed.+initiateLayerUpload_registryId :: Lens.Lens' InitiateLayerUpload (Prelude.Maybe Prelude.Text)+initiateLayerUpload_registryId = Lens.lens (\InitiateLayerUpload' {registryId} -> registryId) (\s@InitiateLayerUpload' {} a -> s {registryId = a} :: InitiateLayerUpload)++-- | The name of the repository to which you intend to upload layers.+initiateLayerUpload_repositoryName :: Lens.Lens' InitiateLayerUpload Prelude.Text+initiateLayerUpload_repositoryName = Lens.lens (\InitiateLayerUpload' {repositoryName} -> repositoryName) (\s@InitiateLayerUpload' {} a -> s {repositoryName = a} :: InitiateLayerUpload)++instance Core.AWSRequest InitiateLayerUpload where+  type+    AWSResponse InitiateLayerUpload =+      InitiateLayerUploadResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          InitiateLayerUploadResponse'+            Prelude.<$> (x Data..?> "partSize")+            Prelude.<*> (x Data..?> "uploadId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable InitiateLayerUpload where+  hashWithSalt _salt InitiateLayerUpload' {..} =+    _salt+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName++instance Prelude.NFData InitiateLayerUpload where+  rnf InitiateLayerUpload' {..} =+    Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName++instance Data.ToHeaders InitiateLayerUpload where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.InitiateLayerUpload" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON InitiateLayerUpload where+  toJSON InitiateLayerUpload' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName)+          ]+      )++instance Data.ToPath InitiateLayerUpload where+  toPath = Prelude.const "/"++instance Data.ToQuery InitiateLayerUpload where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newInitiateLayerUploadResponse' smart constructor.+data InitiateLayerUploadResponse = InitiateLayerUploadResponse'+  { -- | The size, in bytes, that Amazon ECR expects future layer part uploads to+    -- be.+    partSize :: Prelude.Maybe Prelude.Natural,+    -- | The upload ID for the layer upload. This parameter is passed to further+    -- UploadLayerPart and CompleteLayerUpload operations.+    uploadId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InitiateLayerUploadResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'partSize', 'initiateLayerUploadResponse_partSize' - The size, in bytes, that Amazon ECR expects future layer part uploads to+-- be.+--+-- 'uploadId', 'initiateLayerUploadResponse_uploadId' - The upload ID for the layer upload. This parameter is passed to further+-- UploadLayerPart and CompleteLayerUpload operations.+--+-- 'httpStatus', 'initiateLayerUploadResponse_httpStatus' - The response's http status code.+newInitiateLayerUploadResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  InitiateLayerUploadResponse+newInitiateLayerUploadResponse pHttpStatus_ =+  InitiateLayerUploadResponse'+    { partSize =+        Prelude.Nothing,+      uploadId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The size, in bytes, that Amazon ECR expects future layer part uploads to+-- be.+initiateLayerUploadResponse_partSize :: Lens.Lens' InitiateLayerUploadResponse (Prelude.Maybe Prelude.Natural)+initiateLayerUploadResponse_partSize = Lens.lens (\InitiateLayerUploadResponse' {partSize} -> partSize) (\s@InitiateLayerUploadResponse' {} a -> s {partSize = a} :: InitiateLayerUploadResponse)++-- | The upload ID for the layer upload. This parameter is passed to further+-- UploadLayerPart and CompleteLayerUpload operations.+initiateLayerUploadResponse_uploadId :: Lens.Lens' InitiateLayerUploadResponse (Prelude.Maybe Prelude.Text)+initiateLayerUploadResponse_uploadId = Lens.lens (\InitiateLayerUploadResponse' {uploadId} -> uploadId) (\s@InitiateLayerUploadResponse' {} a -> s {uploadId = a} :: InitiateLayerUploadResponse)++-- | The response's http status code.+initiateLayerUploadResponse_httpStatus :: Lens.Lens' InitiateLayerUploadResponse Prelude.Int+initiateLayerUploadResponse_httpStatus = Lens.lens (\InitiateLayerUploadResponse' {httpStatus} -> httpStatus) (\s@InitiateLayerUploadResponse' {} a -> s {httpStatus = a} :: InitiateLayerUploadResponse)++instance Prelude.NFData InitiateLayerUploadResponse where+  rnf InitiateLayerUploadResponse' {..} =+    Prelude.rnf partSize+      `Prelude.seq` Prelude.rnf uploadId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/Lens.hs view
@@ -0,0 +1,330 @@+{-# 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.ECRPublic.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.ECRPublic.Lens+  ( -- * Operations++    -- ** BatchCheckLayerAvailability+    batchCheckLayerAvailability_registryId,+    batchCheckLayerAvailability_repositoryName,+    batchCheckLayerAvailability_layerDigests,+    batchCheckLayerAvailabilityResponse_failures,+    batchCheckLayerAvailabilityResponse_layers,+    batchCheckLayerAvailabilityResponse_httpStatus,++    -- ** BatchDeleteImage+    batchDeleteImage_registryId,+    batchDeleteImage_repositoryName,+    batchDeleteImage_imageIds,+    batchDeleteImageResponse_failures,+    batchDeleteImageResponse_imageIds,+    batchDeleteImageResponse_httpStatus,++    -- ** CompleteLayerUpload+    completeLayerUpload_registryId,+    completeLayerUpload_repositoryName,+    completeLayerUpload_uploadId,+    completeLayerUpload_layerDigests,+    completeLayerUploadResponse_layerDigest,+    completeLayerUploadResponse_registryId,+    completeLayerUploadResponse_repositoryName,+    completeLayerUploadResponse_uploadId,+    completeLayerUploadResponse_httpStatus,++    -- ** CreateRepository+    createRepository_catalogData,+    createRepository_tags,+    createRepository_repositoryName,+    createRepositoryResponse_catalogData,+    createRepositoryResponse_repository,+    createRepositoryResponse_httpStatus,++    -- ** DeleteRepository+    deleteRepository_force,+    deleteRepository_registryId,+    deleteRepository_repositoryName,+    deleteRepositoryResponse_repository,+    deleteRepositoryResponse_httpStatus,++    -- ** DeleteRepositoryPolicy+    deleteRepositoryPolicy_registryId,+    deleteRepositoryPolicy_repositoryName,+    deleteRepositoryPolicyResponse_policyText,+    deleteRepositoryPolicyResponse_registryId,+    deleteRepositoryPolicyResponse_repositoryName,+    deleteRepositoryPolicyResponse_httpStatus,++    -- ** DescribeImageTags+    describeImageTags_maxResults,+    describeImageTags_nextToken,+    describeImageTags_registryId,+    describeImageTags_repositoryName,+    describeImageTagsResponse_imageTagDetails,+    describeImageTagsResponse_nextToken,+    describeImageTagsResponse_httpStatus,++    -- ** DescribeImages+    describeImages_imageIds,+    describeImages_maxResults,+    describeImages_nextToken,+    describeImages_registryId,+    describeImages_repositoryName,+    describeImagesResponse_imageDetails,+    describeImagesResponse_nextToken,+    describeImagesResponse_httpStatus,++    -- ** DescribeRegistries+    describeRegistries_maxResults,+    describeRegistries_nextToken,+    describeRegistriesResponse_nextToken,+    describeRegistriesResponse_httpStatus,+    describeRegistriesResponse_registries,++    -- ** DescribeRepositories+    describeRepositories_maxResults,+    describeRepositories_nextToken,+    describeRepositories_registryId,+    describeRepositories_repositoryNames,+    describeRepositoriesResponse_nextToken,+    describeRepositoriesResponse_repositories,+    describeRepositoriesResponse_httpStatus,++    -- ** GetAuthorizationToken+    getAuthorizationTokenResponse_authorizationData,+    getAuthorizationTokenResponse_httpStatus,++    -- ** GetRegistryCatalogData+    getRegistryCatalogDataResponse_httpStatus,+    getRegistryCatalogDataResponse_registryCatalogData,++    -- ** GetRepositoryCatalogData+    getRepositoryCatalogData_registryId,+    getRepositoryCatalogData_repositoryName,+    getRepositoryCatalogDataResponse_catalogData,+    getRepositoryCatalogDataResponse_httpStatus,++    -- ** GetRepositoryPolicy+    getRepositoryPolicy_registryId,+    getRepositoryPolicy_repositoryName,+    getRepositoryPolicyResponse_policyText,+    getRepositoryPolicyResponse_registryId,+    getRepositoryPolicyResponse_repositoryName,+    getRepositoryPolicyResponse_httpStatus,++    -- ** InitiateLayerUpload+    initiateLayerUpload_registryId,+    initiateLayerUpload_repositoryName,+    initiateLayerUploadResponse_partSize,+    initiateLayerUploadResponse_uploadId,+    initiateLayerUploadResponse_httpStatus,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,++    -- ** PutImage+    putImage_imageDigest,+    putImage_imageManifestMediaType,+    putImage_imageTag,+    putImage_registryId,+    putImage_repositoryName,+    putImage_imageManifest,+    putImageResponse_image,+    putImageResponse_httpStatus,++    -- ** PutRegistryCatalogData+    putRegistryCatalogData_displayName,+    putRegistryCatalogDataResponse_httpStatus,+    putRegistryCatalogDataResponse_registryCatalogData,++    -- ** PutRepositoryCatalogData+    putRepositoryCatalogData_registryId,+    putRepositoryCatalogData_repositoryName,+    putRepositoryCatalogData_catalogData,+    putRepositoryCatalogDataResponse_catalogData,+    putRepositoryCatalogDataResponse_httpStatus,++    -- ** SetRepositoryPolicy+    setRepositoryPolicy_force,+    setRepositoryPolicy_registryId,+    setRepositoryPolicy_repositoryName,+    setRepositoryPolicy_policyText,+    setRepositoryPolicyResponse_policyText,+    setRepositoryPolicyResponse_registryId,+    setRepositoryPolicyResponse_repositoryName,+    setRepositoryPolicyResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UploadLayerPart+    uploadLayerPart_registryId,+    uploadLayerPart_repositoryName,+    uploadLayerPart_uploadId,+    uploadLayerPart_partFirstByte,+    uploadLayerPart_partLastByte,+    uploadLayerPart_layerPartBlob,+    uploadLayerPartResponse_lastByteReceived,+    uploadLayerPartResponse_registryId,+    uploadLayerPartResponse_repositoryName,+    uploadLayerPartResponse_uploadId,+    uploadLayerPartResponse_httpStatus,++    -- * Types++    -- ** AuthorizationData+    authorizationData_authorizationToken,+    authorizationData_expiresAt,++    -- ** Image+    image_imageId,+    image_imageManifest,+    image_imageManifestMediaType,+    image_registryId,+    image_repositoryName,++    -- ** ImageDetail+    imageDetail_artifactMediaType,+    imageDetail_imageDigest,+    imageDetail_imageManifestMediaType,+    imageDetail_imagePushedAt,+    imageDetail_imageSizeInBytes,+    imageDetail_imageTags,+    imageDetail_registryId,+    imageDetail_repositoryName,++    -- ** ImageFailure+    imageFailure_failureCode,+    imageFailure_failureReason,+    imageFailure_imageId,++    -- ** ImageIdentifier+    imageIdentifier_imageDigest,+    imageIdentifier_imageTag,++    -- ** ImageTagDetail+    imageTagDetail_createdAt,+    imageTagDetail_imageDetail,+    imageTagDetail_imageTag,++    -- ** Layer+    layer_layerAvailability,+    layer_layerDigest,+    layer_layerSize,+    layer_mediaType,++    -- ** LayerFailure+    layerFailure_failureCode,+    layerFailure_failureReason,+    layerFailure_layerDigest,++    -- ** ReferencedImageDetail+    referencedImageDetail_artifactMediaType,+    referencedImageDetail_imageDigest,+    referencedImageDetail_imageManifestMediaType,+    referencedImageDetail_imagePushedAt,+    referencedImageDetail_imageSizeInBytes,++    -- ** Registry+    registry_registryId,+    registry_registryArn,+    registry_registryUri,+    registry_verified,+    registry_aliases,++    -- ** RegistryAlias+    registryAlias_name,+    registryAlias_status,+    registryAlias_primaryRegistryAlias,+    registryAlias_defaultRegistryAlias,++    -- ** RegistryCatalogData+    registryCatalogData_displayName,++    -- ** Repository+    repository_createdAt,+    repository_registryId,+    repository_repositoryArn,+    repository_repositoryName,+    repository_repositoryUri,++    -- ** RepositoryCatalogData+    repositoryCatalogData_aboutText,+    repositoryCatalogData_architectures,+    repositoryCatalogData_description,+    repositoryCatalogData_logoUrl,+    repositoryCatalogData_marketplaceCertified,+    repositoryCatalogData_operatingSystems,+    repositoryCatalogData_usageText,++    -- ** RepositoryCatalogDataInput+    repositoryCatalogDataInput_aboutText,+    repositoryCatalogDataInput_architectures,+    repositoryCatalogDataInput_description,+    repositoryCatalogDataInput_logoImageBlob,+    repositoryCatalogDataInput_operatingSystems,+    repositoryCatalogDataInput_usageText,++    -- ** Tag+    tag_key,+    tag_value,+  )+where++import Amazonka.ECRPublic.BatchCheckLayerAvailability+import Amazonka.ECRPublic.BatchDeleteImage+import Amazonka.ECRPublic.CompleteLayerUpload+import Amazonka.ECRPublic.CreateRepository+import Amazonka.ECRPublic.DeleteRepository+import Amazonka.ECRPublic.DeleteRepositoryPolicy+import Amazonka.ECRPublic.DescribeImageTags+import Amazonka.ECRPublic.DescribeImages+import Amazonka.ECRPublic.DescribeRegistries+import Amazonka.ECRPublic.DescribeRepositories+import Amazonka.ECRPublic.GetAuthorizationToken+import Amazonka.ECRPublic.GetRegistryCatalogData+import Amazonka.ECRPublic.GetRepositoryCatalogData+import Amazonka.ECRPublic.GetRepositoryPolicy+import Amazonka.ECRPublic.InitiateLayerUpload+import Amazonka.ECRPublic.ListTagsForResource+import Amazonka.ECRPublic.PutImage+import Amazonka.ECRPublic.PutRegistryCatalogData+import Amazonka.ECRPublic.PutRepositoryCatalogData+import Amazonka.ECRPublic.SetRepositoryPolicy+import Amazonka.ECRPublic.TagResource+import Amazonka.ECRPublic.Types.AuthorizationData+import Amazonka.ECRPublic.Types.Image+import Amazonka.ECRPublic.Types.ImageDetail+import Amazonka.ECRPublic.Types.ImageFailure+import Amazonka.ECRPublic.Types.ImageIdentifier+import Amazonka.ECRPublic.Types.ImageTagDetail+import Amazonka.ECRPublic.Types.Layer+import Amazonka.ECRPublic.Types.LayerFailure+import Amazonka.ECRPublic.Types.ReferencedImageDetail+import Amazonka.ECRPublic.Types.Registry+import Amazonka.ECRPublic.Types.RegistryAlias+import Amazonka.ECRPublic.Types.RegistryCatalogData+import Amazonka.ECRPublic.Types.Repository+import Amazonka.ECRPublic.Types.RepositoryCatalogData+import Amazonka.ECRPublic.Types.RepositoryCatalogDataInput+import Amazonka.ECRPublic.Types.Tag+import Amazonka.ECRPublic.UntagResource+import Amazonka.ECRPublic.UploadLayerPart
+ gen/Amazonka/ECRPublic/ListTagsForResource.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.ECRPublic.ListTagsForResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- List the tags for an Amazon ECR Public resource.+module Amazonka.ECRPublic.ListTagsForResource+  ( -- * Creating a Request+    ListTagsForResource (..),+    newListTagsForResource,++    -- * Request Lenses+    listTagsForResource_resourceArn,++    -- * Destructuring the Response+    ListTagsForResourceResponse (..),+    newListTagsForResourceResponse,++    -- * Response Lenses+    listTagsForResourceResponse_tags,+    listTagsForResourceResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newListTagsForResource' smart constructor.+data ListTagsForResource = ListTagsForResource'+  { -- | The Amazon Resource Name (ARN) that identifies the resource for which to+    -- list the tags. Currently, the supported resource is an Amazon ECR Public+    -- repository.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) that identifies the resource for which to+-- list the tags. Currently, the supported resource is an Amazon ECR Public+-- repository.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The Amazon Resource Name (ARN) that identifies the resource for which to+-- list the tags. Currently, the supported resource is an Amazon ECR Public+-- repository.+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)++instance Core.AWSRequest ListTagsForResource where+  type+    AWSResponse ListTagsForResource =+      ListTagsForResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTagsForResourceResponse'+            Prelude.<$> (x Data..?> "tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListTagsForResource where+  hashWithSalt _salt ListTagsForResource' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData ListTagsForResource where+  rnf ListTagsForResource' {..} =+    Prelude.rnf resourceArn++instance Data.ToHeaders ListTagsForResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.ListTagsForResource" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListTagsForResource where+  toJSON ListTagsForResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("resourceArn" Data..= resourceArn)]+      )++instance Data.ToPath ListTagsForResource where+  toPath = Prelude.const "/"++instance Data.ToQuery ListTagsForResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | The tags for the resource.+    tags :: Prelude.Maybe [Tag],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'tags', 'listTagsForResourceResponse_tags' - The tags for the resource.+--+-- 'httpStatus', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { tags =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The tags for the resource.+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse (Prelude.Maybe [Tag])+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)++instance Prelude.NFData ListTagsForResourceResponse where+  rnf ListTagsForResourceResponse' {..} =+    Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/PutImage.hs view
@@ -0,0 +1,266 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.PutImage+-- 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 or updates the image manifest and tags associated with an image.+--+-- When an image is pushed and all new image layers have been uploaded, the+-- PutImage API is called once to create or update the image manifest and+-- the tags associated with the image.+--+-- This operation is used by the Amazon ECR proxy and is not generally used+-- by customers for pulling and pushing images. In most cases, you should+-- use the @docker@ CLI to pull, tag, and push images.+module Amazonka.ECRPublic.PutImage+  ( -- * Creating a Request+    PutImage (..),+    newPutImage,++    -- * Request Lenses+    putImage_imageDigest,+    putImage_imageManifestMediaType,+    putImage_imageTag,+    putImage_registryId,+    putImage_repositoryName,+    putImage_imageManifest,++    -- * Destructuring the Response+    PutImageResponse (..),+    newPutImageResponse,++    -- * Response Lenses+    putImageResponse_image,+    putImageResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutImage' smart constructor.+data PutImage = PutImage'+  { -- | The image digest of the image manifest corresponding to the image.+    imageDigest :: Prelude.Maybe Prelude.Text,+    -- | The media type of the image manifest. If you push an image manifest that+    -- does not contain the @mediaType@ field, you must specify the+    -- @imageManifestMediaType@ in the request.+    imageManifestMediaType :: Prelude.Maybe Prelude.Text,+    -- | The tag to associate with the image. This parameter is required for+    -- images that use the Docker Image Manifest V2 Schema 2 or Open Container+    -- Initiative (OCI) formats.+    imageTag :: Prelude.Maybe Prelude.Text,+    -- | The AWS account ID associated with the public registry that contains the+    -- repository in which to put the image. If you do not specify a registry,+    -- the default public registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository in which to put the image.+    repositoryName :: Prelude.Text,+    -- | The image manifest corresponding to the image to be uploaded.+    imageManifest :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutImage' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageDigest', 'putImage_imageDigest' - The image digest of the image manifest corresponding to the image.+--+-- 'imageManifestMediaType', 'putImage_imageManifestMediaType' - The media type of the image manifest. If you push an image manifest that+-- does not contain the @mediaType@ field, you must specify the+-- @imageManifestMediaType@ in the request.+--+-- 'imageTag', 'putImage_imageTag' - The tag to associate with the image. This parameter is required for+-- images that use the Docker Image Manifest V2 Schema 2 or Open Container+-- Initiative (OCI) formats.+--+-- 'registryId', 'putImage_registryId' - The AWS account ID associated with the public registry that contains the+-- repository in which to put the image. If you do not specify a registry,+-- the default public registry is assumed.+--+-- 'repositoryName', 'putImage_repositoryName' - The name of the repository in which to put the image.+--+-- 'imageManifest', 'putImage_imageManifest' - The image manifest corresponding to the image to be uploaded.+newPutImage ::+  -- | 'repositoryName'+  Prelude.Text ->+  -- | 'imageManifest'+  Prelude.Text ->+  PutImage+newPutImage pRepositoryName_ pImageManifest_ =+  PutImage'+    { imageDigest = Prelude.Nothing,+      imageManifestMediaType = Prelude.Nothing,+      imageTag = Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = pRepositoryName_,+      imageManifest = pImageManifest_+    }++-- | The image digest of the image manifest corresponding to the image.+putImage_imageDigest :: Lens.Lens' PutImage (Prelude.Maybe Prelude.Text)+putImage_imageDigest = Lens.lens (\PutImage' {imageDigest} -> imageDigest) (\s@PutImage' {} a -> s {imageDigest = a} :: PutImage)++-- | The media type of the image manifest. If you push an image manifest that+-- does not contain the @mediaType@ field, you must specify the+-- @imageManifestMediaType@ in the request.+putImage_imageManifestMediaType :: Lens.Lens' PutImage (Prelude.Maybe Prelude.Text)+putImage_imageManifestMediaType = Lens.lens (\PutImage' {imageManifestMediaType} -> imageManifestMediaType) (\s@PutImage' {} a -> s {imageManifestMediaType = a} :: PutImage)++-- | The tag to associate with the image. This parameter is required for+-- images that use the Docker Image Manifest V2 Schema 2 or Open Container+-- Initiative (OCI) formats.+putImage_imageTag :: Lens.Lens' PutImage (Prelude.Maybe Prelude.Text)+putImage_imageTag = Lens.lens (\PutImage' {imageTag} -> imageTag) (\s@PutImage' {} a -> s {imageTag = a} :: PutImage)++-- | The AWS account ID associated with the public registry that contains the+-- repository in which to put the image. If you do not specify a registry,+-- the default public registry is assumed.+putImage_registryId :: Lens.Lens' PutImage (Prelude.Maybe Prelude.Text)+putImage_registryId = Lens.lens (\PutImage' {registryId} -> registryId) (\s@PutImage' {} a -> s {registryId = a} :: PutImage)++-- | The name of the repository in which to put the image.+putImage_repositoryName :: Lens.Lens' PutImage Prelude.Text+putImage_repositoryName = Lens.lens (\PutImage' {repositoryName} -> repositoryName) (\s@PutImage' {} a -> s {repositoryName = a} :: PutImage)++-- | The image manifest corresponding to the image to be uploaded.+putImage_imageManifest :: Lens.Lens' PutImage Prelude.Text+putImage_imageManifest = Lens.lens (\PutImage' {imageManifest} -> imageManifest) (\s@PutImage' {} a -> s {imageManifest = a} :: PutImage)++instance Core.AWSRequest PutImage where+  type AWSResponse PutImage = PutImageResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutImageResponse'+            Prelude.<$> (x Data..?> "image")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutImage where+  hashWithSalt _salt PutImage' {..} =+    _salt+      `Prelude.hashWithSalt` imageDigest+      `Prelude.hashWithSalt` imageManifestMediaType+      `Prelude.hashWithSalt` imageTag+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName+      `Prelude.hashWithSalt` imageManifest++instance Prelude.NFData PutImage where+  rnf PutImage' {..} =+    Prelude.rnf imageDigest+      `Prelude.seq` Prelude.rnf imageManifestMediaType+      `Prelude.seq` Prelude.rnf imageTag+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf imageManifest++instance Data.ToHeaders PutImage where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.PutImage" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutImage where+  toJSON PutImage' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("imageDigest" Data..=) Prelude.<$> imageDigest,+            ("imageManifestMediaType" Data..=)+              Prelude.<$> imageManifestMediaType,+            ("imageTag" Data..=) Prelude.<$> imageTag,+            ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName),+            Prelude.Just+              ("imageManifest" Data..= imageManifest)+          ]+      )++instance Data.ToPath PutImage where+  toPath = Prelude.const "/"++instance Data.ToQuery PutImage where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutImageResponse' smart constructor.+data PutImageResponse = PutImageResponse'+  { -- | Details of the image uploaded.+    image :: Prelude.Maybe Image,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutImageResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'image', 'putImageResponse_image' - Details of the image uploaded.+--+-- 'httpStatus', 'putImageResponse_httpStatus' - The response's http status code.+newPutImageResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutImageResponse+newPutImageResponse pHttpStatus_ =+  PutImageResponse'+    { image = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Details of the image uploaded.+putImageResponse_image :: Lens.Lens' PutImageResponse (Prelude.Maybe Image)+putImageResponse_image = Lens.lens (\PutImageResponse' {image} -> image) (\s@PutImageResponse' {} a -> s {image = a} :: PutImageResponse)++-- | The response's http status code.+putImageResponse_httpStatus :: Lens.Lens' PutImageResponse Prelude.Int+putImageResponse_httpStatus = Lens.lens (\PutImageResponse' {httpStatus} -> httpStatus) (\s@PutImageResponse' {} a -> s {httpStatus = a} :: PutImageResponse)++instance Prelude.NFData PutImageResponse where+  rnf PutImageResponse' {..} =+    Prelude.rnf image+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/PutRegistryCatalogData.hs view
@@ -0,0 +1,189 @@+{-# 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.ECRPublic.PutRegistryCatalogData+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Create or updates the catalog data for a public registry.+module Amazonka.ECRPublic.PutRegistryCatalogData+  ( -- * Creating a Request+    PutRegistryCatalogData (..),+    newPutRegistryCatalogData,++    -- * Request Lenses+    putRegistryCatalogData_displayName,++    -- * Destructuring the Response+    PutRegistryCatalogDataResponse (..),+    newPutRegistryCatalogDataResponse,++    -- * Response Lenses+    putRegistryCatalogDataResponse_httpStatus,+    putRegistryCatalogDataResponse_registryCatalogData,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutRegistryCatalogData' smart constructor.+data PutRegistryCatalogData = PutRegistryCatalogData'+  { -- | The display name for a public registry. The display name is shown as the+    -- repository author in the Amazon ECR Public Gallery.+    --+    -- The registry display name is only publicly visible in the Amazon ECR+    -- Public Gallery for verified accounts.+    displayName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutRegistryCatalogData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'displayName', 'putRegistryCatalogData_displayName' - The display name for a public registry. The display name is shown as the+-- repository author in the Amazon ECR Public Gallery.+--+-- The registry display name is only publicly visible in the Amazon ECR+-- Public Gallery for verified accounts.+newPutRegistryCatalogData ::+  PutRegistryCatalogData+newPutRegistryCatalogData =+  PutRegistryCatalogData'+    { displayName =+        Prelude.Nothing+    }++-- | The display name for a public registry. The display name is shown as the+-- repository author in the Amazon ECR Public Gallery.+--+-- The registry display name is only publicly visible in the Amazon ECR+-- Public Gallery for verified accounts.+putRegistryCatalogData_displayName :: Lens.Lens' PutRegistryCatalogData (Prelude.Maybe Prelude.Text)+putRegistryCatalogData_displayName = Lens.lens (\PutRegistryCatalogData' {displayName} -> displayName) (\s@PutRegistryCatalogData' {} a -> s {displayName = a} :: PutRegistryCatalogData)++instance Core.AWSRequest PutRegistryCatalogData where+  type+    AWSResponse PutRegistryCatalogData =+      PutRegistryCatalogDataResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutRegistryCatalogDataResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "registryCatalogData")+      )++instance Prelude.Hashable PutRegistryCatalogData where+  hashWithSalt _salt PutRegistryCatalogData' {..} =+    _salt `Prelude.hashWithSalt` displayName++instance Prelude.NFData PutRegistryCatalogData where+  rnf PutRegistryCatalogData' {..} =+    Prelude.rnf displayName++instance Data.ToHeaders PutRegistryCatalogData where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.PutRegistryCatalogData" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutRegistryCatalogData where+  toJSON PutRegistryCatalogData' {..} =+    Data.object+      ( Prelude.catMaybes+          [("displayName" Data..=) Prelude.<$> displayName]+      )++instance Data.ToPath PutRegistryCatalogData where+  toPath = Prelude.const "/"++instance Data.ToQuery PutRegistryCatalogData where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutRegistryCatalogDataResponse' smart constructor.+data PutRegistryCatalogDataResponse = PutRegistryCatalogDataResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The catalog data for the public registry.+    registryCatalogData :: RegistryCatalogData+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutRegistryCatalogDataResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'putRegistryCatalogDataResponse_httpStatus' - The response's http status code.+--+-- 'registryCatalogData', 'putRegistryCatalogDataResponse_registryCatalogData' - The catalog data for the public registry.+newPutRegistryCatalogDataResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'registryCatalogData'+  RegistryCatalogData ->+  PutRegistryCatalogDataResponse+newPutRegistryCatalogDataResponse+  pHttpStatus_+  pRegistryCatalogData_ =+    PutRegistryCatalogDataResponse'+      { httpStatus =+          pHttpStatus_,+        registryCatalogData = pRegistryCatalogData_+      }++-- | The response's http status code.+putRegistryCatalogDataResponse_httpStatus :: Lens.Lens' PutRegistryCatalogDataResponse Prelude.Int+putRegistryCatalogDataResponse_httpStatus = Lens.lens (\PutRegistryCatalogDataResponse' {httpStatus} -> httpStatus) (\s@PutRegistryCatalogDataResponse' {} a -> s {httpStatus = a} :: PutRegistryCatalogDataResponse)++-- | The catalog data for the public registry.+putRegistryCatalogDataResponse_registryCatalogData :: Lens.Lens' PutRegistryCatalogDataResponse RegistryCatalogData+putRegistryCatalogDataResponse_registryCatalogData = Lens.lens (\PutRegistryCatalogDataResponse' {registryCatalogData} -> registryCatalogData) (\s@PutRegistryCatalogDataResponse' {} a -> s {registryCatalogData = a} :: PutRegistryCatalogDataResponse)++instance+  Prelude.NFData+    PutRegistryCatalogDataResponse+  where+  rnf PutRegistryCatalogDataResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf registryCatalogData
+ gen/Amazonka/ECRPublic/PutRepositoryCatalogData.hs view
@@ -0,0 +1,218 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.PutRepositoryCatalogData+-- 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 or updates the catalog data for a repository in a public+-- registry.+module Amazonka.ECRPublic.PutRepositoryCatalogData+  ( -- * Creating a Request+    PutRepositoryCatalogData (..),+    newPutRepositoryCatalogData,++    -- * Request Lenses+    putRepositoryCatalogData_registryId,+    putRepositoryCatalogData_repositoryName,+    putRepositoryCatalogData_catalogData,++    -- * Destructuring the Response+    PutRepositoryCatalogDataResponse (..),+    newPutRepositoryCatalogDataResponse,++    -- * Response Lenses+    putRepositoryCatalogDataResponse_catalogData,+    putRepositoryCatalogDataResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newPutRepositoryCatalogData' smart constructor.+data PutRepositoryCatalogData = PutRepositoryCatalogData'+  { -- | The AWS account ID associated with the public registry the repository is+    -- in. If you do not specify a registry, the default public registry is+    -- assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository to create or update the catalog data for.+    repositoryName :: Prelude.Text,+    -- | An object containing the catalog data for a repository. This data is+    -- publicly visible in the Amazon ECR Public Gallery.+    catalogData :: RepositoryCatalogDataInput+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutRepositoryCatalogData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'registryId', 'putRepositoryCatalogData_registryId' - The AWS account ID associated with the public registry the repository is+-- in. If you do not specify a registry, the default public registry is+-- assumed.+--+-- 'repositoryName', 'putRepositoryCatalogData_repositoryName' - The name of the repository to create or update the catalog data for.+--+-- 'catalogData', 'putRepositoryCatalogData_catalogData' - An object containing the catalog data for a repository. This data is+-- publicly visible in the Amazon ECR Public Gallery.+newPutRepositoryCatalogData ::+  -- | 'repositoryName'+  Prelude.Text ->+  -- | 'catalogData'+  RepositoryCatalogDataInput ->+  PutRepositoryCatalogData+newPutRepositoryCatalogData+  pRepositoryName_+  pCatalogData_ =+    PutRepositoryCatalogData'+      { registryId =+          Prelude.Nothing,+        repositoryName = pRepositoryName_,+        catalogData = pCatalogData_+      }++-- | The AWS account ID associated with the public registry the repository is+-- in. If you do not specify a registry, the default public registry is+-- assumed.+putRepositoryCatalogData_registryId :: Lens.Lens' PutRepositoryCatalogData (Prelude.Maybe Prelude.Text)+putRepositoryCatalogData_registryId = Lens.lens (\PutRepositoryCatalogData' {registryId} -> registryId) (\s@PutRepositoryCatalogData' {} a -> s {registryId = a} :: PutRepositoryCatalogData)++-- | The name of the repository to create or update the catalog data for.+putRepositoryCatalogData_repositoryName :: Lens.Lens' PutRepositoryCatalogData Prelude.Text+putRepositoryCatalogData_repositoryName = Lens.lens (\PutRepositoryCatalogData' {repositoryName} -> repositoryName) (\s@PutRepositoryCatalogData' {} a -> s {repositoryName = a} :: PutRepositoryCatalogData)++-- | An object containing the catalog data for a repository. This data is+-- publicly visible in the Amazon ECR Public Gallery.+putRepositoryCatalogData_catalogData :: Lens.Lens' PutRepositoryCatalogData RepositoryCatalogDataInput+putRepositoryCatalogData_catalogData = Lens.lens (\PutRepositoryCatalogData' {catalogData} -> catalogData) (\s@PutRepositoryCatalogData' {} a -> s {catalogData = a} :: PutRepositoryCatalogData)++instance Core.AWSRequest PutRepositoryCatalogData where+  type+    AWSResponse PutRepositoryCatalogData =+      PutRepositoryCatalogDataResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutRepositoryCatalogDataResponse'+            Prelude.<$> (x Data..?> "catalogData")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutRepositoryCatalogData where+  hashWithSalt _salt PutRepositoryCatalogData' {..} =+    _salt+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName+      `Prelude.hashWithSalt` catalogData++instance Prelude.NFData PutRepositoryCatalogData where+  rnf PutRepositoryCatalogData' {..} =+    Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf catalogData++instance Data.ToHeaders PutRepositoryCatalogData where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.PutRepositoryCatalogData" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutRepositoryCatalogData where+  toJSON PutRepositoryCatalogData' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName),+            Prelude.Just ("catalogData" Data..= catalogData)+          ]+      )++instance Data.ToPath PutRepositoryCatalogData where+  toPath = Prelude.const "/"++instance Data.ToQuery PutRepositoryCatalogData where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutRepositoryCatalogDataResponse' smart constructor.+data PutRepositoryCatalogDataResponse = PutRepositoryCatalogDataResponse'+  { -- | The catalog data for the repository.+    catalogData :: Prelude.Maybe RepositoryCatalogData,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutRepositoryCatalogDataResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'catalogData', 'putRepositoryCatalogDataResponse_catalogData' - The catalog data for the repository.+--+-- 'httpStatus', 'putRepositoryCatalogDataResponse_httpStatus' - The response's http status code.+newPutRepositoryCatalogDataResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutRepositoryCatalogDataResponse+newPutRepositoryCatalogDataResponse pHttpStatus_ =+  PutRepositoryCatalogDataResponse'+    { catalogData =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The catalog data for the repository.+putRepositoryCatalogDataResponse_catalogData :: Lens.Lens' PutRepositoryCatalogDataResponse (Prelude.Maybe RepositoryCatalogData)+putRepositoryCatalogDataResponse_catalogData = Lens.lens (\PutRepositoryCatalogDataResponse' {catalogData} -> catalogData) (\s@PutRepositoryCatalogDataResponse' {} a -> s {catalogData = a} :: PutRepositoryCatalogDataResponse)++-- | The response's http status code.+putRepositoryCatalogDataResponse_httpStatus :: Lens.Lens' PutRepositoryCatalogDataResponse Prelude.Int+putRepositoryCatalogDataResponse_httpStatus = Lens.lens (\PutRepositoryCatalogDataResponse' {httpStatus} -> httpStatus) (\s@PutRepositoryCatalogDataResponse' {} a -> s {httpStatus = a} :: PutRepositoryCatalogDataResponse)++instance+  Prelude.NFData+    PutRepositoryCatalogDataResponse+  where+  rnf PutRepositoryCatalogDataResponse' {..} =+    Prelude.rnf catalogData+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/SetRepositoryPolicy.hs view
@@ -0,0 +1,266 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.SetRepositoryPolicy+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Applies a repository policy to the specified public repository to+-- control access permissions. For more information, see+-- <https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policies.html Amazon ECR Repository Policies>+-- in the /Amazon Elastic Container Registry User Guide/.+module Amazonka.ECRPublic.SetRepositoryPolicy+  ( -- * Creating a Request+    SetRepositoryPolicy (..),+    newSetRepositoryPolicy,++    -- * Request Lenses+    setRepositoryPolicy_force,+    setRepositoryPolicy_registryId,+    setRepositoryPolicy_repositoryName,+    setRepositoryPolicy_policyText,++    -- * Destructuring the Response+    SetRepositoryPolicyResponse (..),+    newSetRepositoryPolicyResponse,++    -- * Response Lenses+    setRepositoryPolicyResponse_policyText,+    setRepositoryPolicyResponse_registryId,+    setRepositoryPolicyResponse_repositoryName,+    setRepositoryPolicyResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newSetRepositoryPolicy' smart constructor.+data SetRepositoryPolicy = SetRepositoryPolicy'+  { -- | If the policy you are attempting to set on a repository policy would+    -- prevent you from setting another policy in the future, you must force+    -- the SetRepositoryPolicy operation. This is intended to prevent+    -- accidental repository lock outs.+    force :: Prelude.Maybe Prelude.Bool,+    -- | The AWS account ID associated with the registry that contains the+    -- repository. If you do not specify a registry, the default public+    -- registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository to receive the policy.+    repositoryName :: Prelude.Text,+    -- | The JSON repository policy text to apply to the repository. For more+    -- information, see+    -- <https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html Amazon ECR Repository Policies>+    -- in the /Amazon Elastic Container Registry User Guide/.+    policyText :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SetRepositoryPolicy' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'force', 'setRepositoryPolicy_force' - If the policy you are attempting to set on a repository policy would+-- prevent you from setting another policy in the future, you must force+-- the SetRepositoryPolicy operation. This is intended to prevent+-- accidental repository lock outs.+--+-- 'registryId', 'setRepositoryPolicy_registryId' - The AWS account ID associated with the registry that contains the+-- repository. If you do not specify a registry, the default public+-- registry is assumed.+--+-- 'repositoryName', 'setRepositoryPolicy_repositoryName' - The name of the repository to receive the policy.+--+-- 'policyText', 'setRepositoryPolicy_policyText' - The JSON repository policy text to apply to the repository. For more+-- information, see+-- <https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html Amazon ECR Repository Policies>+-- in the /Amazon Elastic Container Registry User Guide/.+newSetRepositoryPolicy ::+  -- | 'repositoryName'+  Prelude.Text ->+  -- | 'policyText'+  Prelude.Text ->+  SetRepositoryPolicy+newSetRepositoryPolicy pRepositoryName_ pPolicyText_ =+  SetRepositoryPolicy'+    { force = Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = pRepositoryName_,+      policyText = pPolicyText_+    }++-- | If the policy you are attempting to set on a repository policy would+-- prevent you from setting another policy in the future, you must force+-- the SetRepositoryPolicy operation. This is intended to prevent+-- accidental repository lock outs.+setRepositoryPolicy_force :: Lens.Lens' SetRepositoryPolicy (Prelude.Maybe Prelude.Bool)+setRepositoryPolicy_force = Lens.lens (\SetRepositoryPolicy' {force} -> force) (\s@SetRepositoryPolicy' {} a -> s {force = a} :: SetRepositoryPolicy)++-- | The AWS account ID associated with the registry that contains the+-- repository. If you do not specify a registry, the default public+-- registry is assumed.+setRepositoryPolicy_registryId :: Lens.Lens' SetRepositoryPolicy (Prelude.Maybe Prelude.Text)+setRepositoryPolicy_registryId = Lens.lens (\SetRepositoryPolicy' {registryId} -> registryId) (\s@SetRepositoryPolicy' {} a -> s {registryId = a} :: SetRepositoryPolicy)++-- | The name of the repository to receive the policy.+setRepositoryPolicy_repositoryName :: Lens.Lens' SetRepositoryPolicy Prelude.Text+setRepositoryPolicy_repositoryName = Lens.lens (\SetRepositoryPolicy' {repositoryName} -> repositoryName) (\s@SetRepositoryPolicy' {} a -> s {repositoryName = a} :: SetRepositoryPolicy)++-- | The JSON repository policy text to apply to the repository. For more+-- information, see+-- <https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html Amazon ECR Repository Policies>+-- in the /Amazon Elastic Container Registry User Guide/.+setRepositoryPolicy_policyText :: Lens.Lens' SetRepositoryPolicy Prelude.Text+setRepositoryPolicy_policyText = Lens.lens (\SetRepositoryPolicy' {policyText} -> policyText) (\s@SetRepositoryPolicy' {} a -> s {policyText = a} :: SetRepositoryPolicy)++instance Core.AWSRequest SetRepositoryPolicy where+  type+    AWSResponse SetRepositoryPolicy =+      SetRepositoryPolicyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          SetRepositoryPolicyResponse'+            Prelude.<$> (x Data..?> "policyText")+            Prelude.<*> (x Data..?> "registryId")+            Prelude.<*> (x Data..?> "repositoryName")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable SetRepositoryPolicy where+  hashWithSalt _salt SetRepositoryPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` force+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName+      `Prelude.hashWithSalt` policyText++instance Prelude.NFData SetRepositoryPolicy where+  rnf SetRepositoryPolicy' {..} =+    Prelude.rnf force+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf policyText++instance Data.ToHeaders SetRepositoryPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.SetRepositoryPolicy" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SetRepositoryPolicy where+  toJSON SetRepositoryPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("force" Data..=) Prelude.<$> force,+            ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName),+            Prelude.Just ("policyText" Data..= policyText)+          ]+      )++instance Data.ToPath SetRepositoryPolicy where+  toPath = Prelude.const "/"++instance Data.ToQuery SetRepositoryPolicy where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newSetRepositoryPolicyResponse' smart constructor.+data SetRepositoryPolicyResponse = SetRepositoryPolicyResponse'+  { -- | The JSON repository policy text applied to the repository.+    policyText :: Prelude.Maybe Prelude.Text,+    -- | The registry ID associated with the request.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The repository name associated with the request.+    repositoryName :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SetRepositoryPolicyResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'policyText', 'setRepositoryPolicyResponse_policyText' - The JSON repository policy text applied to the repository.+--+-- 'registryId', 'setRepositoryPolicyResponse_registryId' - The registry ID associated with the request.+--+-- 'repositoryName', 'setRepositoryPolicyResponse_repositoryName' - The repository name associated with the request.+--+-- 'httpStatus', 'setRepositoryPolicyResponse_httpStatus' - The response's http status code.+newSetRepositoryPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  SetRepositoryPolicyResponse+newSetRepositoryPolicyResponse pHttpStatus_ =+  SetRepositoryPolicyResponse'+    { policyText =+        Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The JSON repository policy text applied to the repository.+setRepositoryPolicyResponse_policyText :: Lens.Lens' SetRepositoryPolicyResponse (Prelude.Maybe Prelude.Text)+setRepositoryPolicyResponse_policyText = Lens.lens (\SetRepositoryPolicyResponse' {policyText} -> policyText) (\s@SetRepositoryPolicyResponse' {} a -> s {policyText = a} :: SetRepositoryPolicyResponse)++-- | The registry ID associated with the request.+setRepositoryPolicyResponse_registryId :: Lens.Lens' SetRepositoryPolicyResponse (Prelude.Maybe Prelude.Text)+setRepositoryPolicyResponse_registryId = Lens.lens (\SetRepositoryPolicyResponse' {registryId} -> registryId) (\s@SetRepositoryPolicyResponse' {} a -> s {registryId = a} :: SetRepositoryPolicyResponse)++-- | The repository name associated with the request.+setRepositoryPolicyResponse_repositoryName :: Lens.Lens' SetRepositoryPolicyResponse (Prelude.Maybe Prelude.Text)+setRepositoryPolicyResponse_repositoryName = Lens.lens (\SetRepositoryPolicyResponse' {repositoryName} -> repositoryName) (\s@SetRepositoryPolicyResponse' {} a -> s {repositoryName = a} :: SetRepositoryPolicyResponse)++-- | The response's http status code.+setRepositoryPolicyResponse_httpStatus :: Lens.Lens' SetRepositoryPolicyResponse Prelude.Int+setRepositoryPolicyResponse_httpStatus = Lens.lens (\SetRepositoryPolicyResponse' {httpStatus} -> httpStatus) (\s@SetRepositoryPolicyResponse' {} a -> s {httpStatus = a} :: SetRepositoryPolicyResponse)++instance Prelude.NFData SetRepositoryPolicyResponse where+  rnf SetRepositoryPolicyResponse' {..} =+    Prelude.rnf policyText+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/TagResource.hs view
@@ -0,0 +1,180 @@+{-# 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.ECRPublic.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)+--+-- Associates the specified tags to a resource with the specified+-- @resourceArn@. If existing tags on a resource are not specified in the+-- request parameters, they are not changed. When a resource is deleted,+-- the tags associated with that resource are deleted as well.+module Amazonka.ECRPublic.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.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The Amazon Resource Name (ARN) of the resource to which to add tags.+    -- Currently, the supported resource is an Amazon ECR Public repository.+    resourceArn :: Prelude.Text,+    -- | The tags to add to the resource. A tag is an array of key-value pairs.+    -- Tag keys can have a maximum character length of 128 characters, and tag+    -- values can have a maximum length of 256 characters.+    tags :: [Tag]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource to which to add tags.+-- Currently, the supported resource is an Amazon ECR Public repository.+--+-- 'tags', 'tagResource_tags' - The tags to add to the resource. A tag is an array of key-value pairs.+-- Tag keys can have a maximum character length of 128 characters, and tag+-- values can have a maximum length of 256 characters.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource to which to add tags.+-- Currently, the supported resource is an Amazon ECR Public repository.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | The tags to add to the resource. A tag is an array of key-value pairs.+-- Tag keys can have a maximum character length of 128 characters, and tag+-- values can have a maximum length of 256 characters.+tagResource_tags :: Lens.Lens' TagResource [Tag]+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced++instance Core.AWSRequest TagResource where+  type AWSResponse TagResource = TagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          TagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable TagResource where+  hashWithSalt _salt TagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData TagResource where+  rnf TagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tags++instance Data.ToHeaders TagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.TagResource" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("resourceArn" Data..= resourceArn),+            Prelude.Just ("tags" Data..= tags)+          ]+      )++instance Data.ToPath TagResource where+  toPath = Prelude.const "/"++instance Data.ToQuery TagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'tagResourceResponse_httpStatus' - The response's http status code.+newTagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TagResourceResponse+newTagResourceResponse pHttpStatus_ =+  TagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)++instance Prelude.NFData TagResourceResponse where+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/Types.hs view
@@ -0,0 +1,460 @@+{-# 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.ECRPublic.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.ECRPublic.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _EmptyUploadException,+    _ImageAlreadyExistsException,+    _ImageDigestDoesNotMatchException,+    _ImageNotFoundException,+    _ImageTagAlreadyExistsException,+    _InvalidLayerException,+    _InvalidLayerPartException,+    _InvalidParameterException,+    _InvalidTagParameterException,+    _LayerAlreadyExistsException,+    _LayerPartTooSmallException,+    _LayersNotFoundException,+    _LimitExceededException,+    _ReferencedImagesNotFoundException,+    _RegistryNotFoundException,+    _RepositoryAlreadyExistsException,+    _RepositoryNotEmptyException,+    _RepositoryNotFoundException,+    _RepositoryPolicyNotFoundException,+    _ServerException,+    _TooManyTagsException,+    _UnsupportedCommandException,+    _UploadNotFoundException,++    -- * ImageFailureCode+    ImageFailureCode (..),++    -- * LayerAvailability+    LayerAvailability (..),++    -- * LayerFailureCode+    LayerFailureCode (..),++    -- * RegistryAliasStatus+    RegistryAliasStatus (..),++    -- * AuthorizationData+    AuthorizationData (..),+    newAuthorizationData,+    authorizationData_authorizationToken,+    authorizationData_expiresAt,++    -- * Image+    Image (..),+    newImage,+    image_imageId,+    image_imageManifest,+    image_imageManifestMediaType,+    image_registryId,+    image_repositoryName,++    -- * ImageDetail+    ImageDetail (..),+    newImageDetail,+    imageDetail_artifactMediaType,+    imageDetail_imageDigest,+    imageDetail_imageManifestMediaType,+    imageDetail_imagePushedAt,+    imageDetail_imageSizeInBytes,+    imageDetail_imageTags,+    imageDetail_registryId,+    imageDetail_repositoryName,++    -- * ImageFailure+    ImageFailure (..),+    newImageFailure,+    imageFailure_failureCode,+    imageFailure_failureReason,+    imageFailure_imageId,++    -- * ImageIdentifier+    ImageIdentifier (..),+    newImageIdentifier,+    imageIdentifier_imageDigest,+    imageIdentifier_imageTag,++    -- * ImageTagDetail+    ImageTagDetail (..),+    newImageTagDetail,+    imageTagDetail_createdAt,+    imageTagDetail_imageDetail,+    imageTagDetail_imageTag,++    -- * Layer+    Layer (..),+    newLayer,+    layer_layerAvailability,+    layer_layerDigest,+    layer_layerSize,+    layer_mediaType,++    -- * LayerFailure+    LayerFailure (..),+    newLayerFailure,+    layerFailure_failureCode,+    layerFailure_failureReason,+    layerFailure_layerDigest,++    -- * ReferencedImageDetail+    ReferencedImageDetail (..),+    newReferencedImageDetail,+    referencedImageDetail_artifactMediaType,+    referencedImageDetail_imageDigest,+    referencedImageDetail_imageManifestMediaType,+    referencedImageDetail_imagePushedAt,+    referencedImageDetail_imageSizeInBytes,++    -- * Registry+    Registry (..),+    newRegistry,+    registry_registryId,+    registry_registryArn,+    registry_registryUri,+    registry_verified,+    registry_aliases,++    -- * RegistryAlias+    RegistryAlias (..),+    newRegistryAlias,+    registryAlias_name,+    registryAlias_status,+    registryAlias_primaryRegistryAlias,+    registryAlias_defaultRegistryAlias,++    -- * RegistryCatalogData+    RegistryCatalogData (..),+    newRegistryCatalogData,+    registryCatalogData_displayName,++    -- * Repository+    Repository (..),+    newRepository,+    repository_createdAt,+    repository_registryId,+    repository_repositoryArn,+    repository_repositoryName,+    repository_repositoryUri,++    -- * RepositoryCatalogData+    RepositoryCatalogData (..),+    newRepositoryCatalogData,+    repositoryCatalogData_aboutText,+    repositoryCatalogData_architectures,+    repositoryCatalogData_description,+    repositoryCatalogData_logoUrl,+    repositoryCatalogData_marketplaceCertified,+    repositoryCatalogData_operatingSystems,+    repositoryCatalogData_usageText,++    -- * RepositoryCatalogDataInput+    RepositoryCatalogDataInput (..),+    newRepositoryCatalogDataInput,+    repositoryCatalogDataInput_aboutText,+    repositoryCatalogDataInput_architectures,+    repositoryCatalogDataInput_description,+    repositoryCatalogDataInput_logoImageBlob,+    repositoryCatalogDataInput_operatingSystems,+    repositoryCatalogDataInput_usageText,++    -- * Tag+    Tag (..),+    newTag,+    tag_key,+    tag_value,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import Amazonka.ECRPublic.Types.AuthorizationData+import Amazonka.ECRPublic.Types.Image+import Amazonka.ECRPublic.Types.ImageDetail+import Amazonka.ECRPublic.Types.ImageFailure+import Amazonka.ECRPublic.Types.ImageFailureCode+import Amazonka.ECRPublic.Types.ImageIdentifier+import Amazonka.ECRPublic.Types.ImageTagDetail+import Amazonka.ECRPublic.Types.Layer+import Amazonka.ECRPublic.Types.LayerAvailability+import Amazonka.ECRPublic.Types.LayerFailure+import Amazonka.ECRPublic.Types.LayerFailureCode+import Amazonka.ECRPublic.Types.ReferencedImageDetail+import Amazonka.ECRPublic.Types.Registry+import Amazonka.ECRPublic.Types.RegistryAlias+import Amazonka.ECRPublic.Types.RegistryAliasStatus+import Amazonka.ECRPublic.Types.RegistryCatalogData+import Amazonka.ECRPublic.Types.Repository+import Amazonka.ECRPublic.Types.RepositoryCatalogData+import Amazonka.ECRPublic.Types.RepositoryCatalogDataInput+import Amazonka.ECRPublic.Types.Tag+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2020-10-30@ of the Amazon Elastic Container Registry Public SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "ECRPublic",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "api.ecr-public",+      Core.signingName = "ecr-public",+      Core.version = "2020-10-30",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "ECRPublic",+      Core.retry = retry+    }+  where+    retry =+      Core.Exponential+        { Core.base = 5.0e-2,+          Core.growth = 2,+          Core.attempts = 5,+          Core.check = check+        }+    check e+      | Lens.has (Core.hasStatus 502) e =+          Prelude.Just "bad_gateway"+      | Lens.has (Core.hasStatus 504) e =+          Prelude.Just "gateway_timeout"+      | Lens.has (Core.hasStatus 500) e =+          Prelude.Just "general_server_error"+      | Lens.has (Core.hasStatus 509) e =+          Prelude.Just "limit_exceeded"+      | Lens.has+          ( Core.hasCode "RequestThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "request_throttled_exception"+      | Lens.has (Core.hasStatus 503) e =+          Prelude.Just "service_unavailable"+      | Lens.has+          ( Core.hasCode "ThrottledException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttled_exception"+      | Lens.has+          ( Core.hasCode "Throttling"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling"+      | Lens.has+          ( Core.hasCode "ThrottlingException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throttling_exception"+      | Lens.has+          ( Core.hasCode+              "ProvisionedThroughputExceededException"+              Prelude.. Core.hasStatus 400+          )+          e =+          Prelude.Just "throughput_exceeded"+      | Lens.has (Core.hasStatus 429) e =+          Prelude.Just "too_many_requests"+      | Prelude.otherwise = Prelude.Nothing++-- | The specified layer upload does not contain any layer parts.+_EmptyUploadException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_EmptyUploadException =+  Core._MatchServiceError+    defaultService+    "EmptyUploadException"++-- | The specified image has already been pushed, and there were no changes+-- to the manifest or image tag after the last push.+_ImageAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ImageAlreadyExistsException =+  Core._MatchServiceError+    defaultService+    "ImageAlreadyExistsException"++-- | The specified image digest does not match the digest that Amazon ECR+-- calculated for the image.+_ImageDigestDoesNotMatchException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ImageDigestDoesNotMatchException =+  Core._MatchServiceError+    defaultService+    "ImageDigestDoesNotMatchException"++-- | The image requested does not exist in the specified repository.+_ImageNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ImageNotFoundException =+  Core._MatchServiceError+    defaultService+    "ImageNotFoundException"++-- | The specified image is tagged with a tag that already exists. The+-- repository is configured for tag immutability.+_ImageTagAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ImageTagAlreadyExistsException =+  Core._MatchServiceError+    defaultService+    "ImageTagAlreadyExistsException"++-- | The layer digest calculation performed by Amazon ECR upon receipt of the+-- image layer does not match the digest specified.+_InvalidLayerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidLayerException =+  Core._MatchServiceError+    defaultService+    "InvalidLayerException"++-- | The layer part size is not valid, or the first byte specified is not+-- consecutive to the last byte of a previous layer part upload.+_InvalidLayerPartException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidLayerPartException =+  Core._MatchServiceError+    defaultService+    "InvalidLayerPartException"++-- | The specified parameter is invalid. Review the available parameters for+-- the API request.+_InvalidParameterException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidParameterException =+  Core._MatchServiceError+    defaultService+    "InvalidParameterException"++-- | An invalid parameter has been specified. Tag keys can have a maximum+-- character length of 128 characters, and tag values can have a maximum+-- length of 256 characters.+_InvalidTagParameterException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidTagParameterException =+  Core._MatchServiceError+    defaultService+    "InvalidTagParameterException"++-- | The image layer already exists in the associated repository.+_LayerAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_LayerAlreadyExistsException =+  Core._MatchServiceError+    defaultService+    "LayerAlreadyExistsException"++-- | Layer parts must be at least 5 MiB in size.+_LayerPartTooSmallException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_LayerPartTooSmallException =+  Core._MatchServiceError+    defaultService+    "LayerPartTooSmallException"++-- | The specified layers could not be found, or the specified layer is not+-- valid for this repository.+_LayersNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_LayersNotFoundException =+  Core._MatchServiceError+    defaultService+    "LayersNotFoundException"++-- | The operation did not succeed because it would have exceeded a service+-- limit for your account. For more information, see+-- <https://docs.aws.amazon.com/AmazonECR/latest/userguide/service-quotas.html Amazon ECR Service Quotas>+-- in the Amazon Elastic Container Registry User Guide.+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_LimitExceededException =+  Core._MatchServiceError+    defaultService+    "LimitExceededException"++-- | The manifest list is referencing an image that does not exist.+_ReferencedImagesNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ReferencedImagesNotFoundException =+  Core._MatchServiceError+    defaultService+    "ReferencedImagesNotFoundException"++-- | The registry does not exist.+_RegistryNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_RegistryNotFoundException =+  Core._MatchServiceError+    defaultService+    "RegistryNotFoundException"++-- | The specified repository already exists in the specified registry.+_RepositoryAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_RepositoryAlreadyExistsException =+  Core._MatchServiceError+    defaultService+    "RepositoryAlreadyExistsException"++-- | The specified repository contains images. To delete a repository that+-- contains images, you must force the deletion with the @force@ parameter.+_RepositoryNotEmptyException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_RepositoryNotEmptyException =+  Core._MatchServiceError+    defaultService+    "RepositoryNotEmptyException"++-- | The specified repository could not be found. Check the spelling of the+-- specified repository and ensure that you are performing operations on+-- the correct registry.+_RepositoryNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_RepositoryNotFoundException =+  Core._MatchServiceError+    defaultService+    "RepositoryNotFoundException"++-- | The specified repository and registry combination does not have an+-- associated repository policy.+_RepositoryPolicyNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_RepositoryPolicyNotFoundException =+  Core._MatchServiceError+    defaultService+    "RepositoryPolicyNotFoundException"++-- | These errors are usually caused by a server-side issue.+_ServerException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ServerException =+  Core._MatchServiceError+    defaultService+    "ServerException"++-- | The list of tags on the repository is over the limit. The maximum number+-- of tags that can be applied to a repository is 50.+_TooManyTagsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TooManyTagsException =+  Core._MatchServiceError+    defaultService+    "TooManyTagsException"++-- | The action is not supported in this Region.+_UnsupportedCommandException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_UnsupportedCommandException =+  Core._MatchServiceError+    defaultService+    "UnsupportedCommandException"++-- | The upload could not be found, or the specified upload ID is not valid+-- for this repository.+_UploadNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_UploadNotFoundException =+  Core._MatchServiceError+    defaultService+    "UploadNotFoundException"
+ gen/Amazonka/ECRPublic/Types/AuthorizationData.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.AuthorizationData+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.AuthorizationData where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An authorization token data object that corresponds to a public+-- registry.+--+-- /See:/ 'newAuthorizationData' smart constructor.+data AuthorizationData = AuthorizationData'+  { -- | A base64-encoded string that contains authorization data for a public+    -- Amazon ECR registry. When the string is decoded, it is presented in the+    -- format @user:password@ for public registry authentication using+    -- @docker login@.+    authorizationToken :: Prelude.Maybe Prelude.Text,+    -- | The Unix time in seconds and milliseconds when the authorization token+    -- expires. Authorization tokens are valid for 12 hours.+    expiresAt :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AuthorizationData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'authorizationToken', 'authorizationData_authorizationToken' - A base64-encoded string that contains authorization data for a public+-- Amazon ECR registry. When the string is decoded, it is presented in the+-- format @user:password@ for public registry authentication using+-- @docker login@.+--+-- 'expiresAt', 'authorizationData_expiresAt' - The Unix time in seconds and milliseconds when the authorization token+-- expires. Authorization tokens are valid for 12 hours.+newAuthorizationData ::+  AuthorizationData+newAuthorizationData =+  AuthorizationData'+    { authorizationToken =+        Prelude.Nothing,+      expiresAt = Prelude.Nothing+    }++-- | A base64-encoded string that contains authorization data for a public+-- Amazon ECR registry. When the string is decoded, it is presented in the+-- format @user:password@ for public registry authentication using+-- @docker login@.+authorizationData_authorizationToken :: Lens.Lens' AuthorizationData (Prelude.Maybe Prelude.Text)+authorizationData_authorizationToken = Lens.lens (\AuthorizationData' {authorizationToken} -> authorizationToken) (\s@AuthorizationData' {} a -> s {authorizationToken = a} :: AuthorizationData)++-- | The Unix time in seconds and milliseconds when the authorization token+-- expires. Authorization tokens are valid for 12 hours.+authorizationData_expiresAt :: Lens.Lens' AuthorizationData (Prelude.Maybe Prelude.UTCTime)+authorizationData_expiresAt = Lens.lens (\AuthorizationData' {expiresAt} -> expiresAt) (\s@AuthorizationData' {} a -> s {expiresAt = a} :: AuthorizationData) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON AuthorizationData where+  parseJSON =+    Data.withObject+      "AuthorizationData"+      ( \x ->+          AuthorizationData'+            Prelude.<$> (x Data..:? "authorizationToken")+            Prelude.<*> (x Data..:? "expiresAt")+      )++instance Prelude.Hashable AuthorizationData where+  hashWithSalt _salt AuthorizationData' {..} =+    _salt+      `Prelude.hashWithSalt` authorizationToken+      `Prelude.hashWithSalt` expiresAt++instance Prelude.NFData AuthorizationData where+  rnf AuthorizationData' {..} =+    Prelude.rnf authorizationToken+      `Prelude.seq` Prelude.rnf expiresAt
+ gen/Amazonka/ECRPublic/Types/Image.hs view
@@ -0,0 +1,124 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.Image+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.Image where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types.ImageIdentifier+import qualified Amazonka.Prelude as Prelude++-- | An object representing an Amazon ECR image.+--+-- /See:/ 'newImage' smart constructor.+data Image = Image'+  { -- | An object containing the image tag and image digest associated with an+    -- image.+    imageId :: Prelude.Maybe ImageIdentifier,+    -- | The image manifest associated with the image.+    imageManifest :: Prelude.Maybe Prelude.Text,+    -- | The manifest media type of the image.+    imageManifestMediaType :: Prelude.Maybe Prelude.Text,+    -- | The AWS account ID associated with the registry containing the image.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository associated with the image.+    repositoryName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Image' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageId', 'image_imageId' - An object containing the image tag and image digest associated with an+-- image.+--+-- 'imageManifest', 'image_imageManifest' - The image manifest associated with the image.+--+-- 'imageManifestMediaType', 'image_imageManifestMediaType' - The manifest media type of the image.+--+-- 'registryId', 'image_registryId' - The AWS account ID associated with the registry containing the image.+--+-- 'repositoryName', 'image_repositoryName' - The name of the repository associated with the image.+newImage ::+  Image+newImage =+  Image'+    { imageId = Prelude.Nothing,+      imageManifest = Prelude.Nothing,+      imageManifestMediaType = Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = Prelude.Nothing+    }++-- | An object containing the image tag and image digest associated with an+-- image.+image_imageId :: Lens.Lens' Image (Prelude.Maybe ImageIdentifier)+image_imageId = Lens.lens (\Image' {imageId} -> imageId) (\s@Image' {} a -> s {imageId = a} :: Image)++-- | The image manifest associated with the image.+image_imageManifest :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_imageManifest = Lens.lens (\Image' {imageManifest} -> imageManifest) (\s@Image' {} a -> s {imageManifest = a} :: Image)++-- | The manifest media type of the image.+image_imageManifestMediaType :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_imageManifestMediaType = Lens.lens (\Image' {imageManifestMediaType} -> imageManifestMediaType) (\s@Image' {} a -> s {imageManifestMediaType = a} :: Image)++-- | The AWS account ID associated with the registry containing the image.+image_registryId :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_registryId = Lens.lens (\Image' {registryId} -> registryId) (\s@Image' {} a -> s {registryId = a} :: Image)++-- | The name of the repository associated with the image.+image_repositoryName :: Lens.Lens' Image (Prelude.Maybe Prelude.Text)+image_repositoryName = Lens.lens (\Image' {repositoryName} -> repositoryName) (\s@Image' {} a -> s {repositoryName = a} :: Image)++instance Data.FromJSON Image where+  parseJSON =+    Data.withObject+      "Image"+      ( \x ->+          Image'+            Prelude.<$> (x Data..:? "imageId")+            Prelude.<*> (x Data..:? "imageManifest")+            Prelude.<*> (x Data..:? "imageManifestMediaType")+            Prelude.<*> (x Data..:? "registryId")+            Prelude.<*> (x Data..:? "repositoryName")+      )++instance Prelude.Hashable Image where+  hashWithSalt _salt Image' {..} =+    _salt+      `Prelude.hashWithSalt` imageId+      `Prelude.hashWithSalt` imageManifest+      `Prelude.hashWithSalt` imageManifestMediaType+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName++instance Prelude.NFData Image where+  rnf Image' {..} =+    Prelude.rnf imageId+      `Prelude.seq` Prelude.rnf imageManifest+      `Prelude.seq` Prelude.rnf imageManifestMediaType+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName
+ gen/Amazonka/ECRPublic/Types/ImageDetail.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.ECRPublic.Types.ImageDetail+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.ImageDetail where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that describes an image returned by a DescribeImages+-- operation.+--+-- /See:/ 'newImageDetail' smart constructor.+data ImageDetail = ImageDetail'+  { -- | The artifact media type of the image.+    artifactMediaType :: Prelude.Maybe Prelude.Text,+    -- | The @sha256@ digest of the image manifest.+    imageDigest :: Prelude.Maybe Prelude.Text,+    -- | The media type of the image manifest.+    imageManifestMediaType :: Prelude.Maybe Prelude.Text,+    -- | The date and time, expressed in standard JavaScript date format, at+    -- which the current image was pushed to the repository.+    imagePushedAt :: Prelude.Maybe Data.POSIX,+    -- | The size, in bytes, of the image in the repository.+    --+    -- If the image is a manifest list, this will be the max size of all+    -- manifests in the list.+    --+    -- Beginning with Docker version 1.9, the Docker client compresses image+    -- layers before pushing them to a V2 Docker registry. The output of the+    -- @docker images@ command shows the uncompressed image size, so it may+    -- return a larger image size than the image sizes returned by+    -- DescribeImages.+    imageSizeInBytes :: Prelude.Maybe Prelude.Integer,+    -- | The list of tags associated with this image.+    imageTags :: Prelude.Maybe [Prelude.Text],+    -- | The AWS account ID associated with the public registry to which this+    -- image belongs.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository to which this image belongs.+    repositoryName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageDetail' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'artifactMediaType', 'imageDetail_artifactMediaType' - The artifact media type of the image.+--+-- 'imageDigest', 'imageDetail_imageDigest' - The @sha256@ digest of the image manifest.+--+-- 'imageManifestMediaType', 'imageDetail_imageManifestMediaType' - The media type of the image manifest.+--+-- 'imagePushedAt', 'imageDetail_imagePushedAt' - The date and time, expressed in standard JavaScript date format, at+-- which the current image was pushed to the repository.+--+-- 'imageSizeInBytes', 'imageDetail_imageSizeInBytes' - The size, in bytes, of the image in the repository.+--+-- If the image is a manifest list, this will be the max size of all+-- manifests in the list.+--+-- Beginning with Docker version 1.9, the Docker client compresses image+-- layers before pushing them to a V2 Docker registry. The output of the+-- @docker images@ command shows the uncompressed image size, so it may+-- return a larger image size than the image sizes returned by+-- DescribeImages.+--+-- 'imageTags', 'imageDetail_imageTags' - The list of tags associated with this image.+--+-- 'registryId', 'imageDetail_registryId' - The AWS account ID associated with the public registry to which this+-- image belongs.+--+-- 'repositoryName', 'imageDetail_repositoryName' - The name of the repository to which this image belongs.+newImageDetail ::+  ImageDetail+newImageDetail =+  ImageDetail'+    { artifactMediaType = Prelude.Nothing,+      imageDigest = Prelude.Nothing,+      imageManifestMediaType = Prelude.Nothing,+      imagePushedAt = Prelude.Nothing,+      imageSizeInBytes = Prelude.Nothing,+      imageTags = Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = Prelude.Nothing+    }++-- | The artifact media type of the image.+imageDetail_artifactMediaType :: Lens.Lens' ImageDetail (Prelude.Maybe Prelude.Text)+imageDetail_artifactMediaType = Lens.lens (\ImageDetail' {artifactMediaType} -> artifactMediaType) (\s@ImageDetail' {} a -> s {artifactMediaType = a} :: ImageDetail)++-- | The @sha256@ digest of the image manifest.+imageDetail_imageDigest :: Lens.Lens' ImageDetail (Prelude.Maybe Prelude.Text)+imageDetail_imageDigest = Lens.lens (\ImageDetail' {imageDigest} -> imageDigest) (\s@ImageDetail' {} a -> s {imageDigest = a} :: ImageDetail)++-- | The media type of the image manifest.+imageDetail_imageManifestMediaType :: Lens.Lens' ImageDetail (Prelude.Maybe Prelude.Text)+imageDetail_imageManifestMediaType = Lens.lens (\ImageDetail' {imageManifestMediaType} -> imageManifestMediaType) (\s@ImageDetail' {} a -> s {imageManifestMediaType = a} :: ImageDetail)++-- | The date and time, expressed in standard JavaScript date format, at+-- which the current image was pushed to the repository.+imageDetail_imagePushedAt :: Lens.Lens' ImageDetail (Prelude.Maybe Prelude.UTCTime)+imageDetail_imagePushedAt = Lens.lens (\ImageDetail' {imagePushedAt} -> imagePushedAt) (\s@ImageDetail' {} a -> s {imagePushedAt = a} :: ImageDetail) Prelude.. Lens.mapping Data._Time++-- | The size, in bytes, of the image in the repository.+--+-- If the image is a manifest list, this will be the max size of all+-- manifests in the list.+--+-- Beginning with Docker version 1.9, the Docker client compresses image+-- layers before pushing them to a V2 Docker registry. The output of the+-- @docker images@ command shows the uncompressed image size, so it may+-- return a larger image size than the image sizes returned by+-- DescribeImages.+imageDetail_imageSizeInBytes :: Lens.Lens' ImageDetail (Prelude.Maybe Prelude.Integer)+imageDetail_imageSizeInBytes = Lens.lens (\ImageDetail' {imageSizeInBytes} -> imageSizeInBytes) (\s@ImageDetail' {} a -> s {imageSizeInBytes = a} :: ImageDetail)++-- | The list of tags associated with this image.+imageDetail_imageTags :: Lens.Lens' ImageDetail (Prelude.Maybe [Prelude.Text])+imageDetail_imageTags = Lens.lens (\ImageDetail' {imageTags} -> imageTags) (\s@ImageDetail' {} a -> s {imageTags = a} :: ImageDetail) Prelude.. Lens.mapping Lens.coerced++-- | The AWS account ID associated with the public registry to which this+-- image belongs.+imageDetail_registryId :: Lens.Lens' ImageDetail (Prelude.Maybe Prelude.Text)+imageDetail_registryId = Lens.lens (\ImageDetail' {registryId} -> registryId) (\s@ImageDetail' {} a -> s {registryId = a} :: ImageDetail)++-- | The name of the repository to which this image belongs.+imageDetail_repositoryName :: Lens.Lens' ImageDetail (Prelude.Maybe Prelude.Text)+imageDetail_repositoryName = Lens.lens (\ImageDetail' {repositoryName} -> repositoryName) (\s@ImageDetail' {} a -> s {repositoryName = a} :: ImageDetail)++instance Data.FromJSON ImageDetail where+  parseJSON =+    Data.withObject+      "ImageDetail"+      ( \x ->+          ImageDetail'+            Prelude.<$> (x Data..:? "artifactMediaType")+            Prelude.<*> (x Data..:? "imageDigest")+            Prelude.<*> (x Data..:? "imageManifestMediaType")+            Prelude.<*> (x Data..:? "imagePushedAt")+            Prelude.<*> (x Data..:? "imageSizeInBytes")+            Prelude.<*> (x Data..:? "imageTags" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "registryId")+            Prelude.<*> (x Data..:? "repositoryName")+      )++instance Prelude.Hashable ImageDetail where+  hashWithSalt _salt ImageDetail' {..} =+    _salt+      `Prelude.hashWithSalt` artifactMediaType+      `Prelude.hashWithSalt` imageDigest+      `Prelude.hashWithSalt` imageManifestMediaType+      `Prelude.hashWithSalt` imagePushedAt+      `Prelude.hashWithSalt` imageSizeInBytes+      `Prelude.hashWithSalt` imageTags+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName++instance Prelude.NFData ImageDetail where+  rnf ImageDetail' {..} =+    Prelude.rnf artifactMediaType+      `Prelude.seq` Prelude.rnf imageDigest+      `Prelude.seq` Prelude.rnf imageManifestMediaType+      `Prelude.seq` Prelude.rnf imagePushedAt+      `Prelude.seq` Prelude.rnf imageSizeInBytes+      `Prelude.seq` Prelude.rnf imageTags+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName
+ gen/Amazonka/ECRPublic/Types/ImageFailure.hs view
@@ -0,0 +1,98 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.ImageFailure+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.ImageFailure where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types.ImageFailureCode+import Amazonka.ECRPublic.Types.ImageIdentifier+import qualified Amazonka.Prelude as Prelude++-- | An object representing an Amazon ECR image failure.+--+-- /See:/ 'newImageFailure' smart constructor.+data ImageFailure = ImageFailure'+  { -- | The code associated with the failure.+    failureCode :: Prelude.Maybe ImageFailureCode,+    -- | The reason for the failure.+    failureReason :: Prelude.Maybe Prelude.Text,+    -- | The image ID associated with the failure.+    imageId :: Prelude.Maybe ImageIdentifier+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageFailure' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'failureCode', 'imageFailure_failureCode' - The code associated with the failure.+--+-- 'failureReason', 'imageFailure_failureReason' - The reason for the failure.+--+-- 'imageId', 'imageFailure_imageId' - The image ID associated with the failure.+newImageFailure ::+  ImageFailure+newImageFailure =+  ImageFailure'+    { failureCode = Prelude.Nothing,+      failureReason = Prelude.Nothing,+      imageId = Prelude.Nothing+    }++-- | The code associated with the failure.+imageFailure_failureCode :: Lens.Lens' ImageFailure (Prelude.Maybe ImageFailureCode)+imageFailure_failureCode = Lens.lens (\ImageFailure' {failureCode} -> failureCode) (\s@ImageFailure' {} a -> s {failureCode = a} :: ImageFailure)++-- | The reason for the failure.+imageFailure_failureReason :: Lens.Lens' ImageFailure (Prelude.Maybe Prelude.Text)+imageFailure_failureReason = Lens.lens (\ImageFailure' {failureReason} -> failureReason) (\s@ImageFailure' {} a -> s {failureReason = a} :: ImageFailure)++-- | The image ID associated with the failure.+imageFailure_imageId :: Lens.Lens' ImageFailure (Prelude.Maybe ImageIdentifier)+imageFailure_imageId = Lens.lens (\ImageFailure' {imageId} -> imageId) (\s@ImageFailure' {} a -> s {imageId = a} :: ImageFailure)++instance Data.FromJSON ImageFailure where+  parseJSON =+    Data.withObject+      "ImageFailure"+      ( \x ->+          ImageFailure'+            Prelude.<$> (x Data..:? "failureCode")+            Prelude.<*> (x Data..:? "failureReason")+            Prelude.<*> (x Data..:? "imageId")+      )++instance Prelude.Hashable ImageFailure where+  hashWithSalt _salt ImageFailure' {..} =+    _salt+      `Prelude.hashWithSalt` failureCode+      `Prelude.hashWithSalt` failureReason+      `Prelude.hashWithSalt` imageId++instance Prelude.NFData ImageFailure where+  rnf ImageFailure' {..} =+    Prelude.rnf failureCode+      `Prelude.seq` Prelude.rnf failureReason+      `Prelude.seq` Prelude.rnf imageId
+ gen/Amazonka/ECRPublic/Types/ImageFailureCode.hs view
@@ -0,0 +1,96 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.ImageFailureCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.ImageFailureCode+  ( ImageFailureCode+      ( ..,+        ImageFailureCode_ImageNotFound,+        ImageFailureCode_ImageReferencedByManifestList,+        ImageFailureCode_ImageTagDoesNotMatchDigest,+        ImageFailureCode_InvalidImageDigest,+        ImageFailureCode_InvalidImageTag,+        ImageFailureCode_KmsError,+        ImageFailureCode_MissingDigestAndTag+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ImageFailureCode = ImageFailureCode'+  { fromImageFailureCode ::+      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 ImageFailureCode_ImageNotFound :: ImageFailureCode+pattern ImageFailureCode_ImageNotFound = ImageFailureCode' "ImageNotFound"++pattern ImageFailureCode_ImageReferencedByManifestList :: ImageFailureCode+pattern ImageFailureCode_ImageReferencedByManifestList = ImageFailureCode' "ImageReferencedByManifestList"++pattern ImageFailureCode_ImageTagDoesNotMatchDigest :: ImageFailureCode+pattern ImageFailureCode_ImageTagDoesNotMatchDigest = ImageFailureCode' "ImageTagDoesNotMatchDigest"++pattern ImageFailureCode_InvalidImageDigest :: ImageFailureCode+pattern ImageFailureCode_InvalidImageDigest = ImageFailureCode' "InvalidImageDigest"++pattern ImageFailureCode_InvalidImageTag :: ImageFailureCode+pattern ImageFailureCode_InvalidImageTag = ImageFailureCode' "InvalidImageTag"++pattern ImageFailureCode_KmsError :: ImageFailureCode+pattern ImageFailureCode_KmsError = ImageFailureCode' "KmsError"++pattern ImageFailureCode_MissingDigestAndTag :: ImageFailureCode+pattern ImageFailureCode_MissingDigestAndTag = ImageFailureCode' "MissingDigestAndTag"++{-# COMPLETE+  ImageFailureCode_ImageNotFound,+  ImageFailureCode_ImageReferencedByManifestList,+  ImageFailureCode_ImageTagDoesNotMatchDigest,+  ImageFailureCode_InvalidImageDigest,+  ImageFailureCode_InvalidImageTag,+  ImageFailureCode_KmsError,+  ImageFailureCode_MissingDigestAndTag,+  ImageFailureCode'+  #-}
+ gen/Amazonka/ECRPublic/Types/ImageIdentifier.hs view
@@ -0,0 +1,93 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.ImageIdentifier+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.ImageIdentifier where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object with identifying information for an Amazon ECR image.+--+-- /See:/ 'newImageIdentifier' smart constructor.+data ImageIdentifier = ImageIdentifier'+  { -- | The @sha256@ digest of the image manifest.+    imageDigest :: Prelude.Maybe Prelude.Text,+    -- | The tag used for the image.+    imageTag :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageIdentifier' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'imageDigest', 'imageIdentifier_imageDigest' - The @sha256@ digest of the image manifest.+--+-- 'imageTag', 'imageIdentifier_imageTag' - The tag used for the image.+newImageIdentifier ::+  ImageIdentifier+newImageIdentifier =+  ImageIdentifier'+    { imageDigest = Prelude.Nothing,+      imageTag = Prelude.Nothing+    }++-- | The @sha256@ digest of the image manifest.+imageIdentifier_imageDigest :: Lens.Lens' ImageIdentifier (Prelude.Maybe Prelude.Text)+imageIdentifier_imageDigest = Lens.lens (\ImageIdentifier' {imageDigest} -> imageDigest) (\s@ImageIdentifier' {} a -> s {imageDigest = a} :: ImageIdentifier)++-- | The tag used for the image.+imageIdentifier_imageTag :: Lens.Lens' ImageIdentifier (Prelude.Maybe Prelude.Text)+imageIdentifier_imageTag = Lens.lens (\ImageIdentifier' {imageTag} -> imageTag) (\s@ImageIdentifier' {} a -> s {imageTag = a} :: ImageIdentifier)++instance Data.FromJSON ImageIdentifier where+  parseJSON =+    Data.withObject+      "ImageIdentifier"+      ( \x ->+          ImageIdentifier'+            Prelude.<$> (x Data..:? "imageDigest")+            Prelude.<*> (x Data..:? "imageTag")+      )++instance Prelude.Hashable ImageIdentifier where+  hashWithSalt _salt ImageIdentifier' {..} =+    _salt+      `Prelude.hashWithSalt` imageDigest+      `Prelude.hashWithSalt` imageTag++instance Prelude.NFData ImageIdentifier where+  rnf ImageIdentifier' {..} =+    Prelude.rnf imageDigest+      `Prelude.seq` Prelude.rnf imageTag++instance Data.ToJSON ImageIdentifier where+  toJSON ImageIdentifier' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("imageDigest" Data..=) Prelude.<$> imageDigest,+            ("imageTag" Data..=) Prelude.<$> imageTag+          ]+      )
+ gen/Amazonka/ECRPublic/Types/ImageTagDetail.hs view
@@ -0,0 +1,97 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.ImageTagDetail+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.ImageTagDetail where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types.ReferencedImageDetail+import qualified Amazonka.Prelude as Prelude++-- | An object representing the image tag details for an image.+--+-- /See:/ 'newImageTagDetail' smart constructor.+data ImageTagDetail = ImageTagDetail'+  { -- | The time stamp indicating when the image tag was created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | An object that describes the details of an image.+    imageDetail :: Prelude.Maybe ReferencedImageDetail,+    -- | The tag associated with the image.+    imageTag :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImageTagDetail' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createdAt', 'imageTagDetail_createdAt' - The time stamp indicating when the image tag was created.+--+-- 'imageDetail', 'imageTagDetail_imageDetail' - An object that describes the details of an image.+--+-- 'imageTag', 'imageTagDetail_imageTag' - The tag associated with the image.+newImageTagDetail ::+  ImageTagDetail+newImageTagDetail =+  ImageTagDetail'+    { createdAt = Prelude.Nothing,+      imageDetail = Prelude.Nothing,+      imageTag = Prelude.Nothing+    }++-- | The time stamp indicating when the image tag was created.+imageTagDetail_createdAt :: Lens.Lens' ImageTagDetail (Prelude.Maybe Prelude.UTCTime)+imageTagDetail_createdAt = Lens.lens (\ImageTagDetail' {createdAt} -> createdAt) (\s@ImageTagDetail' {} a -> s {createdAt = a} :: ImageTagDetail) Prelude.. Lens.mapping Data._Time++-- | An object that describes the details of an image.+imageTagDetail_imageDetail :: Lens.Lens' ImageTagDetail (Prelude.Maybe ReferencedImageDetail)+imageTagDetail_imageDetail = Lens.lens (\ImageTagDetail' {imageDetail} -> imageDetail) (\s@ImageTagDetail' {} a -> s {imageDetail = a} :: ImageTagDetail)++-- | The tag associated with the image.+imageTagDetail_imageTag :: Lens.Lens' ImageTagDetail (Prelude.Maybe Prelude.Text)+imageTagDetail_imageTag = Lens.lens (\ImageTagDetail' {imageTag} -> imageTag) (\s@ImageTagDetail' {} a -> s {imageTag = a} :: ImageTagDetail)++instance Data.FromJSON ImageTagDetail where+  parseJSON =+    Data.withObject+      "ImageTagDetail"+      ( \x ->+          ImageTagDetail'+            Prelude.<$> (x Data..:? "createdAt")+            Prelude.<*> (x Data..:? "imageDetail")+            Prelude.<*> (x Data..:? "imageTag")+      )++instance Prelude.Hashable ImageTagDetail where+  hashWithSalt _salt ImageTagDetail' {..} =+    _salt+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` imageDetail+      `Prelude.hashWithSalt` imageTag++instance Prelude.NFData ImageTagDetail where+  rnf ImageTagDetail' {..} =+    Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf imageDetail+      `Prelude.seq` Prelude.rnf imageTag
+ gen/Amazonka/ECRPublic/Types/Layer.hs view
@@ -0,0 +1,115 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.Layer+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.Layer where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types.LayerAvailability+import qualified Amazonka.Prelude as Prelude++-- | An object representing an Amazon ECR image layer.+--+-- /See:/ 'newLayer' smart constructor.+data Layer = Layer'+  { -- | The availability status of the image layer.+    layerAvailability :: Prelude.Maybe LayerAvailability,+    -- | The @sha256@ digest of the image layer.+    layerDigest :: Prelude.Maybe Prelude.Text,+    -- | The size, in bytes, of the image layer.+    layerSize :: Prelude.Maybe Prelude.Integer,+    -- | The media type of the layer, such as+    -- @application\/vnd.docker.image.rootfs.diff.tar.gzip@ or+    -- @application\/vnd.oci.image.layer.v1.tar+gzip@.+    mediaType :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Layer' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'layerAvailability', 'layer_layerAvailability' - The availability status of the image layer.+--+-- 'layerDigest', 'layer_layerDigest' - The @sha256@ digest of the image layer.+--+-- 'layerSize', 'layer_layerSize' - The size, in bytes, of the image layer.+--+-- 'mediaType', 'layer_mediaType' - The media type of the layer, such as+-- @application\/vnd.docker.image.rootfs.diff.tar.gzip@ or+-- @application\/vnd.oci.image.layer.v1.tar+gzip@.+newLayer ::+  Layer+newLayer =+  Layer'+    { layerAvailability = Prelude.Nothing,+      layerDigest = Prelude.Nothing,+      layerSize = Prelude.Nothing,+      mediaType = Prelude.Nothing+    }++-- | The availability status of the image layer.+layer_layerAvailability :: Lens.Lens' Layer (Prelude.Maybe LayerAvailability)+layer_layerAvailability = Lens.lens (\Layer' {layerAvailability} -> layerAvailability) (\s@Layer' {} a -> s {layerAvailability = a} :: Layer)++-- | The @sha256@ digest of the image layer.+layer_layerDigest :: Lens.Lens' Layer (Prelude.Maybe Prelude.Text)+layer_layerDigest = Lens.lens (\Layer' {layerDigest} -> layerDigest) (\s@Layer' {} a -> s {layerDigest = a} :: Layer)++-- | The size, in bytes, of the image layer.+layer_layerSize :: Lens.Lens' Layer (Prelude.Maybe Prelude.Integer)+layer_layerSize = Lens.lens (\Layer' {layerSize} -> layerSize) (\s@Layer' {} a -> s {layerSize = a} :: Layer)++-- | The media type of the layer, such as+-- @application\/vnd.docker.image.rootfs.diff.tar.gzip@ or+-- @application\/vnd.oci.image.layer.v1.tar+gzip@.+layer_mediaType :: Lens.Lens' Layer (Prelude.Maybe Prelude.Text)+layer_mediaType = Lens.lens (\Layer' {mediaType} -> mediaType) (\s@Layer' {} a -> s {mediaType = a} :: Layer)++instance Data.FromJSON Layer where+  parseJSON =+    Data.withObject+      "Layer"+      ( \x ->+          Layer'+            Prelude.<$> (x Data..:? "layerAvailability")+            Prelude.<*> (x Data..:? "layerDigest")+            Prelude.<*> (x Data..:? "layerSize")+            Prelude.<*> (x Data..:? "mediaType")+      )++instance Prelude.Hashable Layer where+  hashWithSalt _salt Layer' {..} =+    _salt+      `Prelude.hashWithSalt` layerAvailability+      `Prelude.hashWithSalt` layerDigest+      `Prelude.hashWithSalt` layerSize+      `Prelude.hashWithSalt` mediaType++instance Prelude.NFData Layer where+  rnf Layer' {..} =+    Prelude.rnf layerAvailability+      `Prelude.seq` Prelude.rnf layerDigest+      `Prelude.seq` Prelude.rnf layerSize+      `Prelude.seq` Prelude.rnf mediaType
+ gen/Amazonka/ECRPublic/Types/LayerAvailability.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.ECRPublic.Types.LayerAvailability+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.LayerAvailability+  ( LayerAvailability+      ( ..,+        LayerAvailability_AVAILABLE,+        LayerAvailability_UNAVAILABLE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LayerAvailability = LayerAvailability'+  { fromLayerAvailability ::+      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 LayerAvailability_AVAILABLE :: LayerAvailability+pattern LayerAvailability_AVAILABLE = LayerAvailability' "AVAILABLE"++pattern LayerAvailability_UNAVAILABLE :: LayerAvailability+pattern LayerAvailability_UNAVAILABLE = LayerAvailability' "UNAVAILABLE"++{-# COMPLETE+  LayerAvailability_AVAILABLE,+  LayerAvailability_UNAVAILABLE,+  LayerAvailability'+  #-}
+ gen/Amazonka/ECRPublic/Types/LayerFailure.hs view
@@ -0,0 +1,97 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.LayerFailure+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.LayerFailure where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types.LayerFailureCode+import qualified Amazonka.Prelude as Prelude++-- | An object representing an Amazon ECR image layer failure.+--+-- /See:/ 'newLayerFailure' smart constructor.+data LayerFailure = LayerFailure'+  { -- | The failure code associated with the failure.+    failureCode :: Prelude.Maybe LayerFailureCode,+    -- | The reason for the failure.+    failureReason :: Prelude.Maybe Prelude.Text,+    -- | The layer digest associated with the failure.+    layerDigest :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'LayerFailure' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'failureCode', 'layerFailure_failureCode' - The failure code associated with the failure.+--+-- 'failureReason', 'layerFailure_failureReason' - The reason for the failure.+--+-- 'layerDigest', 'layerFailure_layerDigest' - The layer digest associated with the failure.+newLayerFailure ::+  LayerFailure+newLayerFailure =+  LayerFailure'+    { failureCode = Prelude.Nothing,+      failureReason = Prelude.Nothing,+      layerDigest = Prelude.Nothing+    }++-- | The failure code associated with the failure.+layerFailure_failureCode :: Lens.Lens' LayerFailure (Prelude.Maybe LayerFailureCode)+layerFailure_failureCode = Lens.lens (\LayerFailure' {failureCode} -> failureCode) (\s@LayerFailure' {} a -> s {failureCode = a} :: LayerFailure)++-- | The reason for the failure.+layerFailure_failureReason :: Lens.Lens' LayerFailure (Prelude.Maybe Prelude.Text)+layerFailure_failureReason = Lens.lens (\LayerFailure' {failureReason} -> failureReason) (\s@LayerFailure' {} a -> s {failureReason = a} :: LayerFailure)++-- | The layer digest associated with the failure.+layerFailure_layerDigest :: Lens.Lens' LayerFailure (Prelude.Maybe Prelude.Text)+layerFailure_layerDigest = Lens.lens (\LayerFailure' {layerDigest} -> layerDigest) (\s@LayerFailure' {} a -> s {layerDigest = a} :: LayerFailure)++instance Data.FromJSON LayerFailure where+  parseJSON =+    Data.withObject+      "LayerFailure"+      ( \x ->+          LayerFailure'+            Prelude.<$> (x Data..:? "failureCode")+            Prelude.<*> (x Data..:? "failureReason")+            Prelude.<*> (x Data..:? "layerDigest")+      )++instance Prelude.Hashable LayerFailure where+  hashWithSalt _salt LayerFailure' {..} =+    _salt+      `Prelude.hashWithSalt` failureCode+      `Prelude.hashWithSalt` failureReason+      `Prelude.hashWithSalt` layerDigest++instance Prelude.NFData LayerFailure where+  rnf LayerFailure' {..} =+    Prelude.rnf failureCode+      `Prelude.seq` Prelude.rnf failureReason+      `Prelude.seq` Prelude.rnf layerDigest
+ gen/Amazonka/ECRPublic/Types/LayerFailureCode.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.ECRPublic.Types.LayerFailureCode+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.LayerFailureCode+  ( LayerFailureCode+      ( ..,+        LayerFailureCode_InvalidLayerDigest,+        LayerFailureCode_MissingLayerDigest+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype LayerFailureCode = LayerFailureCode'+  { fromLayerFailureCode ::+      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 LayerFailureCode_InvalidLayerDigest :: LayerFailureCode+pattern LayerFailureCode_InvalidLayerDigest = LayerFailureCode' "InvalidLayerDigest"++pattern LayerFailureCode_MissingLayerDigest :: LayerFailureCode+pattern LayerFailureCode_MissingLayerDigest = LayerFailureCode' "MissingLayerDigest"++{-# COMPLETE+  LayerFailureCode_InvalidLayerDigest,+  LayerFailureCode_MissingLayerDigest,+  LayerFailureCode'+  #-}
+ gen/Amazonka/ECRPublic/Types/ReferencedImageDetail.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.ECRPublic.Types.ReferencedImageDetail+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.ReferencedImageDetail where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object that describes the image tag details returned by a+-- DescribeImageTags action.+--+-- /See:/ 'newReferencedImageDetail' smart constructor.+data ReferencedImageDetail = ReferencedImageDetail'+  { -- | The artifact media type of the image.+    artifactMediaType :: Prelude.Maybe Prelude.Text,+    -- | The @sha256@ digest of the image manifest.+    imageDigest :: Prelude.Maybe Prelude.Text,+    -- | The media type of the image manifest.+    imageManifestMediaType :: Prelude.Maybe Prelude.Text,+    -- | The date and time, expressed in standard JavaScript date format, at+    -- which the current image tag was pushed to the repository.+    imagePushedAt :: Prelude.Maybe Data.POSIX,+    -- | The size, in bytes, of the image in the repository.+    --+    -- If the image is a manifest list, this will be the max size of all+    -- manifests in the list.+    --+    -- Beginning with Docker version 1.9, the Docker client compresses image+    -- layers before pushing them to a V2 Docker registry. The output of the+    -- @docker images@ command shows the uncompressed image size, so it may+    -- return a larger image size than the image sizes returned by+    -- DescribeImages.+    imageSizeInBytes :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReferencedImageDetail' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'artifactMediaType', 'referencedImageDetail_artifactMediaType' - The artifact media type of the image.+--+-- 'imageDigest', 'referencedImageDetail_imageDigest' - The @sha256@ digest of the image manifest.+--+-- 'imageManifestMediaType', 'referencedImageDetail_imageManifestMediaType' - The media type of the image manifest.+--+-- 'imagePushedAt', 'referencedImageDetail_imagePushedAt' - The date and time, expressed in standard JavaScript date format, at+-- which the current image tag was pushed to the repository.+--+-- 'imageSizeInBytes', 'referencedImageDetail_imageSizeInBytes' - The size, in bytes, of the image in the repository.+--+-- If the image is a manifest list, this will be the max size of all+-- manifests in the list.+--+-- Beginning with Docker version 1.9, the Docker client compresses image+-- layers before pushing them to a V2 Docker registry. The output of the+-- @docker images@ command shows the uncompressed image size, so it may+-- return a larger image size than the image sizes returned by+-- DescribeImages.+newReferencedImageDetail ::+  ReferencedImageDetail+newReferencedImageDetail =+  ReferencedImageDetail'+    { artifactMediaType =+        Prelude.Nothing,+      imageDigest = Prelude.Nothing,+      imageManifestMediaType = Prelude.Nothing,+      imagePushedAt = Prelude.Nothing,+      imageSizeInBytes = Prelude.Nothing+    }++-- | The artifact media type of the image.+referencedImageDetail_artifactMediaType :: Lens.Lens' ReferencedImageDetail (Prelude.Maybe Prelude.Text)+referencedImageDetail_artifactMediaType = Lens.lens (\ReferencedImageDetail' {artifactMediaType} -> artifactMediaType) (\s@ReferencedImageDetail' {} a -> s {artifactMediaType = a} :: ReferencedImageDetail)++-- | The @sha256@ digest of the image manifest.+referencedImageDetail_imageDigest :: Lens.Lens' ReferencedImageDetail (Prelude.Maybe Prelude.Text)+referencedImageDetail_imageDigest = Lens.lens (\ReferencedImageDetail' {imageDigest} -> imageDigest) (\s@ReferencedImageDetail' {} a -> s {imageDigest = a} :: ReferencedImageDetail)++-- | The media type of the image manifest.+referencedImageDetail_imageManifestMediaType :: Lens.Lens' ReferencedImageDetail (Prelude.Maybe Prelude.Text)+referencedImageDetail_imageManifestMediaType = Lens.lens (\ReferencedImageDetail' {imageManifestMediaType} -> imageManifestMediaType) (\s@ReferencedImageDetail' {} a -> s {imageManifestMediaType = a} :: ReferencedImageDetail)++-- | The date and time, expressed in standard JavaScript date format, at+-- which the current image tag was pushed to the repository.+referencedImageDetail_imagePushedAt :: Lens.Lens' ReferencedImageDetail (Prelude.Maybe Prelude.UTCTime)+referencedImageDetail_imagePushedAt = Lens.lens (\ReferencedImageDetail' {imagePushedAt} -> imagePushedAt) (\s@ReferencedImageDetail' {} a -> s {imagePushedAt = a} :: ReferencedImageDetail) Prelude.. Lens.mapping Data._Time++-- | The size, in bytes, of the image in the repository.+--+-- If the image is a manifest list, this will be the max size of all+-- manifests in the list.+--+-- Beginning with Docker version 1.9, the Docker client compresses image+-- layers before pushing them to a V2 Docker registry. The output of the+-- @docker images@ command shows the uncompressed image size, so it may+-- return a larger image size than the image sizes returned by+-- DescribeImages.+referencedImageDetail_imageSizeInBytes :: Lens.Lens' ReferencedImageDetail (Prelude.Maybe Prelude.Integer)+referencedImageDetail_imageSizeInBytes = Lens.lens (\ReferencedImageDetail' {imageSizeInBytes} -> imageSizeInBytes) (\s@ReferencedImageDetail' {} a -> s {imageSizeInBytes = a} :: ReferencedImageDetail)++instance Data.FromJSON ReferencedImageDetail where+  parseJSON =+    Data.withObject+      "ReferencedImageDetail"+      ( \x ->+          ReferencedImageDetail'+            Prelude.<$> (x Data..:? "artifactMediaType")+            Prelude.<*> (x Data..:? "imageDigest")+            Prelude.<*> (x Data..:? "imageManifestMediaType")+            Prelude.<*> (x Data..:? "imagePushedAt")+            Prelude.<*> (x Data..:? "imageSizeInBytes")+      )++instance Prelude.Hashable ReferencedImageDetail where+  hashWithSalt _salt ReferencedImageDetail' {..} =+    _salt+      `Prelude.hashWithSalt` artifactMediaType+      `Prelude.hashWithSalt` imageDigest+      `Prelude.hashWithSalt` imageManifestMediaType+      `Prelude.hashWithSalt` imagePushedAt+      `Prelude.hashWithSalt` imageSizeInBytes++instance Prelude.NFData ReferencedImageDetail where+  rnf ReferencedImageDetail' {..} =+    Prelude.rnf artifactMediaType+      `Prelude.seq` Prelude.rnf imageDigest+      `Prelude.seq` Prelude.rnf imageManifestMediaType+      `Prelude.seq` Prelude.rnf imagePushedAt+      `Prelude.seq` Prelude.rnf imageSizeInBytes
+ gen/Amazonka/ECRPublic/Types/Registry.hs view
@@ -0,0 +1,148 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.Registry+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.Registry where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types.RegistryAlias+import qualified Amazonka.Prelude as Prelude++-- | The details of a public registry.+--+-- /See:/ 'newRegistry' smart constructor.+data Registry = Registry'+  { -- | The AWS account ID associated with the registry. If you do not specify a+    -- registry, the default public registry is assumed.+    registryId :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the public registry.+    registryArn :: Prelude.Text,+    -- | The URI of a public registry. The URI contains a universal prefix and+    -- the registry alias.+    registryUri :: Prelude.Text,+    -- | Whether the account is verified. This indicates whether the account is+    -- an AWS Marketplace vendor. If an account is verified, each public+    -- repository will received a verified account badge on the Amazon ECR+    -- Public Gallery.+    verified :: Prelude.Bool,+    -- | An array of objects representing the aliases for a public registry.+    aliases :: [RegistryAlias]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Registry' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'registryId', 'registry_registryId' - The AWS account ID associated with the registry. If you do not specify a+-- registry, the default public registry is assumed.+--+-- 'registryArn', 'registry_registryArn' - The Amazon Resource Name (ARN) of the public registry.+--+-- 'registryUri', 'registry_registryUri' - The URI of a public registry. The URI contains a universal prefix and+-- the registry alias.+--+-- 'verified', 'registry_verified' - Whether the account is verified. This indicates whether the account is+-- an AWS Marketplace vendor. If an account is verified, each public+-- repository will received a verified account badge on the Amazon ECR+-- Public Gallery.+--+-- 'aliases', 'registry_aliases' - An array of objects representing the aliases for a public registry.+newRegistry ::+  -- | 'registryId'+  Prelude.Text ->+  -- | 'registryArn'+  Prelude.Text ->+  -- | 'registryUri'+  Prelude.Text ->+  -- | 'verified'+  Prelude.Bool ->+  Registry+newRegistry+  pRegistryId_+  pRegistryArn_+  pRegistryUri_+  pVerified_ =+    Registry'+      { registryId = pRegistryId_,+        registryArn = pRegistryArn_,+        registryUri = pRegistryUri_,+        verified = pVerified_,+        aliases = Prelude.mempty+      }++-- | The AWS account ID associated with the registry. If you do not specify a+-- registry, the default public registry is assumed.+registry_registryId :: Lens.Lens' Registry Prelude.Text+registry_registryId = Lens.lens (\Registry' {registryId} -> registryId) (\s@Registry' {} a -> s {registryId = a} :: Registry)++-- | The Amazon Resource Name (ARN) of the public registry.+registry_registryArn :: Lens.Lens' Registry Prelude.Text+registry_registryArn = Lens.lens (\Registry' {registryArn} -> registryArn) (\s@Registry' {} a -> s {registryArn = a} :: Registry)++-- | The URI of a public registry. The URI contains a universal prefix and+-- the registry alias.+registry_registryUri :: Lens.Lens' Registry Prelude.Text+registry_registryUri = Lens.lens (\Registry' {registryUri} -> registryUri) (\s@Registry' {} a -> s {registryUri = a} :: Registry)++-- | Whether the account is verified. This indicates whether the account is+-- an AWS Marketplace vendor. If an account is verified, each public+-- repository will received a verified account badge on the Amazon ECR+-- Public Gallery.+registry_verified :: Lens.Lens' Registry Prelude.Bool+registry_verified = Lens.lens (\Registry' {verified} -> verified) (\s@Registry' {} a -> s {verified = a} :: Registry)++-- | An array of objects representing the aliases for a public registry.+registry_aliases :: Lens.Lens' Registry [RegistryAlias]+registry_aliases = Lens.lens (\Registry' {aliases} -> aliases) (\s@Registry' {} a -> s {aliases = a} :: Registry) Prelude.. Lens.coerced++instance Data.FromJSON Registry where+  parseJSON =+    Data.withObject+      "Registry"+      ( \x ->+          Registry'+            Prelude.<$> (x Data..: "registryId")+            Prelude.<*> (x Data..: "registryArn")+            Prelude.<*> (x Data..: "registryUri")+            Prelude.<*> (x Data..: "verified")+            Prelude.<*> (x Data..:? "aliases" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable Registry where+  hashWithSalt _salt Registry' {..} =+    _salt+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` registryArn+      `Prelude.hashWithSalt` registryUri+      `Prelude.hashWithSalt` verified+      `Prelude.hashWithSalt` aliases++instance Prelude.NFData Registry where+  rnf Registry' {..} =+    Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf registryArn+      `Prelude.seq` Prelude.rnf registryUri+      `Prelude.seq` Prelude.rnf verified+      `Prelude.seq` Prelude.rnf aliases
+ gen/Amazonka/ECRPublic/Types/RegistryAlias.hs view
@@ -0,0 +1,149 @@+{-# 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.ECRPublic.Types.RegistryAlias+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.RegistryAlias where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types.RegistryAliasStatus+import qualified Amazonka.Prelude as Prelude++-- | An object representing the aliases for a public registry. A public+-- registry is given an alias upon creation but a custom alias can be set+-- using the Amazon ECR console. For more information, see+-- <https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html Registries>+-- in the /Amazon Elastic Container Registry User Guide/.+--+-- /See:/ 'newRegistryAlias' smart constructor.+data RegistryAlias = RegistryAlias'+  { -- | The name of the registry alias.+    name :: Prelude.Text,+    -- | The status of the registry alias.+    status :: RegistryAliasStatus,+    -- | Whether or not the registry alias is the primary alias for the registry.+    -- If true, the alias is the primary registry alias and is displayed in+    -- both the repository URL and the image URI used in the @docker pull@+    -- commands on the Amazon ECR Public Gallery.+    --+    -- A registry alias that is not the primary registry alias can be used in+    -- the repository URI in a @docker pull@ command.+    primaryRegistryAlias :: Prelude.Bool,+    -- | Whether or not the registry alias is the default alias for the registry.+    -- When the first public repository is created, your public registry is+    -- assigned a default registry alias.+    defaultRegistryAlias :: Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RegistryAlias' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.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', 'registryAlias_name' - The name of the registry alias.+--+-- 'status', 'registryAlias_status' - The status of the registry alias.+--+-- 'primaryRegistryAlias', 'registryAlias_primaryRegistryAlias' - Whether or not the registry alias is the primary alias for the registry.+-- If true, the alias is the primary registry alias and is displayed in+-- both the repository URL and the image URI used in the @docker pull@+-- commands on the Amazon ECR Public Gallery.+--+-- A registry alias that is not the primary registry alias can be used in+-- the repository URI in a @docker pull@ command.+--+-- 'defaultRegistryAlias', 'registryAlias_defaultRegistryAlias' - Whether or not the registry alias is the default alias for the registry.+-- When the first public repository is created, your public registry is+-- assigned a default registry alias.+newRegistryAlias ::+  -- | 'name'+  Prelude.Text ->+  -- | 'status'+  RegistryAliasStatus ->+  -- | 'primaryRegistryAlias'+  Prelude.Bool ->+  -- | 'defaultRegistryAlias'+  Prelude.Bool ->+  RegistryAlias+newRegistryAlias+  pName_+  pStatus_+  pPrimaryRegistryAlias_+  pDefaultRegistryAlias_ =+    RegistryAlias'+      { name = pName_,+        status = pStatus_,+        primaryRegistryAlias = pPrimaryRegistryAlias_,+        defaultRegistryAlias = pDefaultRegistryAlias_+      }++-- | The name of the registry alias.+registryAlias_name :: Lens.Lens' RegistryAlias Prelude.Text+registryAlias_name = Lens.lens (\RegistryAlias' {name} -> name) (\s@RegistryAlias' {} a -> s {name = a} :: RegistryAlias)++-- | The status of the registry alias.+registryAlias_status :: Lens.Lens' RegistryAlias RegistryAliasStatus+registryAlias_status = Lens.lens (\RegistryAlias' {status} -> status) (\s@RegistryAlias' {} a -> s {status = a} :: RegistryAlias)++-- | Whether or not the registry alias is the primary alias for the registry.+-- If true, the alias is the primary registry alias and is displayed in+-- both the repository URL and the image URI used in the @docker pull@+-- commands on the Amazon ECR Public Gallery.+--+-- A registry alias that is not the primary registry alias can be used in+-- the repository URI in a @docker pull@ command.+registryAlias_primaryRegistryAlias :: Lens.Lens' RegistryAlias Prelude.Bool+registryAlias_primaryRegistryAlias = Lens.lens (\RegistryAlias' {primaryRegistryAlias} -> primaryRegistryAlias) (\s@RegistryAlias' {} a -> s {primaryRegistryAlias = a} :: RegistryAlias)++-- | Whether or not the registry alias is the default alias for the registry.+-- When the first public repository is created, your public registry is+-- assigned a default registry alias.+registryAlias_defaultRegistryAlias :: Lens.Lens' RegistryAlias Prelude.Bool+registryAlias_defaultRegistryAlias = Lens.lens (\RegistryAlias' {defaultRegistryAlias} -> defaultRegistryAlias) (\s@RegistryAlias' {} a -> s {defaultRegistryAlias = a} :: RegistryAlias)++instance Data.FromJSON RegistryAlias where+  parseJSON =+    Data.withObject+      "RegistryAlias"+      ( \x ->+          RegistryAlias'+            Prelude.<$> (x Data..: "name")+            Prelude.<*> (x Data..: "status")+            Prelude.<*> (x Data..: "primaryRegistryAlias")+            Prelude.<*> (x Data..: "defaultRegistryAlias")+      )++instance Prelude.Hashable RegistryAlias where+  hashWithSalt _salt RegistryAlias' {..} =+    _salt+      `Prelude.hashWithSalt` name+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` primaryRegistryAlias+      `Prelude.hashWithSalt` defaultRegistryAlias++instance Prelude.NFData RegistryAlias where+  rnf RegistryAlias' {..} =+    Prelude.rnf name+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf primaryRegistryAlias+      `Prelude.seq` Prelude.rnf defaultRegistryAlias
+ gen/Amazonka/ECRPublic/Types/RegistryAliasStatus.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.ECRPublic.Types.RegistryAliasStatus+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.RegistryAliasStatus+  ( RegistryAliasStatus+      ( ..,+        RegistryAliasStatus_ACTIVE,+        RegistryAliasStatus_PENDING,+        RegistryAliasStatus_REJECTED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RegistryAliasStatus = RegistryAliasStatus'+  { fromRegistryAliasStatus ::+      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 RegistryAliasStatus_ACTIVE :: RegistryAliasStatus+pattern RegistryAliasStatus_ACTIVE = RegistryAliasStatus' "ACTIVE"++pattern RegistryAliasStatus_PENDING :: RegistryAliasStatus+pattern RegistryAliasStatus_PENDING = RegistryAliasStatus' "PENDING"++pattern RegistryAliasStatus_REJECTED :: RegistryAliasStatus+pattern RegistryAliasStatus_REJECTED = RegistryAliasStatus' "REJECTED"++{-# COMPLETE+  RegistryAliasStatus_ACTIVE,+  RegistryAliasStatus_PENDING,+  RegistryAliasStatus_REJECTED,+  RegistryAliasStatus'+  #-}
+ gen/Amazonka/ECRPublic/Types/RegistryCatalogData.hs view
@@ -0,0 +1,81 @@+{-# 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.ECRPublic.Types.RegistryCatalogData+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.RegistryCatalogData where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The metadata for a public registry.+--+-- /See:/ 'newRegistryCatalogData' smart constructor.+data RegistryCatalogData = RegistryCatalogData'+  { -- | The display name for a public registry. This appears on the Amazon ECR+    -- Public Gallery.+    --+    -- Only accounts that have the verified account badge can have a registry+    -- display name.+    displayName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RegistryCatalogData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'displayName', 'registryCatalogData_displayName' - The display name for a public registry. This appears on the Amazon ECR+-- Public Gallery.+--+-- Only accounts that have the verified account badge can have a registry+-- display name.+newRegistryCatalogData ::+  RegistryCatalogData+newRegistryCatalogData =+  RegistryCatalogData' {displayName = Prelude.Nothing}++-- | The display name for a public registry. This appears on the Amazon ECR+-- Public Gallery.+--+-- Only accounts that have the verified account badge can have a registry+-- display name.+registryCatalogData_displayName :: Lens.Lens' RegistryCatalogData (Prelude.Maybe Prelude.Text)+registryCatalogData_displayName = Lens.lens (\RegistryCatalogData' {displayName} -> displayName) (\s@RegistryCatalogData' {} a -> s {displayName = a} :: RegistryCatalogData)++instance Data.FromJSON RegistryCatalogData where+  parseJSON =+    Data.withObject+      "RegistryCatalogData"+      ( \x ->+          RegistryCatalogData'+            Prelude.<$> (x Data..:? "displayName")+      )++instance Prelude.Hashable RegistryCatalogData where+  hashWithSalt _salt RegistryCatalogData' {..} =+    _salt `Prelude.hashWithSalt` displayName++instance Prelude.NFData RegistryCatalogData where+  rnf RegistryCatalogData' {..} =+    Prelude.rnf displayName
+ gen/Amazonka/ECRPublic/Types/Repository.hs view
@@ -0,0 +1,141 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.Repository+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.Repository where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object representing a repository.+--+-- /See:/ 'newRepository' smart constructor.+data Repository = Repository'+  { -- | The date and time, in JavaScript date format, when the repository was+    -- created.+    createdAt :: Prelude.Maybe Data.POSIX,+    -- | The AWS account ID associated with the public registry that contains the+    -- repository.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The Amazon Resource Name (ARN) that identifies the repository. The ARN+    -- contains the @arn:aws:ecr@ namespace, followed by the region of the+    -- repository, AWS account ID of the repository owner, repository+    -- namespace, and repository name. For example,+    -- @arn:aws:ecr:region:012345678910:repository\/test@.+    repositoryArn :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository.+    repositoryName :: Prelude.Maybe Prelude.Text,+    -- | The URI for the repository. You can use this URI for container image+    -- @push@ and @pull@ operations.+    repositoryUri :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Repository' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'createdAt', 'repository_createdAt' - The date and time, in JavaScript date format, when the repository was+-- created.+--+-- 'registryId', 'repository_registryId' - The AWS account ID associated with the public registry that contains the+-- repository.+--+-- 'repositoryArn', 'repository_repositoryArn' - The Amazon Resource Name (ARN) that identifies the repository. The ARN+-- contains the @arn:aws:ecr@ namespace, followed by the region of the+-- repository, AWS account ID of the repository owner, repository+-- namespace, and repository name. For example,+-- @arn:aws:ecr:region:012345678910:repository\/test@.+--+-- 'repositoryName', 'repository_repositoryName' - The name of the repository.+--+-- 'repositoryUri', 'repository_repositoryUri' - The URI for the repository. You can use this URI for container image+-- @push@ and @pull@ operations.+newRepository ::+  Repository+newRepository =+  Repository'+    { createdAt = Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryArn = Prelude.Nothing,+      repositoryName = Prelude.Nothing,+      repositoryUri = Prelude.Nothing+    }++-- | The date and time, in JavaScript date format, when the repository was+-- created.+repository_createdAt :: Lens.Lens' Repository (Prelude.Maybe Prelude.UTCTime)+repository_createdAt = Lens.lens (\Repository' {createdAt} -> createdAt) (\s@Repository' {} a -> s {createdAt = a} :: Repository) Prelude.. Lens.mapping Data._Time++-- | The AWS account ID associated with the public registry that contains the+-- repository.+repository_registryId :: Lens.Lens' Repository (Prelude.Maybe Prelude.Text)+repository_registryId = Lens.lens (\Repository' {registryId} -> registryId) (\s@Repository' {} a -> s {registryId = a} :: Repository)++-- | The Amazon Resource Name (ARN) that identifies the repository. The ARN+-- contains the @arn:aws:ecr@ namespace, followed by the region of the+-- repository, AWS account ID of the repository owner, repository+-- namespace, and repository name. For example,+-- @arn:aws:ecr:region:012345678910:repository\/test@.+repository_repositoryArn :: Lens.Lens' Repository (Prelude.Maybe Prelude.Text)+repository_repositoryArn = Lens.lens (\Repository' {repositoryArn} -> repositoryArn) (\s@Repository' {} a -> s {repositoryArn = a} :: Repository)++-- | The name of the repository.+repository_repositoryName :: Lens.Lens' Repository (Prelude.Maybe Prelude.Text)+repository_repositoryName = Lens.lens (\Repository' {repositoryName} -> repositoryName) (\s@Repository' {} a -> s {repositoryName = a} :: Repository)++-- | The URI for the repository. You can use this URI for container image+-- @push@ and @pull@ operations.+repository_repositoryUri :: Lens.Lens' Repository (Prelude.Maybe Prelude.Text)+repository_repositoryUri = Lens.lens (\Repository' {repositoryUri} -> repositoryUri) (\s@Repository' {} a -> s {repositoryUri = a} :: Repository)++instance Data.FromJSON Repository where+  parseJSON =+    Data.withObject+      "Repository"+      ( \x ->+          Repository'+            Prelude.<$> (x Data..:? "createdAt")+            Prelude.<*> (x Data..:? "registryId")+            Prelude.<*> (x Data..:? "repositoryArn")+            Prelude.<*> (x Data..:? "repositoryName")+            Prelude.<*> (x Data..:? "repositoryUri")+      )++instance Prelude.Hashable Repository where+  hashWithSalt _salt Repository' {..} =+    _salt+      `Prelude.hashWithSalt` createdAt+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryArn+      `Prelude.hashWithSalt` repositoryName+      `Prelude.hashWithSalt` repositoryUri++instance Prelude.NFData Repository where+  rnf Repository' {..} =+    Prelude.rnf createdAt+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryArn+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf repositoryUri
+ gen/Amazonka/ECRPublic/Types/RepositoryCatalogData.hs view
@@ -0,0 +1,172 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.RepositoryCatalogData+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.RepositoryCatalogData where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The catalog data for a repository. This data is publicly visible in the+-- Amazon ECR Public Gallery.+--+-- /See:/ 'newRepositoryCatalogData' smart constructor.+data RepositoryCatalogData = RepositoryCatalogData'+  { -- | The longform description of the contents of the repository. This text+    -- appears in the repository details on the Amazon ECR Public Gallery.+    aboutText :: Prelude.Maybe Prelude.Text,+    -- | The architecture tags that are associated with the repository.+    --+    -- Only supported operating system tags appear publicly in the Amazon ECR+    -- Public Gallery. For more information, see RepositoryCatalogDataInput.+    architectures :: Prelude.Maybe [Prelude.Text],+    -- | The short description of the repository.+    description :: Prelude.Maybe Prelude.Text,+    -- | The URL containing the logo associated with the repository.+    logoUrl :: Prelude.Maybe Prelude.Text,+    -- | Whether or not the repository is certified by AWS Marketplace.+    marketplaceCertified :: Prelude.Maybe Prelude.Bool,+    -- | The operating system tags that are associated with the repository.+    --+    -- Only supported operating system tags appear publicly in the Amazon ECR+    -- Public Gallery. For more information, see RepositoryCatalogDataInput.+    operatingSystems :: Prelude.Maybe [Prelude.Text],+    -- | The longform usage details of the contents of the repository. The usage+    -- text provides context for users of the repository.+    usageText :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RepositoryCatalogData' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'aboutText', 'repositoryCatalogData_aboutText' - The longform description of the contents of the repository. This text+-- appears in the repository details on the Amazon ECR Public Gallery.+--+-- 'architectures', 'repositoryCatalogData_architectures' - The architecture tags that are associated with the repository.+--+-- Only supported operating system tags appear publicly in the Amazon ECR+-- Public Gallery. For more information, see RepositoryCatalogDataInput.+--+-- 'description', 'repositoryCatalogData_description' - The short description of the repository.+--+-- 'logoUrl', 'repositoryCatalogData_logoUrl' - The URL containing the logo associated with the repository.+--+-- 'marketplaceCertified', 'repositoryCatalogData_marketplaceCertified' - Whether or not the repository is certified by AWS Marketplace.+--+-- 'operatingSystems', 'repositoryCatalogData_operatingSystems' - The operating system tags that are associated with the repository.+--+-- Only supported operating system tags appear publicly in the Amazon ECR+-- Public Gallery. For more information, see RepositoryCatalogDataInput.+--+-- 'usageText', 'repositoryCatalogData_usageText' - The longform usage details of the contents of the repository. The usage+-- text provides context for users of the repository.+newRepositoryCatalogData ::+  RepositoryCatalogData+newRepositoryCatalogData =+  RepositoryCatalogData'+    { aboutText = Prelude.Nothing,+      architectures = Prelude.Nothing,+      description = Prelude.Nothing,+      logoUrl = Prelude.Nothing,+      marketplaceCertified = Prelude.Nothing,+      operatingSystems = Prelude.Nothing,+      usageText = Prelude.Nothing+    }++-- | The longform description of the contents of the repository. This text+-- appears in the repository details on the Amazon ECR Public Gallery.+repositoryCatalogData_aboutText :: Lens.Lens' RepositoryCatalogData (Prelude.Maybe Prelude.Text)+repositoryCatalogData_aboutText = Lens.lens (\RepositoryCatalogData' {aboutText} -> aboutText) (\s@RepositoryCatalogData' {} a -> s {aboutText = a} :: RepositoryCatalogData)++-- | The architecture tags that are associated with the repository.+--+-- Only supported operating system tags appear publicly in the Amazon ECR+-- Public Gallery. For more information, see RepositoryCatalogDataInput.+repositoryCatalogData_architectures :: Lens.Lens' RepositoryCatalogData (Prelude.Maybe [Prelude.Text])+repositoryCatalogData_architectures = Lens.lens (\RepositoryCatalogData' {architectures} -> architectures) (\s@RepositoryCatalogData' {} a -> s {architectures = a} :: RepositoryCatalogData) Prelude.. Lens.mapping Lens.coerced++-- | The short description of the repository.+repositoryCatalogData_description :: Lens.Lens' RepositoryCatalogData (Prelude.Maybe Prelude.Text)+repositoryCatalogData_description = Lens.lens (\RepositoryCatalogData' {description} -> description) (\s@RepositoryCatalogData' {} a -> s {description = a} :: RepositoryCatalogData)++-- | The URL containing the logo associated with the repository.+repositoryCatalogData_logoUrl :: Lens.Lens' RepositoryCatalogData (Prelude.Maybe Prelude.Text)+repositoryCatalogData_logoUrl = Lens.lens (\RepositoryCatalogData' {logoUrl} -> logoUrl) (\s@RepositoryCatalogData' {} a -> s {logoUrl = a} :: RepositoryCatalogData)++-- | Whether or not the repository is certified by AWS Marketplace.+repositoryCatalogData_marketplaceCertified :: Lens.Lens' RepositoryCatalogData (Prelude.Maybe Prelude.Bool)+repositoryCatalogData_marketplaceCertified = Lens.lens (\RepositoryCatalogData' {marketplaceCertified} -> marketplaceCertified) (\s@RepositoryCatalogData' {} a -> s {marketplaceCertified = a} :: RepositoryCatalogData)++-- | The operating system tags that are associated with the repository.+--+-- Only supported operating system tags appear publicly in the Amazon ECR+-- Public Gallery. For more information, see RepositoryCatalogDataInput.+repositoryCatalogData_operatingSystems :: Lens.Lens' RepositoryCatalogData (Prelude.Maybe [Prelude.Text])+repositoryCatalogData_operatingSystems = Lens.lens (\RepositoryCatalogData' {operatingSystems} -> operatingSystems) (\s@RepositoryCatalogData' {} a -> s {operatingSystems = a} :: RepositoryCatalogData) Prelude.. Lens.mapping Lens.coerced++-- | The longform usage details of the contents of the repository. The usage+-- text provides context for users of the repository.+repositoryCatalogData_usageText :: Lens.Lens' RepositoryCatalogData (Prelude.Maybe Prelude.Text)+repositoryCatalogData_usageText = Lens.lens (\RepositoryCatalogData' {usageText} -> usageText) (\s@RepositoryCatalogData' {} a -> s {usageText = a} :: RepositoryCatalogData)++instance Data.FromJSON RepositoryCatalogData where+  parseJSON =+    Data.withObject+      "RepositoryCatalogData"+      ( \x ->+          RepositoryCatalogData'+            Prelude.<$> (x Data..:? "aboutText")+            Prelude.<*> (x Data..:? "architectures" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "description")+            Prelude.<*> (x Data..:? "logoUrl")+            Prelude.<*> (x Data..:? "marketplaceCertified")+            Prelude.<*> ( x+                            Data..:? "operatingSystems"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "usageText")+      )++instance Prelude.Hashable RepositoryCatalogData where+  hashWithSalt _salt RepositoryCatalogData' {..} =+    _salt+      `Prelude.hashWithSalt` aboutText+      `Prelude.hashWithSalt` architectures+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` logoUrl+      `Prelude.hashWithSalt` marketplaceCertified+      `Prelude.hashWithSalt` operatingSystems+      `Prelude.hashWithSalt` usageText++instance Prelude.NFData RepositoryCatalogData where+  rnf RepositoryCatalogData' {..} =+    Prelude.rnf aboutText+      `Prelude.seq` Prelude.rnf architectures+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf logoUrl+      `Prelude.seq` Prelude.rnf marketplaceCertified+      `Prelude.seq` Prelude.rnf operatingSystems+      `Prelude.seq` Prelude.rnf usageText
+ gen/Amazonka/ECRPublic/Types/RepositoryCatalogDataInput.hs view
@@ -0,0 +1,250 @@+{-# 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.ECRPublic.Types.RepositoryCatalogDataInput+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.RepositoryCatalogDataInput where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An object containing the catalog data for a repository. This data is+-- publicly visible in the Amazon ECR Public Gallery.+--+-- /See:/ 'newRepositoryCatalogDataInput' smart constructor.+data RepositoryCatalogDataInput = RepositoryCatalogDataInput'+  { -- | A detailed description of the contents of the repository. It is publicly+    -- visible in the Amazon ECR Public Gallery. The text must be in markdown+    -- format.+    aboutText :: Prelude.Maybe Prelude.Text,+    -- | The system architecture that the images in the repository are compatible+    -- with. On the Amazon ECR Public Gallery, the following supported+    -- architectures will appear as badges on the repository and are used as+    -- search filters.+    --+    -- -   @Linux@+    --+    -- -   @Windows@+    --+    -- If an unsupported tag is added to your repository catalog data, it will+    -- be associated with the repository and can be retrieved using the API but+    -- will not be discoverable in the Amazon ECR Public Gallery.+    architectures :: Prelude.Maybe [Prelude.Text],+    -- | A short description of the contents of the repository. This text appears+    -- in both the image details and also when searching for repositories on+    -- the Amazon ECR Public Gallery.+    description :: Prelude.Maybe Prelude.Text,+    -- | The base64-encoded repository logo payload.+    --+    -- The repository logo is only publicly visible in the Amazon ECR Public+    -- Gallery for verified accounts.+    logoImageBlob :: Prelude.Maybe Data.Base64,+    -- | The operating systems that the images in the repository are compatible+    -- with. On the Amazon ECR Public Gallery, the following supported+    -- operating systems will appear as badges on the repository and are used+    -- as search filters.+    --+    -- -   @ARM@+    --+    -- -   @ARM 64@+    --+    -- -   @x86@+    --+    -- -   @x86-64@+    --+    -- If an unsupported tag is added to your repository catalog data, it will+    -- be associated with the repository and can be retrieved using the API but+    -- will not be discoverable in the Amazon ECR Public Gallery.+    operatingSystems :: Prelude.Maybe [Prelude.Text],+    -- | Detailed information on how to use the contents of the repository. It is+    -- publicly visible in the Amazon ECR Public Gallery. The usage text+    -- provides context, support information, and additional usage details for+    -- users of the repository. The text must be in markdown format.+    usageText :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'RepositoryCatalogDataInput' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'aboutText', 'repositoryCatalogDataInput_aboutText' - A detailed description of the contents of the repository. It is publicly+-- visible in the Amazon ECR Public Gallery. The text must be in markdown+-- format.+--+-- 'architectures', 'repositoryCatalogDataInput_architectures' - The system architecture that the images in the repository are compatible+-- with. On the Amazon ECR Public Gallery, the following supported+-- architectures will appear as badges on the repository and are used as+-- search filters.+--+-- -   @Linux@+--+-- -   @Windows@+--+-- If an unsupported tag is added to your repository catalog data, it will+-- be associated with the repository and can be retrieved using the API but+-- will not be discoverable in the Amazon ECR Public Gallery.+--+-- 'description', 'repositoryCatalogDataInput_description' - A short description of the contents of the repository. This text appears+-- in both the image details and also when searching for repositories on+-- the Amazon ECR Public Gallery.+--+-- 'logoImageBlob', 'repositoryCatalogDataInput_logoImageBlob' - The base64-encoded repository logo payload.+--+-- The repository logo is only publicly visible in the Amazon ECR Public+-- Gallery for verified accounts.--+-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.+-- -- The underlying isomorphism will encode to Base64 representation during+-- -- serialisation, and decode from Base64 representation during deserialisation.+-- -- This 'Lens' accepts and returns only raw unencoded data.+--+-- 'operatingSystems', 'repositoryCatalogDataInput_operatingSystems' - The operating systems that the images in the repository are compatible+-- with. On the Amazon ECR Public Gallery, the following supported+-- operating systems will appear as badges on the repository and are used+-- as search filters.+--+-- -   @ARM@+--+-- -   @ARM 64@+--+-- -   @x86@+--+-- -   @x86-64@+--+-- If an unsupported tag is added to your repository catalog data, it will+-- be associated with the repository and can be retrieved using the API but+-- will not be discoverable in the Amazon ECR Public Gallery.+--+-- 'usageText', 'repositoryCatalogDataInput_usageText' - Detailed information on how to use the contents of the repository. It is+-- publicly visible in the Amazon ECR Public Gallery. The usage text+-- provides context, support information, and additional usage details for+-- users of the repository. The text must be in markdown format.+newRepositoryCatalogDataInput ::+  RepositoryCatalogDataInput+newRepositoryCatalogDataInput =+  RepositoryCatalogDataInput'+    { aboutText =+        Prelude.Nothing,+      architectures = Prelude.Nothing,+      description = Prelude.Nothing,+      logoImageBlob = Prelude.Nothing,+      operatingSystems = Prelude.Nothing,+      usageText = Prelude.Nothing+    }++-- | A detailed description of the contents of the repository. It is publicly+-- visible in the Amazon ECR Public Gallery. The text must be in markdown+-- format.+repositoryCatalogDataInput_aboutText :: Lens.Lens' RepositoryCatalogDataInput (Prelude.Maybe Prelude.Text)+repositoryCatalogDataInput_aboutText = Lens.lens (\RepositoryCatalogDataInput' {aboutText} -> aboutText) (\s@RepositoryCatalogDataInput' {} a -> s {aboutText = a} :: RepositoryCatalogDataInput)++-- | The system architecture that the images in the repository are compatible+-- with. On the Amazon ECR Public Gallery, the following supported+-- architectures will appear as badges on the repository and are used as+-- search filters.+--+-- -   @Linux@+--+-- -   @Windows@+--+-- If an unsupported tag is added to your repository catalog data, it will+-- be associated with the repository and can be retrieved using the API but+-- will not be discoverable in the Amazon ECR Public Gallery.+repositoryCatalogDataInput_architectures :: Lens.Lens' RepositoryCatalogDataInput (Prelude.Maybe [Prelude.Text])+repositoryCatalogDataInput_architectures = Lens.lens (\RepositoryCatalogDataInput' {architectures} -> architectures) (\s@RepositoryCatalogDataInput' {} a -> s {architectures = a} :: RepositoryCatalogDataInput) Prelude.. Lens.mapping Lens.coerced++-- | A short description of the contents of the repository. This text appears+-- in both the image details and also when searching for repositories on+-- the Amazon ECR Public Gallery.+repositoryCatalogDataInput_description :: Lens.Lens' RepositoryCatalogDataInput (Prelude.Maybe Prelude.Text)+repositoryCatalogDataInput_description = Lens.lens (\RepositoryCatalogDataInput' {description} -> description) (\s@RepositoryCatalogDataInput' {} a -> s {description = a} :: RepositoryCatalogDataInput)++-- | The base64-encoded repository logo payload.+--+-- The repository logo is only publicly visible in the Amazon ECR Public+-- Gallery for verified accounts.--+-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.+-- -- The underlying isomorphism will encode to Base64 representation during+-- -- serialisation, and decode from Base64 representation during deserialisation.+-- -- This 'Lens' accepts and returns only raw unencoded data.+repositoryCatalogDataInput_logoImageBlob :: Lens.Lens' RepositoryCatalogDataInput (Prelude.Maybe Prelude.ByteString)+repositoryCatalogDataInput_logoImageBlob = Lens.lens (\RepositoryCatalogDataInput' {logoImageBlob} -> logoImageBlob) (\s@RepositoryCatalogDataInput' {} a -> s {logoImageBlob = a} :: RepositoryCatalogDataInput) Prelude.. Lens.mapping Data._Base64++-- | The operating systems that the images in the repository are compatible+-- with. On the Amazon ECR Public Gallery, the following supported+-- operating systems will appear as badges on the repository and are used+-- as search filters.+--+-- -   @ARM@+--+-- -   @ARM 64@+--+-- -   @x86@+--+-- -   @x86-64@+--+-- If an unsupported tag is added to your repository catalog data, it will+-- be associated with the repository and can be retrieved using the API but+-- will not be discoverable in the Amazon ECR Public Gallery.+repositoryCatalogDataInput_operatingSystems :: Lens.Lens' RepositoryCatalogDataInput (Prelude.Maybe [Prelude.Text])+repositoryCatalogDataInput_operatingSystems = Lens.lens (\RepositoryCatalogDataInput' {operatingSystems} -> operatingSystems) (\s@RepositoryCatalogDataInput' {} a -> s {operatingSystems = a} :: RepositoryCatalogDataInput) Prelude.. Lens.mapping Lens.coerced++-- | Detailed information on how to use the contents of the repository. It is+-- publicly visible in the Amazon ECR Public Gallery. The usage text+-- provides context, support information, and additional usage details for+-- users of the repository. The text must be in markdown format.+repositoryCatalogDataInput_usageText :: Lens.Lens' RepositoryCatalogDataInput (Prelude.Maybe Prelude.Text)+repositoryCatalogDataInput_usageText = Lens.lens (\RepositoryCatalogDataInput' {usageText} -> usageText) (\s@RepositoryCatalogDataInput' {} a -> s {usageText = a} :: RepositoryCatalogDataInput)++instance Prelude.Hashable RepositoryCatalogDataInput where+  hashWithSalt _salt RepositoryCatalogDataInput' {..} =+    _salt+      `Prelude.hashWithSalt` aboutText+      `Prelude.hashWithSalt` architectures+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` logoImageBlob+      `Prelude.hashWithSalt` operatingSystems+      `Prelude.hashWithSalt` usageText++instance Prelude.NFData RepositoryCatalogDataInput where+  rnf RepositoryCatalogDataInput' {..} =+    Prelude.rnf aboutText+      `Prelude.seq` Prelude.rnf architectures+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf logoImageBlob+      `Prelude.seq` Prelude.rnf operatingSystems+      `Prelude.seq` Prelude.rnf usageText++instance Data.ToJSON RepositoryCatalogDataInput where+  toJSON RepositoryCatalogDataInput' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("aboutText" Data..=) Prelude.<$> aboutText,+            ("architectures" Data..=) Prelude.<$> architectures,+            ("description" Data..=) Prelude.<$> description,+            ("logoImageBlob" Data..=) Prelude.<$> logoImageBlob,+            ("operatingSystems" Data..=)+              Prelude.<$> operatingSystems,+            ("usageText" Data..=) Prelude.<$> usageText+          ]+      )
+ gen/Amazonka/ECRPublic/Types/Tag.hs view
@@ -0,0 +1,101 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.Types.Tag+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+module Amazonka.ECRPublic.Types.Tag where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The metadata that you apply to a resource to help you categorize and+-- organize them. Each tag consists of a key and an optional value, both of+-- which you define. Tag keys can have a maximum character length of 128+-- characters, and tag values can have a maximum length of 256 characters.+--+-- /See:/ 'newTag' smart constructor.+data Tag = Tag'+  { -- | One part of a key-value pair that make up a tag. A @key@ is a general+    -- label that acts like a category for more specific tag values.+    key :: Prelude.Maybe Prelude.Text,+    -- | The optional part of a key-value pair that make up a tag. A @value@ acts+    -- as a descriptor within a tag category (key).+    value :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Tag' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'key', 'tag_key' - One part of a key-value pair that make up a tag. A @key@ is a general+-- label that acts like a category for more specific tag values.+--+-- 'value', 'tag_value' - The optional part of a key-value pair that make up a tag. A @value@ acts+-- as a descriptor within a tag category (key).+newTag ::+  Tag+newTag =+  Tag'+    { key = Prelude.Nothing,+      value = Prelude.Nothing+    }++-- | One part of a key-value pair that make up a tag. A @key@ is a general+-- label that acts like a category for more specific tag values.+tag_key :: Lens.Lens' Tag (Prelude.Maybe Prelude.Text)+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)++-- | The optional part of a key-value pair that make up a tag. A @value@ acts+-- as a descriptor within a tag category (key).+tag_value :: Lens.Lens' Tag (Prelude.Maybe Prelude.Text)+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)++instance Data.FromJSON Tag where+  parseJSON =+    Data.withObject+      "Tag"+      ( \x ->+          Tag'+            Prelude.<$> (x Data..:? "Key")+            Prelude.<*> (x Data..:? "Value")+      )++instance Prelude.Hashable Tag where+  hashWithSalt _salt Tag' {..} =+    _salt+      `Prelude.hashWithSalt` key+      `Prelude.hashWithSalt` value++instance Prelude.NFData Tag where+  rnf Tag' {..} =+    Prelude.rnf key `Prelude.seq` Prelude.rnf value++instance Data.ToJSON Tag where+  toJSON Tag' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Key" Data..=) Prelude.<$> key,+            ("Value" Data..=) Prelude.<$> value+          ]+      )
+ gen/Amazonka/ECRPublic/UntagResource.hs view
@@ -0,0 +1,177 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.ECRPublic.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)+--+-- Deletes specified tags from a resource.+module Amazonka.ECRPublic.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.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUntagResource' smart constructor.+data UntagResource = UntagResource'+  { -- | The Amazon Resource Name (ARN) of the resource from which to delete+    -- tags. Currently, the supported resource is an Amazon ECR Public+    -- repository.+    resourceArn :: Prelude.Text,+    -- | The keys of the tags to be removed.+    tagKeys :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResource' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource from which to delete+-- tags. Currently, the supported resource is an Amazon ECR Public+-- repository.+--+-- 'tagKeys', 'untagResource_tagKeys' - The keys of the tags to be removed.+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource from which to delete+-- tags. Currently, the supported resource is an Amazon ECR Public+-- repository.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | The keys of the tags to be removed.+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.UntagResource" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UntagResource where+  toJSON UntagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("resourceArn" Data..= resourceArn),+            Prelude.Just ("tagKeys" Data..= tagKeys)+          ]+      )++instance Data.ToPath UntagResource where+  toPath = Prelude.const "/"++instance Data.ToQuery UntagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUntagResourceResponse' smart constructor.+data UntagResourceResponse = UntagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResourceResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'untagResourceResponse_httpStatus' - The response's http status code.+newUntagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UntagResourceResponse+newUntagResourceResponse pHttpStatus_ =+  UntagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)++instance Prelude.NFData UntagResourceResponse where+  rnf UntagResourceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/UploadLayerPart.hs view
@@ -0,0 +1,321 @@+{-# 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.ECRPublic.UploadLayerPart+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Uploads an image layer part to Amazon ECR.+--+-- When an image is pushed, each new image layer is uploaded in parts. The+-- maximum size of each image layer part can be 20971520 bytes (or about+-- 20MB). The UploadLayerPart API is called once per each new image layer+-- part.+--+-- This operation is used by the Amazon ECR proxy and is not generally used+-- by customers for pulling and pushing images. In most cases, you should+-- use the @docker@ CLI to pull, tag, and push images.+module Amazonka.ECRPublic.UploadLayerPart+  ( -- * Creating a Request+    UploadLayerPart (..),+    newUploadLayerPart,++    -- * Request Lenses+    uploadLayerPart_registryId,+    uploadLayerPart_repositoryName,+    uploadLayerPart_uploadId,+    uploadLayerPart_partFirstByte,+    uploadLayerPart_partLastByte,+    uploadLayerPart_layerPartBlob,++    -- * Destructuring the Response+    UploadLayerPartResponse (..),+    newUploadLayerPartResponse,++    -- * Response Lenses+    uploadLayerPartResponse_lastByteReceived,+    uploadLayerPartResponse_registryId,+    uploadLayerPartResponse_repositoryName,+    uploadLayerPartResponse_uploadId,+    uploadLayerPartResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /See:/ 'newUploadLayerPart' smart constructor.+data UploadLayerPart = UploadLayerPart'+  { -- | The AWS account ID associated with the registry to which you are+    -- uploading layer parts. If you do not specify a registry, the default+    -- public registry is assumed.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The name of the repository to which you are uploading layer parts.+    repositoryName :: Prelude.Text,+    -- | The upload ID from a previous InitiateLayerUpload operation to associate+    -- with the layer part upload.+    uploadId :: Prelude.Text,+    -- | The position of the first byte of the layer part witin the overall image+    -- layer.+    partFirstByte :: Prelude.Natural,+    -- | The position of the last byte of the layer part within the overall image+    -- layer.+    partLastByte :: Prelude.Natural,+    -- | The base64-encoded layer part payload.+    layerPartBlob :: Data.Base64+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UploadLayerPart' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'registryId', 'uploadLayerPart_registryId' - The AWS account ID associated with the registry to which you are+-- uploading layer parts. If you do not specify a registry, the default+-- public registry is assumed.+--+-- 'repositoryName', 'uploadLayerPart_repositoryName' - The name of the repository to which you are uploading layer parts.+--+-- 'uploadId', 'uploadLayerPart_uploadId' - The upload ID from a previous InitiateLayerUpload operation to associate+-- with the layer part upload.+--+-- 'partFirstByte', 'uploadLayerPart_partFirstByte' - The position of the first byte of the layer part witin the overall image+-- layer.+--+-- 'partLastByte', 'uploadLayerPart_partLastByte' - The position of the last byte of the layer part within the overall image+-- layer.+--+-- 'layerPartBlob', 'uploadLayerPart_layerPartBlob' - The base64-encoded layer part payload.--+-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.+-- -- The underlying isomorphism will encode to Base64 representation during+-- -- serialisation, and decode from Base64 representation during deserialisation.+-- -- This 'Lens' accepts and returns only raw unencoded data.+newUploadLayerPart ::+  -- | 'repositoryName'+  Prelude.Text ->+  -- | 'uploadId'+  Prelude.Text ->+  -- | 'partFirstByte'+  Prelude.Natural ->+  -- | 'partLastByte'+  Prelude.Natural ->+  -- | 'layerPartBlob'+  Prelude.ByteString ->+  UploadLayerPart+newUploadLayerPart+  pRepositoryName_+  pUploadId_+  pPartFirstByte_+  pPartLastByte_+  pLayerPartBlob_ =+    UploadLayerPart'+      { registryId = Prelude.Nothing,+        repositoryName = pRepositoryName_,+        uploadId = pUploadId_,+        partFirstByte = pPartFirstByte_,+        partLastByte = pPartLastByte_,+        layerPartBlob = Data._Base64 Lens.# pLayerPartBlob_+      }++-- | The AWS account ID associated with the registry to which you are+-- uploading layer parts. If you do not specify a registry, the default+-- public registry is assumed.+uploadLayerPart_registryId :: Lens.Lens' UploadLayerPart (Prelude.Maybe Prelude.Text)+uploadLayerPart_registryId = Lens.lens (\UploadLayerPart' {registryId} -> registryId) (\s@UploadLayerPart' {} a -> s {registryId = a} :: UploadLayerPart)++-- | The name of the repository to which you are uploading layer parts.+uploadLayerPart_repositoryName :: Lens.Lens' UploadLayerPart Prelude.Text+uploadLayerPart_repositoryName = Lens.lens (\UploadLayerPart' {repositoryName} -> repositoryName) (\s@UploadLayerPart' {} a -> s {repositoryName = a} :: UploadLayerPart)++-- | The upload ID from a previous InitiateLayerUpload operation to associate+-- with the layer part upload.+uploadLayerPart_uploadId :: Lens.Lens' UploadLayerPart Prelude.Text+uploadLayerPart_uploadId = Lens.lens (\UploadLayerPart' {uploadId} -> uploadId) (\s@UploadLayerPart' {} a -> s {uploadId = a} :: UploadLayerPart)++-- | The position of the first byte of the layer part witin the overall image+-- layer.+uploadLayerPart_partFirstByte :: Lens.Lens' UploadLayerPart Prelude.Natural+uploadLayerPart_partFirstByte = Lens.lens (\UploadLayerPart' {partFirstByte} -> partFirstByte) (\s@UploadLayerPart' {} a -> s {partFirstByte = a} :: UploadLayerPart)++-- | The position of the last byte of the layer part within the overall image+-- layer.+uploadLayerPart_partLastByte :: Lens.Lens' UploadLayerPart Prelude.Natural+uploadLayerPart_partLastByte = Lens.lens (\UploadLayerPart' {partLastByte} -> partLastByte) (\s@UploadLayerPart' {} a -> s {partLastByte = a} :: UploadLayerPart)++-- | The base64-encoded layer part payload.--+-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.+-- -- The underlying isomorphism will encode to Base64 representation during+-- -- serialisation, and decode from Base64 representation during deserialisation.+-- -- This 'Lens' accepts and returns only raw unencoded data.+uploadLayerPart_layerPartBlob :: Lens.Lens' UploadLayerPart Prelude.ByteString+uploadLayerPart_layerPartBlob = Lens.lens (\UploadLayerPart' {layerPartBlob} -> layerPartBlob) (\s@UploadLayerPart' {} a -> s {layerPartBlob = a} :: UploadLayerPart) Prelude.. Data._Base64++instance Core.AWSRequest UploadLayerPart where+  type+    AWSResponse UploadLayerPart =+      UploadLayerPartResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          UploadLayerPartResponse'+            Prelude.<$> (x Data..?> "lastByteReceived")+            Prelude.<*> (x Data..?> "registryId")+            Prelude.<*> (x Data..?> "repositoryName")+            Prelude.<*> (x Data..?> "uploadId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UploadLayerPart where+  hashWithSalt _salt UploadLayerPart' {..} =+    _salt+      `Prelude.hashWithSalt` registryId+      `Prelude.hashWithSalt` repositoryName+      `Prelude.hashWithSalt` uploadId+      `Prelude.hashWithSalt` partFirstByte+      `Prelude.hashWithSalt` partLastByte+      `Prelude.hashWithSalt` layerPartBlob++instance Prelude.NFData UploadLayerPart where+  rnf UploadLayerPart' {..} =+    Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf uploadId+      `Prelude.seq` Prelude.rnf partFirstByte+      `Prelude.seq` Prelude.rnf partLastByte+      `Prelude.seq` Prelude.rnf layerPartBlob++instance Data.ToHeaders UploadLayerPart where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "X-Amz-Target"+              Data.=# ( "SpencerFrontendService.UploadLayerPart" ::+                          Prelude.ByteString+                      ),+            "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UploadLayerPart where+  toJSON UploadLayerPart' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("registryId" Data..=) Prelude.<$> registryId,+            Prelude.Just+              ("repositoryName" Data..= repositoryName),+            Prelude.Just ("uploadId" Data..= uploadId),+            Prelude.Just ("partFirstByte" Data..= partFirstByte),+            Prelude.Just ("partLastByte" Data..= partLastByte),+            Prelude.Just+              ("layerPartBlob" Data..= layerPartBlob)+          ]+      )++instance Data.ToPath UploadLayerPart where+  toPath = Prelude.const "/"++instance Data.ToQuery UploadLayerPart where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUploadLayerPartResponse' smart constructor.+data UploadLayerPartResponse = UploadLayerPartResponse'+  { -- | The integer value of the last byte received in the request.+    lastByteReceived :: Prelude.Maybe Prelude.Natural,+    -- | The registry ID associated with the request.+    registryId :: Prelude.Maybe Prelude.Text,+    -- | The repository name associated with the request.+    repositoryName :: Prelude.Maybe Prelude.Text,+    -- | The upload ID associated with the request.+    uploadId :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UploadLayerPartResponse' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'lastByteReceived', 'uploadLayerPartResponse_lastByteReceived' - The integer value of the last byte received in the request.+--+-- 'registryId', 'uploadLayerPartResponse_registryId' - The registry ID associated with the request.+--+-- 'repositoryName', 'uploadLayerPartResponse_repositoryName' - The repository name associated with the request.+--+-- 'uploadId', 'uploadLayerPartResponse_uploadId' - The upload ID associated with the request.+--+-- 'httpStatus', 'uploadLayerPartResponse_httpStatus' - The response's http status code.+newUploadLayerPartResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UploadLayerPartResponse+newUploadLayerPartResponse pHttpStatus_ =+  UploadLayerPartResponse'+    { lastByteReceived =+        Prelude.Nothing,+      registryId = Prelude.Nothing,+      repositoryName = Prelude.Nothing,+      uploadId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The integer value of the last byte received in the request.+uploadLayerPartResponse_lastByteReceived :: Lens.Lens' UploadLayerPartResponse (Prelude.Maybe Prelude.Natural)+uploadLayerPartResponse_lastByteReceived = Lens.lens (\UploadLayerPartResponse' {lastByteReceived} -> lastByteReceived) (\s@UploadLayerPartResponse' {} a -> s {lastByteReceived = a} :: UploadLayerPartResponse)++-- | The registry ID associated with the request.+uploadLayerPartResponse_registryId :: Lens.Lens' UploadLayerPartResponse (Prelude.Maybe Prelude.Text)+uploadLayerPartResponse_registryId = Lens.lens (\UploadLayerPartResponse' {registryId} -> registryId) (\s@UploadLayerPartResponse' {} a -> s {registryId = a} :: UploadLayerPartResponse)++-- | The repository name associated with the request.+uploadLayerPartResponse_repositoryName :: Lens.Lens' UploadLayerPartResponse (Prelude.Maybe Prelude.Text)+uploadLayerPartResponse_repositoryName = Lens.lens (\UploadLayerPartResponse' {repositoryName} -> repositoryName) (\s@UploadLayerPartResponse' {} a -> s {repositoryName = a} :: UploadLayerPartResponse)++-- | The upload ID associated with the request.+uploadLayerPartResponse_uploadId :: Lens.Lens' UploadLayerPartResponse (Prelude.Maybe Prelude.Text)+uploadLayerPartResponse_uploadId = Lens.lens (\UploadLayerPartResponse' {uploadId} -> uploadId) (\s@UploadLayerPartResponse' {} a -> s {uploadId = a} :: UploadLayerPartResponse)++-- | The response's http status code.+uploadLayerPartResponse_httpStatus :: Lens.Lens' UploadLayerPartResponse Prelude.Int+uploadLayerPartResponse_httpStatus = Lens.lens (\UploadLayerPartResponse' {httpStatus} -> httpStatus) (\s@UploadLayerPartResponse' {} a -> s {httpStatus = a} :: UploadLayerPartResponse)++instance Prelude.NFData UploadLayerPartResponse where+  rnf UploadLayerPartResponse' {..} =+    Prelude.rnf lastByteReceived+      `Prelude.seq` Prelude.rnf registryId+      `Prelude.seq` Prelude.rnf repositoryName+      `Prelude.seq` Prelude.rnf uploadId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/ECRPublic/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.ECRPublic.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.ECRPublic.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.ECRPublic.Lens+import Amazonka.ECRPublic.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.ECRPublic+import Test.Amazonka.ECRPublic.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "ECRPublic"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/ECRPublic.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.ECRPublic+-- Copyright   : (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.ECRPublic+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/ECRPublic/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.ECRPublic.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.ECRPublic.Internal where
+ test/Test/Amazonka/Gen/ECRPublic.hs view
@@ -0,0 +1,498 @@+{-# 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.ECRPublic+-- Copyright   : (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.ECRPublic where++import Amazonka.ECRPublic+import qualified Data.Proxy as Proxy+import Test.Amazonka.ECRPublic.Internal+import Test.Amazonka.Fixture+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"+--         [ requestBatchCheckLayerAvailability $+--             newBatchCheckLayerAvailability+--+--         , requestBatchDeleteImage $+--             newBatchDeleteImage+--+--         , requestCompleteLayerUpload $+--             newCompleteLayerUpload+--+--         , requestCreateRepository $+--             newCreateRepository+--+--         , requestDeleteRepository $+--             newDeleteRepository+--+--         , requestDeleteRepositoryPolicy $+--             newDeleteRepositoryPolicy+--+--         , requestDescribeImageTags $+--             newDescribeImageTags+--+--         , requestDescribeImages $+--             newDescribeImages+--+--         , requestDescribeRegistries $+--             newDescribeRegistries+--+--         , requestDescribeRepositories $+--             newDescribeRepositories+--+--         , requestGetAuthorizationToken $+--             newGetAuthorizationToken+--+--         , requestGetRegistryCatalogData $+--             newGetRegistryCatalogData+--+--         , requestGetRepositoryCatalogData $+--             newGetRepositoryCatalogData+--+--         , requestGetRepositoryPolicy $+--             newGetRepositoryPolicy+--+--         , requestInitiateLayerUpload $+--             newInitiateLayerUpload+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestPutImage $+--             newPutImage+--+--         , requestPutRegistryCatalogData $+--             newPutRegistryCatalogData+--+--         , requestPutRepositoryCatalogData $+--             newPutRepositoryCatalogData+--+--         , requestSetRepositoryPolicy $+--             newSetRepositoryPolicy+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUploadLayerPart $+--             newUploadLayerPart+--+--           ]++--     , testGroup "response"+--         [ responseBatchCheckLayerAvailability $+--             newBatchCheckLayerAvailabilityResponse+--+--         , responseBatchDeleteImage $+--             newBatchDeleteImageResponse+--+--         , responseCompleteLayerUpload $+--             newCompleteLayerUploadResponse+--+--         , responseCreateRepository $+--             newCreateRepositoryResponse+--+--         , responseDeleteRepository $+--             newDeleteRepositoryResponse+--+--         , responseDeleteRepositoryPolicy $+--             newDeleteRepositoryPolicyResponse+--+--         , responseDescribeImageTags $+--             newDescribeImageTagsResponse+--+--         , responseDescribeImages $+--             newDescribeImagesResponse+--+--         , responseDescribeRegistries $+--             newDescribeRegistriesResponse+--+--         , responseDescribeRepositories $+--             newDescribeRepositoriesResponse+--+--         , responseGetAuthorizationToken $+--             newGetAuthorizationTokenResponse+--+--         , responseGetRegistryCatalogData $+--             newGetRegistryCatalogDataResponse+--+--         , responseGetRepositoryCatalogData $+--             newGetRepositoryCatalogDataResponse+--+--         , responseGetRepositoryPolicy $+--             newGetRepositoryPolicyResponse+--+--         , responseInitiateLayerUpload $+--             newInitiateLayerUploadResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responsePutImage $+--             newPutImageResponse+--+--         , responsePutRegistryCatalogData $+--             newPutRegistryCatalogDataResponse+--+--         , responsePutRepositoryCatalogData $+--             newPutRepositoryCatalogDataResponse+--+--         , responseSetRepositoryPolicy $+--             newSetRepositoryPolicyResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUploadLayerPart $+--             newUploadLayerPartResponse+--+--           ]+--     ]++-- Requests++requestBatchCheckLayerAvailability :: BatchCheckLayerAvailability -> TestTree+requestBatchCheckLayerAvailability =+  req+    "BatchCheckLayerAvailability"+    "fixture/BatchCheckLayerAvailability.yaml"++requestBatchDeleteImage :: BatchDeleteImage -> TestTree+requestBatchDeleteImage =+  req+    "BatchDeleteImage"+    "fixture/BatchDeleteImage.yaml"++requestCompleteLayerUpload :: CompleteLayerUpload -> TestTree+requestCompleteLayerUpload =+  req+    "CompleteLayerUpload"+    "fixture/CompleteLayerUpload.yaml"++requestCreateRepository :: CreateRepository -> TestTree+requestCreateRepository =+  req+    "CreateRepository"+    "fixture/CreateRepository.yaml"++requestDeleteRepository :: DeleteRepository -> TestTree+requestDeleteRepository =+  req+    "DeleteRepository"+    "fixture/DeleteRepository.yaml"++requestDeleteRepositoryPolicy :: DeleteRepositoryPolicy -> TestTree+requestDeleteRepositoryPolicy =+  req+    "DeleteRepositoryPolicy"+    "fixture/DeleteRepositoryPolicy.yaml"++requestDescribeImageTags :: DescribeImageTags -> TestTree+requestDescribeImageTags =+  req+    "DescribeImageTags"+    "fixture/DescribeImageTags.yaml"++requestDescribeImages :: DescribeImages -> TestTree+requestDescribeImages =+  req+    "DescribeImages"+    "fixture/DescribeImages.yaml"++requestDescribeRegistries :: DescribeRegistries -> TestTree+requestDescribeRegistries =+  req+    "DescribeRegistries"+    "fixture/DescribeRegistries.yaml"++requestDescribeRepositories :: DescribeRepositories -> TestTree+requestDescribeRepositories =+  req+    "DescribeRepositories"+    "fixture/DescribeRepositories.yaml"++requestGetAuthorizationToken :: GetAuthorizationToken -> TestTree+requestGetAuthorizationToken =+  req+    "GetAuthorizationToken"+    "fixture/GetAuthorizationToken.yaml"++requestGetRegistryCatalogData :: GetRegistryCatalogData -> TestTree+requestGetRegistryCatalogData =+  req+    "GetRegistryCatalogData"+    "fixture/GetRegistryCatalogData.yaml"++requestGetRepositoryCatalogData :: GetRepositoryCatalogData -> TestTree+requestGetRepositoryCatalogData =+  req+    "GetRepositoryCatalogData"+    "fixture/GetRepositoryCatalogData.yaml"++requestGetRepositoryPolicy :: GetRepositoryPolicy -> TestTree+requestGetRepositoryPolicy =+  req+    "GetRepositoryPolicy"+    "fixture/GetRepositoryPolicy.yaml"++requestInitiateLayerUpload :: InitiateLayerUpload -> TestTree+requestInitiateLayerUpload =+  req+    "InitiateLayerUpload"+    "fixture/InitiateLayerUpload.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestPutImage :: PutImage -> TestTree+requestPutImage =+  req+    "PutImage"+    "fixture/PutImage.yaml"++requestPutRegistryCatalogData :: PutRegistryCatalogData -> TestTree+requestPutRegistryCatalogData =+  req+    "PutRegistryCatalogData"+    "fixture/PutRegistryCatalogData.yaml"++requestPutRepositoryCatalogData :: PutRepositoryCatalogData -> TestTree+requestPutRepositoryCatalogData =+  req+    "PutRepositoryCatalogData"+    "fixture/PutRepositoryCatalogData.yaml"++requestSetRepositoryPolicy :: SetRepositoryPolicy -> TestTree+requestSetRepositoryPolicy =+  req+    "SetRepositoryPolicy"+    "fixture/SetRepositoryPolicy.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUploadLayerPart :: UploadLayerPart -> TestTree+requestUploadLayerPart =+  req+    "UploadLayerPart"+    "fixture/UploadLayerPart.yaml"++-- Responses++responseBatchCheckLayerAvailability :: BatchCheckLayerAvailabilityResponse -> TestTree+responseBatchCheckLayerAvailability =+  res+    "BatchCheckLayerAvailabilityResponse"+    "fixture/BatchCheckLayerAvailabilityResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchCheckLayerAvailability)++responseBatchDeleteImage :: BatchDeleteImageResponse -> TestTree+responseBatchDeleteImage =+  res+    "BatchDeleteImageResponse"+    "fixture/BatchDeleteImageResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchDeleteImage)++responseCompleteLayerUpload :: CompleteLayerUploadResponse -> TestTree+responseCompleteLayerUpload =+  res+    "CompleteLayerUploadResponse"+    "fixture/CompleteLayerUploadResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CompleteLayerUpload)++responseCreateRepository :: CreateRepositoryResponse -> TestTree+responseCreateRepository =+  res+    "CreateRepositoryResponse"+    "fixture/CreateRepositoryResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateRepository)++responseDeleteRepository :: DeleteRepositoryResponse -> TestTree+responseDeleteRepository =+  res+    "DeleteRepositoryResponse"+    "fixture/DeleteRepositoryResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteRepository)++responseDeleteRepositoryPolicy :: DeleteRepositoryPolicyResponse -> TestTree+responseDeleteRepositoryPolicy =+  res+    "DeleteRepositoryPolicyResponse"+    "fixture/DeleteRepositoryPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteRepositoryPolicy)++responseDescribeImageTags :: DescribeImageTagsResponse -> TestTree+responseDescribeImageTags =+  res+    "DescribeImageTagsResponse"+    "fixture/DescribeImageTagsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeImageTags)++responseDescribeImages :: DescribeImagesResponse -> TestTree+responseDescribeImages =+  res+    "DescribeImagesResponse"+    "fixture/DescribeImagesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeImages)++responseDescribeRegistries :: DescribeRegistriesResponse -> TestTree+responseDescribeRegistries =+  res+    "DescribeRegistriesResponse"+    "fixture/DescribeRegistriesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeRegistries)++responseDescribeRepositories :: DescribeRepositoriesResponse -> TestTree+responseDescribeRepositories =+  res+    "DescribeRepositoriesResponse"+    "fixture/DescribeRepositoriesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DescribeRepositories)++responseGetAuthorizationToken :: GetAuthorizationTokenResponse -> TestTree+responseGetAuthorizationToken =+  res+    "GetAuthorizationTokenResponse"+    "fixture/GetAuthorizationTokenResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetAuthorizationToken)++responseGetRegistryCatalogData :: GetRegistryCatalogDataResponse -> TestTree+responseGetRegistryCatalogData =+  res+    "GetRegistryCatalogDataResponse"+    "fixture/GetRegistryCatalogDataResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetRegistryCatalogData)++responseGetRepositoryCatalogData :: GetRepositoryCatalogDataResponse -> TestTree+responseGetRepositoryCatalogData =+  res+    "GetRepositoryCatalogDataResponse"+    "fixture/GetRepositoryCatalogDataResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetRepositoryCatalogData)++responseGetRepositoryPolicy :: GetRepositoryPolicyResponse -> TestTree+responseGetRepositoryPolicy =+  res+    "GetRepositoryPolicyResponse"+    "fixture/GetRepositoryPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetRepositoryPolicy)++responseInitiateLayerUpload :: InitiateLayerUploadResponse -> TestTree+responseInitiateLayerUpload =+  res+    "InitiateLayerUploadResponse"+    "fixture/InitiateLayerUploadResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy InitiateLayerUpload)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responsePutImage :: PutImageResponse -> TestTree+responsePutImage =+  res+    "PutImageResponse"+    "fixture/PutImageResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutImage)++responsePutRegistryCatalogData :: PutRegistryCatalogDataResponse -> TestTree+responsePutRegistryCatalogData =+  res+    "PutRegistryCatalogDataResponse"+    "fixture/PutRegistryCatalogDataResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutRegistryCatalogData)++responsePutRepositoryCatalogData :: PutRepositoryCatalogDataResponse -> TestTree+responsePutRepositoryCatalogData =+  res+    "PutRepositoryCatalogDataResponse"+    "fixture/PutRepositoryCatalogDataResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutRepositoryCatalogData)++responseSetRepositoryPolicy :: SetRepositoryPolicyResponse -> TestTree+responseSetRepositoryPolicy =+  res+    "SetRepositoryPolicyResponse"+    "fixture/SetRepositoryPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy SetRepositoryPolicy)++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)++responseUploadLayerPart :: UploadLayerPartResponse -> TestTree+responseUploadLayerPart =+  res+    "UploadLayerPartResponse"+    "fixture/UploadLayerPartResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UploadLayerPart)