{-# 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.ECR.PutRegistryScanningConfiguration -- 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 scanning configuration for your private registry. module Amazonka.ECR.PutRegistryScanningConfiguration ( -- * Creating a Request PutRegistryScanningConfiguration (..), newPutRegistryScanningConfiguration, -- * Request Lenses putRegistryScanningConfiguration_rules, putRegistryScanningConfiguration_scanType, -- * Destructuring the Response PutRegistryScanningConfigurationResponse (..), newPutRegistryScanningConfigurationResponse, -- * Response Lenses putRegistryScanningConfigurationResponse_registryScanningConfiguration, putRegistryScanningConfigurationResponse_httpStatus, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.ECR.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newPutRegistryScanningConfiguration' smart constructor. data PutRegistryScanningConfiguration = PutRegistryScanningConfiguration' { -- | The scanning rules to use for the registry. A scanning rule is used to -- determine which repository filters are used and at what frequency -- scanning will occur. rules :: Prelude.Maybe [RegistryScanningRule], -- | The scanning type to set for the registry. -- -- When a registry scanning configuration is not defined, by default the -- @BASIC@ scan type is used. When basic scanning is used, you may specify -- filters to determine which individual repositories, or all repositories, -- are scanned when new images are pushed to those repositories. -- Alternatively, you can do manual scans of images with basic scanning. -- -- When the @ENHANCED@ scan type is set, Amazon Inspector provides -- automated vulnerability scanning. You may choose between continuous -- scanning or scan on push and you may specify filters to determine which -- individual repositories, or all repositories, are scanned. scanType :: Prelude.Maybe ScanType } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'PutRegistryScanningConfiguration' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'rules', 'putRegistryScanningConfiguration_rules' - The scanning rules to use for the registry. A scanning rule is used to -- determine which repository filters are used and at what frequency -- scanning will occur. -- -- 'scanType', 'putRegistryScanningConfiguration_scanType' - The scanning type to set for the registry. -- -- When a registry scanning configuration is not defined, by default the -- @BASIC@ scan type is used. When basic scanning is used, you may specify -- filters to determine which individual repositories, or all repositories, -- are scanned when new images are pushed to those repositories. -- Alternatively, you can do manual scans of images with basic scanning. -- -- When the @ENHANCED@ scan type is set, Amazon Inspector provides -- automated vulnerability scanning. You may choose between continuous -- scanning or scan on push and you may specify filters to determine which -- individual repositories, or all repositories, are scanned. newPutRegistryScanningConfiguration :: PutRegistryScanningConfiguration newPutRegistryScanningConfiguration = PutRegistryScanningConfiguration' { rules = Prelude.Nothing, scanType = Prelude.Nothing } -- | The scanning rules to use for the registry. A scanning rule is used to -- determine which repository filters are used and at what frequency -- scanning will occur. putRegistryScanningConfiguration_rules :: Lens.Lens' PutRegistryScanningConfiguration (Prelude.Maybe [RegistryScanningRule]) putRegistryScanningConfiguration_rules = Lens.lens (\PutRegistryScanningConfiguration' {rules} -> rules) (\s@PutRegistryScanningConfiguration' {} a -> s {rules = a} :: PutRegistryScanningConfiguration) Prelude.. Lens.mapping Lens.coerced -- | The scanning type to set for the registry. -- -- When a registry scanning configuration is not defined, by default the -- @BASIC@ scan type is used. When basic scanning is used, you may specify -- filters to determine which individual repositories, or all repositories, -- are scanned when new images are pushed to those repositories. -- Alternatively, you can do manual scans of images with basic scanning. -- -- When the @ENHANCED@ scan type is set, Amazon Inspector provides -- automated vulnerability scanning. You may choose between continuous -- scanning or scan on push and you may specify filters to determine which -- individual repositories, or all repositories, are scanned. putRegistryScanningConfiguration_scanType :: Lens.Lens' PutRegistryScanningConfiguration (Prelude.Maybe ScanType) putRegistryScanningConfiguration_scanType = Lens.lens (\PutRegistryScanningConfiguration' {scanType} -> scanType) (\s@PutRegistryScanningConfiguration' {} a -> s {scanType = a} :: PutRegistryScanningConfiguration) instance Core.AWSRequest PutRegistryScanningConfiguration where type AWSResponse PutRegistryScanningConfiguration = PutRegistryScanningConfigurationResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> PutRegistryScanningConfigurationResponse' Prelude.<$> (x Data..?> "registryScanningConfiguration") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable PutRegistryScanningConfiguration where hashWithSalt _salt PutRegistryScanningConfiguration' {..} = _salt `Prelude.hashWithSalt` rules `Prelude.hashWithSalt` scanType instance Prelude.NFData PutRegistryScanningConfiguration where rnf PutRegistryScanningConfiguration' {..} = Prelude.rnf rules `Prelude.seq` Prelude.rnf scanType instance Data.ToHeaders PutRegistryScanningConfiguration where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ( "AmazonEC2ContainerRegistry_V20150921.PutRegistryScanningConfiguration" :: Prelude.ByteString ), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON PutRegistryScanningConfiguration where toJSON PutRegistryScanningConfiguration' {..} = Data.object ( Prelude.catMaybes [ ("rules" Data..=) Prelude.<$> rules, ("scanType" Data..=) Prelude.<$> scanType ] ) instance Data.ToPath PutRegistryScanningConfiguration where toPath = Prelude.const "/" instance Data.ToQuery PutRegistryScanningConfiguration where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newPutRegistryScanningConfigurationResponse' smart constructor. data PutRegistryScanningConfigurationResponse = PutRegistryScanningConfigurationResponse' { -- | The scanning configuration for your registry. registryScanningConfiguration :: Prelude.Maybe RegistryScanningConfiguration, -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'PutRegistryScanningConfigurationResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'registryScanningConfiguration', 'putRegistryScanningConfigurationResponse_registryScanningConfiguration' - The scanning configuration for your registry. -- -- 'httpStatus', 'putRegistryScanningConfigurationResponse_httpStatus' - The response's http status code. newPutRegistryScanningConfigurationResponse :: -- | 'httpStatus' Prelude.Int -> PutRegistryScanningConfigurationResponse newPutRegistryScanningConfigurationResponse pHttpStatus_ = PutRegistryScanningConfigurationResponse' { registryScanningConfiguration = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | The scanning configuration for your registry. putRegistryScanningConfigurationResponse_registryScanningConfiguration :: Lens.Lens' PutRegistryScanningConfigurationResponse (Prelude.Maybe RegistryScanningConfiguration) putRegistryScanningConfigurationResponse_registryScanningConfiguration = Lens.lens (\PutRegistryScanningConfigurationResponse' {registryScanningConfiguration} -> registryScanningConfiguration) (\s@PutRegistryScanningConfigurationResponse' {} a -> s {registryScanningConfiguration = a} :: PutRegistryScanningConfigurationResponse) -- | The response's http status code. putRegistryScanningConfigurationResponse_httpStatus :: Lens.Lens' PutRegistryScanningConfigurationResponse Prelude.Int putRegistryScanningConfigurationResponse_httpStatus = Lens.lens (\PutRegistryScanningConfigurationResponse' {httpStatus} -> httpStatus) (\s@PutRegistryScanningConfigurationResponse' {} a -> s {httpStatus = a} :: PutRegistryScanningConfigurationResponse) instance Prelude.NFData PutRegistryScanningConfigurationResponse where rnf PutRegistryScanningConfigurationResponse' {..} = Prelude.rnf registryScanningConfiguration `Prelude.seq` Prelude.rnf httpStatus