packages feed

gogol-dlp 0.4.0 → 0.5.0

raw patch · 52 files changed

+12368/−11118 lines, 52 filesdep ~gogol-corePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: gogol-core

API changes (from Hackage documentation)

+ Network.Google.DLP: data GooglePrivacyDlpV2ActivateJobTriggerRequest
+ Network.Google.DLP: data GooglePrivacyDlpV2CryptoDeterministicConfig
+ Network.Google.DLP: data GooglePrivacyDlpV2JobNotificationEmails
+ Network.Google.DLP: googlePrivacyDlpV2ActivateJobTriggerRequest :: GooglePrivacyDlpV2ActivateJobTriggerRequest
+ Network.Google.DLP: googlePrivacyDlpV2CryptoDeterministicConfig :: GooglePrivacyDlpV2CryptoDeterministicConfig
+ Network.Google.DLP: googlePrivacyDlpV2JobNotificationEmails :: GooglePrivacyDlpV2JobNotificationEmails
+ Network.Google.DLP: gpdvaJobNotificationEmails :: Lens' GooglePrivacyDlpV2Action (Maybe GooglePrivacyDlpV2JobNotificationEmails)
+ Network.Google.DLP: gpdvcdcContext :: Lens' GooglePrivacyDlpV2CryptoDeterministicConfig (Maybe GooglePrivacyDlpV2FieldId)
+ Network.Google.DLP: gpdvcdcCryptoKey :: Lens' GooglePrivacyDlpV2CryptoDeterministicConfig (Maybe GooglePrivacyDlpV2CryptoKey)
+ Network.Google.DLP: gpdvcdcSurrogateInfoType :: Lens' GooglePrivacyDlpV2CryptoDeterministicConfig (Maybe GooglePrivacyDlpV2InfoType)
+ Network.Google.DLP: gpdvitdDescription :: Lens' GooglePrivacyDlpV2InfoTypeDescription (Maybe Text)
+ Network.Google.DLP: gpdvptCryptoDeterministicConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2CryptoDeterministicConfig)
+ Network.Google.DLP: gpdvrGroupIndexes :: Lens' GooglePrivacyDlpV2Regex [Int32]
+ Network.Google.DLP.Types: data GooglePrivacyDlpV2ActivateJobTriggerRequest
+ Network.Google.DLP.Types: data GooglePrivacyDlpV2CryptoDeterministicConfig
+ Network.Google.DLP.Types: data GooglePrivacyDlpV2JobNotificationEmails
+ Network.Google.DLP.Types: googlePrivacyDlpV2ActivateJobTriggerRequest :: GooglePrivacyDlpV2ActivateJobTriggerRequest
+ Network.Google.DLP.Types: googlePrivacyDlpV2CryptoDeterministicConfig :: GooglePrivacyDlpV2CryptoDeterministicConfig
+ Network.Google.DLP.Types: googlePrivacyDlpV2JobNotificationEmails :: GooglePrivacyDlpV2JobNotificationEmails
+ Network.Google.DLP.Types: gpdvaJobNotificationEmails :: Lens' GooglePrivacyDlpV2Action (Maybe GooglePrivacyDlpV2JobNotificationEmails)
+ Network.Google.DLP.Types: gpdvcdcContext :: Lens' GooglePrivacyDlpV2CryptoDeterministicConfig (Maybe GooglePrivacyDlpV2FieldId)
+ Network.Google.DLP.Types: gpdvcdcCryptoKey :: Lens' GooglePrivacyDlpV2CryptoDeterministicConfig (Maybe GooglePrivacyDlpV2CryptoKey)
+ Network.Google.DLP.Types: gpdvcdcSurrogateInfoType :: Lens' GooglePrivacyDlpV2CryptoDeterministicConfig (Maybe GooglePrivacyDlpV2InfoType)
+ Network.Google.DLP.Types: gpdvitdDescription :: Lens' GooglePrivacyDlpV2InfoTypeDescription (Maybe Text)
+ Network.Google.DLP.Types: gpdvptCryptoDeterministicConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2CryptoDeterministicConfig)
+ Network.Google.DLP.Types: gpdvrGroupIndexes :: Lens' GooglePrivacyDlpV2Regex [Int32]
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: data ProjectsJobTriggersActivate
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: instance Data.Data.Data Network.Google.Resource.DLP.Projects.JobTriggers.Activate.ProjectsJobTriggersActivate
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: instance GHC.Classes.Eq Network.Google.Resource.DLP.Projects.JobTriggers.Activate.ProjectsJobTriggersActivate
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: instance GHC.Generics.Generic Network.Google.Resource.DLP.Projects.JobTriggers.Activate.ProjectsJobTriggersActivate
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: instance GHC.Show.Show Network.Google.Resource.DLP.Projects.JobTriggers.Activate.ProjectsJobTriggersActivate
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: instance Network.Google.Types.GoogleRequest Network.Google.Resource.DLP.Projects.JobTriggers.Activate.ProjectsJobTriggersActivate
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: pjtaAccessToken :: Lens' ProjectsJobTriggersActivate (Maybe Text)
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: pjtaCallback :: Lens' ProjectsJobTriggersActivate (Maybe Text)
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: pjtaName :: Lens' ProjectsJobTriggersActivate Text
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: pjtaPayload :: Lens' ProjectsJobTriggersActivate GooglePrivacyDlpV2ActivateJobTriggerRequest
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: pjtaUploadProtocol :: Lens' ProjectsJobTriggersActivate (Maybe Text)
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: pjtaUploadType :: Lens' ProjectsJobTriggersActivate (Maybe Text)
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: pjtaXgafv :: Lens' ProjectsJobTriggersActivate (Maybe Xgafv)
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: projectsJobTriggersActivate :: GooglePrivacyDlpV2ActivateJobTriggerRequest -> Text -> ProjectsJobTriggersActivate
+ Network.Google.Resource.DLP.Projects.JobTriggers.Activate: type ProjectsJobTriggersActivateResource = "v2" :> CaptureMode "name" "activate" Text :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> ReqBody '[JSON] GooglePrivacyDlpV2ActivateJobTriggerRequest :> Post '[JSON] GooglePrivacyDlpV2DlpJob
+ Network.Google.Resource.DLP.Projects.JobTriggers.List: pjtlFilter :: Lens' ProjectsJobTriggersList (Maybe Text)
- Network.Google.DLP: type DLPAPI = InfoTypesListResource :<|> OrganizationsInspectTemplatesListResource :<|> OrganizationsInspectTemplatesPatchResource :<|> OrganizationsInspectTemplatesGetResource :<|> OrganizationsInspectTemplatesCreateResource :<|> OrganizationsInspectTemplatesDeleteResource :<|> OrganizationsStoredInfoTypesListResource :<|> OrganizationsStoredInfoTypesPatchResource :<|> OrganizationsStoredInfoTypesGetResource :<|> OrganizationsStoredInfoTypesCreateResource :<|> OrganizationsStoredInfoTypesDeleteResource :<|> OrganizationsDeidentifyTemplatesListResource :<|> OrganizationsDeidentifyTemplatesPatchResource :<|> OrganizationsDeidentifyTemplatesGetResource :<|> OrganizationsDeidentifyTemplatesCreateResource :<|> OrganizationsDeidentifyTemplatesDeleteResource :<|> ProjectsDlpJobsListResource :<|> ProjectsDlpJobsGetResource :<|> ProjectsDlpJobsCreateResource :<|> ProjectsDlpJobsCancelResource :<|> ProjectsDlpJobsDeleteResource :<|> ProjectsImageRedactResource :<|> ProjectsContentInspectResource :<|> ProjectsContentDeidentifyResource :<|> ProjectsContentReidentifyResource :<|> ProjectsJobTriggersListResource :<|> ProjectsJobTriggersPatchResource :<|> ProjectsJobTriggersGetResource :<|> ProjectsJobTriggersCreateResource :<|> ProjectsJobTriggersDeleteResource :<|> ProjectsInspectTemplatesListResource :<|> ProjectsInspectTemplatesPatchResource :<|> ProjectsInspectTemplatesGetResource :<|> ProjectsInspectTemplatesCreateResource :<|> ProjectsInspectTemplatesDeleteResource :<|> ProjectsStoredInfoTypesListResource :<|> ProjectsStoredInfoTypesPatchResource :<|> ProjectsStoredInfoTypesGetResource :<|> ProjectsStoredInfoTypesCreateResource :<|> ProjectsStoredInfoTypesDeleteResource :<|> ProjectsDeidentifyTemplatesListResource :<|> ProjectsDeidentifyTemplatesPatchResource :<|> ProjectsDeidentifyTemplatesGetResource :<|> ProjectsDeidentifyTemplatesCreateResource :<|> ProjectsDeidentifyTemplatesDeleteResource
+ Network.Google.DLP: type DLPAPI = InfoTypesListResource :<|> OrganizationsInspectTemplatesListResource :<|> OrganizationsInspectTemplatesPatchResource :<|> OrganizationsInspectTemplatesGetResource :<|> OrganizationsInspectTemplatesCreateResource :<|> OrganizationsInspectTemplatesDeleteResource :<|> OrganizationsStoredInfoTypesListResource :<|> OrganizationsStoredInfoTypesPatchResource :<|> OrganizationsStoredInfoTypesGetResource :<|> OrganizationsStoredInfoTypesCreateResource :<|> OrganizationsStoredInfoTypesDeleteResource :<|> OrganizationsDeidentifyTemplatesListResource :<|> OrganizationsDeidentifyTemplatesPatchResource :<|> OrganizationsDeidentifyTemplatesGetResource :<|> OrganizationsDeidentifyTemplatesCreateResource :<|> OrganizationsDeidentifyTemplatesDeleteResource :<|> ProjectsDlpJobsListResource :<|> ProjectsDlpJobsGetResource :<|> ProjectsDlpJobsCreateResource :<|> ProjectsDlpJobsCancelResource :<|> ProjectsDlpJobsDeleteResource :<|> ProjectsImageRedactResource :<|> ProjectsContentInspectResource :<|> ProjectsContentDeidentifyResource :<|> ProjectsContentReidentifyResource :<|> ProjectsJobTriggersListResource :<|> ProjectsJobTriggersPatchResource :<|> ProjectsJobTriggersGetResource :<|> ProjectsJobTriggersActivateResource :<|> ProjectsJobTriggersCreateResource :<|> ProjectsJobTriggersDeleteResource :<|> ProjectsInspectTemplatesListResource :<|> ProjectsInspectTemplatesPatchResource :<|> ProjectsInspectTemplatesGetResource :<|> ProjectsInspectTemplatesCreateResource :<|> ProjectsInspectTemplatesDeleteResource :<|> ProjectsStoredInfoTypesListResource :<|> ProjectsStoredInfoTypesPatchResource :<|> ProjectsStoredInfoTypesGetResource :<|> ProjectsStoredInfoTypesCreateResource :<|> ProjectsStoredInfoTypesDeleteResource :<|> ProjectsDeidentifyTemplatesListResource :<|> ProjectsDeidentifyTemplatesPatchResource :<|> ProjectsDeidentifyTemplatesGetResource :<|> ProjectsDeidentifyTemplatesCreateResource :<|> ProjectsDeidentifyTemplatesDeleteResource
- Network.Google.Resource.DLP.Projects.JobTriggers.List: type ProjectsJobTriggersListResource = "v2" :> Capture "parent" Text :> "jobTriggers" :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "orderBy" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "pageToken" Text :> QueryParam "pageSize" (Textual Int32) :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> Get '[JSON] GooglePrivacyDlpV2ListJobTriggersResponse
+ Network.Google.Resource.DLP.Projects.JobTriggers.List: type ProjectsJobTriggersListResource = "v2" :> Capture "parent" Text :> "jobTriggers" :> QueryParam "$.xgafv" Xgafv :> QueryParam "upload_protocol" Text :> QueryParam "orderBy" Text :> QueryParam "access_token" Text :> QueryParam "uploadType" Text :> QueryParam "filter" Text :> QueryParam "pageToken" Text :> QueryParam "pageSize" (Textual Int32) :> QueryParam "callback" Text :> QueryParam "alt" AltJSON :> Get '[JSON] GooglePrivacyDlpV2ListJobTriggersResponse

Files

README.md view
@@ -8,7 +8,7 @@  ## Version -`0.3.0`+`0.5.0`   ## Description
gen/Network/Google/DLP.hs view
@@ -136,6 +136,9 @@     -- ** dlp.projects.inspectTemplates.patch     , module Network.Google.Resource.DLP.Projects.InspectTemplates.Patch +    -- ** dlp.projects.jobTriggers.activate+    , module Network.Google.Resource.DLP.Projects.JobTriggers.Activate+     -- ** dlp.projects.jobTriggers.create     , module Network.Google.Resource.DLP.Projects.JobTriggers.Create @@ -559,6 +562,7 @@     , gpdvitdName     , gpdvitdDisplayName     , gpdvitdSupportedBy+    , gpdvitdDescription      -- ** GoogleProtobufEmpty     , GoogleProtobufEmpty@@ -661,6 +665,7 @@     -- ** GooglePrivacyDlpV2Regex     , GooglePrivacyDlpV2Regex     , googlePrivacyDlpV2Regex+    , gpdvrGroupIndexes     , gpdvrPattern      -- ** GooglePrivacyDlpV2UpdateStoredInfoTypeRequest@@ -687,6 +692,10 @@     , gpdvldcSensitiveAttribute     , gpdvldcQuasiIds +    -- ** GooglePrivacyDlpV2JobNotificationEmails+    , GooglePrivacyDlpV2JobNotificationEmails+    , googlePrivacyDlpV2JobNotificationEmails+     -- ** GooglePrivacyDlpV2DeidentifyContentRequest     , GooglePrivacyDlpV2DeidentifyContentRequest     , googlePrivacyDlpV2DeidentifyContentRequest@@ -835,6 +844,10 @@     , gpdvldecNumDistinctSensitiveValues     , gpdvldecQuasiIdsValues +    -- ** GooglePrivacyDlpV2ActivateJobTriggerRequest+    , GooglePrivacyDlpV2ActivateJobTriggerRequest+    , googlePrivacyDlpV2ActivateJobTriggerRequest+     -- ** GooglePrivacyDlpV2DeidentifyConfig     , GooglePrivacyDlpV2DeidentifyConfig     , googlePrivacyDlpV2DeidentifyConfig@@ -1036,6 +1049,7 @@     -- ** GooglePrivacyDlpV2Action     , GooglePrivacyDlpV2Action     , googlePrivacyDlpV2Action+    , gpdvaJobNotificationEmails     , gpdvaPubSub     , gpdvaSaveFindings     , gpdvaPublishSummaryToCscc@@ -1228,6 +1242,7 @@     , gpdvptDateShiftConfig     , gpdvptBucketingConfig     , gpdvptReplaceWithInfoTypeConfig+    , gpdvptCryptoDeterministicConfig     , gpdvptCryptoHashConfig     , gpdvptReplaceConfig     , gpdvptCryptoReplaceFfxFpeConfig@@ -1259,6 +1274,13 @@     , gpdvsitName     , gpdvsitPendingVersions +    -- ** GooglePrivacyDlpV2CryptoDeterministicConfig+    , GooglePrivacyDlpV2CryptoDeterministicConfig+    , googlePrivacyDlpV2CryptoDeterministicConfig+    , gpdvcdcContext+    , gpdvcdcSurrogateInfoType+    , gpdvcdcCryptoKey+     -- ** GooglePrivacyDlpV2StatisticalTable     , GooglePrivacyDlpV2StatisticalTable     , googlePrivacyDlpV2StatisticalTable@@ -1411,6 +1433,7 @@ import           Network.Google.Resource.DLP.Projects.InspectTemplates.Get import           Network.Google.Resource.DLP.Projects.InspectTemplates.List import           Network.Google.Resource.DLP.Projects.InspectTemplates.Patch+import           Network.Google.Resource.DLP.Projects.JobTriggers.Activate import           Network.Google.Resource.DLP.Projects.JobTriggers.Create import           Network.Google.Resource.DLP.Projects.JobTriggers.Delete import           Network.Google.Resource.DLP.Projects.JobTriggers.Get@@ -1456,6 +1479,7 @@        :<|> ProjectsJobTriggersListResource        :<|> ProjectsJobTriggersPatchResource        :<|> ProjectsJobTriggersGetResource+       :<|> ProjectsJobTriggersActivateResource        :<|> ProjectsJobTriggersCreateResource        :<|> ProjectsJobTriggersDeleteResource        :<|> ProjectsInspectTemplatesListResource
gen/Network/Google/DLP/Types.hs view
@@ -413,6 +413,7 @@     , gpdvitdName     , gpdvitdDisplayName     , gpdvitdSupportedBy+    , gpdvitdDescription      -- * GoogleProtobufEmpty     , GoogleProtobufEmpty@@ -515,6 +516,7 @@     -- * GooglePrivacyDlpV2Regex     , GooglePrivacyDlpV2Regex     , googlePrivacyDlpV2Regex+    , gpdvrGroupIndexes     , gpdvrPattern      -- * GooglePrivacyDlpV2UpdateStoredInfoTypeRequest@@ -541,6 +543,10 @@     , gpdvldcSensitiveAttribute     , gpdvldcQuasiIds +    -- * GooglePrivacyDlpV2JobNotificationEmails+    , GooglePrivacyDlpV2JobNotificationEmails+    , googlePrivacyDlpV2JobNotificationEmails+     -- * GooglePrivacyDlpV2DeidentifyContentRequest     , GooglePrivacyDlpV2DeidentifyContentRequest     , googlePrivacyDlpV2DeidentifyContentRequest@@ -689,6 +695,10 @@     , gpdvldecNumDistinctSensitiveValues     , gpdvldecQuasiIdsValues +    -- * GooglePrivacyDlpV2ActivateJobTriggerRequest+    , GooglePrivacyDlpV2ActivateJobTriggerRequest+    , googlePrivacyDlpV2ActivateJobTriggerRequest+     -- * GooglePrivacyDlpV2DeidentifyConfig     , GooglePrivacyDlpV2DeidentifyConfig     , googlePrivacyDlpV2DeidentifyConfig@@ -890,6 +900,7 @@     -- * GooglePrivacyDlpV2Action     , GooglePrivacyDlpV2Action     , googlePrivacyDlpV2Action+    , gpdvaJobNotificationEmails     , gpdvaPubSub     , gpdvaSaveFindings     , gpdvaPublishSummaryToCscc@@ -1082,6 +1093,7 @@     , gpdvptDateShiftConfig     , gpdvptBucketingConfig     , gpdvptReplaceWithInfoTypeConfig+    , gpdvptCryptoDeterministicConfig     , gpdvptCryptoHashConfig     , gpdvptReplaceConfig     , gpdvptCryptoReplaceFfxFpeConfig@@ -1113,6 +1125,13 @@     , gpdvsitName     , gpdvsitPendingVersions +    -- * GooglePrivacyDlpV2CryptoDeterministicConfig+    , GooglePrivacyDlpV2CryptoDeterministicConfig+    , googlePrivacyDlpV2CryptoDeterministicConfig+    , gpdvcdcContext+    , gpdvcdcSurrogateInfoType+    , gpdvcdcCryptoKey+     -- * GooglePrivacyDlpV2StatisticalTable     , GooglePrivacyDlpV2StatisticalTable     , googlePrivacyDlpV2StatisticalTable@@ -1240,4 +1259,4 @@  -- | View and manage your data across Google Cloud Platform services cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]-cloudPlatformScope = Proxy;+cloudPlatformScope = Proxy
gen/Network/Google/DLP/Types/Product.hs view
@@ -23,10957 +23,11767 @@ -- | Statistics regarding a specific InfoType. -- -- /See:/ 'googlePrivacyDlpV2InfoTypeStats' smart constructor.-data GooglePrivacyDlpV2InfoTypeStats = GooglePrivacyDlpV2InfoTypeStats'-    { _gpdvitsCount    :: !(Maybe (Textual Int64))-    , _gpdvitsInfoType :: !(Maybe GooglePrivacyDlpV2InfoType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InfoTypeStats' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvitsCount'------ * 'gpdvitsInfoType'-googlePrivacyDlpV2InfoTypeStats-    :: GooglePrivacyDlpV2InfoTypeStats-googlePrivacyDlpV2InfoTypeStats =-    GooglePrivacyDlpV2InfoTypeStats'-    { _gpdvitsCount = Nothing-    , _gpdvitsInfoType = Nothing-    }---- | Number of findings for this infoType.-gpdvitsCount :: Lens' GooglePrivacyDlpV2InfoTypeStats (Maybe Int64)-gpdvitsCount-  = lens _gpdvitsCount (\ s a -> s{_gpdvitsCount = a})-      . mapping _Coerce---- | The type of finding this stat is for.-gpdvitsInfoType :: Lens' GooglePrivacyDlpV2InfoTypeStats (Maybe GooglePrivacyDlpV2InfoType)-gpdvitsInfoType-  = lens _gpdvitsInfoType-      (\ s a -> s{_gpdvitsInfoType = a})--instance FromJSON GooglePrivacyDlpV2InfoTypeStats-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2InfoTypeStats"-              (\ o ->-                 GooglePrivacyDlpV2InfoTypeStats' <$>-                   (o .:? "count") <*> (o .:? "infoType"))--instance ToJSON GooglePrivacyDlpV2InfoTypeStats where-        toJSON GooglePrivacyDlpV2InfoTypeStats'{..}-          = object-              (catMaybes-                 [("count" .=) <$> _gpdvitsCount,-                  ("infoType" .=) <$> _gpdvitsInfoType])---- | Redact a given value. For example, if used with an--- \`InfoTypeTransformation\` transforming PHONE_NUMBER, and input \'My--- phone number is 206-555-0123\', the output would be \'My phone number is--- \'.------ /See:/ 'googlePrivacyDlpV2RedactConfig' smart constructor.-data GooglePrivacyDlpV2RedactConfig =-    GooglePrivacyDlpV2RedactConfig'-    deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2RedactConfig' with the minimum fields required to make a request.----googlePrivacyDlpV2RedactConfig-    :: GooglePrivacyDlpV2RedactConfig-googlePrivacyDlpV2RedactConfig = GooglePrivacyDlpV2RedactConfig'--instance FromJSON GooglePrivacyDlpV2RedactConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2RedactConfig"-              (\ o -> pure GooglePrivacyDlpV2RedactConfig')--instance ToJSON GooglePrivacyDlpV2RedactConfig where-        toJSON = const emptyObject---- | Request message for UpdateJobTrigger.------ /See:/ 'googlePrivacyDlpV2UpdateJobTriggerRequest' smart constructor.-data GooglePrivacyDlpV2UpdateJobTriggerRequest = GooglePrivacyDlpV2UpdateJobTriggerRequest'-    { _gpdvujtrUpdateMask :: !(Maybe GFieldMask)-    , _gpdvujtrJobTrigger :: !(Maybe GooglePrivacyDlpV2JobTrigger)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2UpdateJobTriggerRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvujtrUpdateMask'------ * 'gpdvujtrJobTrigger'-googlePrivacyDlpV2UpdateJobTriggerRequest-    :: GooglePrivacyDlpV2UpdateJobTriggerRequest-googlePrivacyDlpV2UpdateJobTriggerRequest =-    GooglePrivacyDlpV2UpdateJobTriggerRequest'-    { _gpdvujtrUpdateMask = Nothing-    , _gpdvujtrJobTrigger = Nothing-    }---- | Mask to control which fields get updated.-gpdvujtrUpdateMask :: Lens' GooglePrivacyDlpV2UpdateJobTriggerRequest (Maybe GFieldMask)-gpdvujtrUpdateMask-  = lens _gpdvujtrUpdateMask-      (\ s a -> s{_gpdvujtrUpdateMask = a})---- | New JobTrigger value.-gpdvujtrJobTrigger :: Lens' GooglePrivacyDlpV2UpdateJobTriggerRequest (Maybe GooglePrivacyDlpV2JobTrigger)-gpdvujtrJobTrigger-  = lens _gpdvujtrJobTrigger-      (\ s a -> s{_gpdvujtrJobTrigger = a})--instance FromJSON-         GooglePrivacyDlpV2UpdateJobTriggerRequest where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2UpdateJobTriggerRequest"-              (\ o ->-                 GooglePrivacyDlpV2UpdateJobTriggerRequest' <$>-                   (o .:? "updateMask") <*> (o .:? "jobTrigger"))--instance ToJSON-         GooglePrivacyDlpV2UpdateJobTriggerRequest where-        toJSON GooglePrivacyDlpV2UpdateJobTriggerRequest'{..}-          = object-              (catMaybes-                 [("updateMask" .=) <$> _gpdvujtrUpdateMask,-                  ("jobTrigger" .=) <$> _gpdvujtrJobTrigger])---- | Generic half-open interval [start, end)------ /See:/ 'googlePrivacyDlpV2Range' smart constructor.-data GooglePrivacyDlpV2Range = GooglePrivacyDlpV2Range'-    { _gpdvrStart :: !(Maybe (Textual Int64))-    , _gpdvrEnd   :: !(Maybe (Textual Int64))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Range' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrStart'------ * 'gpdvrEnd'-googlePrivacyDlpV2Range-    :: GooglePrivacyDlpV2Range-googlePrivacyDlpV2Range =-    GooglePrivacyDlpV2Range'-    { _gpdvrStart = Nothing-    , _gpdvrEnd = Nothing-    }---- | Index of the first character of the range (inclusive).-gpdvrStart :: Lens' GooglePrivacyDlpV2Range (Maybe Int64)-gpdvrStart-  = lens _gpdvrStart (\ s a -> s{_gpdvrStart = a}) .-      mapping _Coerce---- | Index of the last character of the range (exclusive).-gpdvrEnd :: Lens' GooglePrivacyDlpV2Range (Maybe Int64)-gpdvrEnd-  = lens _gpdvrEnd (\ s a -> s{_gpdvrEnd = a}) .-      mapping _Coerce--instance FromJSON GooglePrivacyDlpV2Range where-        parseJSON-          = withObject "GooglePrivacyDlpV2Range"-              (\ o ->-                 GooglePrivacyDlpV2Range' <$>-                   (o .:? "start") <*> (o .:? "end"))--instance ToJSON GooglePrivacyDlpV2Range where-        toJSON GooglePrivacyDlpV2Range'{..}-          = object-              (catMaybes-                 [("start" .=) <$> _gpdvrStart,-                  ("end" .=) <$> _gpdvrEnd])---- | The \`Status\` type defines a logical error model that is suitable for--- different programming environments, including REST APIs and RPC APIs. It--- is used by [gRPC](https:\/\/github.com\/grpc). The error model is--- designed to be: - Simple to use and understand for most users - Flexible--- enough to meet unexpected needs # Overview The \`Status\` message--- contains three pieces of data: error code, error message, and error--- details. The error code should be an enum value of google.rpc.Code, but--- it may accept additional error codes if needed. The error message should--- be a developer-facing English message that helps developers *understand*--- and *resolve* the error. If a localized user-facing error message is--- needed, put the localized message in the error details or localize it in--- the client. The optional error details may contain arbitrary information--- about the error. There is a predefined set of error detail types in the--- package \`google.rpc\` that can be used for common error conditions. #--- Language mapping The \`Status\` message is the logical representation of--- the error model, but it is not necessarily the actual wire format. When--- the \`Status\` message is exposed in different client libraries and--- different wire protocols, it can be mapped differently. For example, it--- will likely be mapped to some exceptions in Java, but more likely mapped--- to some error codes in C. # Other uses The error model and the--- \`Status\` message can be used in a variety of environments, either with--- or without APIs, to provide a consistent developer experience across--- different environments. Example uses of this error model include: ---- Partial errors. If a service needs to return partial errors to the--- client, it may embed the \`Status\` in the normal response to indicate--- the partial errors. - Workflow errors. A typical workflow has multiple--- steps. Each step may have a \`Status\` message for error reporting. ---- Batch operations. If a client uses batch request and batch response, the--- \`Status\` message should be used directly inside batch response, one--- for each error sub-response. - Asynchronous operations. If an API call--- embeds asynchronous operation results in its response, the status of--- those operations should be represented directly using the \`Status\`--- message. - Logging. If some API errors are stored in logs, the message--- \`Status\` could be used directly after any stripping needed for--- security\/privacy reasons.------ /See:/ 'googleRpcStatus' smart constructor.-data GoogleRpcStatus = GoogleRpcStatus'-    { _grsDetails :: !(Maybe [GoogleRpcStatusDetailsItem])-    , _grsCode    :: !(Maybe (Textual Int32))-    , _grsMessage :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GoogleRpcStatus' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'grsDetails'------ * 'grsCode'------ * 'grsMessage'-googleRpcStatus-    :: GoogleRpcStatus-googleRpcStatus =-    GoogleRpcStatus'-    { _grsDetails = Nothing-    , _grsCode = Nothing-    , _grsMessage = Nothing-    }---- | A list of messages that carry the error details. There is a common set--- of message types for APIs to use.-grsDetails :: Lens' GoogleRpcStatus [GoogleRpcStatusDetailsItem]-grsDetails-  = lens _grsDetails (\ s a -> s{_grsDetails = a}) .-      _Default-      . _Coerce---- | The status code, which should be an enum value of google.rpc.Code.-grsCode :: Lens' GoogleRpcStatus (Maybe Int32)-grsCode-  = lens _grsCode (\ s a -> s{_grsCode = a}) .-      mapping _Coerce---- | A developer-facing error message, which should be in English. Any--- user-facing error message should be localized and sent in the--- google.rpc.Status.details field, or localized by the client.-grsMessage :: Lens' GoogleRpcStatus (Maybe Text)-grsMessage-  = lens _grsMessage (\ s a -> s{_grsMessage = a})--instance FromJSON GoogleRpcStatus where-        parseJSON-          = withObject "GoogleRpcStatus"-              (\ o ->-                 GoogleRpcStatus' <$>-                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>-                     (o .:? "message"))--instance ToJSON GoogleRpcStatus where-        toJSON GoogleRpcStatus'{..}-          = object-              (catMaybes-                 [("details" .=) <$> _grsDetails,-                  ("code" .=) <$> _grsCode,-                  ("message" .=) <$> _grsMessage])---- | Buckets values based on fixed size ranges. The Bucketing transformation--- can provide all of this functionality, but requires more configuration.--- This message is provided as a convenience to the user for simple--- bucketing strategies. The transformed value will be a hyphenated string--- of -, i.e if lower_bound = 10 and upper_bound = 20 all values that are--- within this bucket will be replaced with \"10-20\". This can be used on--- data of type: double, long. If the bound Value type differs from the--- type of data being transformed, we will first attempt converting the--- type of the data to be transformed to match the type of the bound before--- comparing. See https:\/\/cloud.google.com\/dlp\/docs\/concepts-bucketing--- to learn more.------ /See:/ 'googlePrivacyDlpV2FixedSizeBucketingConfig' smart constructor.-data GooglePrivacyDlpV2FixedSizeBucketingConfig = GooglePrivacyDlpV2FixedSizeBucketingConfig'-    { _gpdvfsbcUpperBound :: !(Maybe GooglePrivacyDlpV2Value)-    , _gpdvfsbcLowerBound :: !(Maybe GooglePrivacyDlpV2Value)-    , _gpdvfsbcBucketSize :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2FixedSizeBucketingConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvfsbcUpperBound'------ * 'gpdvfsbcLowerBound'------ * 'gpdvfsbcBucketSize'-googlePrivacyDlpV2FixedSizeBucketingConfig-    :: GooglePrivacyDlpV2FixedSizeBucketingConfig-googlePrivacyDlpV2FixedSizeBucketingConfig =-    GooglePrivacyDlpV2FixedSizeBucketingConfig'-    { _gpdvfsbcUpperBound = Nothing-    , _gpdvfsbcLowerBound = Nothing-    , _gpdvfsbcBucketSize = Nothing-    }---- | Upper bound value of buckets. All values greater than upper_bound are--- grouped together into a single bucket; for example if \`upper_bound\` =--- 89, then all values greater than 89 are replaced with the value “89+”.--- [Required].-gpdvfsbcUpperBound :: Lens' GooglePrivacyDlpV2FixedSizeBucketingConfig (Maybe GooglePrivacyDlpV2Value)-gpdvfsbcUpperBound-  = lens _gpdvfsbcUpperBound-      (\ s a -> s{_gpdvfsbcUpperBound = a})---- | Lower bound value of buckets. All values less than \`lower_bound\` are--- grouped together into a single bucket; for example if \`lower_bound\` =--- 10, then all values less than 10 are replaced with the value “-10”.--- [Required].-gpdvfsbcLowerBound :: Lens' GooglePrivacyDlpV2FixedSizeBucketingConfig (Maybe GooglePrivacyDlpV2Value)-gpdvfsbcLowerBound-  = lens _gpdvfsbcLowerBound-      (\ s a -> s{_gpdvfsbcLowerBound = a})---- | Size of each bucket (except for minimum and maximum buckets). So if--- \`lower_bound\` = 10, \`upper_bound\` = 89, and \`bucket_size\` = 10,--- then the following buckets would be used: -10, 10-20, 20-30, 30-40,--- 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals--- works. [Required].-gpdvfsbcBucketSize :: Lens' GooglePrivacyDlpV2FixedSizeBucketingConfig (Maybe Double)-gpdvfsbcBucketSize-  = lens _gpdvfsbcBucketSize-      (\ s a -> s{_gpdvfsbcBucketSize = a})-      . mapping _Coerce--instance FromJSON-         GooglePrivacyDlpV2FixedSizeBucketingConfig where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2FixedSizeBucketingConfig"-              (\ o ->-                 GooglePrivacyDlpV2FixedSizeBucketingConfig' <$>-                   (o .:? "upperBound") <*> (o .:? "lowerBound") <*>-                     (o .:? "bucketSize"))--instance ToJSON-         GooglePrivacyDlpV2FixedSizeBucketingConfig where-        toJSON-          GooglePrivacyDlpV2FixedSizeBucketingConfig'{..}-          = object-              (catMaybes-                 [("upperBound" .=) <$> _gpdvfsbcUpperBound,-                  ("lowerBound" .=) <$> _gpdvfsbcLowerBound,-                  ("bucketSize" .=) <$> _gpdvfsbcBucketSize])---- | All the findings for a single scanned item.------ /See:/ 'googlePrivacyDlpV2InspectResult' smart constructor.-data GooglePrivacyDlpV2InspectResult = GooglePrivacyDlpV2InspectResult'-    { _gpdvirFindingsTruncated :: !(Maybe Bool)-    , _gpdvirFindings          :: !(Maybe [GooglePrivacyDlpV2Finding])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InspectResult' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvirFindingsTruncated'------ * 'gpdvirFindings'-googlePrivacyDlpV2InspectResult-    :: GooglePrivacyDlpV2InspectResult-googlePrivacyDlpV2InspectResult =-    GooglePrivacyDlpV2InspectResult'-    { _gpdvirFindingsTruncated = Nothing-    , _gpdvirFindings = Nothing-    }---- | If true, then this item might have more findings than were returned, and--- the findings returned are an arbitrary subset of all findings. The--- findings list might be truncated because the input items were too large,--- or because the server reached the maximum amount of resources allowed--- for a single API call. For best results, divide the input into smaller--- batches.-gpdvirFindingsTruncated :: Lens' GooglePrivacyDlpV2InspectResult (Maybe Bool)-gpdvirFindingsTruncated-  = lens _gpdvirFindingsTruncated-      (\ s a -> s{_gpdvirFindingsTruncated = a})---- | List of findings for an item.-gpdvirFindings :: Lens' GooglePrivacyDlpV2InspectResult [GooglePrivacyDlpV2Finding]-gpdvirFindings-  = lens _gpdvirFindings-      (\ s a -> s{_gpdvirFindings = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2InspectResult-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2InspectResult"-              (\ o ->-                 GooglePrivacyDlpV2InspectResult' <$>-                   (o .:? "findingsTruncated") <*>-                     (o .:? "findings" .!= mempty))--instance ToJSON GooglePrivacyDlpV2InspectResult where-        toJSON GooglePrivacyDlpV2InspectResult'{..}-          = object-              (catMaybes-                 [("findingsTruncated" .=) <$>-                    _gpdvirFindingsTruncated,-                  ("findings" .=) <$> _gpdvirFindings])---- | Configuration for a StoredInfoType.------ /See:/ 'googlePrivacyDlpV2StoredInfoTypeConfig' smart constructor.-data GooglePrivacyDlpV2StoredInfoTypeConfig = GooglePrivacyDlpV2StoredInfoTypeConfig'-    { _gpdvsitcLargeCustomDictionary :: !(Maybe GooglePrivacyDlpV2LargeCustomDictionaryConfig)-    , _gpdvsitcDisplayName           :: !(Maybe Text)-    , _gpdvsitcDescription           :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2StoredInfoTypeConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvsitcLargeCustomDictionary'------ * 'gpdvsitcDisplayName'------ * 'gpdvsitcDescription'-googlePrivacyDlpV2StoredInfoTypeConfig-    :: GooglePrivacyDlpV2StoredInfoTypeConfig-googlePrivacyDlpV2StoredInfoTypeConfig =-    GooglePrivacyDlpV2StoredInfoTypeConfig'-    { _gpdvsitcLargeCustomDictionary = Nothing-    , _gpdvsitcDisplayName = Nothing-    , _gpdvsitcDescription = Nothing-    }---- | StoredInfoType where findings are defined by a dictionary of phrases.-gpdvsitcLargeCustomDictionary :: Lens' GooglePrivacyDlpV2StoredInfoTypeConfig (Maybe GooglePrivacyDlpV2LargeCustomDictionaryConfig)-gpdvsitcLargeCustomDictionary-  = lens _gpdvsitcLargeCustomDictionary-      (\ s a -> s{_gpdvsitcLargeCustomDictionary = a})---- | Display name of the StoredInfoType (max 256 characters).-gpdvsitcDisplayName :: Lens' GooglePrivacyDlpV2StoredInfoTypeConfig (Maybe Text)-gpdvsitcDisplayName-  = lens _gpdvsitcDisplayName-      (\ s a -> s{_gpdvsitcDisplayName = a})---- | Description of the StoredInfoType (max 256 characters).-gpdvsitcDescription :: Lens' GooglePrivacyDlpV2StoredInfoTypeConfig (Maybe Text)-gpdvsitcDescription-  = lens _gpdvsitcDescription-      (\ s a -> s{_gpdvsitcDescription = a})--instance FromJSON-         GooglePrivacyDlpV2StoredInfoTypeConfig where-        parseJSON-          = withObject "GooglePrivacyDlpV2StoredInfoTypeConfig"-              (\ o ->-                 GooglePrivacyDlpV2StoredInfoTypeConfig' <$>-                   (o .:? "largeCustomDictionary") <*>-                     (o .:? "displayName")-                     <*> (o .:? "description"))--instance ToJSON-         GooglePrivacyDlpV2StoredInfoTypeConfig where-        toJSON GooglePrivacyDlpV2StoredInfoTypeConfig'{..}-          = object-              (catMaybes-                 [("largeCustomDictionary" .=) <$>-                    _gpdvsitcLargeCustomDictionary,-                  ("displayName" .=) <$> _gpdvsitcDisplayName,-                  ("description" .=) <$> _gpdvsitcDescription])---- | A transformation to apply to text that is identified as a specific--- info_type.------ /See:/ 'googlePrivacyDlpV2InfoTypeTransformation' smart constructor.-data GooglePrivacyDlpV2InfoTypeTransformation = GooglePrivacyDlpV2InfoTypeTransformation'-    { _gpdvittInfoTypes               :: !(Maybe [GooglePrivacyDlpV2InfoType])-    , _gpdvittPrimitiveTransformation :: !(Maybe GooglePrivacyDlpV2PrimitiveTransformation)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InfoTypeTransformation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvittInfoTypes'------ * 'gpdvittPrimitiveTransformation'-googlePrivacyDlpV2InfoTypeTransformation-    :: GooglePrivacyDlpV2InfoTypeTransformation-googlePrivacyDlpV2InfoTypeTransformation =-    GooglePrivacyDlpV2InfoTypeTransformation'-    { _gpdvittInfoTypes = Nothing-    , _gpdvittPrimitiveTransformation = Nothing-    }---- | InfoTypes to apply the transformation to. An empty list will cause this--- transformation to apply to all findings that correspond to infoTypes--- that were requested in \`InspectConfig\`.-gpdvittInfoTypes :: Lens' GooglePrivacyDlpV2InfoTypeTransformation [GooglePrivacyDlpV2InfoType]-gpdvittInfoTypes-  = lens _gpdvittInfoTypes-      (\ s a -> s{_gpdvittInfoTypes = a})-      . _Default-      . _Coerce---- | Primitive transformation to apply to the infoType. [required]-gpdvittPrimitiveTransformation :: Lens' GooglePrivacyDlpV2InfoTypeTransformation (Maybe GooglePrivacyDlpV2PrimitiveTransformation)-gpdvittPrimitiveTransformation-  = lens _gpdvittPrimitiveTransformation-      (\ s a -> s{_gpdvittPrimitiveTransformation = a})--instance FromJSON-         GooglePrivacyDlpV2InfoTypeTransformation where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2InfoTypeTransformation"-              (\ o ->-                 GooglePrivacyDlpV2InfoTypeTransformation' <$>-                   (o .:? "infoTypes" .!= mempty) <*>-                     (o .:? "primitiveTransformation"))--instance ToJSON-         GooglePrivacyDlpV2InfoTypeTransformation where-        toJSON GooglePrivacyDlpV2InfoTypeTransformation'{..}-          = object-              (catMaybes-                 [("infoTypes" .=) <$> _gpdvittInfoTypes,-                  ("primitiveTransformation" .=) <$>-                    _gpdvittPrimitiveTransformation])---- | General identifier of a data field in a storage service.------ /See:/ 'googlePrivacyDlpV2FieldId' smart constructor.-newtype GooglePrivacyDlpV2FieldId = GooglePrivacyDlpV2FieldId'-    { _gpdvfiName :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2FieldId' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvfiName'-googlePrivacyDlpV2FieldId-    :: GooglePrivacyDlpV2FieldId-googlePrivacyDlpV2FieldId =-    GooglePrivacyDlpV2FieldId'-    { _gpdvfiName = Nothing-    }---- | Name describing the field.-gpdvfiName :: Lens' GooglePrivacyDlpV2FieldId (Maybe Text)-gpdvfiName-  = lens _gpdvfiName (\ s a -> s{_gpdvfiName = a})--instance FromJSON GooglePrivacyDlpV2FieldId where-        parseJSON-          = withObject "GooglePrivacyDlpV2FieldId"-              (\ o ->-                 GooglePrivacyDlpV2FieldId' <$> (o .:? "name"))--instance ToJSON GooglePrivacyDlpV2FieldId where-        toJSON GooglePrivacyDlpV2FieldId'{..}-          = object (catMaybes [("name" .=) <$> _gpdvfiName])---- | Combines all of the information about a DLP job.------ /See:/ 'googlePrivacyDlpV2DlpJob' smart constructor.-data GooglePrivacyDlpV2DlpJob = GooglePrivacyDlpV2DlpJob'-    { _gpdvdjInspectDetails :: !(Maybe GooglePrivacyDlpV2InspectDataSourceDetails)-    , _gpdvdjState          :: !(Maybe GooglePrivacyDlpV2DlpJobState)-    , _gpdvdjStartTime      :: !(Maybe DateTime')-    , _gpdvdjJobTriggerName :: !(Maybe Text)-    , _gpdvdjRiskDetails    :: !(Maybe GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails)-    , _gpdvdjName           :: !(Maybe Text)-    , _gpdvdjEndTime        :: !(Maybe DateTime')-    , _gpdvdjType           :: !(Maybe GooglePrivacyDlpV2DlpJobType)-    , _gpdvdjErrors         :: !(Maybe [GooglePrivacyDlpV2Error])-    , _gpdvdjCreateTime     :: !(Maybe DateTime')-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DlpJob' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdjInspectDetails'------ * 'gpdvdjState'------ * 'gpdvdjStartTime'------ * 'gpdvdjJobTriggerName'------ * 'gpdvdjRiskDetails'------ * 'gpdvdjName'------ * 'gpdvdjEndTime'------ * 'gpdvdjType'------ * 'gpdvdjErrors'------ * 'gpdvdjCreateTime'-googlePrivacyDlpV2DlpJob-    :: GooglePrivacyDlpV2DlpJob-googlePrivacyDlpV2DlpJob =-    GooglePrivacyDlpV2DlpJob'-    { _gpdvdjInspectDetails = Nothing-    , _gpdvdjState = Nothing-    , _gpdvdjStartTime = Nothing-    , _gpdvdjJobTriggerName = Nothing-    , _gpdvdjRiskDetails = Nothing-    , _gpdvdjName = Nothing-    , _gpdvdjEndTime = Nothing-    , _gpdvdjType = Nothing-    , _gpdvdjErrors = Nothing-    , _gpdvdjCreateTime = Nothing-    }---- | Results from inspecting a data source.-gpdvdjInspectDetails :: Lens' GooglePrivacyDlpV2DlpJob (Maybe GooglePrivacyDlpV2InspectDataSourceDetails)-gpdvdjInspectDetails-  = lens _gpdvdjInspectDetails-      (\ s a -> s{_gpdvdjInspectDetails = a})---- | State of a job.-gpdvdjState :: Lens' GooglePrivacyDlpV2DlpJob (Maybe GooglePrivacyDlpV2DlpJobState)-gpdvdjState-  = lens _gpdvdjState (\ s a -> s{_gpdvdjState = a})---- | Time when the job started.-gpdvdjStartTime :: Lens' GooglePrivacyDlpV2DlpJob (Maybe UTCTime)-gpdvdjStartTime-  = lens _gpdvdjStartTime-      (\ s a -> s{_gpdvdjStartTime = a})-      . mapping _DateTime---- | If created by a job trigger, the resource name of the trigger that--- instantiated the job.-gpdvdjJobTriggerName :: Lens' GooglePrivacyDlpV2DlpJob (Maybe Text)-gpdvdjJobTriggerName-  = lens _gpdvdjJobTriggerName-      (\ s a -> s{_gpdvdjJobTriggerName = a})---- | Results from analyzing risk of a data source.-gpdvdjRiskDetails :: Lens' GooglePrivacyDlpV2DlpJob (Maybe GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails)-gpdvdjRiskDetails-  = lens _gpdvdjRiskDetails-      (\ s a -> s{_gpdvdjRiskDetails = a})---- | The server-assigned name.-gpdvdjName :: Lens' GooglePrivacyDlpV2DlpJob (Maybe Text)-gpdvdjName-  = lens _gpdvdjName (\ s a -> s{_gpdvdjName = a})---- | Time when the job finished.-gpdvdjEndTime :: Lens' GooglePrivacyDlpV2DlpJob (Maybe UTCTime)-gpdvdjEndTime-  = lens _gpdvdjEndTime-      (\ s a -> s{_gpdvdjEndTime = a})-      . mapping _DateTime---- | The type of job.-gpdvdjType :: Lens' GooglePrivacyDlpV2DlpJob (Maybe GooglePrivacyDlpV2DlpJobType)-gpdvdjType-  = lens _gpdvdjType (\ s a -> s{_gpdvdjType = a})---- | A stream of errors encountered running the job.-gpdvdjErrors :: Lens' GooglePrivacyDlpV2DlpJob [GooglePrivacyDlpV2Error]-gpdvdjErrors-  = lens _gpdvdjErrors (\ s a -> s{_gpdvdjErrors = a})-      . _Default-      . _Coerce---- | Time when the job was created.-gpdvdjCreateTime :: Lens' GooglePrivacyDlpV2DlpJob (Maybe UTCTime)-gpdvdjCreateTime-  = lens _gpdvdjCreateTime-      (\ s a -> s{_gpdvdjCreateTime = a})-      . mapping _DateTime--instance FromJSON GooglePrivacyDlpV2DlpJob where-        parseJSON-          = withObject "GooglePrivacyDlpV2DlpJob"-              (\ o ->-                 GooglePrivacyDlpV2DlpJob' <$>-                   (o .:? "inspectDetails") <*> (o .:? "state") <*>-                     (o .:? "startTime")-                     <*> (o .:? "jobTriggerName")-                     <*> (o .:? "riskDetails")-                     <*> (o .:? "name")-                     <*> (o .:? "endTime")-                     <*> (o .:? "type")-                     <*> (o .:? "errors" .!= mempty)-                     <*> (o .:? "createTime"))--instance ToJSON GooglePrivacyDlpV2DlpJob where-        toJSON GooglePrivacyDlpV2DlpJob'{..}-          = object-              (catMaybes-                 [("inspectDetails" .=) <$> _gpdvdjInspectDetails,-                  ("state" .=) <$> _gpdvdjState,-                  ("startTime" .=) <$> _gpdvdjStartTime,-                  ("jobTriggerName" .=) <$> _gpdvdjJobTriggerName,-                  ("riskDetails" .=) <$> _gpdvdjRiskDetails,-                  ("name" .=) <$> _gpdvdjName,-                  ("endTime" .=) <$> _gpdvdjEndTime,-                  ("type" .=) <$> _gpdvdjType,-                  ("errors" .=) <$> _gpdvdjErrors,-                  ("createTime" .=) <$> _gpdvdjCreateTime])---- | A type of transformation that is applied over structured data such as a--- table.------ /See:/ 'googlePrivacyDlpV2RecordTransformations' smart constructor.-data GooglePrivacyDlpV2RecordTransformations = GooglePrivacyDlpV2RecordTransformations'-    { _gpdvrtRecordSuppressions   :: !(Maybe [GooglePrivacyDlpV2RecordSuppression])-    , _gpdvrtFieldTransformations :: !(Maybe [GooglePrivacyDlpV2FieldTransformation])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2RecordTransformations' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrtRecordSuppressions'------ * 'gpdvrtFieldTransformations'-googlePrivacyDlpV2RecordTransformations-    :: GooglePrivacyDlpV2RecordTransformations-googlePrivacyDlpV2RecordTransformations =-    GooglePrivacyDlpV2RecordTransformations'-    { _gpdvrtRecordSuppressions = Nothing-    , _gpdvrtFieldTransformations = Nothing-    }---- | Configuration defining which records get suppressed entirely. Records--- that match any suppression rule are omitted from the output [optional].-gpdvrtRecordSuppressions :: Lens' GooglePrivacyDlpV2RecordTransformations [GooglePrivacyDlpV2RecordSuppression]-gpdvrtRecordSuppressions-  = lens _gpdvrtRecordSuppressions-      (\ s a -> s{_gpdvrtRecordSuppressions = a})-      . _Default-      . _Coerce---- | Transform the record by applying various field transformations.-gpdvrtFieldTransformations :: Lens' GooglePrivacyDlpV2RecordTransformations [GooglePrivacyDlpV2FieldTransformation]-gpdvrtFieldTransformations-  = lens _gpdvrtFieldTransformations-      (\ s a -> s{_gpdvrtFieldTransformations = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2RecordTransformations where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2RecordTransformations"-              (\ o ->-                 GooglePrivacyDlpV2RecordTransformations' <$>-                   (o .:? "recordSuppressions" .!= mempty) <*>-                     (o .:? "fieldTransformations" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2RecordTransformations where-        toJSON GooglePrivacyDlpV2RecordTransformations'{..}-          = object-              (catMaybes-                 [("recordSuppressions" .=) <$>-                    _gpdvrtRecordSuppressions,-                  ("fieldTransformations" .=) <$>-                    _gpdvrtFieldTransformations])---- | A unique identifier for a Datastore entity. If a key\'s partition ID or--- any of its path kinds or names are reserved\/read-only, the key is--- reserved\/read-only. A reserved\/read-only key is forbidden in certain--- documented contexts.------ /See:/ 'googlePrivacyDlpV2Key' smart constructor.-data GooglePrivacyDlpV2Key = GooglePrivacyDlpV2Key'-    { _gpdvkPartitionId :: !(Maybe GooglePrivacyDlpV2PartitionId)-    , _gpdvkPath        :: !(Maybe [GooglePrivacyDlpV2PathElement])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Key' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvkPartitionId'------ * 'gpdvkPath'-googlePrivacyDlpV2Key-    :: GooglePrivacyDlpV2Key-googlePrivacyDlpV2Key =-    GooglePrivacyDlpV2Key'-    { _gpdvkPartitionId = Nothing-    , _gpdvkPath = Nothing-    }---- | Entities are partitioned into subsets, currently identified by a project--- ID and namespace ID. Queries are scoped to a single partition.-gpdvkPartitionId :: Lens' GooglePrivacyDlpV2Key (Maybe GooglePrivacyDlpV2PartitionId)-gpdvkPartitionId-  = lens _gpdvkPartitionId-      (\ s a -> s{_gpdvkPartitionId = a})---- | The entity path. An entity path consists of one or more elements--- composed of a kind and a string or numerical identifier, which identify--- entities. The first element identifies a _root entity_, the second--- element identifies a _child_ of the root entity, the third element--- identifies a child of the second entity, and so forth. The entities--- identified by all prefixes of the path are called the element\'s--- _ancestors_. A path can never be empty, and a path can have at most 100--- elements.-gpdvkPath :: Lens' GooglePrivacyDlpV2Key [GooglePrivacyDlpV2PathElement]-gpdvkPath-  = lens _gpdvkPath (\ s a -> s{_gpdvkPath = a}) .-      _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2Key where-        parseJSON-          = withObject "GooglePrivacyDlpV2Key"-              (\ o ->-                 GooglePrivacyDlpV2Key' <$>-                   (o .:? "partitionId") <*> (o .:? "path" .!= mempty))--instance ToJSON GooglePrivacyDlpV2Key where-        toJSON GooglePrivacyDlpV2Key'{..}-          = object-              (catMaybes-                 [("partitionId" .=) <$> _gpdvkPartitionId,-                  ("path" .=) <$> _gpdvkPath])---- | Generalization function that buckets values based on ranges. The ranges--- and replacement values are dynamically provided by the user for custom--- behavior, such as 1-30 -> LOW 31-65 -> MEDIUM 66-100 -> HIGH This can be--- used on data of type: number, long, string, timestamp. If the bound--- \`Value\` type differs from the type of data being transformed, we will--- first attempt converting the type of the data to be transformed to match--- the type of the bound before comparing. See--- https:\/\/cloud.google.com\/dlp\/docs\/concepts-bucketing to learn more.------ /See:/ 'googlePrivacyDlpV2BucketingConfig' smart constructor.-newtype GooglePrivacyDlpV2BucketingConfig = GooglePrivacyDlpV2BucketingConfig'-    { _gpdvbcBuckets :: Maybe [GooglePrivacyDlpV2Bucket]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2BucketingConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvbcBuckets'-googlePrivacyDlpV2BucketingConfig-    :: GooglePrivacyDlpV2BucketingConfig-googlePrivacyDlpV2BucketingConfig =-    GooglePrivacyDlpV2BucketingConfig'-    { _gpdvbcBuckets = Nothing-    }---- | Set of buckets. Ranges must be non-overlapping.-gpdvbcBuckets :: Lens' GooglePrivacyDlpV2BucketingConfig [GooglePrivacyDlpV2Bucket]-gpdvbcBuckets-  = lens _gpdvbcBuckets-      (\ s a -> s{_gpdvbcBuckets = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2BucketingConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2BucketingConfig"-              (\ o ->-                 GooglePrivacyDlpV2BucketingConfig' <$>-                   (o .:? "buckets" .!= mempty))--instance ToJSON GooglePrivacyDlpV2BucketingConfig-         where-        toJSON GooglePrivacyDlpV2BucketingConfig'{..}-          = object-              (catMaybes [("buckets" .=) <$> _gpdvbcBuckets])---- | Configuration description of the scanning process. When used with--- redactContent only info_types and min_likelihood are currently used.------ /See:/ 'googlePrivacyDlpV2InspectConfig' smart constructor.-data GooglePrivacyDlpV2InspectConfig = GooglePrivacyDlpV2InspectConfig'-    { _gpdvicInfoTypes        :: !(Maybe [GooglePrivacyDlpV2InfoType])-    , _gpdvicMinLikelihood    :: !(Maybe GooglePrivacyDlpV2InspectConfigMinLikelihood)-    , _gpdvicExcludeInfoTypes :: !(Maybe Bool)-    , _gpdvicIncludeQuote     :: !(Maybe Bool)-    , _gpdvicCustomInfoTypes  :: !(Maybe [GooglePrivacyDlpV2CustomInfoType])-    , _gpdvicLimits           :: !(Maybe GooglePrivacyDlpV2FindingLimits)-    , _gpdvicContentOptions   :: !(Maybe [Text])-    , _gpdvicRuleSet          :: !(Maybe [GooglePrivacyDlpV2InspectionRuleSet])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InspectConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvicInfoTypes'------ * 'gpdvicMinLikelihood'------ * 'gpdvicExcludeInfoTypes'------ * 'gpdvicIncludeQuote'------ * 'gpdvicCustomInfoTypes'------ * 'gpdvicLimits'------ * 'gpdvicContentOptions'------ * 'gpdvicRuleSet'-googlePrivacyDlpV2InspectConfig-    :: GooglePrivacyDlpV2InspectConfig-googlePrivacyDlpV2InspectConfig =-    GooglePrivacyDlpV2InspectConfig'-    { _gpdvicInfoTypes = Nothing-    , _gpdvicMinLikelihood = Nothing-    , _gpdvicExcludeInfoTypes = Nothing-    , _gpdvicIncludeQuote = Nothing-    , _gpdvicCustomInfoTypes = Nothing-    , _gpdvicLimits = Nothing-    , _gpdvicContentOptions = Nothing-    , _gpdvicRuleSet = Nothing-    }---- | Restricts what info_types to look for. The values must correspond to--- InfoType values returned by ListInfoTypes or listed at--- https:\/\/cloud.google.com\/dlp\/docs\/infotypes-reference. When no--- InfoTypes or CustomInfoTypes are specified in a request, the system may--- automatically choose what detectors to run. By default this may be all--- types, but may change over time as detectors are updated. The special--- InfoType name \"ALL_BASIC\" can be used to trigger all detectors, but--- may change over time as new InfoTypes are added. If you need precise--- control and predictability as to what detectors are run you should--- specify specific InfoTypes listed in the reference.-gpdvicInfoTypes :: Lens' GooglePrivacyDlpV2InspectConfig [GooglePrivacyDlpV2InfoType]-gpdvicInfoTypes-  = lens _gpdvicInfoTypes-      (\ s a -> s{_gpdvicInfoTypes = a})-      . _Default-      . _Coerce---- | Only returns findings equal or above this threshold. The default is--- POSSIBLE. See https:\/\/cloud.google.com\/dlp\/docs\/likelihood to learn--- more.-gpdvicMinLikelihood :: Lens' GooglePrivacyDlpV2InspectConfig (Maybe GooglePrivacyDlpV2InspectConfigMinLikelihood)-gpdvicMinLikelihood-  = lens _gpdvicMinLikelihood-      (\ s a -> s{_gpdvicMinLikelihood = a})---- | When true, excludes type information of the findings.-gpdvicExcludeInfoTypes :: Lens' GooglePrivacyDlpV2InspectConfig (Maybe Bool)-gpdvicExcludeInfoTypes-  = lens _gpdvicExcludeInfoTypes-      (\ s a -> s{_gpdvicExcludeInfoTypes = a})---- | When true, a contextual quote from the data that triggered a finding is--- included in the response; see Finding.quote.-gpdvicIncludeQuote :: Lens' GooglePrivacyDlpV2InspectConfig (Maybe Bool)-gpdvicIncludeQuote-  = lens _gpdvicIncludeQuote-      (\ s a -> s{_gpdvicIncludeQuote = a})---- | CustomInfoTypes provided by the user. See--- https:\/\/cloud.google.com\/dlp\/docs\/creating-custom-infotypes to--- learn more.-gpdvicCustomInfoTypes :: Lens' GooglePrivacyDlpV2InspectConfig [GooglePrivacyDlpV2CustomInfoType]-gpdvicCustomInfoTypes-  = lens _gpdvicCustomInfoTypes-      (\ s a -> s{_gpdvicCustomInfoTypes = a})-      . _Default-      . _Coerce--gpdvicLimits :: Lens' GooglePrivacyDlpV2InspectConfig (Maybe GooglePrivacyDlpV2FindingLimits)-gpdvicLimits-  = lens _gpdvicLimits (\ s a -> s{_gpdvicLimits = a})---- | List of options defining data content to scan. If empty, text, images,--- and other content will be included.-gpdvicContentOptions :: Lens' GooglePrivacyDlpV2InspectConfig [Text]-gpdvicContentOptions-  = lens _gpdvicContentOptions-      (\ s a -> s{_gpdvicContentOptions = a})-      . _Default-      . _Coerce---- | Set of rules to apply to the findings for this InspectConfig. Exclusion--- rules, contained in the set are executed in the end, other rules are--- executed in the order they are specified for each info type.-gpdvicRuleSet :: Lens' GooglePrivacyDlpV2InspectConfig [GooglePrivacyDlpV2InspectionRuleSet]-gpdvicRuleSet-  = lens _gpdvicRuleSet-      (\ s a -> s{_gpdvicRuleSet = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2InspectConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2InspectConfig"-              (\ o ->-                 GooglePrivacyDlpV2InspectConfig' <$>-                   (o .:? "infoTypes" .!= mempty) <*>-                     (o .:? "minLikelihood")-                     <*> (o .:? "excludeInfoTypes")-                     <*> (o .:? "includeQuote")-                     <*> (o .:? "customInfoTypes" .!= mempty)-                     <*> (o .:? "limits")-                     <*> (o .:? "contentOptions" .!= mempty)-                     <*> (o .:? "ruleSet" .!= mempty))--instance ToJSON GooglePrivacyDlpV2InspectConfig where-        toJSON GooglePrivacyDlpV2InspectConfig'{..}-          = object-              (catMaybes-                 [("infoTypes" .=) <$> _gpdvicInfoTypes,-                  ("minLikelihood" .=) <$> _gpdvicMinLikelihood,-                  ("excludeInfoTypes" .=) <$> _gpdvicExcludeInfoTypes,-                  ("includeQuote" .=) <$> _gpdvicIncludeQuote,-                  ("customInfoTypes" .=) <$> _gpdvicCustomInfoTypes,-                  ("limits" .=) <$> _gpdvicLimits,-                  ("contentOptions" .=) <$> _gpdvicContentOptions,-                  ("ruleSet" .=) <$> _gpdvicRuleSet])---- | Configuration for a risk analysis job. See--- https:\/\/cloud.google.com\/dlp\/docs\/concepts-risk-analysis to learn--- more.------ /See:/ 'googlePrivacyDlpV2RiskAnalysisJobConfig' smart constructor.-data GooglePrivacyDlpV2RiskAnalysisJobConfig = GooglePrivacyDlpV2RiskAnalysisJobConfig'-    { _gpdvrajcPrivacyMetric :: !(Maybe GooglePrivacyDlpV2PrivacyMetric)-    , _gpdvrajcActions       :: !(Maybe [GooglePrivacyDlpV2Action])-    , _gpdvrajcSourceTable   :: !(Maybe GooglePrivacyDlpV2BigQueryTable)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2RiskAnalysisJobConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrajcPrivacyMetric'------ * 'gpdvrajcActions'------ * 'gpdvrajcSourceTable'-googlePrivacyDlpV2RiskAnalysisJobConfig-    :: GooglePrivacyDlpV2RiskAnalysisJobConfig-googlePrivacyDlpV2RiskAnalysisJobConfig =-    GooglePrivacyDlpV2RiskAnalysisJobConfig'-    { _gpdvrajcPrivacyMetric = Nothing-    , _gpdvrajcActions = Nothing-    , _gpdvrajcSourceTable = Nothing-    }---- | Privacy metric to compute.-gpdvrajcPrivacyMetric :: Lens' GooglePrivacyDlpV2RiskAnalysisJobConfig (Maybe GooglePrivacyDlpV2PrivacyMetric)-gpdvrajcPrivacyMetric-  = lens _gpdvrajcPrivacyMetric-      (\ s a -> s{_gpdvrajcPrivacyMetric = a})---- | Actions to execute at the completion of the job. Are executed in the--- order provided.-gpdvrajcActions :: Lens' GooglePrivacyDlpV2RiskAnalysisJobConfig [GooglePrivacyDlpV2Action]-gpdvrajcActions-  = lens _gpdvrajcActions-      (\ s a -> s{_gpdvrajcActions = a})-      . _Default-      . _Coerce---- | Input dataset to compute metrics over.-gpdvrajcSourceTable :: Lens' GooglePrivacyDlpV2RiskAnalysisJobConfig (Maybe GooglePrivacyDlpV2BigQueryTable)-gpdvrajcSourceTable-  = lens _gpdvrajcSourceTable-      (\ s a -> s{_gpdvrajcSourceTable = a})--instance FromJSON-         GooglePrivacyDlpV2RiskAnalysisJobConfig where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2RiskAnalysisJobConfig"-              (\ o ->-                 GooglePrivacyDlpV2RiskAnalysisJobConfig' <$>-                   (o .:? "privacyMetric") <*>-                     (o .:? "actions" .!= mempty)-                     <*> (o .:? "sourceTable"))--instance ToJSON-         GooglePrivacyDlpV2RiskAnalysisJobConfig where-        toJSON GooglePrivacyDlpV2RiskAnalysisJobConfig'{..}-          = object-              (catMaybes-                 [("privacyMetric" .=) <$> _gpdvrajcPrivacyMetric,-                  ("actions" .=) <$> _gpdvrajcActions,-                  ("sourceTable" .=) <$> _gpdvrajcSourceTable])---- | Message for infoType-dependent details parsed from quote.------ /See:/ 'googlePrivacyDlpV2QuoteInfo' smart constructor.-newtype GooglePrivacyDlpV2QuoteInfo = GooglePrivacyDlpV2QuoteInfo'-    { _gpdvqiDateTime :: Maybe GooglePrivacyDlpV2DateTime-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2QuoteInfo' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvqiDateTime'-googlePrivacyDlpV2QuoteInfo-    :: GooglePrivacyDlpV2QuoteInfo-googlePrivacyDlpV2QuoteInfo =-    GooglePrivacyDlpV2QuoteInfo'-    { _gpdvqiDateTime = Nothing-    }---- | The date time indicated by the quote.-gpdvqiDateTime :: Lens' GooglePrivacyDlpV2QuoteInfo (Maybe GooglePrivacyDlpV2DateTime)-gpdvqiDateTime-  = lens _gpdvqiDateTime-      (\ s a -> s{_gpdvqiDateTime = a})--instance FromJSON GooglePrivacyDlpV2QuoteInfo where-        parseJSON-          = withObject "GooglePrivacyDlpV2QuoteInfo"-              (\ o ->-                 GooglePrivacyDlpV2QuoteInfo' <$> (o .:? "dateTime"))--instance ToJSON GooglePrivacyDlpV2QuoteInfo where-        toJSON GooglePrivacyDlpV2QuoteInfo'{..}-          = object-              (catMaybes [("dateTime" .=) <$> _gpdvqiDateTime])---- | Configuration to suppress records whose suppression conditions evaluate--- to true.------ /See:/ 'googlePrivacyDlpV2RecordSuppression' smart constructor.-newtype GooglePrivacyDlpV2RecordSuppression = GooglePrivacyDlpV2RecordSuppression'-    { _gpdvrsCondition :: Maybe GooglePrivacyDlpV2RecordCondition-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2RecordSuppression' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrsCondition'-googlePrivacyDlpV2RecordSuppression-    :: GooglePrivacyDlpV2RecordSuppression-googlePrivacyDlpV2RecordSuppression =-    GooglePrivacyDlpV2RecordSuppression'-    { _gpdvrsCondition = Nothing-    }---- | A condition that when it evaluates to true will result in the record--- being evaluated to be suppressed from the transformed content.-gpdvrsCondition :: Lens' GooglePrivacyDlpV2RecordSuppression (Maybe GooglePrivacyDlpV2RecordCondition)-gpdvrsCondition-  = lens _gpdvrsCondition-      (\ s a -> s{_gpdvrsCondition = a})--instance FromJSON GooglePrivacyDlpV2RecordSuppression-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2RecordSuppression"-              (\ o ->-                 GooglePrivacyDlpV2RecordSuppression' <$>-                   (o .:? "condition"))--instance ToJSON GooglePrivacyDlpV2RecordSuppression-         where-        toJSON GooglePrivacyDlpV2RecordSuppression'{..}-          = object-              (catMaybes [("condition" .=) <$> _gpdvrsCondition])---- | This is a data encryption key (DEK) (as opposed to a key encryption key--- (KEK) stored by KMS). When using KMS to wrap\/unwrap DEKs, be sure to--- set an appropriate IAM policy on the KMS CryptoKey (KEK) to ensure an--- attacker cannot unwrap the data crypto key.------ /See:/ 'googlePrivacyDlpV2CryptoKey' smart constructor.-data GooglePrivacyDlpV2CryptoKey = GooglePrivacyDlpV2CryptoKey'-    { _gpdvckTransient  :: !(Maybe GooglePrivacyDlpV2TransientCryptoKey)-    , _gpdvckKmsWrApped :: !(Maybe GooglePrivacyDlpV2KmsWrAppedCryptoKey)-    , _gpdvckUnwrApped  :: !(Maybe GooglePrivacyDlpV2UnwrAppedCryptoKey)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CryptoKey' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvckTransient'------ * 'gpdvckKmsWrApped'------ * 'gpdvckUnwrApped'-googlePrivacyDlpV2CryptoKey-    :: GooglePrivacyDlpV2CryptoKey-googlePrivacyDlpV2CryptoKey =-    GooglePrivacyDlpV2CryptoKey'-    { _gpdvckTransient = Nothing-    , _gpdvckKmsWrApped = Nothing-    , _gpdvckUnwrApped = Nothing-    }--gpdvckTransient :: Lens' GooglePrivacyDlpV2CryptoKey (Maybe GooglePrivacyDlpV2TransientCryptoKey)-gpdvckTransient-  = lens _gpdvckTransient-      (\ s a -> s{_gpdvckTransient = a})--gpdvckKmsWrApped :: Lens' GooglePrivacyDlpV2CryptoKey (Maybe GooglePrivacyDlpV2KmsWrAppedCryptoKey)-gpdvckKmsWrApped-  = lens _gpdvckKmsWrApped-      (\ s a -> s{_gpdvckKmsWrApped = a})--gpdvckUnwrApped :: Lens' GooglePrivacyDlpV2CryptoKey (Maybe GooglePrivacyDlpV2UnwrAppedCryptoKey)-gpdvckUnwrApped-  = lens _gpdvckUnwrApped-      (\ s a -> s{_gpdvckUnwrApped = a})--instance FromJSON GooglePrivacyDlpV2CryptoKey where-        parseJSON-          = withObject "GooglePrivacyDlpV2CryptoKey"-              (\ o ->-                 GooglePrivacyDlpV2CryptoKey' <$>-                   (o .:? "transient") <*> (o .:? "kmsWrapped") <*>-                     (o .:? "unwrapped"))--instance ToJSON GooglePrivacyDlpV2CryptoKey where-        toJSON GooglePrivacyDlpV2CryptoKey'{..}-          = object-              (catMaybes-                 [("transient" .=) <$> _gpdvckTransient,-                  ("kmsWrapped" .=) <$> _gpdvckKmsWrApped,-                  ("unwrapped" .=) <$> _gpdvckUnwrApped])---- | Configuration for a custom dictionary created from a data source of any--- size up to the maximum size defined in the--- [limits](https:\/\/cloud.google.com\/dlp\/limits) page. The artifacts of--- dictionary creation are stored in the specified Google Cloud Storage--- location. Consider using \`CustomInfoType.Dictionary\` for smaller--- dictionaries that satisfy the size requirements.------ /See:/ 'googlePrivacyDlpV2LargeCustomDictionaryConfig' smart constructor.-data GooglePrivacyDlpV2LargeCustomDictionaryConfig = GooglePrivacyDlpV2LargeCustomDictionaryConfig'-    { _gpdvlcdcBigQueryField       :: !(Maybe GooglePrivacyDlpV2BigQueryField)-    , _gpdvlcdcCloudStorageFileSet :: !(Maybe GooglePrivacyDlpV2CloudStorageFileSet)-    , _gpdvlcdcOutputPath          :: !(Maybe GooglePrivacyDlpV2CloudStoragePath)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2LargeCustomDictionaryConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvlcdcBigQueryField'------ * 'gpdvlcdcCloudStorageFileSet'------ * 'gpdvlcdcOutputPath'-googlePrivacyDlpV2LargeCustomDictionaryConfig-    :: GooglePrivacyDlpV2LargeCustomDictionaryConfig-googlePrivacyDlpV2LargeCustomDictionaryConfig =-    GooglePrivacyDlpV2LargeCustomDictionaryConfig'-    { _gpdvlcdcBigQueryField = Nothing-    , _gpdvlcdcCloudStorageFileSet = Nothing-    , _gpdvlcdcOutputPath = Nothing-    }---- | Field in a BigQuery table where each cell represents a dictionary--- phrase.-gpdvlcdcBigQueryField :: Lens' GooglePrivacyDlpV2LargeCustomDictionaryConfig (Maybe GooglePrivacyDlpV2BigQueryField)-gpdvlcdcBigQueryField-  = lens _gpdvlcdcBigQueryField-      (\ s a -> s{_gpdvlcdcBigQueryField = a})---- | Set of files containing newline-delimited lists of dictionary phrases.-gpdvlcdcCloudStorageFileSet :: Lens' GooglePrivacyDlpV2LargeCustomDictionaryConfig (Maybe GooglePrivacyDlpV2CloudStorageFileSet)-gpdvlcdcCloudStorageFileSet-  = lens _gpdvlcdcCloudStorageFileSet-      (\ s a -> s{_gpdvlcdcCloudStorageFileSet = a})---- | Location to store dictionary artifacts in Google Cloud Storage. These--- files will only be accessible by project owners and the DLP API. If any--- of these artifacts are modified, the dictionary is considered invalid--- and can no longer be used.-gpdvlcdcOutputPath :: Lens' GooglePrivacyDlpV2LargeCustomDictionaryConfig (Maybe GooglePrivacyDlpV2CloudStoragePath)-gpdvlcdcOutputPath-  = lens _gpdvlcdcOutputPath-      (\ s a -> s{_gpdvlcdcOutputPath = a})--instance FromJSON-         GooglePrivacyDlpV2LargeCustomDictionaryConfig where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2LargeCustomDictionaryConfig"-              (\ o ->-                 GooglePrivacyDlpV2LargeCustomDictionaryConfig' <$>-                   (o .:? "bigQueryField") <*>-                     (o .:? "cloudStorageFileSet")-                     <*> (o .:? "outputPath"))--instance ToJSON-         GooglePrivacyDlpV2LargeCustomDictionaryConfig where-        toJSON-          GooglePrivacyDlpV2LargeCustomDictionaryConfig'{..}-          = object-              (catMaybes-                 [("bigQueryField" .=) <$> _gpdvlcdcBigQueryField,-                  ("cloudStorageFileSet" .=) <$>-                    _gpdvlcdcCloudStorageFileSet,-                  ("outputPath" .=) <$> _gpdvlcdcOutputPath])---- | Message defining a list of words or phrases to search for in the data.------ /See:/ 'googlePrivacyDlpV2WordList' smart constructor.-newtype GooglePrivacyDlpV2WordList = GooglePrivacyDlpV2WordList'-    { _gpdvwlWords :: Maybe [Text]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2WordList' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvwlWords'-googlePrivacyDlpV2WordList-    :: GooglePrivacyDlpV2WordList-googlePrivacyDlpV2WordList =-    GooglePrivacyDlpV2WordList'-    { _gpdvwlWords = Nothing-    }---- | Words or phrases defining the dictionary. The dictionary must contain at--- least one phrase and every phrase must contain at least 2 characters--- that are letters or digits. [required]-gpdvwlWords :: Lens' GooglePrivacyDlpV2WordList [Text]-gpdvwlWords-  = lens _gpdvwlWords (\ s a -> s{_gpdvwlWords = a}) .-      _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2WordList where-        parseJSON-          = withObject "GooglePrivacyDlpV2WordList"-              (\ o ->-                 GooglePrivacyDlpV2WordList' <$>-                   (o .:? "words" .!= mempty))--instance ToJSON GooglePrivacyDlpV2WordList where-        toJSON GooglePrivacyDlpV2WordList'{..}-          = object (catMaybes [("words" .=) <$> _gpdvwlWords])---- | Container structure for the content to inspect.------ /See:/ 'googlePrivacyDlpV2ContentItem' smart constructor.-data GooglePrivacyDlpV2ContentItem = GooglePrivacyDlpV2ContentItem'-    { _gpdvciValue    :: !(Maybe Text)-    , _gpdvciByteItem :: !(Maybe GooglePrivacyDlpV2ByteContentItem)-    , _gpdvciTable    :: !(Maybe GooglePrivacyDlpV2Table)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ContentItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvciValue'------ * 'gpdvciByteItem'------ * 'gpdvciTable'-googlePrivacyDlpV2ContentItem-    :: GooglePrivacyDlpV2ContentItem-googlePrivacyDlpV2ContentItem =-    GooglePrivacyDlpV2ContentItem'-    { _gpdvciValue = Nothing-    , _gpdvciByteItem = Nothing-    , _gpdvciTable = Nothing-    }---- | String data to inspect or redact.-gpdvciValue :: Lens' GooglePrivacyDlpV2ContentItem (Maybe Text)-gpdvciValue-  = lens _gpdvciValue (\ s a -> s{_gpdvciValue = a})---- | Content data to inspect or redact. Replaces \`type\` and \`data\`.-gpdvciByteItem :: Lens' GooglePrivacyDlpV2ContentItem (Maybe GooglePrivacyDlpV2ByteContentItem)-gpdvciByteItem-  = lens _gpdvciByteItem-      (\ s a -> s{_gpdvciByteItem = a})---- | Structured content for inspection. See--- https:\/\/cloud.google.com\/dlp\/docs\/inspecting-text#inspecting_a_table--- to learn more.-gpdvciTable :: Lens' GooglePrivacyDlpV2ContentItem (Maybe GooglePrivacyDlpV2Table)-gpdvciTable-  = lens _gpdvciTable (\ s a -> s{_gpdvciTable = a})--instance FromJSON GooglePrivacyDlpV2ContentItem where-        parseJSON-          = withObject "GooglePrivacyDlpV2ContentItem"-              (\ o ->-                 GooglePrivacyDlpV2ContentItem' <$>-                   (o .:? "value") <*> (o .:? "byteItem") <*>-                     (o .:? "table"))--instance ToJSON GooglePrivacyDlpV2ContentItem where-        toJSON GooglePrivacyDlpV2ContentItem'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _gpdvciValue,-                  ("byteItem" .=) <$> _gpdvciByteItem,-                  ("table" .=) <$> _gpdvciTable])------- /See:/ 'googlePrivacyDlpV2CategoricalStatsHistogramBucket' smart constructor.-data GooglePrivacyDlpV2CategoricalStatsHistogramBucket = GooglePrivacyDlpV2CategoricalStatsHistogramBucket'-    { _gpdvcshbValueFrequencyLowerBound :: !(Maybe (Textual Int64))-    , _gpdvcshbBucketValues             :: !(Maybe [GooglePrivacyDlpV2ValueFrequency])-    , _gpdvcshbValueFrequencyUpperBound :: !(Maybe (Textual Int64))-    , _gpdvcshbBucketSize               :: !(Maybe (Textual Int64))-    , _gpdvcshbBucketValueCount         :: !(Maybe (Textual Int64))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CategoricalStatsHistogramBucket' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcshbValueFrequencyLowerBound'------ * 'gpdvcshbBucketValues'------ * 'gpdvcshbValueFrequencyUpperBound'------ * 'gpdvcshbBucketSize'------ * 'gpdvcshbBucketValueCount'-googlePrivacyDlpV2CategoricalStatsHistogramBucket-    :: GooglePrivacyDlpV2CategoricalStatsHistogramBucket-googlePrivacyDlpV2CategoricalStatsHistogramBucket =-    GooglePrivacyDlpV2CategoricalStatsHistogramBucket'-    { _gpdvcshbValueFrequencyLowerBound = Nothing-    , _gpdvcshbBucketValues = Nothing-    , _gpdvcshbValueFrequencyUpperBound = Nothing-    , _gpdvcshbBucketSize = Nothing-    , _gpdvcshbBucketValueCount = Nothing-    }---- | Lower bound on the value frequency of the values in this bucket.-gpdvcshbValueFrequencyLowerBound :: Lens' GooglePrivacyDlpV2CategoricalStatsHistogramBucket (Maybe Int64)-gpdvcshbValueFrequencyLowerBound-  = lens _gpdvcshbValueFrequencyLowerBound-      (\ s a -> s{_gpdvcshbValueFrequencyLowerBound = a})-      . mapping _Coerce---- | Sample of value frequencies in this bucket. The total number of values--- returned per bucket is capped at 20.-gpdvcshbBucketValues :: Lens' GooglePrivacyDlpV2CategoricalStatsHistogramBucket [GooglePrivacyDlpV2ValueFrequency]-gpdvcshbBucketValues-  = lens _gpdvcshbBucketValues-      (\ s a -> s{_gpdvcshbBucketValues = a})-      . _Default-      . _Coerce---- | Upper bound on the value frequency of the values in this bucket.-gpdvcshbValueFrequencyUpperBound :: Lens' GooglePrivacyDlpV2CategoricalStatsHistogramBucket (Maybe Int64)-gpdvcshbValueFrequencyUpperBound-  = lens _gpdvcshbValueFrequencyUpperBound-      (\ s a -> s{_gpdvcshbValueFrequencyUpperBound = a})-      . mapping _Coerce---- | Total number of values in this bucket.-gpdvcshbBucketSize :: Lens' GooglePrivacyDlpV2CategoricalStatsHistogramBucket (Maybe Int64)-gpdvcshbBucketSize-  = lens _gpdvcshbBucketSize-      (\ s a -> s{_gpdvcshbBucketSize = a})-      . mapping _Coerce---- | Total number of distinct values in this bucket.-gpdvcshbBucketValueCount :: Lens' GooglePrivacyDlpV2CategoricalStatsHistogramBucket (Maybe Int64)-gpdvcshbBucketValueCount-  = lens _gpdvcshbBucketValueCount-      (\ s a -> s{_gpdvcshbBucketValueCount = a})-      . mapping _Coerce--instance FromJSON-         GooglePrivacyDlpV2CategoricalStatsHistogramBucket-         where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2CategoricalStatsHistogramBucket"-              (\ o ->-                 GooglePrivacyDlpV2CategoricalStatsHistogramBucket'-                   <$>-                   (o .:? "valueFrequencyLowerBound") <*>-                     (o .:? "bucketValues" .!= mempty)-                     <*> (o .:? "valueFrequencyUpperBound")-                     <*> (o .:? "bucketSize")-                     <*> (o .:? "bucketValueCount"))--instance ToJSON-         GooglePrivacyDlpV2CategoricalStatsHistogramBucket-         where-        toJSON-          GooglePrivacyDlpV2CategoricalStatsHistogramBucket'{..}-          = object-              (catMaybes-                 [("valueFrequencyLowerBound" .=) <$>-                    _gpdvcshbValueFrequencyLowerBound,-                  ("bucketValues" .=) <$> _gpdvcshbBucketValues,-                  ("valueFrequencyUpperBound" .=) <$>-                    _gpdvcshbValueFrequencyUpperBound,-                  ("bucketSize" .=) <$> _gpdvcshbBucketSize,-                  ("bucketValueCount" .=) <$>-                    _gpdvcshbBucketValueCount])------- /See:/ 'googlePrivacyDlpV2Result' smart constructor.-data GooglePrivacyDlpV2Result = GooglePrivacyDlpV2Result'-    { _gpdvrProcessedBytes      :: !(Maybe (Textual Int64))-    , _gpdvrInfoTypeStats       :: !(Maybe [GooglePrivacyDlpV2InfoTypeStats])-    , _gpdvrTotalEstimatedBytes :: !(Maybe (Textual Int64))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Result' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrProcessedBytes'------ * 'gpdvrInfoTypeStats'------ * 'gpdvrTotalEstimatedBytes'-googlePrivacyDlpV2Result-    :: GooglePrivacyDlpV2Result-googlePrivacyDlpV2Result =-    GooglePrivacyDlpV2Result'-    { _gpdvrProcessedBytes = Nothing-    , _gpdvrInfoTypeStats = Nothing-    , _gpdvrTotalEstimatedBytes = Nothing-    }---- | Total size in bytes that were processed.-gpdvrProcessedBytes :: Lens' GooglePrivacyDlpV2Result (Maybe Int64)-gpdvrProcessedBytes-  = lens _gpdvrProcessedBytes-      (\ s a -> s{_gpdvrProcessedBytes = a})-      . mapping _Coerce---- | Statistics of how many instances of each info type were found during--- inspect job.-gpdvrInfoTypeStats :: Lens' GooglePrivacyDlpV2Result [GooglePrivacyDlpV2InfoTypeStats]-gpdvrInfoTypeStats-  = lens _gpdvrInfoTypeStats-      (\ s a -> s{_gpdvrInfoTypeStats = a})-      . _Default-      . _Coerce---- | Estimate of the number of bytes to process.-gpdvrTotalEstimatedBytes :: Lens' GooglePrivacyDlpV2Result (Maybe Int64)-gpdvrTotalEstimatedBytes-  = lens _gpdvrTotalEstimatedBytes-      (\ s a -> s{_gpdvrTotalEstimatedBytes = a})-      . mapping _Coerce--instance FromJSON GooglePrivacyDlpV2Result where-        parseJSON-          = withObject "GooglePrivacyDlpV2Result"-              (\ o ->-                 GooglePrivacyDlpV2Result' <$>-                   (o .:? "processedBytes") <*>-                     (o .:? "infoTypeStats" .!= mempty)-                     <*> (o .:? "totalEstimatedBytes"))--instance ToJSON GooglePrivacyDlpV2Result where-        toJSON GooglePrivacyDlpV2Result'{..}-          = object-              (catMaybes-                 [("processedBytes" .=) <$> _gpdvrProcessedBytes,-                  ("infoTypeStats" .=) <$> _gpdvrInfoTypeStats,-                  ("totalEstimatedBytes" .=) <$>-                    _gpdvrTotalEstimatedBytes])---- | The results of an inspect DataSource job.------ /See:/ 'googlePrivacyDlpV2InspectDataSourceDetails' smart constructor.-data GooglePrivacyDlpV2InspectDataSourceDetails = GooglePrivacyDlpV2InspectDataSourceDetails'-    { _gpdvidsdResult           :: !(Maybe GooglePrivacyDlpV2Result)-    , _gpdvidsdRequestedOptions :: !(Maybe GooglePrivacyDlpV2RequestedOptions)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InspectDataSourceDetails' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvidsdResult'------ * 'gpdvidsdRequestedOptions'-googlePrivacyDlpV2InspectDataSourceDetails-    :: GooglePrivacyDlpV2InspectDataSourceDetails-googlePrivacyDlpV2InspectDataSourceDetails =-    GooglePrivacyDlpV2InspectDataSourceDetails'-    { _gpdvidsdResult = Nothing-    , _gpdvidsdRequestedOptions = Nothing-    }---- | A summary of the outcome of this inspect job.-gpdvidsdResult :: Lens' GooglePrivacyDlpV2InspectDataSourceDetails (Maybe GooglePrivacyDlpV2Result)-gpdvidsdResult-  = lens _gpdvidsdResult-      (\ s a -> s{_gpdvidsdResult = a})---- | The configuration used for this job.-gpdvidsdRequestedOptions :: Lens' GooglePrivacyDlpV2InspectDataSourceDetails (Maybe GooglePrivacyDlpV2RequestedOptions)-gpdvidsdRequestedOptions-  = lens _gpdvidsdRequestedOptions-      (\ s a -> s{_gpdvidsdRequestedOptions = a})--instance FromJSON-         GooglePrivacyDlpV2InspectDataSourceDetails where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2InspectDataSourceDetails"-              (\ o ->-                 GooglePrivacyDlpV2InspectDataSourceDetails' <$>-                   (o .:? "result") <*> (o .:? "requestedOptions"))--instance ToJSON-         GooglePrivacyDlpV2InspectDataSourceDetails where-        toJSON-          GooglePrivacyDlpV2InspectDataSourceDetails'{..}-          = object-              (catMaybes-                 [("result" .=) <$> _gpdvidsdResult,-                  ("requestedOptions" .=) <$>-                    _gpdvidsdRequestedOptions])---- | Results of redacting an image.------ /See:/ 'googlePrivacyDlpV2RedactImageResponse' smart constructor.-data GooglePrivacyDlpV2RedactImageResponse = GooglePrivacyDlpV2RedactImageResponse'-    { _gpdvrirExtractedText :: !(Maybe Text)-    , _gpdvrirInspectResult :: !(Maybe GooglePrivacyDlpV2InspectResult)-    , _gpdvrirRedactedImage :: !(Maybe Bytes)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2RedactImageResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrirExtractedText'------ * 'gpdvrirInspectResult'------ * 'gpdvrirRedactedImage'-googlePrivacyDlpV2RedactImageResponse-    :: GooglePrivacyDlpV2RedactImageResponse-googlePrivacyDlpV2RedactImageResponse =-    GooglePrivacyDlpV2RedactImageResponse'-    { _gpdvrirExtractedText = Nothing-    , _gpdvrirInspectResult = Nothing-    , _gpdvrirRedactedImage = Nothing-    }---- | If an image was being inspected and the InspectConfig\'s include_quote--- was set to true, then this field will include all text, if any, that was--- found in the image.-gpdvrirExtractedText :: Lens' GooglePrivacyDlpV2RedactImageResponse (Maybe Text)-gpdvrirExtractedText-  = lens _gpdvrirExtractedText-      (\ s a -> s{_gpdvrirExtractedText = a})---- | The findings. Populated when include_findings in the request is true.-gpdvrirInspectResult :: Lens' GooglePrivacyDlpV2RedactImageResponse (Maybe GooglePrivacyDlpV2InspectResult)-gpdvrirInspectResult-  = lens _gpdvrirInspectResult-      (\ s a -> s{_gpdvrirInspectResult = a})---- | The redacted image. The type will be the same as the original image.-gpdvrirRedactedImage :: Lens' GooglePrivacyDlpV2RedactImageResponse (Maybe ByteString)-gpdvrirRedactedImage-  = lens _gpdvrirRedactedImage-      (\ s a -> s{_gpdvrirRedactedImage = a})-      . mapping _Bytes--instance FromJSON-         GooglePrivacyDlpV2RedactImageResponse where-        parseJSON-          = withObject "GooglePrivacyDlpV2RedactImageResponse"-              (\ o ->-                 GooglePrivacyDlpV2RedactImageResponse' <$>-                   (o .:? "extractedText") <*> (o .:? "inspectResult")-                     <*> (o .:? "redactedImage"))--instance ToJSON GooglePrivacyDlpV2RedactImageResponse-         where-        toJSON GooglePrivacyDlpV2RedactImageResponse'{..}-          = object-              (catMaybes-                 [("extractedText" .=) <$> _gpdvrirExtractedText,-                  ("inspectResult" .=) <$> _gpdvrirInspectResult,-                  ("redactedImage" .=) <$> _gpdvrirRedactedImage])---- | Publish the results of a DlpJob to a pub sub channel. Compatible with:--- Inspect, Risk------ /See:/ 'googlePrivacyDlpV2PublishToPubSub' smart constructor.-newtype GooglePrivacyDlpV2PublishToPubSub = GooglePrivacyDlpV2PublishToPubSub'-    { _gpdvptpsTopic :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2PublishToPubSub' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvptpsTopic'-googlePrivacyDlpV2PublishToPubSub-    :: GooglePrivacyDlpV2PublishToPubSub-googlePrivacyDlpV2PublishToPubSub =-    GooglePrivacyDlpV2PublishToPubSub'-    { _gpdvptpsTopic = Nothing-    }---- | Cloud Pub\/Sub topic to send notifications to. The topic must have given--- publishing access rights to the DLP API service account executing the--- long running DlpJob sending the notifications. Format is--- projects\/{project}\/topics\/{topic}.-gpdvptpsTopic :: Lens' GooglePrivacyDlpV2PublishToPubSub (Maybe Text)-gpdvptpsTopic-  = lens _gpdvptpsTopic-      (\ s a -> s{_gpdvptpsTopic = a})--instance FromJSON GooglePrivacyDlpV2PublishToPubSub-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2PublishToPubSub"-              (\ o ->-                 GooglePrivacyDlpV2PublishToPubSub' <$>-                   (o .:? "topic"))--instance ToJSON GooglePrivacyDlpV2PublishToPubSub-         where-        toJSON GooglePrivacyDlpV2PublishToPubSub'{..}-          = object-              (catMaybes [("topic" .=) <$> _gpdvptpsTopic])---- | Row key for identifying a record in BigQuery table.------ /See:/ 'googlePrivacyDlpV2BigQueryKey' smart constructor.-data GooglePrivacyDlpV2BigQueryKey = GooglePrivacyDlpV2BigQueryKey'-    { _gpdvbqkTableReference :: !(Maybe GooglePrivacyDlpV2BigQueryTable)-    , _gpdvbqkRowNumber      :: !(Maybe (Textual Int64))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2BigQueryKey' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvbqkTableReference'------ * 'gpdvbqkRowNumber'-googlePrivacyDlpV2BigQueryKey-    :: GooglePrivacyDlpV2BigQueryKey-googlePrivacyDlpV2BigQueryKey =-    GooglePrivacyDlpV2BigQueryKey'-    { _gpdvbqkTableReference = Nothing-    , _gpdvbqkRowNumber = Nothing-    }---- | Complete BigQuery table reference.-gpdvbqkTableReference :: Lens' GooglePrivacyDlpV2BigQueryKey (Maybe GooglePrivacyDlpV2BigQueryTable)-gpdvbqkTableReference-  = lens _gpdvbqkTableReference-      (\ s a -> s{_gpdvbqkTableReference = a})---- | Absolute number of the row from the beginning of the table at the time--- of scanning.-gpdvbqkRowNumber :: Lens' GooglePrivacyDlpV2BigQueryKey (Maybe Int64)-gpdvbqkRowNumber-  = lens _gpdvbqkRowNumber-      (\ s a -> s{_gpdvbqkRowNumber = a})-      . mapping _Coerce--instance FromJSON GooglePrivacyDlpV2BigQueryKey where-        parseJSON-          = withObject "GooglePrivacyDlpV2BigQueryKey"-              (\ o ->-                 GooglePrivacyDlpV2BigQueryKey' <$>-                   (o .:? "tableReference") <*> (o .:? "rowNumber"))--instance ToJSON GooglePrivacyDlpV2BigQueryKey where-        toJSON GooglePrivacyDlpV2BigQueryKey'{..}-          = object-              (catMaybes-                 [("tableReference" .=) <$> _gpdvbqkTableReference,-                  ("rowNumber" .=) <$> _gpdvbqkRowNumber])---- | Rule for modifying a CustomInfoType to alter behavior under certain--- circumstances, depending on the specific details of the rule. Not--- supported for the \`surrogate_type\` custom info type.------ /See:/ 'googlePrivacyDlpV2DetectionRule' smart constructor.-newtype GooglePrivacyDlpV2DetectionRule = GooglePrivacyDlpV2DetectionRule'-    { _gpdvdrHotwordRule :: Maybe GooglePrivacyDlpV2HotwordRule-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DetectionRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdrHotwordRule'-googlePrivacyDlpV2DetectionRule-    :: GooglePrivacyDlpV2DetectionRule-googlePrivacyDlpV2DetectionRule =-    GooglePrivacyDlpV2DetectionRule'-    { _gpdvdrHotwordRule = Nothing-    }---- | Hotword-based detection rule.-gpdvdrHotwordRule :: Lens' GooglePrivacyDlpV2DetectionRule (Maybe GooglePrivacyDlpV2HotwordRule)-gpdvdrHotwordRule-  = lens _gpdvdrHotwordRule-      (\ s a -> s{_gpdvdrHotwordRule = a})--instance FromJSON GooglePrivacyDlpV2DetectionRule-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2DetectionRule"-              (\ o ->-                 GooglePrivacyDlpV2DetectionRule' <$>-                   (o .:? "hotwordRule"))--instance ToJSON GooglePrivacyDlpV2DetectionRule where-        toJSON GooglePrivacyDlpV2DetectionRule'{..}-          = object-              (catMaybes-                 [("hotwordRule" .=) <$> _gpdvdrHotwordRule])---- | A condition for determining whether a transformation should be applied--- to a field.------ /See:/ 'googlePrivacyDlpV2RecordCondition' smart constructor.-newtype GooglePrivacyDlpV2RecordCondition = GooglePrivacyDlpV2RecordCondition'-    { _gpdvrcExpressions :: Maybe GooglePrivacyDlpV2Expressions-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2RecordCondition' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrcExpressions'-googlePrivacyDlpV2RecordCondition-    :: GooglePrivacyDlpV2RecordCondition-googlePrivacyDlpV2RecordCondition =-    GooglePrivacyDlpV2RecordCondition'-    { _gpdvrcExpressions = Nothing-    }---- | An expression.-gpdvrcExpressions :: Lens' GooglePrivacyDlpV2RecordCondition (Maybe GooglePrivacyDlpV2Expressions)-gpdvrcExpressions-  = lens _gpdvrcExpressions-      (\ s a -> s{_gpdvrcExpressions = a})--instance FromJSON GooglePrivacyDlpV2RecordCondition-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2RecordCondition"-              (\ o ->-                 GooglePrivacyDlpV2RecordCondition' <$>-                   (o .:? "expressions"))--instance ToJSON GooglePrivacyDlpV2RecordCondition-         where-        toJSON GooglePrivacyDlpV2RecordCondition'{..}-          = object-              (catMaybes-                 [("expressions" .=) <$> _gpdvrcExpressions])---- | Shifts dates by random number of days, with option to be consistent for--- the same context. See--- https:\/\/cloud.google.com\/dlp\/docs\/concepts-date-shifting to learn--- more.------ /See:/ 'googlePrivacyDlpV2DateShiftConfig' smart constructor.-data GooglePrivacyDlpV2DateShiftConfig = GooglePrivacyDlpV2DateShiftConfig'-    { _gpdvdscContext        :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvdscUpperBoundDays :: !(Maybe (Textual Int32))-    , _gpdvdscCryptoKey      :: !(Maybe GooglePrivacyDlpV2CryptoKey)-    , _gpdvdscLowerBoundDays :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DateShiftConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdscContext'------ * 'gpdvdscUpperBoundDays'------ * 'gpdvdscCryptoKey'------ * 'gpdvdscLowerBoundDays'-googlePrivacyDlpV2DateShiftConfig-    :: GooglePrivacyDlpV2DateShiftConfig-googlePrivacyDlpV2DateShiftConfig =-    GooglePrivacyDlpV2DateShiftConfig'-    { _gpdvdscContext = Nothing-    , _gpdvdscUpperBoundDays = Nothing-    , _gpdvdscCryptoKey = Nothing-    , _gpdvdscLowerBoundDays = Nothing-    }---- | Points to the field that contains the context, for example, an entity--- id. If set, must also set method. If set, shift will be consistent for--- the given context.-gpdvdscContext :: Lens' GooglePrivacyDlpV2DateShiftConfig (Maybe GooglePrivacyDlpV2FieldId)-gpdvdscContext-  = lens _gpdvdscContext-      (\ s a -> s{_gpdvdscContext = a})---- | Range of shift in days. Actual shift will be selected at random within--- this range (inclusive ends). Negative means shift to earlier in time.--- Must not be more than 365250 days (1000 years) each direction. For--- example, 3 means shift date to at most 3 days into the future.--- [Required]-gpdvdscUpperBoundDays :: Lens' GooglePrivacyDlpV2DateShiftConfig (Maybe Int32)-gpdvdscUpperBoundDays-  = lens _gpdvdscUpperBoundDays-      (\ s a -> s{_gpdvdscUpperBoundDays = a})-      . mapping _Coerce---- | Causes the shift to be computed based on this key and the context. This--- results in the same shift for the same context and crypto_key.-gpdvdscCryptoKey :: Lens' GooglePrivacyDlpV2DateShiftConfig (Maybe GooglePrivacyDlpV2CryptoKey)-gpdvdscCryptoKey-  = lens _gpdvdscCryptoKey-      (\ s a -> s{_gpdvdscCryptoKey = a})---- | For example, -5 means shift date to at most 5 days back in the past.--- [Required]-gpdvdscLowerBoundDays :: Lens' GooglePrivacyDlpV2DateShiftConfig (Maybe Int32)-gpdvdscLowerBoundDays-  = lens _gpdvdscLowerBoundDays-      (\ s a -> s{_gpdvdscLowerBoundDays = a})-      . mapping _Coerce--instance FromJSON GooglePrivacyDlpV2DateShiftConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2DateShiftConfig"-              (\ o ->-                 GooglePrivacyDlpV2DateShiftConfig' <$>-                   (o .:? "context") <*> (o .:? "upperBoundDays") <*>-                     (o .:? "cryptoKey")-                     <*> (o .:? "lowerBoundDays"))--instance ToJSON GooglePrivacyDlpV2DateShiftConfig-         where-        toJSON GooglePrivacyDlpV2DateShiftConfig'{..}-          = object-              (catMaybes-                 [("context" .=) <$> _gpdvdscContext,-                  ("upperBoundDays" .=) <$> _gpdvdscUpperBoundDays,-                  ("cryptoKey" .=) <$> _gpdvdscCryptoKey,-                  ("lowerBoundDays" .=) <$> _gpdvdscLowerBoundDays])---- | Request to search for potentially sensitive info in a ContentItem.------ /See:/ 'googlePrivacyDlpV2InspectContentRequest' smart constructor.-data GooglePrivacyDlpV2InspectContentRequest = GooglePrivacyDlpV2InspectContentRequest'-    { _gpdvicrInspectConfig       :: !(Maybe GooglePrivacyDlpV2InspectConfig)-    , _gpdvicrItem                :: !(Maybe GooglePrivacyDlpV2ContentItem)-    , _gpdvicrInspectTemplateName :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InspectContentRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvicrInspectConfig'------ * 'gpdvicrItem'------ * 'gpdvicrInspectTemplateName'-googlePrivacyDlpV2InspectContentRequest-    :: GooglePrivacyDlpV2InspectContentRequest-googlePrivacyDlpV2InspectContentRequest =-    GooglePrivacyDlpV2InspectContentRequest'-    { _gpdvicrInspectConfig = Nothing-    , _gpdvicrItem = Nothing-    , _gpdvicrInspectTemplateName = Nothing-    }---- | Configuration for the inspector. What specified here will override the--- template referenced by the inspect_template_name argument.-gpdvicrInspectConfig :: Lens' GooglePrivacyDlpV2InspectContentRequest (Maybe GooglePrivacyDlpV2InspectConfig)-gpdvicrInspectConfig-  = lens _gpdvicrInspectConfig-      (\ s a -> s{_gpdvicrInspectConfig = a})---- | The item to inspect.-gpdvicrItem :: Lens' GooglePrivacyDlpV2InspectContentRequest (Maybe GooglePrivacyDlpV2ContentItem)-gpdvicrItem-  = lens _gpdvicrItem (\ s a -> s{_gpdvicrItem = a})---- | Optional template to use. Any configuration directly specified in--- inspect_config will override those set in the template. Singular fields--- that are set in this request will replace their corresponding fields in--- the template. Repeated fields are appended. Singular sub-messages and--- groups are recursively merged.-gpdvicrInspectTemplateName :: Lens' GooglePrivacyDlpV2InspectContentRequest (Maybe Text)-gpdvicrInspectTemplateName-  = lens _gpdvicrInspectTemplateName-      (\ s a -> s{_gpdvicrInspectTemplateName = a})--instance FromJSON-         GooglePrivacyDlpV2InspectContentRequest where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2InspectContentRequest"-              (\ o ->-                 GooglePrivacyDlpV2InspectContentRequest' <$>-                   (o .:? "inspectConfig") <*> (o .:? "item") <*>-                     (o .:? "inspectTemplateName"))--instance ToJSON-         GooglePrivacyDlpV2InspectContentRequest where-        toJSON GooglePrivacyDlpV2InspectContentRequest'{..}-          = object-              (catMaybes-                 [("inspectConfig" .=) <$> _gpdvicrInspectConfig,-                  ("item" .=) <$> _gpdvicrItem,-                  ("inspectTemplateName" .=) <$>-                    _gpdvicrInspectTemplateName])---- | Result of the categorical stats computation.------ /See:/ 'googlePrivacyDlpV2CategoricalStatsResult' smart constructor.-newtype GooglePrivacyDlpV2CategoricalStatsResult = GooglePrivacyDlpV2CategoricalStatsResult'-    { _gpdvcsrValueFrequencyHistogramBuckets :: Maybe [GooglePrivacyDlpV2CategoricalStatsHistogramBucket]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CategoricalStatsResult' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcsrValueFrequencyHistogramBuckets'-googlePrivacyDlpV2CategoricalStatsResult-    :: GooglePrivacyDlpV2CategoricalStatsResult-googlePrivacyDlpV2CategoricalStatsResult =-    GooglePrivacyDlpV2CategoricalStatsResult'-    { _gpdvcsrValueFrequencyHistogramBuckets = Nothing-    }---- | Histogram of value frequencies in the column.-gpdvcsrValueFrequencyHistogramBuckets :: Lens' GooglePrivacyDlpV2CategoricalStatsResult [GooglePrivacyDlpV2CategoricalStatsHistogramBucket]-gpdvcsrValueFrequencyHistogramBuckets-  = lens _gpdvcsrValueFrequencyHistogramBuckets-      (\ s a ->-         s{_gpdvcsrValueFrequencyHistogramBuckets = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2CategoricalStatsResult where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2CategoricalStatsResult"-              (\ o ->-                 GooglePrivacyDlpV2CategoricalStatsResult' <$>-                   (o .:? "valueFrequencyHistogramBuckets" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2CategoricalStatsResult where-        toJSON GooglePrivacyDlpV2CategoricalStatsResult'{..}-          = object-              (catMaybes-                 [("valueFrequencyHistogramBuckets" .=) <$>-                    _gpdvcsrValueFrequencyHistogramBuckets])---- | Result of the numerical stats computation.------ /See:/ 'googlePrivacyDlpV2NumericalStatsResult' smart constructor.-data GooglePrivacyDlpV2NumericalStatsResult = GooglePrivacyDlpV2NumericalStatsResult'-    { _gpdvnsrMaxValue       :: !(Maybe GooglePrivacyDlpV2Value)-    , _gpdvnsrQuantileValues :: !(Maybe [GooglePrivacyDlpV2Value])-    , _gpdvnsrMinValue       :: !(Maybe GooglePrivacyDlpV2Value)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2NumericalStatsResult' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvnsrMaxValue'------ * 'gpdvnsrQuantileValues'------ * 'gpdvnsrMinValue'-googlePrivacyDlpV2NumericalStatsResult-    :: GooglePrivacyDlpV2NumericalStatsResult-googlePrivacyDlpV2NumericalStatsResult =-    GooglePrivacyDlpV2NumericalStatsResult'-    { _gpdvnsrMaxValue = Nothing-    , _gpdvnsrQuantileValues = Nothing-    , _gpdvnsrMinValue = Nothing-    }---- | Maximum value appearing in the column.-gpdvnsrMaxValue :: Lens' GooglePrivacyDlpV2NumericalStatsResult (Maybe GooglePrivacyDlpV2Value)-gpdvnsrMaxValue-  = lens _gpdvnsrMaxValue-      (\ s a -> s{_gpdvnsrMaxValue = a})---- | List of 99 values that partition the set of field values into 100 equal--- sized buckets.-gpdvnsrQuantileValues :: Lens' GooglePrivacyDlpV2NumericalStatsResult [GooglePrivacyDlpV2Value]-gpdvnsrQuantileValues-  = lens _gpdvnsrQuantileValues-      (\ s a -> s{_gpdvnsrQuantileValues = a})-      . _Default-      . _Coerce---- | Minimum value appearing in the column.-gpdvnsrMinValue :: Lens' GooglePrivacyDlpV2NumericalStatsResult (Maybe GooglePrivacyDlpV2Value)-gpdvnsrMinValue-  = lens _gpdvnsrMinValue-      (\ s a -> s{_gpdvnsrMinValue = a})--instance FromJSON-         GooglePrivacyDlpV2NumericalStatsResult where-        parseJSON-          = withObject "GooglePrivacyDlpV2NumericalStatsResult"-              (\ o ->-                 GooglePrivacyDlpV2NumericalStatsResult' <$>-                   (o .:? "maxValue") <*>-                     (o .:? "quantileValues" .!= mempty)-                     <*> (o .:? "minValue"))--instance ToJSON-         GooglePrivacyDlpV2NumericalStatsResult where-        toJSON GooglePrivacyDlpV2NumericalStatsResult'{..}-          = object-              (catMaybes-                 [("maxValue" .=) <$> _gpdvnsrMaxValue,-                  ("quantileValues" .=) <$> _gpdvnsrQuantileValues,-                  ("minValue" .=) <$> _gpdvnsrMinValue])---- | Publish the result summary of a DlpJob to the Cloud Security Command--- Center (CSCC Alpha). This action is only available for projects which--- are parts of an organization and whitelisted for the alpha Cloud--- Security Command Center. The action will publish count of finding--- instances and their info types. The summary of findings will be--- persisted in CSCC and are governed by CSCC service-specific policy, see--- https:\/\/cloud.google.com\/terms\/service-terms Only a single instance--- of this action can be specified. Compatible with: Inspect------ /See:/ 'googlePrivacyDlpV2PublishSummaryToCscc' smart constructor.-data GooglePrivacyDlpV2PublishSummaryToCscc =-    GooglePrivacyDlpV2PublishSummaryToCscc'-    deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2PublishSummaryToCscc' with the minimum fields required to make a request.----googlePrivacyDlpV2PublishSummaryToCscc-    :: GooglePrivacyDlpV2PublishSummaryToCscc-googlePrivacyDlpV2PublishSummaryToCscc =-    GooglePrivacyDlpV2PublishSummaryToCscc'--instance FromJSON-         GooglePrivacyDlpV2PublishSummaryToCscc where-        parseJSON-          = withObject "GooglePrivacyDlpV2PublishSummaryToCscc"-              (\ o -> pure GooglePrivacyDlpV2PublishSummaryToCscc')--instance ToJSON-         GooglePrivacyDlpV2PublishSummaryToCscc where-        toJSON = const emptyObject---- | Request message for UpdateInspectTemplate.------ /See:/ 'googlePrivacyDlpV2UpdateInspectTemplateRequest' smart constructor.-data GooglePrivacyDlpV2UpdateInspectTemplateRequest = GooglePrivacyDlpV2UpdateInspectTemplateRequest'-    { _gpdvuitrUpdateMask      :: !(Maybe GFieldMask)-    , _gpdvuitrInspectTemplate :: !(Maybe GooglePrivacyDlpV2InspectTemplate)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2UpdateInspectTemplateRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvuitrUpdateMask'------ * 'gpdvuitrInspectTemplate'-googlePrivacyDlpV2UpdateInspectTemplateRequest-    :: GooglePrivacyDlpV2UpdateInspectTemplateRequest-googlePrivacyDlpV2UpdateInspectTemplateRequest =-    GooglePrivacyDlpV2UpdateInspectTemplateRequest'-    { _gpdvuitrUpdateMask = Nothing-    , _gpdvuitrInspectTemplate = Nothing-    }---- | Mask to control which fields get updated.-gpdvuitrUpdateMask :: Lens' GooglePrivacyDlpV2UpdateInspectTemplateRequest (Maybe GFieldMask)-gpdvuitrUpdateMask-  = lens _gpdvuitrUpdateMask-      (\ s a -> s{_gpdvuitrUpdateMask = a})---- | New InspectTemplate value.-gpdvuitrInspectTemplate :: Lens' GooglePrivacyDlpV2UpdateInspectTemplateRequest (Maybe GooglePrivacyDlpV2InspectTemplate)-gpdvuitrInspectTemplate-  = lens _gpdvuitrInspectTemplate-      (\ s a -> s{_gpdvuitrInspectTemplate = a})--instance FromJSON-         GooglePrivacyDlpV2UpdateInspectTemplateRequest where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2UpdateInspectTemplateRequest"-              (\ o ->-                 GooglePrivacyDlpV2UpdateInspectTemplateRequest' <$>-                   (o .:? "updateMask") <*> (o .:? "inspectTemplate"))--instance ToJSON-         GooglePrivacyDlpV2UpdateInspectTemplateRequest where-        toJSON-          GooglePrivacyDlpV2UpdateInspectTemplateRequest'{..}-          = object-              (catMaybes-                 [("updateMask" .=) <$> _gpdvuitrUpdateMask,-                  ("inspectTemplate" .=) <$> _gpdvuitrInspectTemplate])---- | An entity in a dataset is a field or set of fields that correspond to a--- single person. For example, in medical records the \`EntityId\` might be--- a patient identifier, or for financial records it might be an account--- identifier. This message is used when generalizations or analysis must--- take into account that multiple rows correspond to the same entity.------ /See:/ 'googlePrivacyDlpV2EntityId' smart constructor.-newtype GooglePrivacyDlpV2EntityId = GooglePrivacyDlpV2EntityId'-    { _gpdveiField :: Maybe GooglePrivacyDlpV2FieldId-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2EntityId' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdveiField'-googlePrivacyDlpV2EntityId-    :: GooglePrivacyDlpV2EntityId-googlePrivacyDlpV2EntityId =-    GooglePrivacyDlpV2EntityId'-    { _gpdveiField = Nothing-    }---- | Composite key indicating which field contains the entity identifier.-gpdveiField :: Lens' GooglePrivacyDlpV2EntityId (Maybe GooglePrivacyDlpV2FieldId)-gpdveiField-  = lens _gpdveiField (\ s a -> s{_gpdveiField = a})--instance FromJSON GooglePrivacyDlpV2EntityId where-        parseJSON-          = withObject "GooglePrivacyDlpV2EntityId"-              (\ o ->-                 GooglePrivacyDlpV2EntityId' <$> (o .:? "field"))--instance ToJSON GooglePrivacyDlpV2EntityId where-        toJSON GooglePrivacyDlpV2EntityId'{..}-          = object (catMaybes [("field" .=) <$> _gpdveiField])---- | Container for bytes to inspect or redact.------ /See:/ 'googlePrivacyDlpV2ByteContentItem' smart constructor.-data GooglePrivacyDlpV2ByteContentItem = GooglePrivacyDlpV2ByteContentItem'-    { _gpdvbciData :: !(Maybe Bytes)-    , _gpdvbciType :: !(Maybe GooglePrivacyDlpV2ByteContentItemType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ByteContentItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvbciData'------ * 'gpdvbciType'-googlePrivacyDlpV2ByteContentItem-    :: GooglePrivacyDlpV2ByteContentItem-googlePrivacyDlpV2ByteContentItem =-    GooglePrivacyDlpV2ByteContentItem'-    { _gpdvbciData = Nothing-    , _gpdvbciType = Nothing-    }---- | Content data to inspect or redact.-gpdvbciData :: Lens' GooglePrivacyDlpV2ByteContentItem (Maybe ByteString)-gpdvbciData-  = lens _gpdvbciData (\ s a -> s{_gpdvbciData = a}) .-      mapping _Bytes---- | The type of data stored in the bytes string. Default will be TEXT_UTF8.-gpdvbciType :: Lens' GooglePrivacyDlpV2ByteContentItem (Maybe GooglePrivacyDlpV2ByteContentItemType)-gpdvbciType-  = lens _gpdvbciType (\ s a -> s{_gpdvbciType = a})--instance FromJSON GooglePrivacyDlpV2ByteContentItem-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2ByteContentItem"-              (\ o ->-                 GooglePrivacyDlpV2ByteContentItem' <$>-                   (o .:? "data") <*> (o .:? "type"))--instance ToJSON GooglePrivacyDlpV2ByteContentItem-         where-        toJSON GooglePrivacyDlpV2ByteContentItem'{..}-          = object-              (catMaybes-                 [("data" .=) <$> _gpdvbciData,-                  ("type" .=) <$> _gpdvbciType])------- /See:/ 'googlePrivacyDlpV2TaggedField' smart constructor.-data GooglePrivacyDlpV2TaggedField = GooglePrivacyDlpV2TaggedField'-    { _gpdvtfField     :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvtfInfoType  :: !(Maybe GooglePrivacyDlpV2InfoType)-    , _gpdvtfInferred  :: !(Maybe GoogleProtobufEmpty)-    , _gpdvtfCustomTag :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2TaggedField' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvtfField'------ * 'gpdvtfInfoType'------ * 'gpdvtfInferred'------ * 'gpdvtfCustomTag'-googlePrivacyDlpV2TaggedField-    :: GooglePrivacyDlpV2TaggedField-googlePrivacyDlpV2TaggedField =-    GooglePrivacyDlpV2TaggedField'-    { _gpdvtfField = Nothing-    , _gpdvtfInfoType = Nothing-    , _gpdvtfInferred = Nothing-    , _gpdvtfCustomTag = Nothing-    }---- | Identifies the column. [required]-gpdvtfField :: Lens' GooglePrivacyDlpV2TaggedField (Maybe GooglePrivacyDlpV2FieldId)-gpdvtfField-  = lens _gpdvtfField (\ s a -> s{_gpdvtfField = a})---- | A column can be tagged with a InfoType to use the relevant public--- dataset as a statistical model of population, if available. We currently--- support US ZIP codes, region codes, ages and genders. To--- programmatically obtain the list of supported InfoTypes, use--- ListInfoTypes with the supported_by=RISK_ANALYSIS filter.-gpdvtfInfoType :: Lens' GooglePrivacyDlpV2TaggedField (Maybe GooglePrivacyDlpV2InfoType)-gpdvtfInfoType-  = lens _gpdvtfInfoType-      (\ s a -> s{_gpdvtfInfoType = a})---- | If no semantic tag is indicated, we infer the statistical model from the--- distribution of values in the input data-gpdvtfInferred :: Lens' GooglePrivacyDlpV2TaggedField (Maybe GoogleProtobufEmpty)-gpdvtfInferred-  = lens _gpdvtfInferred-      (\ s a -> s{_gpdvtfInferred = a})---- | A column can be tagged with a custom tag. In this case, the user must--- indicate an auxiliary table that contains statistical information on the--- possible values of this column (below).-gpdvtfCustomTag :: Lens' GooglePrivacyDlpV2TaggedField (Maybe Text)-gpdvtfCustomTag-  = lens _gpdvtfCustomTag-      (\ s a -> s{_gpdvtfCustomTag = a})--instance FromJSON GooglePrivacyDlpV2TaggedField where-        parseJSON-          = withObject "GooglePrivacyDlpV2TaggedField"-              (\ o ->-                 GooglePrivacyDlpV2TaggedField' <$>-                   (o .:? "field") <*> (o .:? "infoType") <*>-                     (o .:? "inferred")-                     <*> (o .:? "customTag"))--instance ToJSON GooglePrivacyDlpV2TaggedField where-        toJSON GooglePrivacyDlpV2TaggedField'{..}-          = object-              (catMaybes-                 [("field" .=) <$> _gpdvtfField,-                  ("infoType" .=) <$> _gpdvtfInfoType,-                  ("inferred" .=) <$> _gpdvtfInferred,-                  ("customTag" .=) <$> _gpdvtfCustomTag])---- | Options defining BigQuery table and row identifiers.------ /See:/ 'googlePrivacyDlpV2BigQueryOptions' smart constructor.-data GooglePrivacyDlpV2BigQueryOptions = GooglePrivacyDlpV2BigQueryOptions'-    { _gpdvbqoRowsLimit         :: !(Maybe (Textual Int64))-    , _gpdvbqoRowsLimitPercent  :: !(Maybe (Textual Int32))-    , _gpdvbqoTableReference    :: !(Maybe GooglePrivacyDlpV2BigQueryTable)-    , _gpdvbqoIdentifyingFields :: !(Maybe [GooglePrivacyDlpV2FieldId])-    , _gpdvbqoExcludedFields    :: !(Maybe [GooglePrivacyDlpV2FieldId])-    , _gpdvbqoSampleMethod      :: !(Maybe GooglePrivacyDlpV2BigQueryOptionsSampleMethod)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2BigQueryOptions' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvbqoRowsLimit'------ * 'gpdvbqoRowsLimitPercent'------ * 'gpdvbqoTableReference'------ * 'gpdvbqoIdentifyingFields'------ * 'gpdvbqoExcludedFields'------ * 'gpdvbqoSampleMethod'-googlePrivacyDlpV2BigQueryOptions-    :: GooglePrivacyDlpV2BigQueryOptions-googlePrivacyDlpV2BigQueryOptions =-    GooglePrivacyDlpV2BigQueryOptions'-    { _gpdvbqoRowsLimit = Nothing-    , _gpdvbqoRowsLimitPercent = Nothing-    , _gpdvbqoTableReference = Nothing-    , _gpdvbqoIdentifyingFields = Nothing-    , _gpdvbqoExcludedFields = Nothing-    , _gpdvbqoSampleMethod = Nothing-    }---- | Max number of rows to scan. If the table has more rows than this value,--- the rest of the rows are omitted. If not set, or if set to 0, all rows--- will be scanned. Only one of rows_limit and rows_limit_percent can be--- specified. Cannot be used in conjunction with TimespanConfig.-gpdvbqoRowsLimit :: Lens' GooglePrivacyDlpV2BigQueryOptions (Maybe Int64)-gpdvbqoRowsLimit-  = lens _gpdvbqoRowsLimit-      (\ s a -> s{_gpdvbqoRowsLimit = a})-      . mapping _Coerce---- | Max percentage of rows to scan. The rest are omitted. The number of rows--- scanned is rounded down. Must be between 0 and 100, inclusively. Both 0--- and 100 means no limit. Defaults to 0. Only one of rows_limit and--- rows_limit_percent can be specified. Cannot be used in conjunction with--- TimespanConfig.-gpdvbqoRowsLimitPercent :: Lens' GooglePrivacyDlpV2BigQueryOptions (Maybe Int32)-gpdvbqoRowsLimitPercent-  = lens _gpdvbqoRowsLimitPercent-      (\ s a -> s{_gpdvbqoRowsLimitPercent = a})-      . mapping _Coerce---- | Complete BigQuery table reference.-gpdvbqoTableReference :: Lens' GooglePrivacyDlpV2BigQueryOptions (Maybe GooglePrivacyDlpV2BigQueryTable)-gpdvbqoTableReference-  = lens _gpdvbqoTableReference-      (\ s a -> s{_gpdvbqoTableReference = a})---- | References to fields uniquely identifying rows within the table. Nested--- fields in the format, like \`person.birthdate.year\`, are allowed.-gpdvbqoIdentifyingFields :: Lens' GooglePrivacyDlpV2BigQueryOptions [GooglePrivacyDlpV2FieldId]-gpdvbqoIdentifyingFields-  = lens _gpdvbqoIdentifyingFields-      (\ s a -> s{_gpdvbqoIdentifyingFields = a})-      . _Default-      . _Coerce---- | References to fields excluded from scanning. This allows you to skip--- inspection of entire columns which you know have no findings.-gpdvbqoExcludedFields :: Lens' GooglePrivacyDlpV2BigQueryOptions [GooglePrivacyDlpV2FieldId]-gpdvbqoExcludedFields-  = lens _gpdvbqoExcludedFields-      (\ s a -> s{_gpdvbqoExcludedFields = a})-      . _Default-      . _Coerce--gpdvbqoSampleMethod :: Lens' GooglePrivacyDlpV2BigQueryOptions (Maybe GooglePrivacyDlpV2BigQueryOptionsSampleMethod)-gpdvbqoSampleMethod-  = lens _gpdvbqoSampleMethod-      (\ s a -> s{_gpdvbqoSampleMethod = a})--instance FromJSON GooglePrivacyDlpV2BigQueryOptions-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2BigQueryOptions"-              (\ o ->-                 GooglePrivacyDlpV2BigQueryOptions' <$>-                   (o .:? "rowsLimit") <*> (o .:? "rowsLimitPercent")-                     <*> (o .:? "tableReference")-                     <*> (o .:? "identifyingFields" .!= mempty)-                     <*> (o .:? "excludedFields" .!= mempty)-                     <*> (o .:? "sampleMethod"))--instance ToJSON GooglePrivacyDlpV2BigQueryOptions-         where-        toJSON GooglePrivacyDlpV2BigQueryOptions'{..}-          = object-              (catMaybes-                 [("rowsLimit" .=) <$> _gpdvbqoRowsLimit,-                  ("rowsLimitPercent" .=) <$> _gpdvbqoRowsLimitPercent,-                  ("tableReference" .=) <$> _gpdvbqoTableReference,-                  ("identifyingFields" .=) <$>-                    _gpdvbqoIdentifyingFields,-                  ("excludedFields" .=) <$> _gpdvbqoExcludedFields,-                  ("sampleMethod" .=) <$> _gpdvbqoSampleMethod])---- | A tuple of values for the quasi-identifier columns.------ /See:/ 'googlePrivacyDlpV2KMapEstimationQuasiIdValues' smart constructor.-data GooglePrivacyDlpV2KMapEstimationQuasiIdValues = GooglePrivacyDlpV2KMapEstimationQuasiIdValues'-    { _gpdvkmeqivEstimatedAnonymity :: !(Maybe (Textual Int64))-    , _gpdvkmeqivQuasiIdsValues     :: !(Maybe [GooglePrivacyDlpV2Value])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2KMapEstimationQuasiIdValues' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvkmeqivEstimatedAnonymity'------ * 'gpdvkmeqivQuasiIdsValues'-googlePrivacyDlpV2KMapEstimationQuasiIdValues-    :: GooglePrivacyDlpV2KMapEstimationQuasiIdValues-googlePrivacyDlpV2KMapEstimationQuasiIdValues =-    GooglePrivacyDlpV2KMapEstimationQuasiIdValues'-    { _gpdvkmeqivEstimatedAnonymity = Nothing-    , _gpdvkmeqivQuasiIdsValues = Nothing-    }---- | The estimated anonymity for these quasi-identifier values.-gpdvkmeqivEstimatedAnonymity :: Lens' GooglePrivacyDlpV2KMapEstimationQuasiIdValues (Maybe Int64)-gpdvkmeqivEstimatedAnonymity-  = lens _gpdvkmeqivEstimatedAnonymity-      (\ s a -> s{_gpdvkmeqivEstimatedAnonymity = a})-      . mapping _Coerce---- | The quasi-identifier values.-gpdvkmeqivQuasiIdsValues :: Lens' GooglePrivacyDlpV2KMapEstimationQuasiIdValues [GooglePrivacyDlpV2Value]-gpdvkmeqivQuasiIdsValues-  = lens _gpdvkmeqivQuasiIdsValues-      (\ s a -> s{_gpdvkmeqivQuasiIdsValues = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2KMapEstimationQuasiIdValues where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2KMapEstimationQuasiIdValues"-              (\ o ->-                 GooglePrivacyDlpV2KMapEstimationQuasiIdValues' <$>-                   (o .:? "estimatedAnonymity") <*>-                     (o .:? "quasiIdsValues" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2KMapEstimationQuasiIdValues where-        toJSON-          GooglePrivacyDlpV2KMapEstimationQuasiIdValues'{..}-          = object-              (catMaybes-                 [("estimatedAnonymity" .=) <$>-                    _gpdvkmeqivEstimatedAnonymity,-                  ("quasiIdsValues" .=) <$> _gpdvkmeqivQuasiIdsValues])---- | List of exclude infoTypes.------ /See:/ 'googlePrivacyDlpV2ExcludeInfoTypes' smart constructor.-newtype GooglePrivacyDlpV2ExcludeInfoTypes = GooglePrivacyDlpV2ExcludeInfoTypes'-    { _gpdveitInfoTypes :: Maybe [GooglePrivacyDlpV2InfoType]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ExcludeInfoTypes' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdveitInfoTypes'-googlePrivacyDlpV2ExcludeInfoTypes-    :: GooglePrivacyDlpV2ExcludeInfoTypes-googlePrivacyDlpV2ExcludeInfoTypes =-    GooglePrivacyDlpV2ExcludeInfoTypes'-    { _gpdveitInfoTypes = Nothing-    }---- | InfoType list in ExclusionRule rule drops a finding when it overlaps or--- contained within with a finding of an infoType from this list. For--- example, for \`InspectionRuleSet.info_types\` containing--- \"PHONE_NUMBER\"\` and \`exclusion_rule\` containing--- \`exclude_info_types.info_types\` with \"EMAIL_ADDRESS\" the phone--- number findings are dropped if they overlap with EMAIL_ADDRESS finding.--- That leads to \"555-222-2222\'example.org\" to generate only a single--- finding, namely email address.-gpdveitInfoTypes :: Lens' GooglePrivacyDlpV2ExcludeInfoTypes [GooglePrivacyDlpV2InfoType]-gpdveitInfoTypes-  = lens _gpdveitInfoTypes-      (\ s a -> s{_gpdveitInfoTypes = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2ExcludeInfoTypes-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2ExcludeInfoTypes"-              (\ o ->-                 GooglePrivacyDlpV2ExcludeInfoTypes' <$>-                   (o .:? "infoTypes" .!= mempty))--instance ToJSON GooglePrivacyDlpV2ExcludeInfoTypes-         where-        toJSON GooglePrivacyDlpV2ExcludeInfoTypes'{..}-          = object-              (catMaybes [("infoTypes" .=) <$> _gpdveitInfoTypes])---- | Request message for CreateInspectTemplate.------ /See:/ 'googlePrivacyDlpV2CreateInspectTemplateRequest' smart constructor.-data GooglePrivacyDlpV2CreateInspectTemplateRequest = GooglePrivacyDlpV2CreateInspectTemplateRequest'-    { _gpdvcitrTemplateId      :: !(Maybe Text)-    , _gpdvcitrInspectTemplate :: !(Maybe GooglePrivacyDlpV2InspectTemplate)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CreateInspectTemplateRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcitrTemplateId'------ * 'gpdvcitrInspectTemplate'-googlePrivacyDlpV2CreateInspectTemplateRequest-    :: GooglePrivacyDlpV2CreateInspectTemplateRequest-googlePrivacyDlpV2CreateInspectTemplateRequest =-    GooglePrivacyDlpV2CreateInspectTemplateRequest'-    { _gpdvcitrTemplateId = Nothing-    , _gpdvcitrInspectTemplate = Nothing-    }---- | The template id can contain uppercase and lowercase letters, numbers,--- and hyphens; that is, it must match the regular expression:--- \`[a-zA-Z\\\\d-]+\`. The maximum length is 100 characters. Can be empty--- to allow the system to generate one.-gpdvcitrTemplateId :: Lens' GooglePrivacyDlpV2CreateInspectTemplateRequest (Maybe Text)-gpdvcitrTemplateId-  = lens _gpdvcitrTemplateId-      (\ s a -> s{_gpdvcitrTemplateId = a})---- | The InspectTemplate to create.-gpdvcitrInspectTemplate :: Lens' GooglePrivacyDlpV2CreateInspectTemplateRequest (Maybe GooglePrivacyDlpV2InspectTemplate)-gpdvcitrInspectTemplate-  = lens _gpdvcitrInspectTemplate-      (\ s a -> s{_gpdvcitrInspectTemplate = a})--instance FromJSON-         GooglePrivacyDlpV2CreateInspectTemplateRequest where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2CreateInspectTemplateRequest"-              (\ o ->-                 GooglePrivacyDlpV2CreateInspectTemplateRequest' <$>-                   (o .:? "templateId") <*> (o .:? "inspectTemplate"))--instance ToJSON-         GooglePrivacyDlpV2CreateInspectTemplateRequest where-        toJSON-          GooglePrivacyDlpV2CreateInspectTemplateRequest'{..}-          = object-              (catMaybes-                 [("templateId" .=) <$> _gpdvcitrTemplateId,-                  ("inspectTemplate" .=) <$> _gpdvcitrInspectTemplate])---- | A (kind, ID\/name) pair used to construct a key path. If either name or--- ID is set, the element is complete. If neither is set, the element is--- incomplete.------ /See:/ 'googlePrivacyDlpV2PathElement' smart constructor.-data GooglePrivacyDlpV2PathElement = GooglePrivacyDlpV2PathElement'-    { _gpdvpeKind :: !(Maybe Text)-    , _gpdvpeName :: !(Maybe Text)-    , _gpdvpeId   :: !(Maybe (Textual Int64))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2PathElement' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvpeKind'------ * 'gpdvpeName'------ * 'gpdvpeId'-googlePrivacyDlpV2PathElement-    :: GooglePrivacyDlpV2PathElement-googlePrivacyDlpV2PathElement =-    GooglePrivacyDlpV2PathElement'-    { _gpdvpeKind = Nothing-    , _gpdvpeName = Nothing-    , _gpdvpeId = Nothing-    }---- | The kind of the entity. A kind matching regex \`__.*__\` is--- reserved\/read-only. A kind must not contain more than 1500 bytes when--- UTF-8 encoded. Cannot be \`\"\"\`.-gpdvpeKind :: Lens' GooglePrivacyDlpV2PathElement (Maybe Text)-gpdvpeKind-  = lens _gpdvpeKind (\ s a -> s{_gpdvpeKind = a})---- | The name of the entity. A name matching regex \`__.*__\` is--- reserved\/read-only. A name must not be more than 1500 bytes when UTF-8--- encoded. Cannot be \`\"\"\`.-gpdvpeName :: Lens' GooglePrivacyDlpV2PathElement (Maybe Text)-gpdvpeName-  = lens _gpdvpeName (\ s a -> s{_gpdvpeName = a})---- | The auto-allocated ID of the entity. Never equal to zero. Values less--- than zero are discouraged and may not be supported in the future.-gpdvpeId :: Lens' GooglePrivacyDlpV2PathElement (Maybe Int64)-gpdvpeId-  = lens _gpdvpeId (\ s a -> s{_gpdvpeId = a}) .-      mapping _Coerce--instance FromJSON GooglePrivacyDlpV2PathElement where-        parseJSON-          = withObject "GooglePrivacyDlpV2PathElement"-              (\ o ->-                 GooglePrivacyDlpV2PathElement' <$>-                   (o .:? "kind") <*> (o .:? "name") <*> (o .:? "id"))--instance ToJSON GooglePrivacyDlpV2PathElement where-        toJSON GooglePrivacyDlpV2PathElement'{..}-          = object-              (catMaybes-                 [("kind" .=) <$> _gpdvpeKind,-                  ("name" .=) <$> _gpdvpeName,-                  ("id" .=) <$> _gpdvpeId])---- | Result of the δ-presence computation. Note that these results are an--- estimation, not exact values.------ /See:/ 'googlePrivacyDlpV2DeltaPresenceEstimationResult' smart constructor.-newtype GooglePrivacyDlpV2DeltaPresenceEstimationResult = GooglePrivacyDlpV2DeltaPresenceEstimationResult'-    { _gpdvdperDeltaPresenceEstimationHistogram :: Maybe [GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DeltaPresenceEstimationResult' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdperDeltaPresenceEstimationHistogram'-googlePrivacyDlpV2DeltaPresenceEstimationResult-    :: GooglePrivacyDlpV2DeltaPresenceEstimationResult-googlePrivacyDlpV2DeltaPresenceEstimationResult =-    GooglePrivacyDlpV2DeltaPresenceEstimationResult'-    { _gpdvdperDeltaPresenceEstimationHistogram = Nothing-    }---- | The intervals [min_probability, max_probability) do not overlap. If a--- value doesn\'t correspond to any such interval, the associated frequency--- is zero. For example, the following records: {min_probability: 0,--- max_probability: 0.1, frequency: 17} {min_probability: 0.2,--- max_probability: 0.3, frequency: 42} {min_probability: 0.3,--- max_probability: 0.4, frequency: 99} mean that there are no record with--- an estimated probability in [0.1, 0.2) nor larger or equal to 0.4.-gpdvdperDeltaPresenceEstimationHistogram :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationResult [GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket]-gpdvdperDeltaPresenceEstimationHistogram-  = lens _gpdvdperDeltaPresenceEstimationHistogram-      (\ s a ->-         s{_gpdvdperDeltaPresenceEstimationHistogram = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2DeltaPresenceEstimationResult where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2DeltaPresenceEstimationResult"-              (\ o ->-                 GooglePrivacyDlpV2DeltaPresenceEstimationResult' <$>-                   (o .:? "deltaPresenceEstimationHistogram" .!=-                      mempty))--instance ToJSON-         GooglePrivacyDlpV2DeltaPresenceEstimationResult where-        toJSON-          GooglePrivacyDlpV2DeltaPresenceEstimationResult'{..}-          = object-              (catMaybes-                 [("deltaPresenceEstimationHistogram" .=) <$>-                    _gpdvdperDeltaPresenceEstimationHistogram])------- /See:/ 'googlePrivacyDlpV2InspectJobConfig' smart constructor.-data GooglePrivacyDlpV2InspectJobConfig = GooglePrivacyDlpV2InspectJobConfig'-    { _gpdvijcActions             :: !(Maybe [GooglePrivacyDlpV2Action])-    , _gpdvijcStorageConfig       :: !(Maybe GooglePrivacyDlpV2StorageConfig)-    , _gpdvijcInspectConfig       :: !(Maybe GooglePrivacyDlpV2InspectConfig)-    , _gpdvijcInspectTemplateName :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InspectJobConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvijcActions'------ * 'gpdvijcStorageConfig'------ * 'gpdvijcInspectConfig'------ * 'gpdvijcInspectTemplateName'-googlePrivacyDlpV2InspectJobConfig-    :: GooglePrivacyDlpV2InspectJobConfig-googlePrivacyDlpV2InspectJobConfig =-    GooglePrivacyDlpV2InspectJobConfig'-    { _gpdvijcActions = Nothing-    , _gpdvijcStorageConfig = Nothing-    , _gpdvijcInspectConfig = Nothing-    , _gpdvijcInspectTemplateName = Nothing-    }---- | Actions to execute at the completion of the job. Are executed in the--- order provided.-gpdvijcActions :: Lens' GooglePrivacyDlpV2InspectJobConfig [GooglePrivacyDlpV2Action]-gpdvijcActions-  = lens _gpdvijcActions-      (\ s a -> s{_gpdvijcActions = a})-      . _Default-      . _Coerce---- | The data to scan.-gpdvijcStorageConfig :: Lens' GooglePrivacyDlpV2InspectJobConfig (Maybe GooglePrivacyDlpV2StorageConfig)-gpdvijcStorageConfig-  = lens _gpdvijcStorageConfig-      (\ s a -> s{_gpdvijcStorageConfig = a})---- | How and what to scan for.-gpdvijcInspectConfig :: Lens' GooglePrivacyDlpV2InspectJobConfig (Maybe GooglePrivacyDlpV2InspectConfig)-gpdvijcInspectConfig-  = lens _gpdvijcInspectConfig-      (\ s a -> s{_gpdvijcInspectConfig = a})---- | If provided, will be used as the default for all values in--- InspectConfig. \`inspect_config\` will be merged into the values--- persisted as part of the template.-gpdvijcInspectTemplateName :: Lens' GooglePrivacyDlpV2InspectJobConfig (Maybe Text)-gpdvijcInspectTemplateName-  = lens _gpdvijcInspectTemplateName-      (\ s a -> s{_gpdvijcInspectTemplateName = a})--instance FromJSON GooglePrivacyDlpV2InspectJobConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2InspectJobConfig"-              (\ o ->-                 GooglePrivacyDlpV2InspectJobConfig' <$>-                   (o .:? "actions" .!= mempty) <*>-                     (o .:? "storageConfig")-                     <*> (o .:? "inspectConfig")-                     <*> (o .:? "inspectTemplateName"))--instance ToJSON GooglePrivacyDlpV2InspectJobConfig-         where-        toJSON GooglePrivacyDlpV2InspectJobConfig'{..}-          = object-              (catMaybes-                 [("actions" .=) <$> _gpdvijcActions,-                  ("storageConfig" .=) <$> _gpdvijcStorageConfig,-                  ("inspectConfig" .=) <$> _gpdvijcInspectConfig,-                  ("inspectTemplateName" .=) <$>-                    _gpdvijcInspectTemplateName])---- | A reference to a StoredInfoType to use with scanning.------ /See:/ 'googlePrivacyDlpV2StoredType' smart constructor.-data GooglePrivacyDlpV2StoredType = GooglePrivacyDlpV2StoredType'-    { _gpdvstName       :: !(Maybe Text)-    , _gpdvstCreateTime :: !(Maybe DateTime')-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2StoredType' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvstName'------ * 'gpdvstCreateTime'-googlePrivacyDlpV2StoredType-    :: GooglePrivacyDlpV2StoredType-googlePrivacyDlpV2StoredType =-    GooglePrivacyDlpV2StoredType'-    { _gpdvstName = Nothing-    , _gpdvstCreateTime = Nothing-    }---- | Resource name of the requested \`StoredInfoType\`, for example--- \`organizations\/433245324\/storedInfoTypes\/432452342\` or--- \`projects\/project-id\/storedInfoTypes\/432452342\`.-gpdvstName :: Lens' GooglePrivacyDlpV2StoredType (Maybe Text)-gpdvstName-  = lens _gpdvstName (\ s a -> s{_gpdvstName = a})---- | Timestamp indicating when the version of the \`StoredInfoType\` used for--- inspection was created. Output-only field, populated by the system.-gpdvstCreateTime :: Lens' GooglePrivacyDlpV2StoredType (Maybe UTCTime)-gpdvstCreateTime-  = lens _gpdvstCreateTime-      (\ s a -> s{_gpdvstCreateTime = a})-      . mapping _DateTime--instance FromJSON GooglePrivacyDlpV2StoredType where-        parseJSON-          = withObject "GooglePrivacyDlpV2StoredType"-              (\ o ->-                 GooglePrivacyDlpV2StoredType' <$>-                   (o .:? "name") <*> (o .:? "createTime"))--instance ToJSON GooglePrivacyDlpV2StoredType where-        toJSON GooglePrivacyDlpV2StoredType'{..}-          = object-              (catMaybes-                 [("name" .=) <$> _gpdvstName,-                  ("createTime" .=) <$> _gpdvstCreateTime])---- | The transformation to apply to the field.------ /See:/ 'googlePrivacyDlpV2FieldTransformation' smart constructor.-data GooglePrivacyDlpV2FieldTransformation = GooglePrivacyDlpV2FieldTransformation'-    { _gpdvftInfoTypeTransformations :: !(Maybe GooglePrivacyDlpV2InfoTypeTransformations)-    , _gpdvftPrimitiveTransformation :: !(Maybe GooglePrivacyDlpV2PrimitiveTransformation)-    , _gpdvftCondition               :: !(Maybe GooglePrivacyDlpV2RecordCondition)-    , _gpdvftFields                  :: !(Maybe [GooglePrivacyDlpV2FieldId])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2FieldTransformation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvftInfoTypeTransformations'------ * 'gpdvftPrimitiveTransformation'------ * 'gpdvftCondition'------ * 'gpdvftFields'-googlePrivacyDlpV2FieldTransformation-    :: GooglePrivacyDlpV2FieldTransformation-googlePrivacyDlpV2FieldTransformation =-    GooglePrivacyDlpV2FieldTransformation'-    { _gpdvftInfoTypeTransformations = Nothing-    , _gpdvftPrimitiveTransformation = Nothing-    , _gpdvftCondition = Nothing-    , _gpdvftFields = Nothing-    }---- | Treat the contents of the field as free text, and selectively transform--- content that matches an \`InfoType\`.-gpdvftInfoTypeTransformations :: Lens' GooglePrivacyDlpV2FieldTransformation (Maybe GooglePrivacyDlpV2InfoTypeTransformations)-gpdvftInfoTypeTransformations-  = lens _gpdvftInfoTypeTransformations-      (\ s a -> s{_gpdvftInfoTypeTransformations = a})---- | Apply the transformation to the entire field.-gpdvftPrimitiveTransformation :: Lens' GooglePrivacyDlpV2FieldTransformation (Maybe GooglePrivacyDlpV2PrimitiveTransformation)-gpdvftPrimitiveTransformation-  = lens _gpdvftPrimitiveTransformation-      (\ s a -> s{_gpdvftPrimitiveTransformation = a})---- | Only apply the transformation if the condition evaluates to true for the--- given \`RecordCondition\`. The conditions are allowed to reference--- fields that are not used in the actual transformation. [optional]--- Example Use Cases: - Apply a different bucket transformation to an age--- column if the zip code column for the same record is within a specific--- range. - Redact a field if the date of birth field is greater than 85.-gpdvftCondition :: Lens' GooglePrivacyDlpV2FieldTransformation (Maybe GooglePrivacyDlpV2RecordCondition)-gpdvftCondition-  = lens _gpdvftCondition-      (\ s a -> s{_gpdvftCondition = a})---- | Input field(s) to apply the transformation to. [required]-gpdvftFields :: Lens' GooglePrivacyDlpV2FieldTransformation [GooglePrivacyDlpV2FieldId]-gpdvftFields-  = lens _gpdvftFields (\ s a -> s{_gpdvftFields = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2FieldTransformation where-        parseJSON-          = withObject "GooglePrivacyDlpV2FieldTransformation"-              (\ o ->-                 GooglePrivacyDlpV2FieldTransformation' <$>-                   (o .:? "infoTypeTransformations") <*>-                     (o .:? "primitiveTransformation")-                     <*> (o .:? "condition")-                     <*> (o .:? "fields" .!= mempty))--instance ToJSON GooglePrivacyDlpV2FieldTransformation-         where-        toJSON GooglePrivacyDlpV2FieldTransformation'{..}-          = object-              (catMaybes-                 [("infoTypeTransformations" .=) <$>-                    _gpdvftInfoTypeTransformations,-                  ("primitiveTransformation" .=) <$>-                    _gpdvftPrimitiveTransformation,-                  ("condition" .=) <$> _gpdvftCondition,-                  ("fields" .=) <$> _gpdvftFields])---- | The rule that adjusts the likelihood of findings within a certain--- proximity of hotwords.------ /See:/ 'googlePrivacyDlpV2HotwordRule' smart constructor.-data GooglePrivacyDlpV2HotwordRule = GooglePrivacyDlpV2HotwordRule'-    { _gpdvhrProximity            :: !(Maybe GooglePrivacyDlpV2Proximity)-    , _gpdvhrLikelihoodAdjustment :: !(Maybe GooglePrivacyDlpV2LikelihoodAdjustment)-    , _gpdvhrHotwordRegex         :: !(Maybe GooglePrivacyDlpV2Regex)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2HotwordRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvhrProximity'------ * 'gpdvhrLikelihoodAdjustment'------ * 'gpdvhrHotwordRegex'-googlePrivacyDlpV2HotwordRule-    :: GooglePrivacyDlpV2HotwordRule-googlePrivacyDlpV2HotwordRule =-    GooglePrivacyDlpV2HotwordRule'-    { _gpdvhrProximity = Nothing-    , _gpdvhrLikelihoodAdjustment = Nothing-    , _gpdvhrHotwordRegex = Nothing-    }---- | Proximity of the finding within which the entire hotword must reside.--- The total length of the window cannot exceed 1000 characters. Note that--- the finding itself will be included in the window, so that hotwords may--- be used to match substrings of the finding itself. For example, the--- certainty of a phone number regex \"\\(\\d{3}\\) \\d{3}-\\d{4}\" could--- be adjusted upwards if the area code is known to be the local area code--- of a company office using the hotword regex \"\\(xxx\\)\", where \"xxx\"--- is the area code in question.-gpdvhrProximity :: Lens' GooglePrivacyDlpV2HotwordRule (Maybe GooglePrivacyDlpV2Proximity)-gpdvhrProximity-  = lens _gpdvhrProximity-      (\ s a -> s{_gpdvhrProximity = a})---- | Likelihood adjustment to apply to all matching findings.-gpdvhrLikelihoodAdjustment :: Lens' GooglePrivacyDlpV2HotwordRule (Maybe GooglePrivacyDlpV2LikelihoodAdjustment)-gpdvhrLikelihoodAdjustment-  = lens _gpdvhrLikelihoodAdjustment-      (\ s a -> s{_gpdvhrLikelihoodAdjustment = a})---- | Regular expression pattern defining what qualifies as a hotword.-gpdvhrHotwordRegex :: Lens' GooglePrivacyDlpV2HotwordRule (Maybe GooglePrivacyDlpV2Regex)-gpdvhrHotwordRegex-  = lens _gpdvhrHotwordRegex-      (\ s a -> s{_gpdvhrHotwordRegex = a})--instance FromJSON GooglePrivacyDlpV2HotwordRule where-        parseJSON-          = withObject "GooglePrivacyDlpV2HotwordRule"-              (\ o ->-                 GooglePrivacyDlpV2HotwordRule' <$>-                   (o .:? "proximity") <*>-                     (o .:? "likelihoodAdjustment")-                     <*> (o .:? "hotwordRegex"))--instance ToJSON GooglePrivacyDlpV2HotwordRule where-        toJSON GooglePrivacyDlpV2HotwordRule'{..}-          = object-              (catMaybes-                 [("proximity" .=) <$> _gpdvhrProximity,-                  ("likelihoodAdjustment" .=) <$>-                    _gpdvhrLikelihoodAdjustment,-                  ("hotwordRegex" .=) <$> _gpdvhrHotwordRegex])---- | Request to search for potentially sensitive info in an image and redact--- it by covering it with a colored rectangle.------ /See:/ 'googlePrivacyDlpV2RedactImageRequest' smart constructor.-data GooglePrivacyDlpV2RedactImageRequest = GooglePrivacyDlpV2RedactImageRequest'-    { _gpdvrirIncludeFindings       :: !(Maybe Bool)-    , _gpdvrirInspectConfig         :: !(Maybe GooglePrivacyDlpV2InspectConfig)-    , _gpdvrirByteItem              :: !(Maybe GooglePrivacyDlpV2ByteContentItem)-    , _gpdvrirImageRedactionConfigs :: !(Maybe [GooglePrivacyDlpV2ImageRedactionConfig])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2RedactImageRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrirIncludeFindings'------ * 'gpdvrirInspectConfig'------ * 'gpdvrirByteItem'------ * 'gpdvrirImageRedactionConfigs'-googlePrivacyDlpV2RedactImageRequest-    :: GooglePrivacyDlpV2RedactImageRequest-googlePrivacyDlpV2RedactImageRequest =-    GooglePrivacyDlpV2RedactImageRequest'-    { _gpdvrirIncludeFindings = Nothing-    , _gpdvrirInspectConfig = Nothing-    , _gpdvrirByteItem = Nothing-    , _gpdvrirImageRedactionConfigs = Nothing-    }---- | Whether the response should include findings along with the redacted--- image.-gpdvrirIncludeFindings :: Lens' GooglePrivacyDlpV2RedactImageRequest (Maybe Bool)-gpdvrirIncludeFindings-  = lens _gpdvrirIncludeFindings-      (\ s a -> s{_gpdvrirIncludeFindings = a})---- | Configuration for the inspector.-gpdvrirInspectConfig :: Lens' GooglePrivacyDlpV2RedactImageRequest (Maybe GooglePrivacyDlpV2InspectConfig)-gpdvrirInspectConfig-  = lens _gpdvrirInspectConfig-      (\ s a -> s{_gpdvrirInspectConfig = a})---- | The content must be PNG, JPEG, SVG or BMP.-gpdvrirByteItem :: Lens' GooglePrivacyDlpV2RedactImageRequest (Maybe GooglePrivacyDlpV2ByteContentItem)-gpdvrirByteItem-  = lens _gpdvrirByteItem-      (\ s a -> s{_gpdvrirByteItem = a})---- | The configuration for specifying what content to redact from images.-gpdvrirImageRedactionConfigs :: Lens' GooglePrivacyDlpV2RedactImageRequest [GooglePrivacyDlpV2ImageRedactionConfig]-gpdvrirImageRedactionConfigs-  = lens _gpdvrirImageRedactionConfigs-      (\ s a -> s{_gpdvrirImageRedactionConfigs = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2RedactImageRequest where-        parseJSON-          = withObject "GooglePrivacyDlpV2RedactImageRequest"-              (\ o ->-                 GooglePrivacyDlpV2RedactImageRequest' <$>-                   (o .:? "includeFindings") <*> (o .:? "inspectConfig")-                     <*> (o .:? "byteItem")-                     <*> (o .:? "imageRedactionConfigs" .!= mempty))--instance ToJSON GooglePrivacyDlpV2RedactImageRequest-         where-        toJSON GooglePrivacyDlpV2RedactImageRequest'{..}-          = object-              (catMaybes-                 [("includeFindings" .=) <$> _gpdvrirIncludeFindings,-                  ("inspectConfig" .=) <$> _gpdvrirInspectConfig,-                  ("byteItem" .=) <$> _gpdvrirByteItem,-                  ("imageRedactionConfigs" .=) <$>-                    _gpdvrirImageRedactionConfigs])------- /See:/ 'googlePrivacyDlpV2FindingLimits' smart constructor.-data GooglePrivacyDlpV2FindingLimits = GooglePrivacyDlpV2FindingLimits'-    { _gpdvflMaxFindingsPerItem     :: !(Maybe (Textual Int32))-    , _gpdvflMaxFindingsPerInfoType :: !(Maybe [GooglePrivacyDlpV2InfoTypeLimit])-    , _gpdvflMaxFindingsPerRequest  :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2FindingLimits' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvflMaxFindingsPerItem'------ * 'gpdvflMaxFindingsPerInfoType'------ * 'gpdvflMaxFindingsPerRequest'-googlePrivacyDlpV2FindingLimits-    :: GooglePrivacyDlpV2FindingLimits-googlePrivacyDlpV2FindingLimits =-    GooglePrivacyDlpV2FindingLimits'-    { _gpdvflMaxFindingsPerItem = Nothing-    , _gpdvflMaxFindingsPerInfoType = Nothing-    , _gpdvflMaxFindingsPerRequest = Nothing-    }---- | Max number of findings that will be returned for each item scanned. When--- set within \`InspectDataSourceRequest\`, the maximum returned is 1000--- regardless if this is set higher. When set within--- \`InspectContentRequest\`, this field is ignored.-gpdvflMaxFindingsPerItem :: Lens' GooglePrivacyDlpV2FindingLimits (Maybe Int32)-gpdvflMaxFindingsPerItem-  = lens _gpdvflMaxFindingsPerItem-      (\ s a -> s{_gpdvflMaxFindingsPerItem = a})-      . mapping _Coerce---- | Configuration of findings limit given for specified infoTypes.-gpdvflMaxFindingsPerInfoType :: Lens' GooglePrivacyDlpV2FindingLimits [GooglePrivacyDlpV2InfoTypeLimit]-gpdvflMaxFindingsPerInfoType-  = lens _gpdvflMaxFindingsPerInfoType-      (\ s a -> s{_gpdvflMaxFindingsPerInfoType = a})-      . _Default-      . _Coerce---- | Max number of findings that will be returned per request\/job. When set--- within \`InspectContentRequest\`, the maximum returned is 1000--- regardless if this is set higher.-gpdvflMaxFindingsPerRequest :: Lens' GooglePrivacyDlpV2FindingLimits (Maybe Int32)-gpdvflMaxFindingsPerRequest-  = lens _gpdvflMaxFindingsPerRequest-      (\ s a -> s{_gpdvflMaxFindingsPerRequest = a})-      . mapping _Coerce--instance FromJSON GooglePrivacyDlpV2FindingLimits-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2FindingLimits"-              (\ o ->-                 GooglePrivacyDlpV2FindingLimits' <$>-                   (o .:? "maxFindingsPerItem") <*>-                     (o .:? "maxFindingsPerInfoType" .!= mempty)-                     <*> (o .:? "maxFindingsPerRequest"))--instance ToJSON GooglePrivacyDlpV2FindingLimits where-        toJSON GooglePrivacyDlpV2FindingLimits'{..}-          = object-              (catMaybes-                 [("maxFindingsPerItem" .=) <$>-                    _gpdvflMaxFindingsPerItem,-                  ("maxFindingsPerInfoType" .=) <$>-                    _gpdvflMaxFindingsPerInfoType,-                  ("maxFindingsPerRequest" .=) <$>-                    _gpdvflMaxFindingsPerRequest])---- | The field type of \`value\` and \`field\` do not need to match to be--- considered equal, but not all comparisons are possible. A \`value\` of--- type: - \`string\` can be compared against all other types - \`boolean\`--- can only be compared against other booleans - \`integer\` can be--- compared against doubles or a string if the string value can be parsed--- as an integer. - \`double\` can be compared against integers or a string--- if the string can be parsed as a double. - \`Timestamp\` can be compared--- against strings in RFC 3339 date string format. - \`TimeOfDay\` can be--- compared against timestamps and strings in the format of \'HH:mm:ss\'.--- If we fail to compare do to type mismatch, a warning will be given and--- the condition will evaluate to false.------ /See:/ 'googlePrivacyDlpV2Condition' smart constructor.-data GooglePrivacyDlpV2Condition = GooglePrivacyDlpV2Condition'-    { _gpdvcField    :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvcOperator :: !(Maybe GooglePrivacyDlpV2ConditionOperator)-    , _gpdvcValue    :: !(Maybe GooglePrivacyDlpV2Value)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Condition' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcField'------ * 'gpdvcOperator'------ * 'gpdvcValue'-googlePrivacyDlpV2Condition-    :: GooglePrivacyDlpV2Condition-googlePrivacyDlpV2Condition =-    GooglePrivacyDlpV2Condition'-    { _gpdvcField = Nothing-    , _gpdvcOperator = Nothing-    , _gpdvcValue = Nothing-    }---- | Field within the record this condition is evaluated against. [required]-gpdvcField :: Lens' GooglePrivacyDlpV2Condition (Maybe GooglePrivacyDlpV2FieldId)-gpdvcField-  = lens _gpdvcField (\ s a -> s{_gpdvcField = a})---- | Operator used to compare the field or infoType to the value. [required]-gpdvcOperator :: Lens' GooglePrivacyDlpV2Condition (Maybe GooglePrivacyDlpV2ConditionOperator)-gpdvcOperator-  = lens _gpdvcOperator-      (\ s a -> s{_gpdvcOperator = a})---- | Value to compare against. [Required, except for \`EXISTS\` tests.]-gpdvcValue :: Lens' GooglePrivacyDlpV2Condition (Maybe GooglePrivacyDlpV2Value)-gpdvcValue-  = lens _gpdvcValue (\ s a -> s{_gpdvcValue = a})--instance FromJSON GooglePrivacyDlpV2Condition where-        parseJSON-          = withObject "GooglePrivacyDlpV2Condition"-              (\ o ->-                 GooglePrivacyDlpV2Condition' <$>-                   (o .:? "field") <*> (o .:? "operator") <*>-                     (o .:? "value"))--instance ToJSON GooglePrivacyDlpV2Condition where-        toJSON GooglePrivacyDlpV2Condition'{..}-          = object-              (catMaybes-                 [("field" .=) <$> _gpdvcField,-                  ("operator" .=) <$> _gpdvcOperator,-                  ("value" .=) <$> _gpdvcValue])---- | Configuration of the timespan of the items to include in scanning.--- Currently only supported when inspecting Google Cloud Storage and--- BigQuery.------ /See:/ 'googlePrivacyDlpV2TimespanConfig' smart constructor.-data GooglePrivacyDlpV2TimespanConfig = GooglePrivacyDlpV2TimespanConfig'-    { _gpdvtcTimestampField                       :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvtcStartTime                            :: !(Maybe DateTime')-    , _gpdvtcEnableAutoPopulationOfTimespanConfig :: !(Maybe Bool)-    , _gpdvtcEndTime                              :: !(Maybe DateTime')-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2TimespanConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvtcTimestampField'------ * 'gpdvtcStartTime'------ * 'gpdvtcEnableAutoPopulationOfTimespanConfig'------ * 'gpdvtcEndTime'-googlePrivacyDlpV2TimespanConfig-    :: GooglePrivacyDlpV2TimespanConfig-googlePrivacyDlpV2TimespanConfig =-    GooglePrivacyDlpV2TimespanConfig'-    { _gpdvtcTimestampField = Nothing-    , _gpdvtcStartTime = Nothing-    , _gpdvtcEnableAutoPopulationOfTimespanConfig = Nothing-    , _gpdvtcEndTime = Nothing-    }---- | Specification of the field containing the timestamp of scanned items.--- Used for data sources like Datastore or BigQuery. If not specified for--- BigQuery, table last modification timestamp is checked against given--- time span. The valid data types of the timestamp field are: for BigQuery--- - timestamp, date, datetime; for Datastore - timestamp. Datastore entity--- will be scanned if the timestamp property does not exist or its value is--- empty or invalid.-gpdvtcTimestampField :: Lens' GooglePrivacyDlpV2TimespanConfig (Maybe GooglePrivacyDlpV2FieldId)-gpdvtcTimestampField-  = lens _gpdvtcTimestampField-      (\ s a -> s{_gpdvtcTimestampField = a})---- | Exclude files or rows older than this value.-gpdvtcStartTime :: Lens' GooglePrivacyDlpV2TimespanConfig (Maybe UTCTime)-gpdvtcStartTime-  = lens _gpdvtcStartTime-      (\ s a -> s{_gpdvtcStartTime = a})-      . mapping _DateTime---- | When the job is started by a JobTrigger we will automatically figure out--- a valid start_time to avoid scanning files that have not been modified--- since the last time the JobTrigger executed. This will be based on the--- time of the execution of the last run of the JobTrigger.-gpdvtcEnableAutoPopulationOfTimespanConfig :: Lens' GooglePrivacyDlpV2TimespanConfig (Maybe Bool)-gpdvtcEnableAutoPopulationOfTimespanConfig-  = lens _gpdvtcEnableAutoPopulationOfTimespanConfig-      (\ s a ->-         s{_gpdvtcEnableAutoPopulationOfTimespanConfig = a})---- | Exclude files or rows newer than this value. If set to zero, no upper--- time limit is applied.-gpdvtcEndTime :: Lens' GooglePrivacyDlpV2TimespanConfig (Maybe UTCTime)-gpdvtcEndTime-  = lens _gpdvtcEndTime-      (\ s a -> s{_gpdvtcEndTime = a})-      . mapping _DateTime--instance FromJSON GooglePrivacyDlpV2TimespanConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2TimespanConfig"-              (\ o ->-                 GooglePrivacyDlpV2TimespanConfig' <$>-                   (o .:? "timestampField") <*> (o .:? "startTime") <*>-                     (o .:? "enableAutoPopulationOfTimespanConfig")-                     <*> (o .:? "endTime"))--instance ToJSON GooglePrivacyDlpV2TimespanConfig-         where-        toJSON GooglePrivacyDlpV2TimespanConfig'{..}-          = object-              (catMaybes-                 [("timestampField" .=) <$> _gpdvtcTimestampField,-                  ("startTime" .=) <$> _gpdvtcStartTime,-                  ("enableAutoPopulationOfTimespanConfig" .=) <$>-                    _gpdvtcEnableAutoPopulationOfTimespanConfig,-                  ("endTime" .=) <$> _gpdvtcEndTime])---- | Request message for CreateDeidentifyTemplate.------ /See:/ 'googlePrivacyDlpV2CreateDeidentifyTemplateRequest' smart constructor.-data GooglePrivacyDlpV2CreateDeidentifyTemplateRequest = GooglePrivacyDlpV2CreateDeidentifyTemplateRequest'-    { _gpdvcdtrTemplateId         :: !(Maybe Text)-    , _gpdvcdtrDeidentifyTemplate :: !(Maybe GooglePrivacyDlpV2DeidentifyTemplate)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CreateDeidentifyTemplateRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcdtrTemplateId'------ * 'gpdvcdtrDeidentifyTemplate'-googlePrivacyDlpV2CreateDeidentifyTemplateRequest-    :: GooglePrivacyDlpV2CreateDeidentifyTemplateRequest-googlePrivacyDlpV2CreateDeidentifyTemplateRequest =-    GooglePrivacyDlpV2CreateDeidentifyTemplateRequest'-    { _gpdvcdtrTemplateId = Nothing-    , _gpdvcdtrDeidentifyTemplate = Nothing-    }---- | The template id can contain uppercase and lowercase letters, numbers,--- and hyphens; that is, it must match the regular expression:--- \`[a-zA-Z\\\\d-]+\`. The maximum length is 100 characters. Can be empty--- to allow the system to generate one.-gpdvcdtrTemplateId :: Lens' GooglePrivacyDlpV2CreateDeidentifyTemplateRequest (Maybe Text)-gpdvcdtrTemplateId-  = lens _gpdvcdtrTemplateId-      (\ s a -> s{_gpdvcdtrTemplateId = a})---- | The DeidentifyTemplate to create.-gpdvcdtrDeidentifyTemplate :: Lens' GooglePrivacyDlpV2CreateDeidentifyTemplateRequest (Maybe GooglePrivacyDlpV2DeidentifyTemplate)-gpdvcdtrDeidentifyTemplate-  = lens _gpdvcdtrDeidentifyTemplate-      (\ s a -> s{_gpdvcdtrDeidentifyTemplate = a})--instance FromJSON-         GooglePrivacyDlpV2CreateDeidentifyTemplateRequest-         where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2CreateDeidentifyTemplateRequest"-              (\ o ->-                 GooglePrivacyDlpV2CreateDeidentifyTemplateRequest'-                   <$>-                   (o .:? "templateId") <*>-                     (o .:? "deidentifyTemplate"))--instance ToJSON-         GooglePrivacyDlpV2CreateDeidentifyTemplateRequest-         where-        toJSON-          GooglePrivacyDlpV2CreateDeidentifyTemplateRequest'{..}-          = object-              (catMaybes-                 [("templateId" .=) <$> _gpdvcdtrTemplateId,-                  ("deidentifyTemplate" .=) <$>-                    _gpdvcdtrDeidentifyTemplate])---- | Use this to have a random data crypto key generated. It will be--- discarded after the request finishes.------ /See:/ 'googlePrivacyDlpV2TransientCryptoKey' smart constructor.-newtype GooglePrivacyDlpV2TransientCryptoKey = GooglePrivacyDlpV2TransientCryptoKey'-    { _gpdvtckName :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2TransientCryptoKey' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvtckName'-googlePrivacyDlpV2TransientCryptoKey-    :: GooglePrivacyDlpV2TransientCryptoKey-googlePrivacyDlpV2TransientCryptoKey =-    GooglePrivacyDlpV2TransientCryptoKey'-    { _gpdvtckName = Nothing-    }---- | Name of the key. [required] This is an arbitrary string used to--- differentiate different keys. A unique key is generated per name: two--- separate \`TransientCryptoKey\` protos share the same generated key if--- their names are the same. When the data crypto key is generated, this--- name is not used in any way (repeating the api call will result in a--- different key being generated).-gpdvtckName :: Lens' GooglePrivacyDlpV2TransientCryptoKey (Maybe Text)-gpdvtckName-  = lens _gpdvtckName (\ s a -> s{_gpdvtckName = a})--instance FromJSON-         GooglePrivacyDlpV2TransientCryptoKey where-        parseJSON-          = withObject "GooglePrivacyDlpV2TransientCryptoKey"-              (\ o ->-                 GooglePrivacyDlpV2TransientCryptoKey' <$>-                   (o .:? "name"))--instance ToJSON GooglePrivacyDlpV2TransientCryptoKey-         where-        toJSON GooglePrivacyDlpV2TransientCryptoKey'{..}-          = object (catMaybes [("name" .=) <$> _gpdvtckName])---- | InfoType description.------ /See:/ 'googlePrivacyDlpV2InfoTypeDescription' smart constructor.-data GooglePrivacyDlpV2InfoTypeDescription = GooglePrivacyDlpV2InfoTypeDescription'-    { _gpdvitdName        :: !(Maybe Text)-    , _gpdvitdDisplayName :: !(Maybe Text)-    , _gpdvitdSupportedBy :: !(Maybe [Text])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InfoTypeDescription' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvitdName'------ * 'gpdvitdDisplayName'------ * 'gpdvitdSupportedBy'-googlePrivacyDlpV2InfoTypeDescription-    :: GooglePrivacyDlpV2InfoTypeDescription-googlePrivacyDlpV2InfoTypeDescription =-    GooglePrivacyDlpV2InfoTypeDescription'-    { _gpdvitdName = Nothing-    , _gpdvitdDisplayName = Nothing-    , _gpdvitdSupportedBy = Nothing-    }---- | Internal name of the infoType.-gpdvitdName :: Lens' GooglePrivacyDlpV2InfoTypeDescription (Maybe Text)-gpdvitdName-  = lens _gpdvitdName (\ s a -> s{_gpdvitdName = a})---- | Human readable form of the infoType name.-gpdvitdDisplayName :: Lens' GooglePrivacyDlpV2InfoTypeDescription (Maybe Text)-gpdvitdDisplayName-  = lens _gpdvitdDisplayName-      (\ s a -> s{_gpdvitdDisplayName = a})---- | Which parts of the API supports this InfoType.-gpdvitdSupportedBy :: Lens' GooglePrivacyDlpV2InfoTypeDescription [Text]-gpdvitdSupportedBy-  = lens _gpdvitdSupportedBy-      (\ s a -> s{_gpdvitdSupportedBy = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2InfoTypeDescription where-        parseJSON-          = withObject "GooglePrivacyDlpV2InfoTypeDescription"-              (\ o ->-                 GooglePrivacyDlpV2InfoTypeDescription' <$>-                   (o .:? "name") <*> (o .:? "displayName") <*>-                     (o .:? "supportedBy" .!= mempty))--instance ToJSON GooglePrivacyDlpV2InfoTypeDescription-         where-        toJSON GooglePrivacyDlpV2InfoTypeDescription'{..}-          = object-              (catMaybes-                 [("name" .=) <$> _gpdvitdName,-                  ("displayName" .=) <$> _gpdvitdDisplayName,-                  ("supportedBy" .=) <$> _gpdvitdSupportedBy])---- | A generic empty message that you can re-use to avoid defining duplicated--- empty messages in your APIs. A typical example is to use it as the--- request or the response type of an API method. For instance: service Foo--- { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The--- JSON representation for \`Empty\` is empty JSON object \`{}\`.------ /See:/ 'googleProtobufEmpty' smart constructor.-data GoogleProtobufEmpty =-    GoogleProtobufEmpty'-    deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GoogleProtobufEmpty' with the minimum fields required to make a request.----googleProtobufEmpty-    :: GoogleProtobufEmpty-googleProtobufEmpty = GoogleProtobufEmpty'--instance FromJSON GoogleProtobufEmpty where-        parseJSON-          = withObject "GoogleProtobufEmpty"-              (\ o -> pure GoogleProtobufEmpty')--instance ToJSON GoogleProtobufEmpty where-        toJSON = const emptyObject------- /See:/ 'googleRpcStatusDetailsItem' smart constructor.-newtype GoogleRpcStatusDetailsItem = GoogleRpcStatusDetailsItem'-    { _grsdiAddtional :: HashMap Text JSONValue-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GoogleRpcStatusDetailsItem' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'grsdiAddtional'-googleRpcStatusDetailsItem-    :: HashMap Text JSONValue -- ^ 'grsdiAddtional'-    -> GoogleRpcStatusDetailsItem-googleRpcStatusDetailsItem pGrsdiAddtional_ =-    GoogleRpcStatusDetailsItem'-    { _grsdiAddtional = _Coerce # pGrsdiAddtional_-    }---- | Properties of the object. Contains field \'type with type URL.-grsdiAddtional :: Lens' GoogleRpcStatusDetailsItem (HashMap Text JSONValue)-grsdiAddtional-  = lens _grsdiAddtional-      (\ s a -> s{_grsdiAddtional = a})-      . _Coerce--instance FromJSON GoogleRpcStatusDetailsItem where-        parseJSON-          = withObject "GoogleRpcStatusDetailsItem"-              (\ o ->-                 GoogleRpcStatusDetailsItem' <$> (parseJSONObject o))--instance ToJSON GoogleRpcStatusDetailsItem where-        toJSON = toJSON . _grsdiAddtional---- | Configuration for determining how redaction of images should occur.------ /See:/ 'googlePrivacyDlpV2ImageRedactionConfig' smart constructor.-data GooglePrivacyDlpV2ImageRedactionConfig = GooglePrivacyDlpV2ImageRedactionConfig'-    { _gpdvircRedactionColor :: !(Maybe GooglePrivacyDlpV2Color)-    , _gpdvircInfoType       :: !(Maybe GooglePrivacyDlpV2InfoType)-    , _gpdvircRedactAllText  :: !(Maybe Bool)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ImageRedactionConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvircRedactionColor'------ * 'gpdvircInfoType'------ * 'gpdvircRedactAllText'-googlePrivacyDlpV2ImageRedactionConfig-    :: GooglePrivacyDlpV2ImageRedactionConfig-googlePrivacyDlpV2ImageRedactionConfig =-    GooglePrivacyDlpV2ImageRedactionConfig'-    { _gpdvircRedactionColor = Nothing-    , _gpdvircInfoType = Nothing-    , _gpdvircRedactAllText = Nothing-    }---- | The color to use when redacting content from an image. If not specified,--- the default is black.-gpdvircRedactionColor :: Lens' GooglePrivacyDlpV2ImageRedactionConfig (Maybe GooglePrivacyDlpV2Color)-gpdvircRedactionColor-  = lens _gpdvircRedactionColor-      (\ s a -> s{_gpdvircRedactionColor = a})---- | Only one per info_type should be provided per request. If not specified,--- and redact_all_text is false, the DLP API will redact all text that it--- matches against all info_types that are found, but not specified in--- another ImageRedactionConfig.-gpdvircInfoType :: Lens' GooglePrivacyDlpV2ImageRedactionConfig (Maybe GooglePrivacyDlpV2InfoType)-gpdvircInfoType-  = lens _gpdvircInfoType-      (\ s a -> s{_gpdvircInfoType = a})---- | If true, all text found in the image, regardless whether it matches an--- info_type, is redacted. Only one should be provided.-gpdvircRedactAllText :: Lens' GooglePrivacyDlpV2ImageRedactionConfig (Maybe Bool)-gpdvircRedactAllText-  = lens _gpdvircRedactAllText-      (\ s a -> s{_gpdvircRedactAllText = a})--instance FromJSON-         GooglePrivacyDlpV2ImageRedactionConfig where-        parseJSON-          = withObject "GooglePrivacyDlpV2ImageRedactionConfig"-              (\ o ->-                 GooglePrivacyDlpV2ImageRedactionConfig' <$>-                   (o .:? "redactionColor") <*> (o .:? "infoType") <*>-                     (o .:? "redactAllText"))--instance ToJSON-         GooglePrivacyDlpV2ImageRedactionConfig where-        toJSON GooglePrivacyDlpV2ImageRedactionConfig'{..}-          = object-              (catMaybes-                 [("redactionColor" .=) <$> _gpdvircRedactionColor,-                  ("infoType" .=) <$> _gpdvircInfoType,-                  ("redactAllText" .=) <$> _gpdvircRedactAllText])---- | What event needs to occur for a new job to be started.------ /See:/ 'googlePrivacyDlpV2Trigger' smart constructor.-newtype GooglePrivacyDlpV2Trigger = GooglePrivacyDlpV2Trigger'-    { _gpdvtSchedule :: Maybe GooglePrivacyDlpV2Schedule-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Trigger' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvtSchedule'-googlePrivacyDlpV2Trigger-    :: GooglePrivacyDlpV2Trigger-googlePrivacyDlpV2Trigger =-    GooglePrivacyDlpV2Trigger'-    { _gpdvtSchedule = Nothing-    }---- | Create a job on a repeating basis based on the elapse of time.-gpdvtSchedule :: Lens' GooglePrivacyDlpV2Trigger (Maybe GooglePrivacyDlpV2Schedule)-gpdvtSchedule-  = lens _gpdvtSchedule-      (\ s a -> s{_gpdvtSchedule = a})--instance FromJSON GooglePrivacyDlpV2Trigger where-        parseJSON-          = withObject "GooglePrivacyDlpV2Trigger"-              (\ o ->-                 GooglePrivacyDlpV2Trigger' <$> (o .:? "schedule"))--instance ToJSON GooglePrivacyDlpV2Trigger where-        toJSON GooglePrivacyDlpV2Trigger'{..}-          = object-              (catMaybes [("schedule" .=) <$> _gpdvtSchedule])---- | Options defining a file or a set of files within a Google Cloud Storage--- bucket.------ /See:/ 'googlePrivacyDlpV2CloudStorageOptions' smart constructor.-data GooglePrivacyDlpV2CloudStorageOptions = GooglePrivacyDlpV2CloudStorageOptions'-    { _gpdvcsoFileSet                  :: !(Maybe GooglePrivacyDlpV2FileSet)-    , _gpdvcsoBytesLimitPerFile        :: !(Maybe (Textual Int64))-    , _gpdvcsoFileTypes                :: !(Maybe [Text])-    , _gpdvcsoBytesLimitPerFilePercent :: !(Maybe (Textual Int32))-    , _gpdvcsoFilesLimitPercent        :: !(Maybe (Textual Int32))-    , _gpdvcsoSampleMethod             :: !(Maybe GooglePrivacyDlpV2CloudStorageOptionsSampleMethod)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CloudStorageOptions' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcsoFileSet'------ * 'gpdvcsoBytesLimitPerFile'------ * 'gpdvcsoFileTypes'------ * 'gpdvcsoBytesLimitPerFilePercent'------ * 'gpdvcsoFilesLimitPercent'------ * 'gpdvcsoSampleMethod'-googlePrivacyDlpV2CloudStorageOptions-    :: GooglePrivacyDlpV2CloudStorageOptions-googlePrivacyDlpV2CloudStorageOptions =-    GooglePrivacyDlpV2CloudStorageOptions'-    { _gpdvcsoFileSet = Nothing-    , _gpdvcsoBytesLimitPerFile = Nothing-    , _gpdvcsoFileTypes = Nothing-    , _gpdvcsoBytesLimitPerFilePercent = Nothing-    , _gpdvcsoFilesLimitPercent = Nothing-    , _gpdvcsoSampleMethod = Nothing-    }---- | The set of one or more files to scan.-gpdvcsoFileSet :: Lens' GooglePrivacyDlpV2CloudStorageOptions (Maybe GooglePrivacyDlpV2FileSet)-gpdvcsoFileSet-  = lens _gpdvcsoFileSet-      (\ s a -> s{_gpdvcsoFileSet = a})---- | Max number of bytes to scan from a file. If a scanned file\'s size is--- bigger than this value then the rest of the bytes are omitted. Only one--- of bytes_limit_per_file and bytes_limit_per_file_percent can be--- specified.-gpdvcsoBytesLimitPerFile :: Lens' GooglePrivacyDlpV2CloudStorageOptions (Maybe Int64)-gpdvcsoBytesLimitPerFile-  = lens _gpdvcsoBytesLimitPerFile-      (\ s a -> s{_gpdvcsoBytesLimitPerFile = a})-      . mapping _Coerce---- | List of file type groups to include in the scan. If empty, all files are--- scanned and available data format processors are applied. In addition,--- the binary content of the selected files is always scanned as well.-gpdvcsoFileTypes :: Lens' GooglePrivacyDlpV2CloudStorageOptions [Text]-gpdvcsoFileTypes-  = lens _gpdvcsoFileTypes-      (\ s a -> s{_gpdvcsoFileTypes = a})-      . _Default-      . _Coerce---- | Max percentage of bytes to scan from a file. The rest are omitted. The--- number of bytes scanned is rounded down. Must be between 0 and 100,--- inclusively. Both 0 and 100 means no limit. Defaults to 0. Only one of--- bytes_limit_per_file and bytes_limit_per_file_percent can be specified.-gpdvcsoBytesLimitPerFilePercent :: Lens' GooglePrivacyDlpV2CloudStorageOptions (Maybe Int32)-gpdvcsoBytesLimitPerFilePercent-  = lens _gpdvcsoBytesLimitPerFilePercent-      (\ s a -> s{_gpdvcsoBytesLimitPerFilePercent = a})-      . mapping _Coerce---- | Limits the number of files to scan to this percentage of the input--- FileSet. Number of files scanned is rounded down. Must be between 0 and--- 100, inclusively. Both 0 and 100 means no limit. Defaults to 0.-gpdvcsoFilesLimitPercent :: Lens' GooglePrivacyDlpV2CloudStorageOptions (Maybe Int32)-gpdvcsoFilesLimitPercent-  = lens _gpdvcsoFilesLimitPercent-      (\ s a -> s{_gpdvcsoFilesLimitPercent = a})-      . mapping _Coerce--gpdvcsoSampleMethod :: Lens' GooglePrivacyDlpV2CloudStorageOptions (Maybe GooglePrivacyDlpV2CloudStorageOptionsSampleMethod)-gpdvcsoSampleMethod-  = lens _gpdvcsoSampleMethod-      (\ s a -> s{_gpdvcsoSampleMethod = a})--instance FromJSON-         GooglePrivacyDlpV2CloudStorageOptions where-        parseJSON-          = withObject "GooglePrivacyDlpV2CloudStorageOptions"-              (\ o ->-                 GooglePrivacyDlpV2CloudStorageOptions' <$>-                   (o .:? "fileSet") <*> (o .:? "bytesLimitPerFile") <*>-                     (o .:? "fileTypes" .!= mempty)-                     <*> (o .:? "bytesLimitPerFilePercent")-                     <*> (o .:? "filesLimitPercent")-                     <*> (o .:? "sampleMethod"))--instance ToJSON GooglePrivacyDlpV2CloudStorageOptions-         where-        toJSON GooglePrivacyDlpV2CloudStorageOptions'{..}-          = object-              (catMaybes-                 [("fileSet" .=) <$> _gpdvcsoFileSet,-                  ("bytesLimitPerFile" .=) <$>-                    _gpdvcsoBytesLimitPerFile,-                  ("fileTypes" .=) <$> _gpdvcsoFileTypes,-                  ("bytesLimitPerFilePercent" .=) <$>-                    _gpdvcsoBytesLimitPerFilePercent,-                  ("filesLimitPercent" .=) <$>-                    _gpdvcsoFilesLimitPercent,-                  ("sampleMethod" .=) <$> _gpdvcsoSampleMethod])---- | δ-presence metric, used to estimate how likely it is for an attacker to--- figure out that one given individual appears in a de-identified dataset.--- Similarly to the k-map metric, we cannot compute δ-presence exactly--- without knowing the attack dataset, so we use a statistical model--- instead.------ /See:/ 'googlePrivacyDlpV2DeltaPresenceEstimationConfig' smart constructor.-data GooglePrivacyDlpV2DeltaPresenceEstimationConfig = GooglePrivacyDlpV2DeltaPresenceEstimationConfig'-    { _gpdvdpecAuxiliaryTables :: !(Maybe [GooglePrivacyDlpV2StatisticalTable])-    , _gpdvdpecRegionCode      :: !(Maybe Text)-    , _gpdvdpecQuasiIds        :: !(Maybe [GooglePrivacyDlpV2QuasiId])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DeltaPresenceEstimationConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdpecAuxiliaryTables'------ * 'gpdvdpecRegionCode'------ * 'gpdvdpecQuasiIds'-googlePrivacyDlpV2DeltaPresenceEstimationConfig-    :: GooglePrivacyDlpV2DeltaPresenceEstimationConfig-googlePrivacyDlpV2DeltaPresenceEstimationConfig =-    GooglePrivacyDlpV2DeltaPresenceEstimationConfig'-    { _gpdvdpecAuxiliaryTables = Nothing-    , _gpdvdpecRegionCode = Nothing-    , _gpdvdpecQuasiIds = Nothing-    }---- | Several auxiliary tables can be used in the analysis. Each custom_tag--- used to tag a quasi-identifiers field must appear in exactly one field--- of one auxiliary table.-gpdvdpecAuxiliaryTables :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationConfig [GooglePrivacyDlpV2StatisticalTable]-gpdvdpecAuxiliaryTables-  = lens _gpdvdpecAuxiliaryTables-      (\ s a -> s{_gpdvdpecAuxiliaryTables = a})-      . _Default-      . _Coerce---- | ISO 3166-1 alpha-2 region code to use in the statistical modeling.--- Required if no column is tagged with a region-specific InfoType (like--- US_ZIP_5) or a region code.-gpdvdpecRegionCode :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationConfig (Maybe Text)-gpdvdpecRegionCode-  = lens _gpdvdpecRegionCode-      (\ s a -> s{_gpdvdpecRegionCode = a})---- | Fields considered to be quasi-identifiers. No two fields can have the--- same tag. [required]-gpdvdpecQuasiIds :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationConfig [GooglePrivacyDlpV2QuasiId]-gpdvdpecQuasiIds-  = lens _gpdvdpecQuasiIds-      (\ s a -> s{_gpdvdpecQuasiIds = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2DeltaPresenceEstimationConfig where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2DeltaPresenceEstimationConfig"-              (\ o ->-                 GooglePrivacyDlpV2DeltaPresenceEstimationConfig' <$>-                   (o .:? "auxiliaryTables" .!= mempty) <*>-                     (o .:? "regionCode")-                     <*> (o .:? "quasiIds" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2DeltaPresenceEstimationConfig where-        toJSON-          GooglePrivacyDlpV2DeltaPresenceEstimationConfig'{..}-          = object-              (catMaybes-                 [("auxiliaryTables" .=) <$> _gpdvdpecAuxiliaryTables,-                  ("regionCode" .=) <$> _gpdvdpecRegionCode,-                  ("quasiIds" .=) <$> _gpdvdpecQuasiIds])---- | Request message for CreateStoredInfoType.------ /See:/ 'googlePrivacyDlpV2CreateStoredInfoTypeRequest' smart constructor.-data GooglePrivacyDlpV2CreateStoredInfoTypeRequest = GooglePrivacyDlpV2CreateStoredInfoTypeRequest'-    { _gpdvcsitrConfig           :: !(Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)-    , _gpdvcsitrStoredInfoTypeId :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CreateStoredInfoTypeRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcsitrConfig'------ * 'gpdvcsitrStoredInfoTypeId'-googlePrivacyDlpV2CreateStoredInfoTypeRequest-    :: GooglePrivacyDlpV2CreateStoredInfoTypeRequest-googlePrivacyDlpV2CreateStoredInfoTypeRequest =-    GooglePrivacyDlpV2CreateStoredInfoTypeRequest'-    { _gpdvcsitrConfig = Nothing-    , _gpdvcsitrStoredInfoTypeId = Nothing-    }---- | Configuration of the storedInfoType to create.-gpdvcsitrConfig :: Lens' GooglePrivacyDlpV2CreateStoredInfoTypeRequest (Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)-gpdvcsitrConfig-  = lens _gpdvcsitrConfig-      (\ s a -> s{_gpdvcsitrConfig = a})---- | The storedInfoType ID can contain uppercase and lowercase letters,--- numbers, and hyphens; that is, it must match the regular expression:--- \`[a-zA-Z\\\\d-]+\`. The maximum length is 100 characters. Can be empty--- to allow the system to generate one.-gpdvcsitrStoredInfoTypeId :: Lens' GooglePrivacyDlpV2CreateStoredInfoTypeRequest (Maybe Text)-gpdvcsitrStoredInfoTypeId-  = lens _gpdvcsitrStoredInfoTypeId-      (\ s a -> s{_gpdvcsitrStoredInfoTypeId = a})--instance FromJSON-         GooglePrivacyDlpV2CreateStoredInfoTypeRequest where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2CreateStoredInfoTypeRequest"-              (\ o ->-                 GooglePrivacyDlpV2CreateStoredInfoTypeRequest' <$>-                   (o .:? "config") <*> (o .:? "storedInfoTypeId"))--instance ToJSON-         GooglePrivacyDlpV2CreateStoredInfoTypeRequest where-        toJSON-          GooglePrivacyDlpV2CreateStoredInfoTypeRequest'{..}-          = object-              (catMaybes-                 [("config" .=) <$> _gpdvcsitrConfig,-                  ("storedInfoTypeId" .=) <$>-                    _gpdvcsitrStoredInfoTypeId])---- | A quasi-identifier column has a custom_tag, used to know which column in--- the data corresponds to which column in the statistical model.------ /See:/ 'googlePrivacyDlpV2QuasiIdField' smart constructor.-data GooglePrivacyDlpV2QuasiIdField = GooglePrivacyDlpV2QuasiIdField'-    { _gpdvqifField     :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvqifCustomTag :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2QuasiIdField' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvqifField'------ * 'gpdvqifCustomTag'-googlePrivacyDlpV2QuasiIdField-    :: GooglePrivacyDlpV2QuasiIdField-googlePrivacyDlpV2QuasiIdField =-    GooglePrivacyDlpV2QuasiIdField'-    { _gpdvqifField = Nothing-    , _gpdvqifCustomTag = Nothing-    }--gpdvqifField :: Lens' GooglePrivacyDlpV2QuasiIdField (Maybe GooglePrivacyDlpV2FieldId)-gpdvqifField-  = lens _gpdvqifField (\ s a -> s{_gpdvqifField = a})--gpdvqifCustomTag :: Lens' GooglePrivacyDlpV2QuasiIdField (Maybe Text)-gpdvqifCustomTag-  = lens _gpdvqifCustomTag-      (\ s a -> s{_gpdvqifCustomTag = a})--instance FromJSON GooglePrivacyDlpV2QuasiIdField-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2QuasiIdField"-              (\ o ->-                 GooglePrivacyDlpV2QuasiIdField' <$>-                   (o .:? "field") <*> (o .:? "customTag"))--instance ToJSON GooglePrivacyDlpV2QuasiIdField where-        toJSON GooglePrivacyDlpV2QuasiIdField'{..}-          = object-              (catMaybes-                 [("field" .=) <$> _gpdvqifField,-                  ("customTag" .=) <$> _gpdvqifCustomTag])---- | For use with \`Date\`, \`Timestamp\`, and \`TimeOfDay\`, extract or--- preserve a portion of the value.------ /See:/ 'googlePrivacyDlpV2TimePartConfig' smart constructor.-newtype GooglePrivacyDlpV2TimePartConfig = GooglePrivacyDlpV2TimePartConfig'-    { _gpdvtpcPartToExtract :: Maybe GooglePrivacyDlpV2TimePartConfigPartToExtract-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2TimePartConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvtpcPartToExtract'-googlePrivacyDlpV2TimePartConfig-    :: GooglePrivacyDlpV2TimePartConfig-googlePrivacyDlpV2TimePartConfig =-    GooglePrivacyDlpV2TimePartConfig'-    { _gpdvtpcPartToExtract = Nothing-    }--gpdvtpcPartToExtract :: Lens' GooglePrivacyDlpV2TimePartConfig (Maybe GooglePrivacyDlpV2TimePartConfigPartToExtract)-gpdvtpcPartToExtract-  = lens _gpdvtpcPartToExtract-      (\ s a -> s{_gpdvtpcPartToExtract = a})--instance FromJSON GooglePrivacyDlpV2TimePartConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2TimePartConfig"-              (\ o ->-                 GooglePrivacyDlpV2TimePartConfig' <$>-                   (o .:? "partToExtract"))--instance ToJSON GooglePrivacyDlpV2TimePartConfig-         where-        toJSON GooglePrivacyDlpV2TimePartConfig'{..}-          = object-              (catMaybes-                 [("partToExtract" .=) <$> _gpdvtpcPartToExtract])---- | A single inspection rule to be applied to infoTypes, specified in--- \`InspectionRuleSet\`.------ /See:/ 'googlePrivacyDlpV2InspectionRule' smart constructor.-data GooglePrivacyDlpV2InspectionRule = GooglePrivacyDlpV2InspectionRule'-    { _gpdvirExclusionRule :: !(Maybe GooglePrivacyDlpV2ExclusionRule)-    , _gpdvirHotwordRule   :: !(Maybe GooglePrivacyDlpV2HotwordRule)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InspectionRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvirExclusionRule'------ * 'gpdvirHotwordRule'-googlePrivacyDlpV2InspectionRule-    :: GooglePrivacyDlpV2InspectionRule-googlePrivacyDlpV2InspectionRule =-    GooglePrivacyDlpV2InspectionRule'-    { _gpdvirExclusionRule = Nothing-    , _gpdvirHotwordRule = Nothing-    }---- | Exclusion rule.-gpdvirExclusionRule :: Lens' GooglePrivacyDlpV2InspectionRule (Maybe GooglePrivacyDlpV2ExclusionRule)-gpdvirExclusionRule-  = lens _gpdvirExclusionRule-      (\ s a -> s{_gpdvirExclusionRule = a})---- | Hotword-based detection rule.-gpdvirHotwordRule :: Lens' GooglePrivacyDlpV2InspectionRule (Maybe GooglePrivacyDlpV2HotwordRule)-gpdvirHotwordRule-  = lens _gpdvirHotwordRule-      (\ s a -> s{_gpdvirHotwordRule = a})--instance FromJSON GooglePrivacyDlpV2InspectionRule-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2InspectionRule"-              (\ o ->-                 GooglePrivacyDlpV2InspectionRule' <$>-                   (o .:? "exclusionRule") <*> (o .:? "hotwordRule"))--instance ToJSON GooglePrivacyDlpV2InspectionRule-         where-        toJSON GooglePrivacyDlpV2InspectionRule'{..}-          = object-              (catMaybes-                 [("exclusionRule" .=) <$> _gpdvirExclusionRule,-                  ("hotwordRule" .=) <$> _gpdvirHotwordRule])---- | Custom information type provided by the user. Used to find--- domain-specific sensitive information configurable to the data in--- question.------ /See:/ 'googlePrivacyDlpV2CustomInfoType' smart constructor.-data GooglePrivacyDlpV2CustomInfoType = GooglePrivacyDlpV2CustomInfoType'-    { _gpdvcitRegex          :: !(Maybe GooglePrivacyDlpV2Regex)-    , _gpdvcitStoredType     :: !(Maybe GooglePrivacyDlpV2StoredType)-    , _gpdvcitInfoType       :: !(Maybe GooglePrivacyDlpV2InfoType)-    , _gpdvcitExclusionType  :: !(Maybe GooglePrivacyDlpV2CustomInfoTypeExclusionType)-    , _gpdvcitLikelihood     :: !(Maybe GooglePrivacyDlpV2CustomInfoTypeLikelihood)-    , _gpdvcitDetectionRules :: !(Maybe [GooglePrivacyDlpV2DetectionRule])-    , _gpdvcitDictionary     :: !(Maybe GooglePrivacyDlpV2Dictionary)-    , _gpdvcitSurrogateType  :: !(Maybe GooglePrivacyDlpV2SurrogateType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CustomInfoType' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcitRegex'------ * 'gpdvcitStoredType'------ * 'gpdvcitInfoType'------ * 'gpdvcitExclusionType'------ * 'gpdvcitLikelihood'------ * 'gpdvcitDetectionRules'------ * 'gpdvcitDictionary'------ * 'gpdvcitSurrogateType'-googlePrivacyDlpV2CustomInfoType-    :: GooglePrivacyDlpV2CustomInfoType-googlePrivacyDlpV2CustomInfoType =-    GooglePrivacyDlpV2CustomInfoType'-    { _gpdvcitRegex = Nothing-    , _gpdvcitStoredType = Nothing-    , _gpdvcitInfoType = Nothing-    , _gpdvcitExclusionType = Nothing-    , _gpdvcitLikelihood = Nothing-    , _gpdvcitDetectionRules = Nothing-    , _gpdvcitDictionary = Nothing-    , _gpdvcitSurrogateType = Nothing-    }---- | Regular expression based CustomInfoType.-gpdvcitRegex :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2Regex)-gpdvcitRegex-  = lens _gpdvcitRegex (\ s a -> s{_gpdvcitRegex = a})---- | Load an existing \`StoredInfoType\` resource for use in--- \`InspectDataSource\`. Not currently supported in \`InspectContent\`.-gpdvcitStoredType :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2StoredType)-gpdvcitStoredType-  = lens _gpdvcitStoredType-      (\ s a -> s{_gpdvcitStoredType = a})---- | CustomInfoType can either be a new infoType, or an extension of built-in--- infoType, when the name matches one of existing infoTypes and that--- infoType is specified in \`InspectContent.info_types\` field. Specifying--- the latter adds findings to the one detected by the system. If built-in--- info type is not specified in \`InspectContent.info_types\` list then--- the name is treated as a custom info type.-gpdvcitInfoType :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2InfoType)-gpdvcitInfoType-  = lens _gpdvcitInfoType-      (\ s a -> s{_gpdvcitInfoType = a})---- | If set to EXCLUSION_TYPE_EXCLUDE this infoType will not cause a finding--- to be returned. It still can be used for rules matching.-gpdvcitExclusionType :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2CustomInfoTypeExclusionType)-gpdvcitExclusionType-  = lens _gpdvcitExclusionType-      (\ s a -> s{_gpdvcitExclusionType = a})---- | Likelihood to return for this CustomInfoType. This base value can be--- altered by a detection rule if the finding meets the criteria specified--- by the rule. Defaults to \`VERY_LIKELY\` if not specified.-gpdvcitLikelihood :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2CustomInfoTypeLikelihood)-gpdvcitLikelihood-  = lens _gpdvcitLikelihood-      (\ s a -> s{_gpdvcitLikelihood = a})---- | Set of detection rules to apply to all findings of this CustomInfoType.--- Rules are applied in order that they are specified. Not supported for--- the \`surrogate_type\` CustomInfoType.-gpdvcitDetectionRules :: Lens' GooglePrivacyDlpV2CustomInfoType [GooglePrivacyDlpV2DetectionRule]-gpdvcitDetectionRules-  = lens _gpdvcitDetectionRules-      (\ s a -> s{_gpdvcitDetectionRules = a})-      . _Default-      . _Coerce---- | A list of phrases to detect as a CustomInfoType.-gpdvcitDictionary :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2Dictionary)-gpdvcitDictionary-  = lens _gpdvcitDictionary-      (\ s a -> s{_gpdvcitDictionary = a})---- | Message for detecting output from deidentification transformations that--- support reversing.-gpdvcitSurrogateType :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2SurrogateType)-gpdvcitSurrogateType-  = lens _gpdvcitSurrogateType-      (\ s a -> s{_gpdvcitSurrogateType = a})--instance FromJSON GooglePrivacyDlpV2CustomInfoType-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2CustomInfoType"-              (\ o ->-                 GooglePrivacyDlpV2CustomInfoType' <$>-                   (o .:? "regex") <*> (o .:? "storedType") <*>-                     (o .:? "infoType")-                     <*> (o .:? "exclusionType")-                     <*> (o .:? "likelihood")-                     <*> (o .:? "detectionRules" .!= mempty)-                     <*> (o .:? "dictionary")-                     <*> (o .:? "surrogateType"))--instance ToJSON GooglePrivacyDlpV2CustomInfoType-         where-        toJSON GooglePrivacyDlpV2CustomInfoType'{..}-          = object-              (catMaybes-                 [("regex" .=) <$> _gpdvcitRegex,-                  ("storedType" .=) <$> _gpdvcitStoredType,-                  ("infoType" .=) <$> _gpdvcitInfoType,-                  ("exclusionType" .=) <$> _gpdvcitExclusionType,-                  ("likelihood" .=) <$> _gpdvcitLikelihood,-                  ("detectionRules" .=) <$> _gpdvcitDetectionRules,-                  ("dictionary" .=) <$> _gpdvcitDictionary,-                  ("surrogateType" .=) <$> _gpdvcitSurrogateType])---- | Result of the reidentifiability analysis. Note that these results are an--- estimation, not exact values.------ /See:/ 'googlePrivacyDlpV2KMapEstimationResult' smart constructor.-newtype GooglePrivacyDlpV2KMapEstimationResult = GooglePrivacyDlpV2KMapEstimationResult'-    { _gpdvkmerKMapEstimationHistogram :: Maybe [GooglePrivacyDlpV2KMapEstimationHistogramBucket]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2KMapEstimationResult' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvkmerKMapEstimationHistogram'-googlePrivacyDlpV2KMapEstimationResult-    :: GooglePrivacyDlpV2KMapEstimationResult-googlePrivacyDlpV2KMapEstimationResult =-    GooglePrivacyDlpV2KMapEstimationResult'-    { _gpdvkmerKMapEstimationHistogram = Nothing-    }---- | The intervals [min_anonymity, max_anonymity] do not overlap. If a value--- doesn\'t correspond to any such interval, the associated frequency is--- zero. For example, the following records: {min_anonymity: 1,--- max_anonymity: 1, frequency: 17} {min_anonymity: 2, max_anonymity: 3,--- frequency: 42} {min_anonymity: 5, max_anonymity: 10, frequency: 99} mean--- that there are no record with an estimated anonymity of 4, 5, or larger--- than 10.-gpdvkmerKMapEstimationHistogram :: Lens' GooglePrivacyDlpV2KMapEstimationResult [GooglePrivacyDlpV2KMapEstimationHistogramBucket]-gpdvkmerKMapEstimationHistogram-  = lens _gpdvkmerKMapEstimationHistogram-      (\ s a -> s{_gpdvkmerKMapEstimationHistogram = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2KMapEstimationResult where-        parseJSON-          = withObject "GooglePrivacyDlpV2KMapEstimationResult"-              (\ o ->-                 GooglePrivacyDlpV2KMapEstimationResult' <$>-                   (o .:? "kMapEstimationHistogram" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2KMapEstimationResult where-        toJSON GooglePrivacyDlpV2KMapEstimationResult'{..}-          = object-              (catMaybes-                 [("kMapEstimationHistogram" .=) <$>-                    _gpdvkmerKMapEstimationHistogram])---- | Summary of a single tranformation. Only one of \'transformation\',--- \'field_transformation\', or \'record_suppress\' will be set.------ /See:/ 'googlePrivacyDlpV2TransformationSummary' smart constructor.-data GooglePrivacyDlpV2TransformationSummary = GooglePrivacyDlpV2TransformationSummary'-    { _gpdvtsResults              :: !(Maybe [GooglePrivacyDlpV2SummaryResult])-    , _gpdvtsField                :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvtsInfoType             :: !(Maybe GooglePrivacyDlpV2InfoType)-    , _gpdvtsRecordSuppress       :: !(Maybe GooglePrivacyDlpV2RecordSuppression)-    , _gpdvtsTransformedBytes     :: !(Maybe (Textual Int64))-    , _gpdvtsFieldTransformations :: !(Maybe [GooglePrivacyDlpV2FieldTransformation])-    , _gpdvtsTransformation       :: !(Maybe GooglePrivacyDlpV2PrimitiveTransformation)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2TransformationSummary' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvtsResults'------ * 'gpdvtsField'------ * 'gpdvtsInfoType'------ * 'gpdvtsRecordSuppress'------ * 'gpdvtsTransformedBytes'------ * 'gpdvtsFieldTransformations'------ * 'gpdvtsTransformation'-googlePrivacyDlpV2TransformationSummary-    :: GooglePrivacyDlpV2TransformationSummary-googlePrivacyDlpV2TransformationSummary =-    GooglePrivacyDlpV2TransformationSummary'-    { _gpdvtsResults = Nothing-    , _gpdvtsField = Nothing-    , _gpdvtsInfoType = Nothing-    , _gpdvtsRecordSuppress = Nothing-    , _gpdvtsTransformedBytes = Nothing-    , _gpdvtsFieldTransformations = Nothing-    , _gpdvtsTransformation = Nothing-    }--gpdvtsResults :: Lens' GooglePrivacyDlpV2TransformationSummary [GooglePrivacyDlpV2SummaryResult]-gpdvtsResults-  = lens _gpdvtsResults-      (\ s a -> s{_gpdvtsResults = a})-      . _Default-      . _Coerce---- | Set if the transformation was limited to a specific FieldId.-gpdvtsField :: Lens' GooglePrivacyDlpV2TransformationSummary (Maybe GooglePrivacyDlpV2FieldId)-gpdvtsField-  = lens _gpdvtsField (\ s a -> s{_gpdvtsField = a})---- | Set if the transformation was limited to a specific InfoType.-gpdvtsInfoType :: Lens' GooglePrivacyDlpV2TransformationSummary (Maybe GooglePrivacyDlpV2InfoType)-gpdvtsInfoType-  = lens _gpdvtsInfoType-      (\ s a -> s{_gpdvtsInfoType = a})---- | The specific suppression option these stats apply to.-gpdvtsRecordSuppress :: Lens' GooglePrivacyDlpV2TransformationSummary (Maybe GooglePrivacyDlpV2RecordSuppression)-gpdvtsRecordSuppress-  = lens _gpdvtsRecordSuppress-      (\ s a -> s{_gpdvtsRecordSuppress = a})---- | Total size in bytes that were transformed in some way.-gpdvtsTransformedBytes :: Lens' GooglePrivacyDlpV2TransformationSummary (Maybe Int64)-gpdvtsTransformedBytes-  = lens _gpdvtsTransformedBytes-      (\ s a -> s{_gpdvtsTransformedBytes = a})-      . mapping _Coerce---- | The field transformation that was applied. If multiple field--- transformations are requested for a single field, this list will contain--- all of them; otherwise, only one is supplied.-gpdvtsFieldTransformations :: Lens' GooglePrivacyDlpV2TransformationSummary [GooglePrivacyDlpV2FieldTransformation]-gpdvtsFieldTransformations-  = lens _gpdvtsFieldTransformations-      (\ s a -> s{_gpdvtsFieldTransformations = a})-      . _Default-      . _Coerce---- | The specific transformation these stats apply to.-gpdvtsTransformation :: Lens' GooglePrivacyDlpV2TransformationSummary (Maybe GooglePrivacyDlpV2PrimitiveTransformation)-gpdvtsTransformation-  = lens _gpdvtsTransformation-      (\ s a -> s{_gpdvtsTransformation = a})--instance FromJSON-         GooglePrivacyDlpV2TransformationSummary where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2TransformationSummary"-              (\ o ->-                 GooglePrivacyDlpV2TransformationSummary' <$>-                   (o .:? "results" .!= mempty) <*> (o .:? "field") <*>-                     (o .:? "infoType")-                     <*> (o .:? "recordSuppress")-                     <*> (o .:? "transformedBytes")-                     <*> (o .:? "fieldTransformations" .!= mempty)-                     <*> (o .:? "transformation"))--instance ToJSON-         GooglePrivacyDlpV2TransformationSummary where-        toJSON GooglePrivacyDlpV2TransformationSummary'{..}-          = object-              (catMaybes-                 [("results" .=) <$> _gpdvtsResults,-                  ("field" .=) <$> _gpdvtsField,-                  ("infoType" .=) <$> _gpdvtsInfoType,-                  ("recordSuppress" .=) <$> _gpdvtsRecordSuppress,-                  ("transformedBytes" .=) <$> _gpdvtsTransformedBytes,-                  ("fieldTransformations" .=) <$>-                    _gpdvtsFieldTransformations,-                  ("transformation" .=) <$> _gpdvtsTransformation])---- | Message for specifying an adjustment to the likelihood of a finding as--- part of a detection rule.------ /See:/ 'googlePrivacyDlpV2LikelihoodAdjustment' smart constructor.-data GooglePrivacyDlpV2LikelihoodAdjustment = GooglePrivacyDlpV2LikelihoodAdjustment'-    { _gpdvlaFixedLikelihood    :: !(Maybe GooglePrivacyDlpV2LikelihoodAdjustmentFixedLikelihood)-    , _gpdvlaRelativeLikelihood :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2LikelihoodAdjustment' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvlaFixedLikelihood'------ * 'gpdvlaRelativeLikelihood'-googlePrivacyDlpV2LikelihoodAdjustment-    :: GooglePrivacyDlpV2LikelihoodAdjustment-googlePrivacyDlpV2LikelihoodAdjustment =-    GooglePrivacyDlpV2LikelihoodAdjustment'-    { _gpdvlaFixedLikelihood = Nothing-    , _gpdvlaRelativeLikelihood = Nothing-    }---- | Set the likelihood of a finding to a fixed value.-gpdvlaFixedLikelihood :: Lens' GooglePrivacyDlpV2LikelihoodAdjustment (Maybe GooglePrivacyDlpV2LikelihoodAdjustmentFixedLikelihood)-gpdvlaFixedLikelihood-  = lens _gpdvlaFixedLikelihood-      (\ s a -> s{_gpdvlaFixedLikelihood = a})---- | Increase or decrease the likelihood by the specified number of levels.--- For example, if a finding would be \`POSSIBLE\` without the detection--- rule and \`relative_likelihood\` is 1, then it is upgraded to--- \`LIKELY\`, while a value of -1 would downgrade it to \`UNLIKELY\`.--- Likelihood may never drop below \`VERY_UNLIKELY\` or exceed--- \`VERY_LIKELY\`, so applying an adjustment of 1 followed by an--- adjustment of -1 when base likelihood is \`VERY_LIKELY\` will result in--- a final likelihood of \`LIKELY\`.-gpdvlaRelativeLikelihood :: Lens' GooglePrivacyDlpV2LikelihoodAdjustment (Maybe Int32)-gpdvlaRelativeLikelihood-  = lens _gpdvlaRelativeLikelihood-      (\ s a -> s{_gpdvlaRelativeLikelihood = a})-      . mapping _Coerce--instance FromJSON-         GooglePrivacyDlpV2LikelihoodAdjustment where-        parseJSON-          = withObject "GooglePrivacyDlpV2LikelihoodAdjustment"-              (\ o ->-                 GooglePrivacyDlpV2LikelihoodAdjustment' <$>-                   (o .:? "fixedLikelihood") <*>-                     (o .:? "relativeLikelihood"))--instance ToJSON-         GooglePrivacyDlpV2LikelihoodAdjustment where-        toJSON GooglePrivacyDlpV2LikelihoodAdjustment'{..}-          = object-              (catMaybes-                 [("fixedLikelihood" .=) <$> _gpdvlaFixedLikelihood,-                  ("relativeLikelihood" .=) <$>-                    _gpdvlaRelativeLikelihood])---- | Message defining a custom regular expression.------ /See:/ 'googlePrivacyDlpV2Regex' smart constructor.-newtype GooglePrivacyDlpV2Regex = GooglePrivacyDlpV2Regex'-    { _gpdvrPattern :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Regex' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrPattern'-googlePrivacyDlpV2Regex-    :: GooglePrivacyDlpV2Regex-googlePrivacyDlpV2Regex =-    GooglePrivacyDlpV2Regex'-    { _gpdvrPattern = Nothing-    }---- | Pattern defining the regular expression. Its syntax--- (https:\/\/github.com\/google\/re2\/wiki\/Syntax) can be found under the--- google\/re2 repository on GitHub.-gpdvrPattern :: Lens' GooglePrivacyDlpV2Regex (Maybe Text)-gpdvrPattern-  = lens _gpdvrPattern (\ s a -> s{_gpdvrPattern = a})--instance FromJSON GooglePrivacyDlpV2Regex where-        parseJSON-          = withObject "GooglePrivacyDlpV2Regex"-              (\ o ->-                 GooglePrivacyDlpV2Regex' <$> (o .:? "pattern"))--instance ToJSON GooglePrivacyDlpV2Regex where-        toJSON GooglePrivacyDlpV2Regex'{..}-          = object-              (catMaybes [("pattern" .=) <$> _gpdvrPattern])---- | Request message for UpdateStoredInfoType.------ /See:/ 'googlePrivacyDlpV2UpdateStoredInfoTypeRequest' smart constructor.-data GooglePrivacyDlpV2UpdateStoredInfoTypeRequest = GooglePrivacyDlpV2UpdateStoredInfoTypeRequest'-    { _gpdvusitrConfig     :: !(Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)-    , _gpdvusitrUpdateMask :: !(Maybe GFieldMask)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2UpdateStoredInfoTypeRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvusitrConfig'------ * 'gpdvusitrUpdateMask'-googlePrivacyDlpV2UpdateStoredInfoTypeRequest-    :: GooglePrivacyDlpV2UpdateStoredInfoTypeRequest-googlePrivacyDlpV2UpdateStoredInfoTypeRequest =-    GooglePrivacyDlpV2UpdateStoredInfoTypeRequest'-    { _gpdvusitrConfig = Nothing-    , _gpdvusitrUpdateMask = Nothing-    }---- | Updated configuration for the storedInfoType. If not provided, a new--- version of the storedInfoType will be created with the existing--- configuration.-gpdvusitrConfig :: Lens' GooglePrivacyDlpV2UpdateStoredInfoTypeRequest (Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)-gpdvusitrConfig-  = lens _gpdvusitrConfig-      (\ s a -> s{_gpdvusitrConfig = a})---- | Mask to control which fields get updated.-gpdvusitrUpdateMask :: Lens' GooglePrivacyDlpV2UpdateStoredInfoTypeRequest (Maybe GFieldMask)-gpdvusitrUpdateMask-  = lens _gpdvusitrUpdateMask-      (\ s a -> s{_gpdvusitrUpdateMask = a})--instance FromJSON-         GooglePrivacyDlpV2UpdateStoredInfoTypeRequest where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2UpdateStoredInfoTypeRequest"-              (\ o ->-                 GooglePrivacyDlpV2UpdateStoredInfoTypeRequest' <$>-                   (o .:? "config") <*> (o .:? "updateMask"))--instance ToJSON-         GooglePrivacyDlpV2UpdateStoredInfoTypeRequest where-        toJSON-          GooglePrivacyDlpV2UpdateStoredInfoTypeRequest'{..}-          = object-              (catMaybes-                 [("config" .=) <$> _gpdvusitrConfig,-                  ("updateMask" .=) <$> _gpdvusitrUpdateMask])---- | The set of columns\' values that share the same ldiversity value------ /See:/ 'googlePrivacyDlpV2KAnonymityEquivalenceClass' smart constructor.-data GooglePrivacyDlpV2KAnonymityEquivalenceClass = GooglePrivacyDlpV2KAnonymityEquivalenceClass'-    { _gpdvkaecEquivalenceClassSize :: !(Maybe (Textual Int64))-    , _gpdvkaecQuasiIdsValues       :: !(Maybe [GooglePrivacyDlpV2Value])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2KAnonymityEquivalenceClass' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvkaecEquivalenceClassSize'------ * 'gpdvkaecQuasiIdsValues'-googlePrivacyDlpV2KAnonymityEquivalenceClass-    :: GooglePrivacyDlpV2KAnonymityEquivalenceClass-googlePrivacyDlpV2KAnonymityEquivalenceClass =-    GooglePrivacyDlpV2KAnonymityEquivalenceClass'-    { _gpdvkaecEquivalenceClassSize = Nothing-    , _gpdvkaecQuasiIdsValues = Nothing-    }---- | Size of the equivalence class, for example number of rows with the above--- set of values.-gpdvkaecEquivalenceClassSize :: Lens' GooglePrivacyDlpV2KAnonymityEquivalenceClass (Maybe Int64)-gpdvkaecEquivalenceClassSize-  = lens _gpdvkaecEquivalenceClassSize-      (\ s a -> s{_gpdvkaecEquivalenceClassSize = a})-      . mapping _Coerce---- | Set of values defining the equivalence class. One value per--- quasi-identifier column in the original KAnonymity metric message. The--- order is always the same as the original request.-gpdvkaecQuasiIdsValues :: Lens' GooglePrivacyDlpV2KAnonymityEquivalenceClass [GooglePrivacyDlpV2Value]-gpdvkaecQuasiIdsValues-  = lens _gpdvkaecQuasiIdsValues-      (\ s a -> s{_gpdvkaecQuasiIdsValues = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2KAnonymityEquivalenceClass where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2KAnonymityEquivalenceClass"-              (\ o ->-                 GooglePrivacyDlpV2KAnonymityEquivalenceClass' <$>-                   (o .:? "equivalenceClassSize") <*>-                     (o .:? "quasiIdsValues" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2KAnonymityEquivalenceClass where-        toJSON-          GooglePrivacyDlpV2KAnonymityEquivalenceClass'{..}-          = object-              (catMaybes-                 [("equivalenceClassSize" .=) <$>-                    _gpdvkaecEquivalenceClassSize,-                  ("quasiIdsValues" .=) <$> _gpdvkaecQuasiIdsValues])---- | Request message for UpdateDeidentifyTemplate.------ /See:/ 'googlePrivacyDlpV2UpdateDeidentifyTemplateRequest' smart constructor.-data GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest = GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest'-    { _gpdvudtrUpdateMask         :: !(Maybe GFieldMask)-    , _gpdvudtrDeidentifyTemplate :: !(Maybe GooglePrivacyDlpV2DeidentifyTemplate)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvudtrUpdateMask'------ * 'gpdvudtrDeidentifyTemplate'-googlePrivacyDlpV2UpdateDeidentifyTemplateRequest-    :: GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest-googlePrivacyDlpV2UpdateDeidentifyTemplateRequest =-    GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest'-    { _gpdvudtrUpdateMask = Nothing-    , _gpdvudtrDeidentifyTemplate = Nothing-    }---- | Mask to control which fields get updated.-gpdvudtrUpdateMask :: Lens' GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest (Maybe GFieldMask)-gpdvudtrUpdateMask-  = lens _gpdvudtrUpdateMask-      (\ s a -> s{_gpdvudtrUpdateMask = a})---- | New DeidentifyTemplate value.-gpdvudtrDeidentifyTemplate :: Lens' GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest (Maybe GooglePrivacyDlpV2DeidentifyTemplate)-gpdvudtrDeidentifyTemplate-  = lens _gpdvudtrDeidentifyTemplate-      (\ s a -> s{_gpdvudtrDeidentifyTemplate = a})--instance FromJSON-         GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest-         where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest"-              (\ o ->-                 GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest'-                   <$>-                   (o .:? "updateMask") <*>-                     (o .:? "deidentifyTemplate"))--instance ToJSON-         GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest-         where-        toJSON-          GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest'{..}-          = object-              (catMaybes-                 [("updateMask" .=) <$> _gpdvudtrUpdateMask,-                  ("deidentifyTemplate" .=) <$>-                    _gpdvudtrDeidentifyTemplate])---- | l-diversity metric, used for analysis of reidentification risk.------ /See:/ 'googlePrivacyDlpV2LDiversityConfig' smart constructor.-data GooglePrivacyDlpV2LDiversityConfig = GooglePrivacyDlpV2LDiversityConfig'-    { _gpdvldcSensitiveAttribute :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvldcQuasiIds           :: !(Maybe [GooglePrivacyDlpV2FieldId])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2LDiversityConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvldcSensitiveAttribute'------ * 'gpdvldcQuasiIds'-googlePrivacyDlpV2LDiversityConfig-    :: GooglePrivacyDlpV2LDiversityConfig-googlePrivacyDlpV2LDiversityConfig =-    GooglePrivacyDlpV2LDiversityConfig'-    { _gpdvldcSensitiveAttribute = Nothing-    , _gpdvldcQuasiIds = Nothing-    }---- | Sensitive field for computing the l-value.-gpdvldcSensitiveAttribute :: Lens' GooglePrivacyDlpV2LDiversityConfig (Maybe GooglePrivacyDlpV2FieldId)-gpdvldcSensitiveAttribute-  = lens _gpdvldcSensitiveAttribute-      (\ s a -> s{_gpdvldcSensitiveAttribute = a})---- | Set of quasi-identifiers indicating how equivalence classes are defined--- for the l-diversity computation. When multiple fields are specified,--- they are considered a single composite key.-gpdvldcQuasiIds :: Lens' GooglePrivacyDlpV2LDiversityConfig [GooglePrivacyDlpV2FieldId]-gpdvldcQuasiIds-  = lens _gpdvldcQuasiIds-      (\ s a -> s{_gpdvldcQuasiIds = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2LDiversityConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2LDiversityConfig"-              (\ o ->-                 GooglePrivacyDlpV2LDiversityConfig' <$>-                   (o .:? "sensitiveAttribute") <*>-                     (o .:? "quasiIds" .!= mempty))--instance ToJSON GooglePrivacyDlpV2LDiversityConfig-         where-        toJSON GooglePrivacyDlpV2LDiversityConfig'{..}-          = object-              (catMaybes-                 [("sensitiveAttribute" .=) <$>-                    _gpdvldcSensitiveAttribute,-                  ("quasiIds" .=) <$> _gpdvldcQuasiIds])---- | Request to de-identify a list of items.------ /See:/ 'googlePrivacyDlpV2DeidentifyContentRequest' smart constructor.-data GooglePrivacyDlpV2DeidentifyContentRequest = GooglePrivacyDlpV2DeidentifyContentRequest'-    { _gpdvdcrInspectConfig          :: !(Maybe GooglePrivacyDlpV2InspectConfig)-    , _gpdvdcrDeidentifyConfig       :: !(Maybe GooglePrivacyDlpV2DeidentifyConfig)-    , _gpdvdcrDeidentifyTemplateName :: !(Maybe Text)-    , _gpdvdcrItem                   :: !(Maybe GooglePrivacyDlpV2ContentItem)-    , _gpdvdcrInspectTemplateName    :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DeidentifyContentRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdcrInspectConfig'------ * 'gpdvdcrDeidentifyConfig'------ * 'gpdvdcrDeidentifyTemplateName'------ * 'gpdvdcrItem'------ * 'gpdvdcrInspectTemplateName'-googlePrivacyDlpV2DeidentifyContentRequest-    :: GooglePrivacyDlpV2DeidentifyContentRequest-googlePrivacyDlpV2DeidentifyContentRequest =-    GooglePrivacyDlpV2DeidentifyContentRequest'-    { _gpdvdcrInspectConfig = Nothing-    , _gpdvdcrDeidentifyConfig = Nothing-    , _gpdvdcrDeidentifyTemplateName = Nothing-    , _gpdvdcrItem = Nothing-    , _gpdvdcrInspectTemplateName = Nothing-    }---- | Configuration for the inspector. Items specified here will override the--- template referenced by the inspect_template_name argument.-gpdvdcrInspectConfig :: Lens' GooglePrivacyDlpV2DeidentifyContentRequest (Maybe GooglePrivacyDlpV2InspectConfig)-gpdvdcrInspectConfig-  = lens _gpdvdcrInspectConfig-      (\ s a -> s{_gpdvdcrInspectConfig = a})---- | Configuration for the de-identification of the content item. Items--- specified here will override the template referenced by the--- deidentify_template_name argument.-gpdvdcrDeidentifyConfig :: Lens' GooglePrivacyDlpV2DeidentifyContentRequest (Maybe GooglePrivacyDlpV2DeidentifyConfig)-gpdvdcrDeidentifyConfig-  = lens _gpdvdcrDeidentifyConfig-      (\ s a -> s{_gpdvdcrDeidentifyConfig = a})---- | Optional template to use. Any configuration directly specified in--- deidentify_config will override those set in the template. Singular--- fields that are set in this request will replace their corresponding--- fields in the template. Repeated fields are appended. Singular--- sub-messages and groups are recursively merged.-gpdvdcrDeidentifyTemplateName :: Lens' GooglePrivacyDlpV2DeidentifyContentRequest (Maybe Text)-gpdvdcrDeidentifyTemplateName-  = lens _gpdvdcrDeidentifyTemplateName-      (\ s a -> s{_gpdvdcrDeidentifyTemplateName = a})---- | The item to de-identify. Will be treated as text.-gpdvdcrItem :: Lens' GooglePrivacyDlpV2DeidentifyContentRequest (Maybe GooglePrivacyDlpV2ContentItem)-gpdvdcrItem-  = lens _gpdvdcrItem (\ s a -> s{_gpdvdcrItem = a})---- | Optional template to use. Any configuration directly specified in--- inspect_config will override those set in the template. Singular fields--- that are set in this request will replace their corresponding fields in--- the template. Repeated fields are appended. Singular sub-messages and--- groups are recursively merged.-gpdvdcrInspectTemplateName :: Lens' GooglePrivacyDlpV2DeidentifyContentRequest (Maybe Text)-gpdvdcrInspectTemplateName-  = lens _gpdvdcrInspectTemplateName-      (\ s a -> s{_gpdvdcrInspectTemplateName = a})--instance FromJSON-         GooglePrivacyDlpV2DeidentifyContentRequest where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2DeidentifyContentRequest"-              (\ o ->-                 GooglePrivacyDlpV2DeidentifyContentRequest' <$>-                   (o .:? "inspectConfig") <*>-                     (o .:? "deidentifyConfig")-                     <*> (o .:? "deidentifyTemplateName")-                     <*> (o .:? "item")-                     <*> (o .:? "inspectTemplateName"))--instance ToJSON-         GooglePrivacyDlpV2DeidentifyContentRequest where-        toJSON-          GooglePrivacyDlpV2DeidentifyContentRequest'{..}-          = object-              (catMaybes-                 [("inspectConfig" .=) <$> _gpdvdcrInspectConfig,-                  ("deidentifyConfig" .=) <$> _gpdvdcrDeidentifyConfig,-                  ("deidentifyTemplateName" .=) <$>-                    _gpdvdcrDeidentifyTemplateName,-                  ("item" .=) <$> _gpdvdcrItem,-                  ("inspectTemplateName" .=) <$>-                    _gpdvdcrInspectTemplateName])---- | Represents a color in the RGB color space.------ /See:/ 'googlePrivacyDlpV2Color' smart constructor.-data GooglePrivacyDlpV2Color = GooglePrivacyDlpV2Color'-    { _gpdvcRed   :: !(Maybe (Textual Double))-    , _gpdvcGreen :: !(Maybe (Textual Double))-    , _gpdvcBlue  :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Color' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcRed'------ * 'gpdvcGreen'------ * 'gpdvcBlue'-googlePrivacyDlpV2Color-    :: GooglePrivacyDlpV2Color-googlePrivacyDlpV2Color =-    GooglePrivacyDlpV2Color'-    { _gpdvcRed = Nothing-    , _gpdvcGreen = Nothing-    , _gpdvcBlue = Nothing-    }---- | The amount of red in the color as a value in the interval [0, 1].-gpdvcRed :: Lens' GooglePrivacyDlpV2Color (Maybe Double)-gpdvcRed-  = lens _gpdvcRed (\ s a -> s{_gpdvcRed = a}) .-      mapping _Coerce---- | The amount of green in the color as a value in the interval [0, 1].-gpdvcGreen :: Lens' GooglePrivacyDlpV2Color (Maybe Double)-gpdvcGreen-  = lens _gpdvcGreen (\ s a -> s{_gpdvcGreen = a}) .-      mapping _Coerce---- | The amount of blue in the color as a value in the interval [0, 1].-gpdvcBlue :: Lens' GooglePrivacyDlpV2Color (Maybe Double)-gpdvcBlue-  = lens _gpdvcBlue (\ s a -> s{_gpdvcBlue = a}) .-      mapping _Coerce--instance FromJSON GooglePrivacyDlpV2Color where-        parseJSON-          = withObject "GooglePrivacyDlpV2Color"-              (\ o ->-                 GooglePrivacyDlpV2Color' <$>-                   (o .:? "red") <*> (o .:? "green") <*> (o .:? "blue"))--instance ToJSON GooglePrivacyDlpV2Color where-        toJSON GooglePrivacyDlpV2Color'{..}-          = object-              (catMaybes-                 [("red" .=) <$> _gpdvcRed,-                  ("green" .=) <$> _gpdvcGreen,-                  ("blue" .=) <$> _gpdvcBlue])---- | The response message for listing DLP jobs.------ /See:/ 'googlePrivacyDlpV2ListDlpJobsResponse' smart constructor.-data GooglePrivacyDlpV2ListDlpJobsResponse = GooglePrivacyDlpV2ListDlpJobsResponse'-    { _gpdvldjrNextPageToken :: !(Maybe Text)-    , _gpdvldjrJobs          :: !(Maybe [GooglePrivacyDlpV2DlpJob])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ListDlpJobsResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvldjrNextPageToken'------ * 'gpdvldjrJobs'-googlePrivacyDlpV2ListDlpJobsResponse-    :: GooglePrivacyDlpV2ListDlpJobsResponse-googlePrivacyDlpV2ListDlpJobsResponse =-    GooglePrivacyDlpV2ListDlpJobsResponse'-    { _gpdvldjrNextPageToken = Nothing-    , _gpdvldjrJobs = Nothing-    }---- | The standard List next-page token.-gpdvldjrNextPageToken :: Lens' GooglePrivacyDlpV2ListDlpJobsResponse (Maybe Text)-gpdvldjrNextPageToken-  = lens _gpdvldjrNextPageToken-      (\ s a -> s{_gpdvldjrNextPageToken = a})---- | A list of DlpJobs that matches the specified filter in the request.-gpdvldjrJobs :: Lens' GooglePrivacyDlpV2ListDlpJobsResponse [GooglePrivacyDlpV2DlpJob]-gpdvldjrJobs-  = lens _gpdvldjrJobs (\ s a -> s{_gpdvldjrJobs = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2ListDlpJobsResponse where-        parseJSON-          = withObject "GooglePrivacyDlpV2ListDlpJobsResponse"-              (\ o ->-                 GooglePrivacyDlpV2ListDlpJobsResponse' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "jobs" .!= mempty))--instance ToJSON GooglePrivacyDlpV2ListDlpJobsResponse-         where-        toJSON GooglePrivacyDlpV2ListDlpJobsResponse'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _gpdvldjrNextPageToken,-                  ("jobs" .=) <$> _gpdvldjrJobs])---- | Message for specifying a window around a finding to apply a detection--- rule.------ /See:/ 'googlePrivacyDlpV2Proximity' smart constructor.-data GooglePrivacyDlpV2Proximity = GooglePrivacyDlpV2Proximity'-    { _gpdvpWindowAfter  :: !(Maybe (Textual Int32))-    , _gpdvpWindowBefore :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Proximity' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvpWindowAfter'------ * 'gpdvpWindowBefore'-googlePrivacyDlpV2Proximity-    :: GooglePrivacyDlpV2Proximity-googlePrivacyDlpV2Proximity =-    GooglePrivacyDlpV2Proximity'-    { _gpdvpWindowAfter = Nothing-    , _gpdvpWindowBefore = Nothing-    }---- | Number of characters after the finding to consider.-gpdvpWindowAfter :: Lens' GooglePrivacyDlpV2Proximity (Maybe Int32)-gpdvpWindowAfter-  = lens _gpdvpWindowAfter-      (\ s a -> s{_gpdvpWindowAfter = a})-      . mapping _Coerce---- | Number of characters before the finding to consider.-gpdvpWindowBefore :: Lens' GooglePrivacyDlpV2Proximity (Maybe Int32)-gpdvpWindowBefore-  = lens _gpdvpWindowBefore-      (\ s a -> s{_gpdvpWindowBefore = a})-      . mapping _Coerce--instance FromJSON GooglePrivacyDlpV2Proximity where-        parseJSON-          = withObject "GooglePrivacyDlpV2Proximity"-              (\ o ->-                 GooglePrivacyDlpV2Proximity' <$>-                   (o .:? "windowAfter") <*> (o .:? "windowBefore"))--instance ToJSON GooglePrivacyDlpV2Proximity where-        toJSON GooglePrivacyDlpV2Proximity'{..}-          = object-              (catMaybes-                 [("windowAfter" .=) <$> _gpdvpWindowAfter,-                  ("windowBefore" .=) <$> _gpdvpWindowBefore])---- | Represents a piece of potentially sensitive content.------ /See:/ 'googlePrivacyDlpV2Finding' smart constructor.-data GooglePrivacyDlpV2Finding = GooglePrivacyDlpV2Finding'-    { _gpdvfLocation   :: !(Maybe GooglePrivacyDlpV2Location)-    , _gpdvfInfoType   :: !(Maybe GooglePrivacyDlpV2InfoType)-    , _gpdvfQuoteInfo  :: !(Maybe GooglePrivacyDlpV2QuoteInfo)-    , _gpdvfLikelihood :: !(Maybe GooglePrivacyDlpV2FindingLikelihood)-    , _gpdvfQuote      :: !(Maybe Text)-    , _gpdvfCreateTime :: !(Maybe DateTime')-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Finding' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvfLocation'------ * 'gpdvfInfoType'------ * 'gpdvfQuoteInfo'------ * 'gpdvfLikelihood'------ * 'gpdvfQuote'------ * 'gpdvfCreateTime'-googlePrivacyDlpV2Finding-    :: GooglePrivacyDlpV2Finding-googlePrivacyDlpV2Finding =-    GooglePrivacyDlpV2Finding'-    { _gpdvfLocation = Nothing-    , _gpdvfInfoType = Nothing-    , _gpdvfQuoteInfo = Nothing-    , _gpdvfLikelihood = Nothing-    , _gpdvfQuote = Nothing-    , _gpdvfCreateTime = Nothing-    }---- | Where the content was found.-gpdvfLocation :: Lens' GooglePrivacyDlpV2Finding (Maybe GooglePrivacyDlpV2Location)-gpdvfLocation-  = lens _gpdvfLocation-      (\ s a -> s{_gpdvfLocation = a})---- | The type of content that might have been found. Provided if--- \`excluded_types\` is false.-gpdvfInfoType :: Lens' GooglePrivacyDlpV2Finding (Maybe GooglePrivacyDlpV2InfoType)-gpdvfInfoType-  = lens _gpdvfInfoType-      (\ s a -> s{_gpdvfInfoType = a})---- | Contains data parsed from quotes. Only populated if include_quote was--- set to true and a supported infoType was requested. Currently supported--- infoTypes: DATE, DATE_OF_BIRTH and TIME.-gpdvfQuoteInfo :: Lens' GooglePrivacyDlpV2Finding (Maybe GooglePrivacyDlpV2QuoteInfo)-gpdvfQuoteInfo-  = lens _gpdvfQuoteInfo-      (\ s a -> s{_gpdvfQuoteInfo = a})---- | Confidence of how likely it is that the \`info_type\` is correct.-gpdvfLikelihood :: Lens' GooglePrivacyDlpV2Finding (Maybe GooglePrivacyDlpV2FindingLikelihood)-gpdvfLikelihood-  = lens _gpdvfLikelihood-      (\ s a -> s{_gpdvfLikelihood = a})---- | The content that was found. Even if the content is not textual, it may--- be converted to a textual representation here. Provided if--- \`include_quote\` is true and the finding is less than or equal to 4096--- bytes long. If the finding exceeds 4096 bytes in length, the quote may--- be omitted.-gpdvfQuote :: Lens' GooglePrivacyDlpV2Finding (Maybe Text)-gpdvfQuote-  = lens _gpdvfQuote (\ s a -> s{_gpdvfQuote = a})---- | Timestamp when finding was detected.-gpdvfCreateTime :: Lens' GooglePrivacyDlpV2Finding (Maybe UTCTime)-gpdvfCreateTime-  = lens _gpdvfCreateTime-      (\ s a -> s{_gpdvfCreateTime = a})-      . mapping _DateTime--instance FromJSON GooglePrivacyDlpV2Finding where-        parseJSON-          = withObject "GooglePrivacyDlpV2Finding"-              (\ o ->-                 GooglePrivacyDlpV2Finding' <$>-                   (o .:? "location") <*> (o .:? "infoType") <*>-                     (o .:? "quoteInfo")-                     <*> (o .:? "likelihood")-                     <*> (o .:? "quote")-                     <*> (o .:? "createTime"))--instance ToJSON GooglePrivacyDlpV2Finding where-        toJSON GooglePrivacyDlpV2Finding'{..}-          = object-              (catMaybes-                 [("location" .=) <$> _gpdvfLocation,-                  ("infoType" .=) <$> _gpdvfInfoType,-                  ("quoteInfo" .=) <$> _gpdvfQuoteInfo,-                  ("likelihood" .=) <$> _gpdvfLikelihood,-                  ("quote" .=) <$> _gpdvfQuote,-                  ("createTime" .=) <$> _gpdvfCreateTime])---- | A collection that informs the user the number of times a particular--- \`TransformationResultCode\` and error details occurred.------ /See:/ 'googlePrivacyDlpV2SummaryResult' smart constructor.-data GooglePrivacyDlpV2SummaryResult = GooglePrivacyDlpV2SummaryResult'-    { _gpdvsrCount   :: !(Maybe (Textual Int64))-    , _gpdvsrDetails :: !(Maybe Text)-    , _gpdvsrCode    :: !(Maybe GooglePrivacyDlpV2SummaryResultCode)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2SummaryResult' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvsrCount'------ * 'gpdvsrDetails'------ * 'gpdvsrCode'-googlePrivacyDlpV2SummaryResult-    :: GooglePrivacyDlpV2SummaryResult-googlePrivacyDlpV2SummaryResult =-    GooglePrivacyDlpV2SummaryResult'-    { _gpdvsrCount = Nothing-    , _gpdvsrDetails = Nothing-    , _gpdvsrCode = Nothing-    }--gpdvsrCount :: Lens' GooglePrivacyDlpV2SummaryResult (Maybe Int64)-gpdvsrCount-  = lens _gpdvsrCount (\ s a -> s{_gpdvsrCount = a}) .-      mapping _Coerce---- | A place for warnings or errors to show up if a transformation didn\'t--- work as expected.-gpdvsrDetails :: Lens' GooglePrivacyDlpV2SummaryResult (Maybe Text)-gpdvsrDetails-  = lens _gpdvsrDetails-      (\ s a -> s{_gpdvsrDetails = a})--gpdvsrCode :: Lens' GooglePrivacyDlpV2SummaryResult (Maybe GooglePrivacyDlpV2SummaryResultCode)-gpdvsrCode-  = lens _gpdvsrCode (\ s a -> s{_gpdvsrCode = a})--instance FromJSON GooglePrivacyDlpV2SummaryResult-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2SummaryResult"-              (\ o ->-                 GooglePrivacyDlpV2SummaryResult' <$>-                   (o .:? "count") <*> (o .:? "details") <*>-                     (o .:? "code"))--instance ToJSON GooglePrivacyDlpV2SummaryResult where-        toJSON GooglePrivacyDlpV2SummaryResult'{..}-          = object-              (catMaybes-                 [("count" .=) <$> _gpdvsrCount,-                  ("details" .=) <$> _gpdvsrDetails,-                  ("code" .=) <$> _gpdvsrCode])------- /See:/ 'googlePrivacyDlpV2Row' smart constructor.-newtype GooglePrivacyDlpV2Row = GooglePrivacyDlpV2Row'-    { _gpdvrValues :: Maybe [GooglePrivacyDlpV2Value]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Row' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrValues'-googlePrivacyDlpV2Row-    :: GooglePrivacyDlpV2Row-googlePrivacyDlpV2Row =-    GooglePrivacyDlpV2Row'-    { _gpdvrValues = Nothing-    }--gpdvrValues :: Lens' GooglePrivacyDlpV2Row [GooglePrivacyDlpV2Value]-gpdvrValues-  = lens _gpdvrValues (\ s a -> s{_gpdvrValues = a}) .-      _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2Row where-        parseJSON-          = withObject "GooglePrivacyDlpV2Row"-              (\ o ->-                 GooglePrivacyDlpV2Row' <$>-                   (o .:? "values" .!= mempty))--instance ToJSON GooglePrivacyDlpV2Row where-        toJSON GooglePrivacyDlpV2Row'{..}-          = object (catMaybes [("values" .=) <$> _gpdvrValues])---- | Replace each matching finding with the name of the info_type.------ /See:/ 'googlePrivacyDlpV2ReplaceWithInfoTypeConfig' smart constructor.-data GooglePrivacyDlpV2ReplaceWithInfoTypeConfig =-    GooglePrivacyDlpV2ReplaceWithInfoTypeConfig'-    deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ReplaceWithInfoTypeConfig' with the minimum fields required to make a request.----googlePrivacyDlpV2ReplaceWithInfoTypeConfig-    :: GooglePrivacyDlpV2ReplaceWithInfoTypeConfig-googlePrivacyDlpV2ReplaceWithInfoTypeConfig =-    GooglePrivacyDlpV2ReplaceWithInfoTypeConfig'--instance FromJSON-         GooglePrivacyDlpV2ReplaceWithInfoTypeConfig where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2ReplaceWithInfoTypeConfig"-              (\ o ->-                 pure GooglePrivacyDlpV2ReplaceWithInfoTypeConfig')--instance ToJSON-         GooglePrivacyDlpV2ReplaceWithInfoTypeConfig where-        toJSON = const emptyObject---- | Represents a time of day. The date and time zone are either not--- significant or are specified elsewhere. An API may choose to allow leap--- seconds. Related types are google.type.Date and--- \`google.protobuf.Timestamp\`.------ /See:/ 'googleTypeTimeOfDay' smart constructor.-data GoogleTypeTimeOfDay = GoogleTypeTimeOfDay'-    { _gttodNanos   :: !(Maybe (Textual Int32))-    , _gttodHours   :: !(Maybe (Textual Int32))-    , _gttodMinutes :: !(Maybe (Textual Int32))-    , _gttodSeconds :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GoogleTypeTimeOfDay' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gttodNanos'------ * 'gttodHours'------ * 'gttodMinutes'------ * 'gttodSeconds'-googleTypeTimeOfDay-    :: GoogleTypeTimeOfDay-googleTypeTimeOfDay =-    GoogleTypeTimeOfDay'-    { _gttodNanos = Nothing-    , _gttodHours = Nothing-    , _gttodMinutes = Nothing-    , _gttodSeconds = Nothing-    }---- | Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.-gttodNanos :: Lens' GoogleTypeTimeOfDay (Maybe Int32)-gttodNanos-  = lens _gttodNanos (\ s a -> s{_gttodNanos = a}) .-      mapping _Coerce---- | Hours of day in 24 hour format. Should be from 0 to 23. An API may--- choose to allow the value \"24:00:00\" for scenarios like business--- closing time.-gttodHours :: Lens' GoogleTypeTimeOfDay (Maybe Int32)-gttodHours-  = lens _gttodHours (\ s a -> s{_gttodHours = a}) .-      mapping _Coerce---- | Minutes of hour of day. Must be from 0 to 59.-gttodMinutes :: Lens' GoogleTypeTimeOfDay (Maybe Int32)-gttodMinutes-  = lens _gttodMinutes (\ s a -> s{_gttodMinutes = a})-      . mapping _Coerce---- | Seconds of minutes of the time. Must normally be from 0 to 59. An API--- may allow the value 60 if it allows leap-seconds.-gttodSeconds :: Lens' GoogleTypeTimeOfDay (Maybe Int32)-gttodSeconds-  = lens _gttodSeconds (\ s a -> s{_gttodSeconds = a})-      . mapping _Coerce--instance FromJSON GoogleTypeTimeOfDay where-        parseJSON-          = withObject "GoogleTypeTimeOfDay"-              (\ o ->-                 GoogleTypeTimeOfDay' <$>-                   (o .:? "nanos") <*> (o .:? "hours") <*>-                     (o .:? "minutes")-                     <*> (o .:? "seconds"))--instance ToJSON GoogleTypeTimeOfDay where-        toJSON GoogleTypeTimeOfDay'{..}-          = object-              (catMaybes-                 [("nanos" .=) <$> _gttodNanos,-                  ("hours" .=) <$> _gttodHours,-                  ("minutes" .=) <$> _gttodMinutes,-                  ("seconds" .=) <$> _gttodSeconds])---- | The rule that specifies conditions when findings of infoTypes specified--- in \`InspectionRuleSet\` are removed from results.------ /See:/ 'googlePrivacyDlpV2ExclusionRule' smart constructor.-data GooglePrivacyDlpV2ExclusionRule = GooglePrivacyDlpV2ExclusionRule'-    { _gpdverRegex            :: !(Maybe GooglePrivacyDlpV2Regex)-    , _gpdverExcludeInfoTypes :: !(Maybe GooglePrivacyDlpV2ExcludeInfoTypes)-    , _gpdverDictionary       :: !(Maybe GooglePrivacyDlpV2Dictionary)-    , _gpdverMatchingType     :: !(Maybe GooglePrivacyDlpV2ExclusionRuleMatchingType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ExclusionRule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdverRegex'------ * 'gpdverExcludeInfoTypes'------ * 'gpdverDictionary'------ * 'gpdverMatchingType'-googlePrivacyDlpV2ExclusionRule-    :: GooglePrivacyDlpV2ExclusionRule-googlePrivacyDlpV2ExclusionRule =-    GooglePrivacyDlpV2ExclusionRule'-    { _gpdverRegex = Nothing-    , _gpdverExcludeInfoTypes = Nothing-    , _gpdverDictionary = Nothing-    , _gpdverMatchingType = Nothing-    }---- | Regular expression which defines the rule.-gpdverRegex :: Lens' GooglePrivacyDlpV2ExclusionRule (Maybe GooglePrivacyDlpV2Regex)-gpdverRegex-  = lens _gpdverRegex (\ s a -> s{_gpdverRegex = a})---- | Set of infoTypes for which findings would affect this rule.-gpdverExcludeInfoTypes :: Lens' GooglePrivacyDlpV2ExclusionRule (Maybe GooglePrivacyDlpV2ExcludeInfoTypes)-gpdverExcludeInfoTypes-  = lens _gpdverExcludeInfoTypes-      (\ s a -> s{_gpdverExcludeInfoTypes = a})---- | Dictionary which defines the rule.-gpdverDictionary :: Lens' GooglePrivacyDlpV2ExclusionRule (Maybe GooglePrivacyDlpV2Dictionary)-gpdverDictionary-  = lens _gpdverDictionary-      (\ s a -> s{_gpdverDictionary = a})---- | How the rule is applied, see MatchingType documentation for details.-gpdverMatchingType :: Lens' GooglePrivacyDlpV2ExclusionRule (Maybe GooglePrivacyDlpV2ExclusionRuleMatchingType)-gpdverMatchingType-  = lens _gpdverMatchingType-      (\ s a -> s{_gpdverMatchingType = a})--instance FromJSON GooglePrivacyDlpV2ExclusionRule-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2ExclusionRule"-              (\ o ->-                 GooglePrivacyDlpV2ExclusionRule' <$>-                   (o .:? "regex") <*> (o .:? "excludeInfoTypes") <*>-                     (o .:? "dictionary")-                     <*> (o .:? "matchingType"))--instance ToJSON GooglePrivacyDlpV2ExclusionRule where-        toJSON GooglePrivacyDlpV2ExclusionRule'{..}-          = object-              (catMaybes-                 [("regex" .=) <$> _gpdverRegex,-                  ("excludeInfoTypes" .=) <$> _gpdverExcludeInfoTypes,-                  ("dictionary" .=) <$> _gpdverDictionary,-                  ("matchingType" .=) <$> _gpdverMatchingType])---- | Request message for CreateDlpJobRequest. Used to initiate long running--- jobs such as calculating risk metrics or inspecting Google Cloud--- Storage.------ /See:/ 'googlePrivacyDlpV2CreateDlpJobRequest' smart constructor.-data GooglePrivacyDlpV2CreateDlpJobRequest = GooglePrivacyDlpV2CreateDlpJobRequest'-    { _gpdvcdjrRiskJob    :: !(Maybe GooglePrivacyDlpV2RiskAnalysisJobConfig)-    , _gpdvcdjrJobId      :: !(Maybe Text)-    , _gpdvcdjrInspectJob :: !(Maybe GooglePrivacyDlpV2InspectJobConfig)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CreateDlpJobRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcdjrRiskJob'------ * 'gpdvcdjrJobId'------ * 'gpdvcdjrInspectJob'-googlePrivacyDlpV2CreateDlpJobRequest-    :: GooglePrivacyDlpV2CreateDlpJobRequest-googlePrivacyDlpV2CreateDlpJobRequest =-    GooglePrivacyDlpV2CreateDlpJobRequest'-    { _gpdvcdjrRiskJob = Nothing-    , _gpdvcdjrJobId = Nothing-    , _gpdvcdjrInspectJob = Nothing-    }--gpdvcdjrRiskJob :: Lens' GooglePrivacyDlpV2CreateDlpJobRequest (Maybe GooglePrivacyDlpV2RiskAnalysisJobConfig)-gpdvcdjrRiskJob-  = lens _gpdvcdjrRiskJob-      (\ s a -> s{_gpdvcdjrRiskJob = a})---- | The job id can contain uppercase and lowercase letters, numbers, and--- hyphens; that is, it must match the regular expression:--- \`[a-zA-Z\\\\d-]+\`. The maximum length is 100 characters. Can be empty--- to allow the system to generate one.-gpdvcdjrJobId :: Lens' GooglePrivacyDlpV2CreateDlpJobRequest (Maybe Text)-gpdvcdjrJobId-  = lens _gpdvcdjrJobId-      (\ s a -> s{_gpdvcdjrJobId = a})--gpdvcdjrInspectJob :: Lens' GooglePrivacyDlpV2CreateDlpJobRequest (Maybe GooglePrivacyDlpV2InspectJobConfig)-gpdvcdjrInspectJob-  = lens _gpdvcdjrInspectJob-      (\ s a -> s{_gpdvcdjrInspectJob = a})--instance FromJSON-         GooglePrivacyDlpV2CreateDlpJobRequest where-        parseJSON-          = withObject "GooglePrivacyDlpV2CreateDlpJobRequest"-              (\ o ->-                 GooglePrivacyDlpV2CreateDlpJobRequest' <$>-                   (o .:? "riskJob") <*> (o .:? "jobId") <*>-                     (o .:? "inspectJob"))--instance ToJSON GooglePrivacyDlpV2CreateDlpJobRequest-         where-        toJSON GooglePrivacyDlpV2CreateDlpJobRequest'{..}-          = object-              (catMaybes-                 [("riskJob" .=) <$> _gpdvcdjrRiskJob,-                  ("jobId" .=) <$> _gpdvcdjrJobId,-                  ("inspectJob" .=) <$> _gpdvcdjrInspectJob])---- | Message for a unique key indicating a record that contains a finding.------ /See:/ 'googlePrivacyDlpV2RecordKey' smart constructor.-data GooglePrivacyDlpV2RecordKey = GooglePrivacyDlpV2RecordKey'-    { _gpdvrkIdValues     :: !(Maybe [Text])-    , _gpdvrkDatastoreKey :: !(Maybe GooglePrivacyDlpV2DatastoreKey)-    , _gpdvrkBigQueryKey  :: !(Maybe GooglePrivacyDlpV2BigQueryKey)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2RecordKey' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrkIdValues'------ * 'gpdvrkDatastoreKey'------ * 'gpdvrkBigQueryKey'-googlePrivacyDlpV2RecordKey-    :: GooglePrivacyDlpV2RecordKey-googlePrivacyDlpV2RecordKey =-    GooglePrivacyDlpV2RecordKey'-    { _gpdvrkIdValues = Nothing-    , _gpdvrkDatastoreKey = Nothing-    , _gpdvrkBigQueryKey = Nothing-    }---- | Values of identifying columns in the given row. Order of values matches--- the order of field identifiers specified in the scanning request.-gpdvrkIdValues :: Lens' GooglePrivacyDlpV2RecordKey [Text]-gpdvrkIdValues-  = lens _gpdvrkIdValues-      (\ s a -> s{_gpdvrkIdValues = a})-      . _Default-      . _Coerce--gpdvrkDatastoreKey :: Lens' GooglePrivacyDlpV2RecordKey (Maybe GooglePrivacyDlpV2DatastoreKey)-gpdvrkDatastoreKey-  = lens _gpdvrkDatastoreKey-      (\ s a -> s{_gpdvrkDatastoreKey = a})--gpdvrkBigQueryKey :: Lens' GooglePrivacyDlpV2RecordKey (Maybe GooglePrivacyDlpV2BigQueryKey)-gpdvrkBigQueryKey-  = lens _gpdvrkBigQueryKey-      (\ s a -> s{_gpdvrkBigQueryKey = a})--instance FromJSON GooglePrivacyDlpV2RecordKey where-        parseJSON-          = withObject "GooglePrivacyDlpV2RecordKey"-              (\ o ->-                 GooglePrivacyDlpV2RecordKey' <$>-                   (o .:? "idValues" .!= mempty) <*>-                     (o .:? "datastoreKey")-                     <*> (o .:? "bigQueryKey"))--instance ToJSON GooglePrivacyDlpV2RecordKey where-        toJSON GooglePrivacyDlpV2RecordKey'{..}-          = object-              (catMaybes-                 [("idValues" .=) <$> _gpdvrkIdValues,-                  ("datastoreKey" .=) <$> _gpdvrkDatastoreKey,-                  ("bigQueryKey" .=) <$> _gpdvrkBigQueryKey])---- | A KMapEstimationHistogramBucket message with the following values:--- min_anonymity: 3 max_anonymity: 5 frequency: 42 means that there are 42--- records whose quasi-identifier values correspond to 3, 4 or 5 people in--- the overlying population. An important particular case is when--- min_anonymity = max_anonymity = 1: the frequency field then corresponds--- to the number of uniquely identifiable records.------ /See:/ 'googlePrivacyDlpV2KMapEstimationHistogramBucket' smart constructor.-data GooglePrivacyDlpV2KMapEstimationHistogramBucket = GooglePrivacyDlpV2KMapEstimationHistogramBucket'-    { _gpdvkmehbMaxAnonymity     :: !(Maybe (Textual Int64))-    , _gpdvkmehbBucketValues     :: !(Maybe [GooglePrivacyDlpV2KMapEstimationQuasiIdValues])-    , _gpdvkmehbMinAnonymity     :: !(Maybe (Textual Int64))-    , _gpdvkmehbBucketSize       :: !(Maybe (Textual Int64))-    , _gpdvkmehbBucketValueCount :: !(Maybe (Textual Int64))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2KMapEstimationHistogramBucket' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvkmehbMaxAnonymity'------ * 'gpdvkmehbBucketValues'------ * 'gpdvkmehbMinAnonymity'------ * 'gpdvkmehbBucketSize'------ * 'gpdvkmehbBucketValueCount'-googlePrivacyDlpV2KMapEstimationHistogramBucket-    :: GooglePrivacyDlpV2KMapEstimationHistogramBucket-googlePrivacyDlpV2KMapEstimationHistogramBucket =-    GooglePrivacyDlpV2KMapEstimationHistogramBucket'-    { _gpdvkmehbMaxAnonymity = Nothing-    , _gpdvkmehbBucketValues = Nothing-    , _gpdvkmehbMinAnonymity = Nothing-    , _gpdvkmehbBucketSize = Nothing-    , _gpdvkmehbBucketValueCount = Nothing-    }---- | Always greater than or equal to min_anonymity.-gpdvkmehbMaxAnonymity :: Lens' GooglePrivacyDlpV2KMapEstimationHistogramBucket (Maybe Int64)-gpdvkmehbMaxAnonymity-  = lens _gpdvkmehbMaxAnonymity-      (\ s a -> s{_gpdvkmehbMaxAnonymity = a})-      . mapping _Coerce---- | Sample of quasi-identifier tuple values in this bucket. The total number--- of classes returned per bucket is capped at 20.-gpdvkmehbBucketValues :: Lens' GooglePrivacyDlpV2KMapEstimationHistogramBucket [GooglePrivacyDlpV2KMapEstimationQuasiIdValues]-gpdvkmehbBucketValues-  = lens _gpdvkmehbBucketValues-      (\ s a -> s{_gpdvkmehbBucketValues = a})-      . _Default-      . _Coerce---- | Always positive.-gpdvkmehbMinAnonymity :: Lens' GooglePrivacyDlpV2KMapEstimationHistogramBucket (Maybe Int64)-gpdvkmehbMinAnonymity-  = lens _gpdvkmehbMinAnonymity-      (\ s a -> s{_gpdvkmehbMinAnonymity = a})-      . mapping _Coerce---- | Number of records within these anonymity bounds.-gpdvkmehbBucketSize :: Lens' GooglePrivacyDlpV2KMapEstimationHistogramBucket (Maybe Int64)-gpdvkmehbBucketSize-  = lens _gpdvkmehbBucketSize-      (\ s a -> s{_gpdvkmehbBucketSize = a})-      . mapping _Coerce---- | Total number of distinct quasi-identifier tuple values in this bucket.-gpdvkmehbBucketValueCount :: Lens' GooglePrivacyDlpV2KMapEstimationHistogramBucket (Maybe Int64)-gpdvkmehbBucketValueCount-  = lens _gpdvkmehbBucketValueCount-      (\ s a -> s{_gpdvkmehbBucketValueCount = a})-      . mapping _Coerce--instance FromJSON-         GooglePrivacyDlpV2KMapEstimationHistogramBucket where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2KMapEstimationHistogramBucket"-              (\ o ->-                 GooglePrivacyDlpV2KMapEstimationHistogramBucket' <$>-                   (o .:? "maxAnonymity") <*>-                     (o .:? "bucketValues" .!= mempty)-                     <*> (o .:? "minAnonymity")-                     <*> (o .:? "bucketSize")-                     <*> (o .:? "bucketValueCount"))--instance ToJSON-         GooglePrivacyDlpV2KMapEstimationHistogramBucket where-        toJSON-          GooglePrivacyDlpV2KMapEstimationHistogramBucket'{..}-          = object-              (catMaybes-                 [("maxAnonymity" .=) <$> _gpdvkmehbMaxAnonymity,-                  ("bucketValues" .=) <$> _gpdvkmehbBucketValues,-                  ("minAnonymity" .=) <$> _gpdvkmehbMinAnonymity,-                  ("bucketSize" .=) <$> _gpdvkmehbBucketSize,-                  ("bucketValueCount" .=) <$>-                    _gpdvkmehbBucketValueCount])---- | Response message for ListDeidentifyTemplates.------ /See:/ 'googlePrivacyDlpV2ListDeidentifyTemplatesResponse' smart constructor.-data GooglePrivacyDlpV2ListDeidentifyTemplatesResponse = GooglePrivacyDlpV2ListDeidentifyTemplatesResponse'-    { _gpdvldtrNextPageToken       :: !(Maybe Text)-    , _gpdvldtrDeidentifyTemplates :: !(Maybe [GooglePrivacyDlpV2DeidentifyTemplate])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ListDeidentifyTemplatesResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvldtrNextPageToken'------ * 'gpdvldtrDeidentifyTemplates'-googlePrivacyDlpV2ListDeidentifyTemplatesResponse-    :: GooglePrivacyDlpV2ListDeidentifyTemplatesResponse-googlePrivacyDlpV2ListDeidentifyTemplatesResponse =-    GooglePrivacyDlpV2ListDeidentifyTemplatesResponse'-    { _gpdvldtrNextPageToken = Nothing-    , _gpdvldtrDeidentifyTemplates = Nothing-    }---- | If the next page is available then the next page token to be used in--- following ListDeidentifyTemplates request.-gpdvldtrNextPageToken :: Lens' GooglePrivacyDlpV2ListDeidentifyTemplatesResponse (Maybe Text)-gpdvldtrNextPageToken-  = lens _gpdvldtrNextPageToken-      (\ s a -> s{_gpdvldtrNextPageToken = a})---- | List of deidentify templates, up to page_size in--- ListDeidentifyTemplatesRequest.-gpdvldtrDeidentifyTemplates :: Lens' GooglePrivacyDlpV2ListDeidentifyTemplatesResponse [GooglePrivacyDlpV2DeidentifyTemplate]-gpdvldtrDeidentifyTemplates-  = lens _gpdvldtrDeidentifyTemplates-      (\ s a -> s{_gpdvldtrDeidentifyTemplates = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2ListDeidentifyTemplatesResponse-         where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2ListDeidentifyTemplatesResponse"-              (\ o ->-                 GooglePrivacyDlpV2ListDeidentifyTemplatesResponse'-                   <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "deidentifyTemplates" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2ListDeidentifyTemplatesResponse-         where-        toJSON-          GooglePrivacyDlpV2ListDeidentifyTemplatesResponse'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _gpdvldtrNextPageToken,-                  ("deidentifyTemplates" .=) <$>-                    _gpdvldtrDeidentifyTemplates])---- | k-anonymity metric, used for analysis of reidentification risk.------ /See:/ 'googlePrivacyDlpV2KAnonymityConfig' smart constructor.-data GooglePrivacyDlpV2KAnonymityConfig = GooglePrivacyDlpV2KAnonymityConfig'-    { _gpdvkacEntityId :: !(Maybe GooglePrivacyDlpV2EntityId)-    , _gpdvkacQuasiIds :: !(Maybe [GooglePrivacyDlpV2FieldId])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2KAnonymityConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvkacEntityId'------ * 'gpdvkacQuasiIds'-googlePrivacyDlpV2KAnonymityConfig-    :: GooglePrivacyDlpV2KAnonymityConfig-googlePrivacyDlpV2KAnonymityConfig =-    GooglePrivacyDlpV2KAnonymityConfig'-    { _gpdvkacEntityId = Nothing-    , _gpdvkacQuasiIds = Nothing-    }---- | Optional message indicating that multiple rows might be associated to a--- single individual. If the same entity_id is associated to multiple--- quasi-identifier tuples over distinct rows, we consider the entire--- collection of tuples as the composite quasi-identifier. This collection--- is a multiset: the order in which the different tuples appear in the--- dataset is ignored, but their frequency is taken into account. Important--- note: a maximum of 1000 rows can be associated to a single entity ID. If--- more rows are associated with the same entity ID, some might be ignored.-gpdvkacEntityId :: Lens' GooglePrivacyDlpV2KAnonymityConfig (Maybe GooglePrivacyDlpV2EntityId)-gpdvkacEntityId-  = lens _gpdvkacEntityId-      (\ s a -> s{_gpdvkacEntityId = a})---- | Set of fields to compute k-anonymity over. When multiple fields are--- specified, they are considered a single composite key. Structs and--- repeated data types are not supported; however, nested fields are--- supported so long as they are not structs themselves or nested within a--- repeated field.-gpdvkacQuasiIds :: Lens' GooglePrivacyDlpV2KAnonymityConfig [GooglePrivacyDlpV2FieldId]-gpdvkacQuasiIds-  = lens _gpdvkacQuasiIds-      (\ s a -> s{_gpdvkacQuasiIds = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2KAnonymityConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2KAnonymityConfig"-              (\ o ->-                 GooglePrivacyDlpV2KAnonymityConfig' <$>-                   (o .:? "entityId") <*> (o .:? "quasiIds" .!= mempty))--instance ToJSON GooglePrivacyDlpV2KAnonymityConfig-         where-        toJSON GooglePrivacyDlpV2KAnonymityConfig'{..}-          = object-              (catMaybes-                 [("entityId" .=) <$> _gpdvkacEntityId,-                  ("quasiIds" .=) <$> _gpdvkacQuasiIds])---- | Results of de-identifying a ContentItem.------ /See:/ 'googlePrivacyDlpV2DeidentifyContentResponse' smart constructor.-data GooglePrivacyDlpV2DeidentifyContentResponse = GooglePrivacyDlpV2DeidentifyContentResponse'-    { _gOverview :: !(Maybe GooglePrivacyDlpV2TransformationOverview)-    , _gItem     :: !(Maybe GooglePrivacyDlpV2ContentItem)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DeidentifyContentResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gOverview'------ * 'gItem'-googlePrivacyDlpV2DeidentifyContentResponse-    :: GooglePrivacyDlpV2DeidentifyContentResponse-googlePrivacyDlpV2DeidentifyContentResponse =-    GooglePrivacyDlpV2DeidentifyContentResponse'-    { _gOverview = Nothing-    , _gItem = Nothing-    }---- | An overview of the changes that were made on the \`item\`.-gOverview :: Lens' GooglePrivacyDlpV2DeidentifyContentResponse (Maybe GooglePrivacyDlpV2TransformationOverview)-gOverview-  = lens _gOverview (\ s a -> s{_gOverview = a})---- | The de-identified item.-gItem :: Lens' GooglePrivacyDlpV2DeidentifyContentResponse (Maybe GooglePrivacyDlpV2ContentItem)-gItem = lens _gItem (\ s a -> s{_gItem = a})--instance FromJSON-         GooglePrivacyDlpV2DeidentifyContentResponse where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2DeidentifyContentResponse"-              (\ o ->-                 GooglePrivacyDlpV2DeidentifyContentResponse' <$>-                   (o .:? "overview") <*> (o .:? "item"))--instance ToJSON-         GooglePrivacyDlpV2DeidentifyContentResponse where-        toJSON-          GooglePrivacyDlpV2DeidentifyContentResponse'{..}-          = object-              (catMaybes-                 [("overview" .=) <$> _gOverview,-                  ("item" .=) <$> _gItem])---- | Contains a configuration to make dlp api calls on a repeating basis. See--- https:\/\/cloud.google.com\/dlp\/docs\/concepts-job-triggers to learn--- more.------ /See:/ 'googlePrivacyDlpV2JobTrigger' smart constructor.-data GooglePrivacyDlpV2JobTrigger = GooglePrivacyDlpV2JobTrigger'-    { _gpdvjtStatus      :: !(Maybe GooglePrivacyDlpV2JobTriggerStatus)-    , _gpdvjtTriggers    :: !(Maybe [GooglePrivacyDlpV2Trigger])-    , _gpdvjtLastRunTime :: !(Maybe DateTime')-    , _gpdvjtInspectJob  :: !(Maybe GooglePrivacyDlpV2InspectJobConfig)-    , _gpdvjtUpdateTime  :: !(Maybe DateTime')-    , _gpdvjtName        :: !(Maybe Text)-    , _gpdvjtDisplayName :: !(Maybe Text)-    , _gpdvjtErrors      :: !(Maybe [GooglePrivacyDlpV2Error])-    , _gpdvjtDescription :: !(Maybe Text)-    , _gpdvjtCreateTime  :: !(Maybe DateTime')-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2JobTrigger' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvjtStatus'------ * 'gpdvjtTriggers'------ * 'gpdvjtLastRunTime'------ * 'gpdvjtInspectJob'------ * 'gpdvjtUpdateTime'------ * 'gpdvjtName'------ * 'gpdvjtDisplayName'------ * 'gpdvjtErrors'------ * 'gpdvjtDescription'------ * 'gpdvjtCreateTime'-googlePrivacyDlpV2JobTrigger-    :: GooglePrivacyDlpV2JobTrigger-googlePrivacyDlpV2JobTrigger =-    GooglePrivacyDlpV2JobTrigger'-    { _gpdvjtStatus = Nothing-    , _gpdvjtTriggers = Nothing-    , _gpdvjtLastRunTime = Nothing-    , _gpdvjtInspectJob = Nothing-    , _gpdvjtUpdateTime = Nothing-    , _gpdvjtName = Nothing-    , _gpdvjtDisplayName = Nothing-    , _gpdvjtErrors = Nothing-    , _gpdvjtDescription = Nothing-    , _gpdvjtCreateTime = Nothing-    }---- | A status for this trigger. [required]-gpdvjtStatus :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe GooglePrivacyDlpV2JobTriggerStatus)-gpdvjtStatus-  = lens _gpdvjtStatus (\ s a -> s{_gpdvjtStatus = a})---- | A list of triggers which will be OR\'ed together. Only one in the list--- needs to trigger for a job to be started. The list may contain only a--- single Schedule trigger and must have at least one object.-gpdvjtTriggers :: Lens' GooglePrivacyDlpV2JobTrigger [GooglePrivacyDlpV2Trigger]-gpdvjtTriggers-  = lens _gpdvjtTriggers-      (\ s a -> s{_gpdvjtTriggers = a})-      . _Default-      . _Coerce---- | The timestamp of the last time this trigger executed, output only field.-gpdvjtLastRunTime :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe UTCTime)-gpdvjtLastRunTime-  = lens _gpdvjtLastRunTime-      (\ s a -> s{_gpdvjtLastRunTime = a})-      . mapping _DateTime--gpdvjtInspectJob :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe GooglePrivacyDlpV2InspectJobConfig)-gpdvjtInspectJob-  = lens _gpdvjtInspectJob-      (\ s a -> s{_gpdvjtInspectJob = a})---- | The last update timestamp of a triggeredJob, output only field.-gpdvjtUpdateTime :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe UTCTime)-gpdvjtUpdateTime-  = lens _gpdvjtUpdateTime-      (\ s a -> s{_gpdvjtUpdateTime = a})-      . mapping _DateTime---- | Unique resource name for the triggeredJob, assigned by the service when--- the triggeredJob is created, for example--- \`projects\/dlp-test-project\/triggeredJobs\/53234423\`.-gpdvjtName :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe Text)-gpdvjtName-  = lens _gpdvjtName (\ s a -> s{_gpdvjtName = a})---- | Display name (max 100 chars)-gpdvjtDisplayName :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe Text)-gpdvjtDisplayName-  = lens _gpdvjtDisplayName-      (\ s a -> s{_gpdvjtDisplayName = a})---- | A stream of errors encountered when the trigger was activated. Repeated--- errors may result in the JobTrigger automatically being paused. Will--- return the last 100 errors. Whenever the JobTrigger is modified this--- list will be cleared. Output only field.-gpdvjtErrors :: Lens' GooglePrivacyDlpV2JobTrigger [GooglePrivacyDlpV2Error]-gpdvjtErrors-  = lens _gpdvjtErrors (\ s a -> s{_gpdvjtErrors = a})-      . _Default-      . _Coerce---- | User provided description (max 256 chars)-gpdvjtDescription :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe Text)-gpdvjtDescription-  = lens _gpdvjtDescription-      (\ s a -> s{_gpdvjtDescription = a})---- | The creation timestamp of a triggeredJob, output only field.-gpdvjtCreateTime :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe UTCTime)-gpdvjtCreateTime-  = lens _gpdvjtCreateTime-      (\ s a -> s{_gpdvjtCreateTime = a})-      . mapping _DateTime--instance FromJSON GooglePrivacyDlpV2JobTrigger where-        parseJSON-          = withObject "GooglePrivacyDlpV2JobTrigger"-              (\ o ->-                 GooglePrivacyDlpV2JobTrigger' <$>-                   (o .:? "status") <*> (o .:? "triggers" .!= mempty)-                     <*> (o .:? "lastRunTime")-                     <*> (o .:? "inspectJob")-                     <*> (o .:? "updateTime")-                     <*> (o .:? "name")-                     <*> (o .:? "displayName")-                     <*> (o .:? "errors" .!= mempty)-                     <*> (o .:? "description")-                     <*> (o .:? "createTime"))--instance ToJSON GooglePrivacyDlpV2JobTrigger where-        toJSON GooglePrivacyDlpV2JobTrigger'{..}-          = object-              (catMaybes-                 [("status" .=) <$> _gpdvjtStatus,-                  ("triggers" .=) <$> _gpdvjtTriggers,-                  ("lastRunTime" .=) <$> _gpdvjtLastRunTime,-                  ("inspectJob" .=) <$> _gpdvjtInspectJob,-                  ("updateTime" .=) <$> _gpdvjtUpdateTime,-                  ("name" .=) <$> _gpdvjtName,-                  ("displayName" .=) <$> _gpdvjtDisplayName,-                  ("errors" .=) <$> _gpdvjtErrors,-                  ("description" .=) <$> _gpdvjtDescription,-                  ("createTime" .=) <$> _gpdvjtCreateTime])---- | Response message for ListStoredInfoTypes.------ /See:/ 'googlePrivacyDlpV2ListStoredInfoTypesResponse' smart constructor.-data GooglePrivacyDlpV2ListStoredInfoTypesResponse = GooglePrivacyDlpV2ListStoredInfoTypesResponse'-    { _gpdvlsitrNextPageToken   :: !(Maybe Text)-    , _gpdvlsitrStoredInfoTypes :: !(Maybe [GooglePrivacyDlpV2StoredInfoType])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ListStoredInfoTypesResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvlsitrNextPageToken'------ * 'gpdvlsitrStoredInfoTypes'-googlePrivacyDlpV2ListStoredInfoTypesResponse-    :: GooglePrivacyDlpV2ListStoredInfoTypesResponse-googlePrivacyDlpV2ListStoredInfoTypesResponse =-    GooglePrivacyDlpV2ListStoredInfoTypesResponse'-    { _gpdvlsitrNextPageToken = Nothing-    , _gpdvlsitrStoredInfoTypes = Nothing-    }---- | If the next page is available then the next page token to be used in--- following ListStoredInfoTypes request.-gpdvlsitrNextPageToken :: Lens' GooglePrivacyDlpV2ListStoredInfoTypesResponse (Maybe Text)-gpdvlsitrNextPageToken-  = lens _gpdvlsitrNextPageToken-      (\ s a -> s{_gpdvlsitrNextPageToken = a})---- | List of storedInfoTypes, up to page_size in ListStoredInfoTypesRequest.-gpdvlsitrStoredInfoTypes :: Lens' GooglePrivacyDlpV2ListStoredInfoTypesResponse [GooglePrivacyDlpV2StoredInfoType]-gpdvlsitrStoredInfoTypes-  = lens _gpdvlsitrStoredInfoTypes-      (\ s a -> s{_gpdvlsitrStoredInfoTypes = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2ListStoredInfoTypesResponse where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2ListStoredInfoTypesResponse"-              (\ o ->-                 GooglePrivacyDlpV2ListStoredInfoTypesResponse' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "storedInfoTypes" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2ListStoredInfoTypesResponse where-        toJSON-          GooglePrivacyDlpV2ListStoredInfoTypesResponse'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _gpdvlsitrNextPageToken,-                  ("storedInfoTypes" .=) <$>-                    _gpdvlsitrStoredInfoTypes])---- | The set of columns\' values that share the same ldiversity value.------ /See:/ 'googlePrivacyDlpV2LDiversityEquivalenceClass' smart constructor.-data GooglePrivacyDlpV2LDiversityEquivalenceClass = GooglePrivacyDlpV2LDiversityEquivalenceClass'-    { _gpdvldecTopSensitiveValues         :: !(Maybe [GooglePrivacyDlpV2ValueFrequency])-    , _gpdvldecEquivalenceClassSize       :: !(Maybe (Textual Int64))-    , _gpdvldecNumDistinctSensitiveValues :: !(Maybe (Textual Int64))-    , _gpdvldecQuasiIdsValues             :: !(Maybe [GooglePrivacyDlpV2Value])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2LDiversityEquivalenceClass' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvldecTopSensitiveValues'------ * 'gpdvldecEquivalenceClassSize'------ * 'gpdvldecNumDistinctSensitiveValues'------ * 'gpdvldecQuasiIdsValues'-googlePrivacyDlpV2LDiversityEquivalenceClass-    :: GooglePrivacyDlpV2LDiversityEquivalenceClass-googlePrivacyDlpV2LDiversityEquivalenceClass =-    GooglePrivacyDlpV2LDiversityEquivalenceClass'-    { _gpdvldecTopSensitiveValues = Nothing-    , _gpdvldecEquivalenceClassSize = Nothing-    , _gpdvldecNumDistinctSensitiveValues = Nothing-    , _gpdvldecQuasiIdsValues = Nothing-    }---- | Estimated frequencies of top sensitive values.-gpdvldecTopSensitiveValues :: Lens' GooglePrivacyDlpV2LDiversityEquivalenceClass [GooglePrivacyDlpV2ValueFrequency]-gpdvldecTopSensitiveValues-  = lens _gpdvldecTopSensitiveValues-      (\ s a -> s{_gpdvldecTopSensitiveValues = a})-      . _Default-      . _Coerce---- | Size of the k-anonymity equivalence class.-gpdvldecEquivalenceClassSize :: Lens' GooglePrivacyDlpV2LDiversityEquivalenceClass (Maybe Int64)-gpdvldecEquivalenceClassSize-  = lens _gpdvldecEquivalenceClassSize-      (\ s a -> s{_gpdvldecEquivalenceClassSize = a})-      . mapping _Coerce---- | Number of distinct sensitive values in this equivalence class.-gpdvldecNumDistinctSensitiveValues :: Lens' GooglePrivacyDlpV2LDiversityEquivalenceClass (Maybe Int64)-gpdvldecNumDistinctSensitiveValues-  = lens _gpdvldecNumDistinctSensitiveValues-      (\ s a -> s{_gpdvldecNumDistinctSensitiveValues = a})-      . mapping _Coerce---- | Quasi-identifier values defining the k-anonymity equivalence class. The--- order is always the same as the original request.-gpdvldecQuasiIdsValues :: Lens' GooglePrivacyDlpV2LDiversityEquivalenceClass [GooglePrivacyDlpV2Value]-gpdvldecQuasiIdsValues-  = lens _gpdvldecQuasiIdsValues-      (\ s a -> s{_gpdvldecQuasiIdsValues = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2LDiversityEquivalenceClass where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2LDiversityEquivalenceClass"-              (\ o ->-                 GooglePrivacyDlpV2LDiversityEquivalenceClass' <$>-                   (o .:? "topSensitiveValues" .!= mempty) <*>-                     (o .:? "equivalenceClassSize")-                     <*> (o .:? "numDistinctSensitiveValues")-                     <*> (o .:? "quasiIdsValues" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2LDiversityEquivalenceClass where-        toJSON-          GooglePrivacyDlpV2LDiversityEquivalenceClass'{..}-          = object-              (catMaybes-                 [("topSensitiveValues" .=) <$>-                    _gpdvldecTopSensitiveValues,-                  ("equivalenceClassSize" .=) <$>-                    _gpdvldecEquivalenceClassSize,-                  ("numDistinctSensitiveValues" .=) <$>-                    _gpdvldecNumDistinctSensitiveValues,-                  ("quasiIdsValues" .=) <$> _gpdvldecQuasiIdsValues])---- | The configuration that controls how the data will change.------ /See:/ 'googlePrivacyDlpV2DeidentifyConfig' smart constructor.-data GooglePrivacyDlpV2DeidentifyConfig = GooglePrivacyDlpV2DeidentifyConfig'-    { _gpdvdcInfoTypeTransformations :: !(Maybe GooglePrivacyDlpV2InfoTypeTransformations)-    , _gpdvdcRecordTransformations   :: !(Maybe GooglePrivacyDlpV2RecordTransformations)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DeidentifyConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdcInfoTypeTransformations'------ * 'gpdvdcRecordTransformations'-googlePrivacyDlpV2DeidentifyConfig-    :: GooglePrivacyDlpV2DeidentifyConfig-googlePrivacyDlpV2DeidentifyConfig =-    GooglePrivacyDlpV2DeidentifyConfig'-    { _gpdvdcInfoTypeTransformations = Nothing-    , _gpdvdcRecordTransformations = Nothing-    }---- | Treat the dataset as free-form text and apply the same free text--- transformation everywhere.-gpdvdcInfoTypeTransformations :: Lens' GooglePrivacyDlpV2DeidentifyConfig (Maybe GooglePrivacyDlpV2InfoTypeTransformations)-gpdvdcInfoTypeTransformations-  = lens _gpdvdcInfoTypeTransformations-      (\ s a -> s{_gpdvdcInfoTypeTransformations = a})---- | Treat the dataset as structured. Transformations can be applied to--- specific locations within structured datasets, such as transforming a--- column within a table.-gpdvdcRecordTransformations :: Lens' GooglePrivacyDlpV2DeidentifyConfig (Maybe GooglePrivacyDlpV2RecordTransformations)-gpdvdcRecordTransformations-  = lens _gpdvdcRecordTransformations-      (\ s a -> s{_gpdvdcRecordTransformations = a})--instance FromJSON GooglePrivacyDlpV2DeidentifyConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2DeidentifyConfig"-              (\ o ->-                 GooglePrivacyDlpV2DeidentifyConfig' <$>-                   (o .:? "infoTypeTransformations") <*>-                     (o .:? "recordTransformations"))--instance ToJSON GooglePrivacyDlpV2DeidentifyConfig-         where-        toJSON GooglePrivacyDlpV2DeidentifyConfig'{..}-          = object-              (catMaybes-                 [("infoTypeTransformations" .=) <$>-                    _gpdvdcInfoTypeTransformations,-                  ("recordTransformations" .=) <$>-                    _gpdvdcRecordTransformations])---- | Partially mask a string by replacing a given number of characters with a--- fixed character. Masking can start from the beginning or end of the--- string. This can be used on data of any type (numbers, longs, and so on)--- and when de-identifying structured data we\'ll attempt to preserve the--- original data\'s type. (This allows you to take a long like 123 and--- modify it to a string like **3.------ /See:/ 'googlePrivacyDlpV2CharacterMaskConfig' smart constructor.-data GooglePrivacyDlpV2CharacterMaskConfig = GooglePrivacyDlpV2CharacterMaskConfig'-    { _gpdvcmcNumberToMask       :: !(Maybe (Textual Int32))-    , _gpdvcmcMaskingCharacter   :: !(Maybe Text)-    , _gpdvcmcReverseOrder       :: !(Maybe Bool)-    , _gpdvcmcCharactersToIgnore :: !(Maybe [GooglePrivacyDlpV2CharsToIgnore])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CharacterMaskConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcmcNumberToMask'------ * 'gpdvcmcMaskingCharacter'------ * 'gpdvcmcReverseOrder'------ * 'gpdvcmcCharactersToIgnore'-googlePrivacyDlpV2CharacterMaskConfig-    :: GooglePrivacyDlpV2CharacterMaskConfig-googlePrivacyDlpV2CharacterMaskConfig =-    GooglePrivacyDlpV2CharacterMaskConfig'-    { _gpdvcmcNumberToMask = Nothing-    , _gpdvcmcMaskingCharacter = Nothing-    , _gpdvcmcReverseOrder = Nothing-    , _gpdvcmcCharactersToIgnore = Nothing-    }---- | Number of characters to mask. If not set, all matching chars will be--- masked. Skipped characters do not count towards this tally.-gpdvcmcNumberToMask :: Lens' GooglePrivacyDlpV2CharacterMaskConfig (Maybe Int32)-gpdvcmcNumberToMask-  = lens _gpdvcmcNumberToMask-      (\ s a -> s{_gpdvcmcNumberToMask = a})-      . mapping _Coerce---- | Character to mask the sensitive values—for example, \"*\" for an--- alphabetic string such as name, or \"0\" for a numeric string such as--- ZIP code or credit card number. String must have length 1. If not--- supplied, we will default to \"*\" for strings, 0 for digits.-gpdvcmcMaskingCharacter :: Lens' GooglePrivacyDlpV2CharacterMaskConfig (Maybe Text)-gpdvcmcMaskingCharacter-  = lens _gpdvcmcMaskingCharacter-      (\ s a -> s{_gpdvcmcMaskingCharacter = a})---- | Mask characters in reverse order. For example, if \`masking_character\`--- is \'0\', number_to_mask is 14, and \`reverse_order\` is false, then--- 1234-5678-9012-3456 -> 00000000000000-3456 If \`masking_character\` is--- \'*\', \`number_to_mask\` is 3, and \`reverse_order\` is true, then--- 12345 -> 12***-gpdvcmcReverseOrder :: Lens' GooglePrivacyDlpV2CharacterMaskConfig (Maybe Bool)-gpdvcmcReverseOrder-  = lens _gpdvcmcReverseOrder-      (\ s a -> s{_gpdvcmcReverseOrder = a})---- | When masking a string, items in this list will be skipped when--- replacing. For example, if your string is 555-555-5555 and you ask us to--- skip \`-\` and mask 5 chars with * we would produce ***-*55-5555.-gpdvcmcCharactersToIgnore :: Lens' GooglePrivacyDlpV2CharacterMaskConfig [GooglePrivacyDlpV2CharsToIgnore]-gpdvcmcCharactersToIgnore-  = lens _gpdvcmcCharactersToIgnore-      (\ s a -> s{_gpdvcmcCharactersToIgnore = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2CharacterMaskConfig where-        parseJSON-          = withObject "GooglePrivacyDlpV2CharacterMaskConfig"-              (\ o ->-                 GooglePrivacyDlpV2CharacterMaskConfig' <$>-                   (o .:? "numberToMask") <*> (o .:? "maskingCharacter")-                     <*> (o .:? "reverseOrder")-                     <*> (o .:? "charactersToIgnore" .!= mempty))--instance ToJSON GooglePrivacyDlpV2CharacterMaskConfig-         where-        toJSON GooglePrivacyDlpV2CharacterMaskConfig'{..}-          = object-              (catMaybes-                 [("numberToMask" .=) <$> _gpdvcmcNumberToMask,-                  ("maskingCharacter" .=) <$> _gpdvcmcMaskingCharacter,-                  ("reverseOrder" .=) <$> _gpdvcmcReverseOrder,-                  ("charactersToIgnore" .=) <$>-                    _gpdvcmcCharactersToIgnore])---- | Options defining a data set within Google Cloud Datastore.------ /See:/ 'googlePrivacyDlpV2DatastoreOptions' smart constructor.-data GooglePrivacyDlpV2DatastoreOptions = GooglePrivacyDlpV2DatastoreOptions'-    { _gpdvdoPartitionId :: !(Maybe GooglePrivacyDlpV2PartitionId)-    , _gpdvdoKind        :: !(Maybe GooglePrivacyDlpV2KindExpression)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DatastoreOptions' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdoPartitionId'------ * 'gpdvdoKind'-googlePrivacyDlpV2DatastoreOptions-    :: GooglePrivacyDlpV2DatastoreOptions-googlePrivacyDlpV2DatastoreOptions =-    GooglePrivacyDlpV2DatastoreOptions'-    { _gpdvdoPartitionId = Nothing-    , _gpdvdoKind = Nothing-    }---- | A partition ID identifies a grouping of entities. The grouping is always--- by project and namespace, however the namespace ID may be empty.-gpdvdoPartitionId :: Lens' GooglePrivacyDlpV2DatastoreOptions (Maybe GooglePrivacyDlpV2PartitionId)-gpdvdoPartitionId-  = lens _gpdvdoPartitionId-      (\ s a -> s{_gpdvdoPartitionId = a})---- | The kind to process.-gpdvdoKind :: Lens' GooglePrivacyDlpV2DatastoreOptions (Maybe GooglePrivacyDlpV2KindExpression)-gpdvdoKind-  = lens _gpdvdoKind (\ s a -> s{_gpdvdoKind = a})--instance FromJSON GooglePrivacyDlpV2DatastoreOptions-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2DatastoreOptions"-              (\ o ->-                 GooglePrivacyDlpV2DatastoreOptions' <$>-                   (o .:? "partitionId") <*> (o .:? "kind"))--instance ToJSON GooglePrivacyDlpV2DatastoreOptions-         where-        toJSON GooglePrivacyDlpV2DatastoreOptions'{..}-          = object-              (catMaybes-                 [("partitionId" .=) <$> _gpdvdoPartitionId,-                  ("kind" .=) <$> _gpdvdoKind])---- | A value of a field, including its frequency.------ /See:/ 'googlePrivacyDlpV2ValueFrequency' smart constructor.-data GooglePrivacyDlpV2ValueFrequency = GooglePrivacyDlpV2ValueFrequency'-    { _gpdvvfValue :: !(Maybe GooglePrivacyDlpV2Value)-    , _gpdvvfCount :: !(Maybe (Textual Int64))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ValueFrequency' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvvfValue'------ * 'gpdvvfCount'-googlePrivacyDlpV2ValueFrequency-    :: GooglePrivacyDlpV2ValueFrequency-googlePrivacyDlpV2ValueFrequency =-    GooglePrivacyDlpV2ValueFrequency'-    { _gpdvvfValue = Nothing-    , _gpdvvfCount = Nothing-    }---- | A value contained in the field in question.-gpdvvfValue :: Lens' GooglePrivacyDlpV2ValueFrequency (Maybe GooglePrivacyDlpV2Value)-gpdvvfValue-  = lens _gpdvvfValue (\ s a -> s{_gpdvvfValue = a})---- | How many times the value is contained in the field.-gpdvvfCount :: Lens' GooglePrivacyDlpV2ValueFrequency (Maybe Int64)-gpdvvfCount-  = lens _gpdvvfCount (\ s a -> s{_gpdvvfCount = a}) .-      mapping _Coerce--instance FromJSON GooglePrivacyDlpV2ValueFrequency-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2ValueFrequency"-              (\ o ->-                 GooglePrivacyDlpV2ValueFrequency' <$>-                   (o .:? "value") <*> (o .:? "count"))--instance ToJSON GooglePrivacyDlpV2ValueFrequency-         where-        toJSON GooglePrivacyDlpV2ValueFrequency'{..}-          = object-              (catMaybes-                 [("value" .=) <$> _gpdvvfValue,-                  ("count" .=) <$> _gpdvvfCount])---- | Bounding box encompassing detected text within an image.------ /See:/ 'googlePrivacyDlpV2BoundingBox' smart constructor.-data GooglePrivacyDlpV2BoundingBox = GooglePrivacyDlpV2BoundingBox'-    { _gpdvbbHeight :: !(Maybe (Textual Int32))-    , _gpdvbbLeft   :: !(Maybe (Textual Int32))-    , _gpdvbbWidth  :: !(Maybe (Textual Int32))-    , _gpdvbbTop    :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2BoundingBox' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvbbHeight'------ * 'gpdvbbLeft'------ * 'gpdvbbWidth'------ * 'gpdvbbTop'-googlePrivacyDlpV2BoundingBox-    :: GooglePrivacyDlpV2BoundingBox-googlePrivacyDlpV2BoundingBox =-    GooglePrivacyDlpV2BoundingBox'-    { _gpdvbbHeight = Nothing-    , _gpdvbbLeft = Nothing-    , _gpdvbbWidth = Nothing-    , _gpdvbbTop = Nothing-    }---- | Height of the bounding box in pixels.-gpdvbbHeight :: Lens' GooglePrivacyDlpV2BoundingBox (Maybe Int32)-gpdvbbHeight-  = lens _gpdvbbHeight (\ s a -> s{_gpdvbbHeight = a})-      . mapping _Coerce---- | Left coordinate of the bounding box. (0,0) is upper left.-gpdvbbLeft :: Lens' GooglePrivacyDlpV2BoundingBox (Maybe Int32)-gpdvbbLeft-  = lens _gpdvbbLeft (\ s a -> s{_gpdvbbLeft = a}) .-      mapping _Coerce---- | Width of the bounding box in pixels.-gpdvbbWidth :: Lens' GooglePrivacyDlpV2BoundingBox (Maybe Int32)-gpdvbbWidth-  = lens _gpdvbbWidth (\ s a -> s{_gpdvbbWidth = a}) .-      mapping _Coerce---- | Top coordinate of the bounding box. (0,0) is upper left.-gpdvbbTop :: Lens' GooglePrivacyDlpV2BoundingBox (Maybe Int32)-gpdvbbTop-  = lens _gpdvbbTop (\ s a -> s{_gpdvbbTop = a}) .-      mapping _Coerce--instance FromJSON GooglePrivacyDlpV2BoundingBox where-        parseJSON-          = withObject "GooglePrivacyDlpV2BoundingBox"-              (\ o ->-                 GooglePrivacyDlpV2BoundingBox' <$>-                   (o .:? "height") <*> (o .:? "left") <*>-                     (o .:? "width")-                     <*> (o .:? "top"))--instance ToJSON GooglePrivacyDlpV2BoundingBox where-        toJSON GooglePrivacyDlpV2BoundingBox'{..}-          = object-              (catMaybes-                 [("height" .=) <$> _gpdvbbHeight,-                  ("left" .=) <$> _gpdvbbLeft,-                  ("width" .=) <$> _gpdvbbWidth,-                  ("top" .=) <$> _gpdvbbTop])---- | Datastore partition ID. A partition ID identifies a grouping of--- entities. The grouping is always by project and namespace, however the--- namespace ID may be empty. A partition ID contains several dimensions:--- project ID and namespace ID.------ /See:/ 'googlePrivacyDlpV2PartitionId' smart constructor.-data GooglePrivacyDlpV2PartitionId = GooglePrivacyDlpV2PartitionId'-    { _gpdvpiNamespaceId :: !(Maybe Text)-    , _gpdvpiProjectId   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2PartitionId' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvpiNamespaceId'------ * 'gpdvpiProjectId'-googlePrivacyDlpV2PartitionId-    :: GooglePrivacyDlpV2PartitionId-googlePrivacyDlpV2PartitionId =-    GooglePrivacyDlpV2PartitionId'-    { _gpdvpiNamespaceId = Nothing-    , _gpdvpiProjectId = Nothing-    }---- | If not empty, the ID of the namespace to which the entities belong.-gpdvpiNamespaceId :: Lens' GooglePrivacyDlpV2PartitionId (Maybe Text)-gpdvpiNamespaceId-  = lens _gpdvpiNamespaceId-      (\ s a -> s{_gpdvpiNamespaceId = a})---- | The ID of the project to which the entities belong.-gpdvpiProjectId :: Lens' GooglePrivacyDlpV2PartitionId (Maybe Text)-gpdvpiProjectId-  = lens _gpdvpiProjectId-      (\ s a -> s{_gpdvpiProjectId = a})--instance FromJSON GooglePrivacyDlpV2PartitionId where-        parseJSON-          = withObject "GooglePrivacyDlpV2PartitionId"-              (\ o ->-                 GooglePrivacyDlpV2PartitionId' <$>-                   (o .:? "namespaceId") <*> (o .:? "projectId"))--instance ToJSON GooglePrivacyDlpV2PartitionId where-        toJSON GooglePrivacyDlpV2PartitionId'{..}-          = object-              (catMaybes-                 [("namespaceId" .=) <$> _gpdvpiNamespaceId,-                  ("projectId" .=) <$> _gpdvpiProjectId])---- | If set, the detailed findings will be persisted to the specified--- OutputStorageConfig. Only a single instance of this action can be--- specified. Compatible with: Inspect, Risk------ /See:/ 'googlePrivacyDlpV2SaveFindings' smart constructor.-newtype GooglePrivacyDlpV2SaveFindings = GooglePrivacyDlpV2SaveFindings'-    { _gpdvsfOutputConfig :: Maybe GooglePrivacyDlpV2OutputStorageConfig-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2SaveFindings' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvsfOutputConfig'-googlePrivacyDlpV2SaveFindings-    :: GooglePrivacyDlpV2SaveFindings-googlePrivacyDlpV2SaveFindings =-    GooglePrivacyDlpV2SaveFindings'-    { _gpdvsfOutputConfig = Nothing-    }--gpdvsfOutputConfig :: Lens' GooglePrivacyDlpV2SaveFindings (Maybe GooglePrivacyDlpV2OutputStorageConfig)-gpdvsfOutputConfig-  = lens _gpdvsfOutputConfig-      (\ s a -> s{_gpdvsfOutputConfig = a})--instance FromJSON GooglePrivacyDlpV2SaveFindings-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2SaveFindings"-              (\ o ->-                 GooglePrivacyDlpV2SaveFindings' <$>-                   (o .:? "outputConfig"))--instance ToJSON GooglePrivacyDlpV2SaveFindings where-        toJSON GooglePrivacyDlpV2SaveFindings'{..}-          = object-              (catMaybes-                 [("outputConfig" .=) <$> _gpdvsfOutputConfig])---- | Version of a StoredInfoType, including the configuration used to build--- it, create timestamp, and current state.------ /See:/ 'googlePrivacyDlpV2StoredInfoTypeVersion' smart constructor.-data GooglePrivacyDlpV2StoredInfoTypeVersion = GooglePrivacyDlpV2StoredInfoTypeVersion'-    { _gpdvsitvState      :: !(Maybe GooglePrivacyDlpV2StoredInfoTypeVersionState)-    , _gpdvsitvConfig     :: !(Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)-    , _gpdvsitvErrors     :: !(Maybe [GooglePrivacyDlpV2Error])-    , _gpdvsitvCreateTime :: !(Maybe DateTime')-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2StoredInfoTypeVersion' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvsitvState'------ * 'gpdvsitvConfig'------ * 'gpdvsitvErrors'------ * 'gpdvsitvCreateTime'-googlePrivacyDlpV2StoredInfoTypeVersion-    :: GooglePrivacyDlpV2StoredInfoTypeVersion-googlePrivacyDlpV2StoredInfoTypeVersion =-    GooglePrivacyDlpV2StoredInfoTypeVersion'-    { _gpdvsitvState = Nothing-    , _gpdvsitvConfig = Nothing-    , _gpdvsitvErrors = Nothing-    , _gpdvsitvCreateTime = Nothing-    }---- | Stored info type version state. Read-only, updated by the system during--- dictionary creation.-gpdvsitvState :: Lens' GooglePrivacyDlpV2StoredInfoTypeVersion (Maybe GooglePrivacyDlpV2StoredInfoTypeVersionState)-gpdvsitvState-  = lens _gpdvsitvState-      (\ s a -> s{_gpdvsitvState = a})---- | StoredInfoType configuration.-gpdvsitvConfig :: Lens' GooglePrivacyDlpV2StoredInfoTypeVersion (Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)-gpdvsitvConfig-  = lens _gpdvsitvConfig-      (\ s a -> s{_gpdvsitvConfig = a})---- | Errors that occurred when creating this storedInfoType version, or--- anomalies detected in the storedInfoType data that render it unusable.--- Only the five most recent errors will be displayed, with the most recent--- error appearing first.------ For example, some of the data for stored custom dictionaries is put in--- the user\'s Google Cloud Storage bucket, and if this data is modified or--- deleted by the user or another system, the dictionary becomes invalid.------ If any errors occur, fix the problem indicated by the error message and--- use the UpdateStoredInfoType API method to create another version of the--- storedInfoType to continue using it, reusing the same \`config\` if it--- was not the source of the error.-gpdvsitvErrors :: Lens' GooglePrivacyDlpV2StoredInfoTypeVersion [GooglePrivacyDlpV2Error]-gpdvsitvErrors-  = lens _gpdvsitvErrors-      (\ s a -> s{_gpdvsitvErrors = a})-      . _Default-      . _Coerce---- | Create timestamp of the version. Read-only, determined by the system--- when the version is created.-gpdvsitvCreateTime :: Lens' GooglePrivacyDlpV2StoredInfoTypeVersion (Maybe UTCTime)-gpdvsitvCreateTime-  = lens _gpdvsitvCreateTime-      (\ s a -> s{_gpdvsitvCreateTime = a})-      . mapping _DateTime--instance FromJSON-         GooglePrivacyDlpV2StoredInfoTypeVersion where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2StoredInfoTypeVersion"-              (\ o ->-                 GooglePrivacyDlpV2StoredInfoTypeVersion' <$>-                   (o .:? "state") <*> (o .:? "config") <*>-                     (o .:? "errors" .!= mempty)-                     <*> (o .:? "createTime"))--instance ToJSON-         GooglePrivacyDlpV2StoredInfoTypeVersion where-        toJSON GooglePrivacyDlpV2StoredInfoTypeVersion'{..}-          = object-              (catMaybes-                 [("state" .=) <$> _gpdvsitvState,-                  ("config" .=) <$> _gpdvsitvConfig,-                  ("errors" .=) <$> _gpdvsitvErrors,-                  ("createTime" .=) <$> _gpdvsitvCreateTime])---- | Response to the ListInfoTypes request.------ /See:/ 'googlePrivacyDlpV2ListInfoTypesResponse' smart constructor.-newtype GooglePrivacyDlpV2ListInfoTypesResponse = GooglePrivacyDlpV2ListInfoTypesResponse'-    { _gpdvlitrInfoTypes :: Maybe [GooglePrivacyDlpV2InfoTypeDescription]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ListInfoTypesResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvlitrInfoTypes'-googlePrivacyDlpV2ListInfoTypesResponse-    :: GooglePrivacyDlpV2ListInfoTypesResponse-googlePrivacyDlpV2ListInfoTypesResponse =-    GooglePrivacyDlpV2ListInfoTypesResponse'-    { _gpdvlitrInfoTypes = Nothing-    }---- | Set of sensitive infoTypes.-gpdvlitrInfoTypes :: Lens' GooglePrivacyDlpV2ListInfoTypesResponse [GooglePrivacyDlpV2InfoTypeDescription]-gpdvlitrInfoTypes-  = lens _gpdvlitrInfoTypes-      (\ s a -> s{_gpdvlitrInfoTypes = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2ListInfoTypesResponse where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2ListInfoTypesResponse"-              (\ o ->-                 GooglePrivacyDlpV2ListInfoTypesResponse' <$>-                   (o .:? "infoTypes" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2ListInfoTypesResponse where-        toJSON GooglePrivacyDlpV2ListInfoTypesResponse'{..}-          = object-              (catMaybes [("infoTypes" .=) <$> _gpdvlitrInfoTypes])---- | Findings container location data.------ /See:/ 'googlePrivacyDlpV2ContentLocation' smart constructor.-data GooglePrivacyDlpV2ContentLocation = GooglePrivacyDlpV2ContentLocation'-    { _gpdvclImageLocation      :: !(Maybe GooglePrivacyDlpV2ImageLocation)-    , _gpdvclContainerName      :: !(Maybe Text)-    , _gpdvclContainerTimestamp :: !(Maybe DateTime')-    , _gpdvclDocumentLocation   :: !(Maybe GooglePrivacyDlpV2DocumentLocation)-    , _gpdvclContainerVersion   :: !(Maybe Text)-    , _gpdvclRecordLocation     :: !(Maybe GooglePrivacyDlpV2RecordLocation)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ContentLocation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvclImageLocation'------ * 'gpdvclContainerName'------ * 'gpdvclContainerTimestamp'------ * 'gpdvclDocumentLocation'------ * 'gpdvclContainerVersion'------ * 'gpdvclRecordLocation'-googlePrivacyDlpV2ContentLocation-    :: GooglePrivacyDlpV2ContentLocation-googlePrivacyDlpV2ContentLocation =-    GooglePrivacyDlpV2ContentLocation'-    { _gpdvclImageLocation = Nothing-    , _gpdvclContainerName = Nothing-    , _gpdvclContainerTimestamp = Nothing-    , _gpdvclDocumentLocation = Nothing-    , _gpdvclContainerVersion = Nothing-    , _gpdvclRecordLocation = Nothing-    }---- | Location within an image\'s pixels.-gpdvclImageLocation :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe GooglePrivacyDlpV2ImageLocation)-gpdvclImageLocation-  = lens _gpdvclImageLocation-      (\ s a -> s{_gpdvclImageLocation = a})---- | Name of the container where the finding is located. The top level name--- is the source file name or table name. Names of some common storage--- containers are formatted as follows: * BigQuery tables: \`:.\` * Cloud--- Storage files: \`gs:\/\/\/\` * Datastore namespace: Nested names could--- be absent if the embedded object has no string identifier (for an--- example an image contained within a document).-gpdvclContainerName :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe Text)-gpdvclContainerName-  = lens _gpdvclContainerName-      (\ s a -> s{_gpdvclContainerName = a})---- | Findings container modification timestamp, if applicable. For Google--- Cloud Storage contains last file modification timestamp. For BigQuery--- table contains last_modified_time property. For Datastore - not--- populated.-gpdvclContainerTimestamp :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe UTCTime)-gpdvclContainerTimestamp-  = lens _gpdvclContainerTimestamp-      (\ s a -> s{_gpdvclContainerTimestamp = a})-      . mapping _DateTime---- | Location data for document files.-gpdvclDocumentLocation :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe GooglePrivacyDlpV2DocumentLocation)-gpdvclDocumentLocation-  = lens _gpdvclDocumentLocation-      (\ s a -> s{_gpdvclDocumentLocation = a})---- | Findings container version, if available (\"generation\" for Google--- Cloud Storage).-gpdvclContainerVersion :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe Text)-gpdvclContainerVersion-  = lens _gpdvclContainerVersion-      (\ s a -> s{_gpdvclContainerVersion = a})---- | Location within a row or record of a database table.-gpdvclRecordLocation :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe GooglePrivacyDlpV2RecordLocation)-gpdvclRecordLocation-  = lens _gpdvclRecordLocation-      (\ s a -> s{_gpdvclRecordLocation = a})--instance FromJSON GooglePrivacyDlpV2ContentLocation-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2ContentLocation"-              (\ o ->-                 GooglePrivacyDlpV2ContentLocation' <$>-                   (o .:? "imageLocation") <*> (o .:? "containerName")-                     <*> (o .:? "containerTimestamp")-                     <*> (o .:? "documentLocation")-                     <*> (o .:? "containerVersion")-                     <*> (o .:? "recordLocation"))--instance ToJSON GooglePrivacyDlpV2ContentLocation-         where-        toJSON GooglePrivacyDlpV2ContentLocation'{..}-          = object-              (catMaybes-                 [("imageLocation" .=) <$> _gpdvclImageLocation,-                  ("containerName" .=) <$> _gpdvclContainerName,-                  ("containerTimestamp" .=) <$>-                    _gpdvclContainerTimestamp,-                  ("documentLocation" .=) <$> _gpdvclDocumentLocation,-                  ("containerVersion" .=) <$> _gpdvclContainerVersion,-                  ("recordLocation" .=) <$> _gpdvclRecordLocation])---- | An auxiliary table contains statistical information on the relative--- frequency of different quasi-identifiers values. It has one or several--- quasi-identifiers columns, and one column that indicates the relative--- frequency of each quasi-identifier tuple. If a tuple is present in the--- data but not in the auxiliary table, the corresponding relative--- frequency is assumed to be zero (and thus, the tuple is highly--- reidentifiable).------ /See:/ 'googlePrivacyDlpV2AuxiliaryTable' smart constructor.-data GooglePrivacyDlpV2AuxiliaryTable = GooglePrivacyDlpV2AuxiliaryTable'-    { _gpdvatRelativeFrequency :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvatTable             :: !(Maybe GooglePrivacyDlpV2BigQueryTable)-    , _gpdvatQuasiIds          :: !(Maybe [GooglePrivacyDlpV2QuasiIdField])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2AuxiliaryTable' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvatRelativeFrequency'------ * 'gpdvatTable'------ * 'gpdvatQuasiIds'-googlePrivacyDlpV2AuxiliaryTable-    :: GooglePrivacyDlpV2AuxiliaryTable-googlePrivacyDlpV2AuxiliaryTable =-    GooglePrivacyDlpV2AuxiliaryTable'-    { _gpdvatRelativeFrequency = Nothing-    , _gpdvatTable = Nothing-    , _gpdvatQuasiIds = Nothing-    }---- | The relative frequency column must contain a floating-point number--- between 0 and 1 (inclusive). Null values are assumed to be zero.--- [required]-gpdvatRelativeFrequency :: Lens' GooglePrivacyDlpV2AuxiliaryTable (Maybe GooglePrivacyDlpV2FieldId)-gpdvatRelativeFrequency-  = lens _gpdvatRelativeFrequency-      (\ s a -> s{_gpdvatRelativeFrequency = a})---- | Auxiliary table location. [required]-gpdvatTable :: Lens' GooglePrivacyDlpV2AuxiliaryTable (Maybe GooglePrivacyDlpV2BigQueryTable)-gpdvatTable-  = lens _gpdvatTable (\ s a -> s{_gpdvatTable = a})---- | Quasi-identifier columns. [required]-gpdvatQuasiIds :: Lens' GooglePrivacyDlpV2AuxiliaryTable [GooglePrivacyDlpV2QuasiIdField]-gpdvatQuasiIds-  = lens _gpdvatQuasiIds-      (\ s a -> s{_gpdvatQuasiIds = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2AuxiliaryTable-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2AuxiliaryTable"-              (\ o ->-                 GooglePrivacyDlpV2AuxiliaryTable' <$>-                   (o .:? "relativeFrequency") <*> (o .:? "table") <*>-                     (o .:? "quasiIds" .!= mempty))--instance ToJSON GooglePrivacyDlpV2AuxiliaryTable-         where-        toJSON GooglePrivacyDlpV2AuxiliaryTable'{..}-          = object-              (catMaybes-                 [("relativeFrequency" .=) <$>-                    _gpdvatRelativeFrequency,-                  ("table" .=) <$> _gpdvatTable,-                  ("quasiIds" .=) <$> _gpdvatQuasiIds])---- | A DeltaPresenceEstimationHistogramBucket message with the following--- values: min_probability: 0.1 max_probability: 0.2 frequency: 42 means--- that there are 42 records for which δ is in [0.1, 0.2). An important--- particular case is when min_probability = max_probability = 1: then,--- every individual who shares this quasi-identifier combination is in the--- dataset.------ /See:/ 'googlePrivacyDlpV2DeltaPresenceEstimationHistogramBucket' smart constructor.-data GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket = GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket'-    { _gpdvdpehbBucketValues     :: !(Maybe [GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues])-    , _gpdvdpehbMaxProbability   :: !(Maybe (Textual Double))-    , _gpdvdpehbMinProbability   :: !(Maybe (Textual Double))-    , _gpdvdpehbBucketSize       :: !(Maybe (Textual Int64))-    , _gpdvdpehbBucketValueCount :: !(Maybe (Textual Int64))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdpehbBucketValues'------ * 'gpdvdpehbMaxProbability'------ * 'gpdvdpehbMinProbability'------ * 'gpdvdpehbBucketSize'------ * 'gpdvdpehbBucketValueCount'-googlePrivacyDlpV2DeltaPresenceEstimationHistogramBucket-    :: GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket-googlePrivacyDlpV2DeltaPresenceEstimationHistogramBucket =-    GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket'-    { _gpdvdpehbBucketValues = Nothing-    , _gpdvdpehbMaxProbability = Nothing-    , _gpdvdpehbMinProbability = Nothing-    , _gpdvdpehbBucketSize = Nothing-    , _gpdvdpehbBucketValueCount = Nothing-    }---- | Sample of quasi-identifier tuple values in this bucket. The total number--- of classes returned per bucket is capped at 20.-gpdvdpehbBucketValues :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket [GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues]-gpdvdpehbBucketValues-  = lens _gpdvdpehbBucketValues-      (\ s a -> s{_gpdvdpehbBucketValues = a})-      . _Default-      . _Coerce---- | Always greater than or equal to min_probability.-gpdvdpehbMaxProbability :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket (Maybe Double)-gpdvdpehbMaxProbability-  = lens _gpdvdpehbMaxProbability-      (\ s a -> s{_gpdvdpehbMaxProbability = a})-      . mapping _Coerce---- | Between 0 and 1.-gpdvdpehbMinProbability :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket (Maybe Double)-gpdvdpehbMinProbability-  = lens _gpdvdpehbMinProbability-      (\ s a -> s{_gpdvdpehbMinProbability = a})-      . mapping _Coerce---- | Number of records within these probability bounds.-gpdvdpehbBucketSize :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket (Maybe Int64)-gpdvdpehbBucketSize-  = lens _gpdvdpehbBucketSize-      (\ s a -> s{_gpdvdpehbBucketSize = a})-      . mapping _Coerce---- | Total number of distinct quasi-identifier tuple values in this bucket.-gpdvdpehbBucketValueCount :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket (Maybe Int64)-gpdvdpehbBucketValueCount-  = lens _gpdvdpehbBucketValueCount-      (\ s a -> s{_gpdvdpehbBucketValueCount = a})-      . mapping _Coerce--instance FromJSON-         GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket-         where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket"-              (\ o ->-                 GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket'-                   <$>-                   (o .:? "bucketValues" .!= mempty) <*>-                     (o .:? "maxProbability")-                     <*> (o .:? "minProbability")-                     <*> (o .:? "bucketSize")-                     <*> (o .:? "bucketValueCount"))--instance ToJSON-         GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket-         where-        toJSON-          GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket'{..}-          = object-              (catMaybes-                 [("bucketValues" .=) <$> _gpdvdpehbBucketValues,-                  ("maxProbability" .=) <$> _gpdvdpehbMaxProbability,-                  ("minProbability" .=) <$> _gpdvdpehbMinProbability,-                  ("bucketSize" .=) <$> _gpdvdpehbBucketSize,-                  ("bucketValueCount" .=) <$>-                    _gpdvdpehbBucketValueCount])---- | Set of files to scan.------ /See:/ 'googlePrivacyDlpV2FileSet' smart constructor.-data GooglePrivacyDlpV2FileSet = GooglePrivacyDlpV2FileSet'-    { _gpdvfsURL          :: !(Maybe Text)-    , _gpdvfsRegexFileSet :: !(Maybe GooglePrivacyDlpV2CloudStorageRegexFileSet)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2FileSet' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvfsURL'------ * 'gpdvfsRegexFileSet'-googlePrivacyDlpV2FileSet-    :: GooglePrivacyDlpV2FileSet-googlePrivacyDlpV2FileSet =-    GooglePrivacyDlpV2FileSet'-    { _gpdvfsURL = Nothing-    , _gpdvfsRegexFileSet = Nothing-    }---- | The Cloud Storage url of the file(s) to scan, in the format--- \`gs:\/\/\/\`. Trailing wildcard in the path is allowed. If the url ends--- in a trailing slash, the bucket or directory represented by the url will--- be scanned non-recursively (content in sub-directories will not be--- scanned). This means that \`gs:\/\/mybucket\/\` is equivalent to--- \`gs:\/\/mybucket\/*\`, and \`gs:\/\/mybucket\/directory\/\` is--- equivalent to \`gs:\/\/mybucket\/directory\/*\`. Exactly one of \`url\`--- or \`regex_file_set\` must be set.-gpdvfsURL :: Lens' GooglePrivacyDlpV2FileSet (Maybe Text)-gpdvfsURL-  = lens _gpdvfsURL (\ s a -> s{_gpdvfsURL = a})---- | The regex-filtered set of files to scan. Exactly one of \`url\` or--- \`regex_file_set\` must be set.-gpdvfsRegexFileSet :: Lens' GooglePrivacyDlpV2FileSet (Maybe GooglePrivacyDlpV2CloudStorageRegexFileSet)-gpdvfsRegexFileSet-  = lens _gpdvfsRegexFileSet-      (\ s a -> s{_gpdvfsRegexFileSet = a})--instance FromJSON GooglePrivacyDlpV2FileSet where-        parseJSON-          = withObject "GooglePrivacyDlpV2FileSet"-              (\ o ->-                 GooglePrivacyDlpV2FileSet' <$>-                   (o .:? "url") <*> (o .:? "regexFileSet"))--instance ToJSON GooglePrivacyDlpV2FileSet where-        toJSON GooglePrivacyDlpV2FileSet'{..}-          = object-              (catMaybes-                 [("url" .=) <$> _gpdvfsURL,-                  ("regexFileSet" .=) <$> _gpdvfsRegexFileSet])---- | Response message for ListInspectTemplates.------ /See:/ 'googlePrivacyDlpV2ListInspectTemplatesResponse' smart constructor.-data GooglePrivacyDlpV2ListInspectTemplatesResponse = GooglePrivacyDlpV2ListInspectTemplatesResponse'-    { _gpdvlitrNextPageToken    :: !(Maybe Text)-    , _gpdvlitrInspectTemplates :: !(Maybe [GooglePrivacyDlpV2InspectTemplate])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ListInspectTemplatesResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvlitrNextPageToken'------ * 'gpdvlitrInspectTemplates'-googlePrivacyDlpV2ListInspectTemplatesResponse-    :: GooglePrivacyDlpV2ListInspectTemplatesResponse-googlePrivacyDlpV2ListInspectTemplatesResponse =-    GooglePrivacyDlpV2ListInspectTemplatesResponse'-    { _gpdvlitrNextPageToken = Nothing-    , _gpdvlitrInspectTemplates = Nothing-    }---- | If the next page is available then the next page token to be used in--- following ListInspectTemplates request.-gpdvlitrNextPageToken :: Lens' GooglePrivacyDlpV2ListInspectTemplatesResponse (Maybe Text)-gpdvlitrNextPageToken-  = lens _gpdvlitrNextPageToken-      (\ s a -> s{_gpdvlitrNextPageToken = a})---- | List of inspectTemplates, up to page_size in--- ListInspectTemplatesRequest.-gpdvlitrInspectTemplates :: Lens' GooglePrivacyDlpV2ListInspectTemplatesResponse [GooglePrivacyDlpV2InspectTemplate]-gpdvlitrInspectTemplates-  = lens _gpdvlitrInspectTemplates-      (\ s a -> s{_gpdvlitrInspectTemplates = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2ListInspectTemplatesResponse where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2ListInspectTemplatesResponse"-              (\ o ->-                 GooglePrivacyDlpV2ListInspectTemplatesResponse' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "inspectTemplates" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2ListInspectTemplatesResponse where-        toJSON-          GooglePrivacyDlpV2ListInspectTemplatesResponse'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _gpdvlitrNextPageToken,-                  ("inspectTemplates" .=) <$>-                    _gpdvlitrInspectTemplates])---- | Result of the k-anonymity computation.------ /See:/ 'googlePrivacyDlpV2KAnonymityResult' smart constructor.-newtype GooglePrivacyDlpV2KAnonymityResult = GooglePrivacyDlpV2KAnonymityResult'-    { _gpdvkarEquivalenceClassHistogramBuckets :: Maybe [GooglePrivacyDlpV2KAnonymityHistogramBucket]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2KAnonymityResult' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvkarEquivalenceClassHistogramBuckets'-googlePrivacyDlpV2KAnonymityResult-    :: GooglePrivacyDlpV2KAnonymityResult-googlePrivacyDlpV2KAnonymityResult =-    GooglePrivacyDlpV2KAnonymityResult'-    { _gpdvkarEquivalenceClassHistogramBuckets = Nothing-    }---- | Histogram of k-anonymity equivalence classes.-gpdvkarEquivalenceClassHistogramBuckets :: Lens' GooglePrivacyDlpV2KAnonymityResult [GooglePrivacyDlpV2KAnonymityHistogramBucket]-gpdvkarEquivalenceClassHistogramBuckets-  = lens _gpdvkarEquivalenceClassHistogramBuckets-      (\ s a ->-         s{_gpdvkarEquivalenceClassHistogramBuckets = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2KAnonymityResult-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2KAnonymityResult"-              (\ o ->-                 GooglePrivacyDlpV2KAnonymityResult' <$>-                   (o .:? "equivalenceClassHistogramBuckets" .!=-                      mempty))--instance ToJSON GooglePrivacyDlpV2KAnonymityResult-         where-        toJSON GooglePrivacyDlpV2KAnonymityResult'{..}-          = object-              (catMaybes-                 [("equivalenceClassHistogramBuckets" .=) <$>-                    _gpdvkarEquivalenceClassHistogramBuckets])---- | Message defining a field of a BigQuery table.------ /See:/ 'googlePrivacyDlpV2BigQueryField' smart constructor.-data GooglePrivacyDlpV2BigQueryField = GooglePrivacyDlpV2BigQueryField'-    { _gpdvbqfField :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvbqfTable :: !(Maybe GooglePrivacyDlpV2BigQueryTable)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2BigQueryField' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvbqfField'------ * 'gpdvbqfTable'-googlePrivacyDlpV2BigQueryField-    :: GooglePrivacyDlpV2BigQueryField-googlePrivacyDlpV2BigQueryField =-    GooglePrivacyDlpV2BigQueryField'-    { _gpdvbqfField = Nothing-    , _gpdvbqfTable = Nothing-    }---- | Designated field in the BigQuery table.-gpdvbqfField :: Lens' GooglePrivacyDlpV2BigQueryField (Maybe GooglePrivacyDlpV2FieldId)-gpdvbqfField-  = lens _gpdvbqfField (\ s a -> s{_gpdvbqfField = a})---- | Source table of the field.-gpdvbqfTable :: Lens' GooglePrivacyDlpV2BigQueryField (Maybe GooglePrivacyDlpV2BigQueryTable)-gpdvbqfTable-  = lens _gpdvbqfTable (\ s a -> s{_gpdvbqfTable = a})--instance FromJSON GooglePrivacyDlpV2BigQueryField-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2BigQueryField"-              (\ o ->-                 GooglePrivacyDlpV2BigQueryField' <$>-                   (o .:? "field") <*> (o .:? "table"))--instance ToJSON GooglePrivacyDlpV2BigQueryField where-        toJSON GooglePrivacyDlpV2BigQueryField'{..}-          = object-              (catMaybes-                 [("field" .=) <$> _gpdvbqfField,-                  ("table" .=) <$> _gpdvbqfTable])---- | Cloud repository for storing output.------ /See:/ 'googlePrivacyDlpV2OutputStorageConfig' smart constructor.-data GooglePrivacyDlpV2OutputStorageConfig = GooglePrivacyDlpV2OutputStorageConfig'-    { _gpdvoscOutputSchema :: !(Maybe GooglePrivacyDlpV2OutputStorageConfigOutputSchema)-    , _gpdvoscTable        :: !(Maybe GooglePrivacyDlpV2BigQueryTable)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2OutputStorageConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvoscOutputSchema'------ * 'gpdvoscTable'-googlePrivacyDlpV2OutputStorageConfig-    :: GooglePrivacyDlpV2OutputStorageConfig-googlePrivacyDlpV2OutputStorageConfig =-    GooglePrivacyDlpV2OutputStorageConfig'-    { _gpdvoscOutputSchema = Nothing-    , _gpdvoscTable = Nothing-    }---- | Schema used for writing the findings for Inspect jobs. This field is--- only used for Inspect and must be unspecified for Risk jobs. Columns are--- derived from the \`Finding\` object. If appending to an existing table,--- any columns from the predefined schema that are missing will be added.--- No columns in the existing table will be deleted. If unspecified, then--- all available columns will be used for a new table or an (existing)--- table with no schema, and no changes will be made to an existing table--- that has a schema.-gpdvoscOutputSchema :: Lens' GooglePrivacyDlpV2OutputStorageConfig (Maybe GooglePrivacyDlpV2OutputStorageConfigOutputSchema)-gpdvoscOutputSchema-  = lens _gpdvoscOutputSchema-      (\ s a -> s{_gpdvoscOutputSchema = a})---- | Store findings in an existing table or a new table in an existing--- dataset. If table_id is not set a new one will be generated for you with--- the following format: dlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific--- timezone will be used for generating the date details. For Inspect, each--- column in an existing output table must have the same name, type, and--- mode of a field in the \`Finding\` object. For Risk, an existing output--- table should be the output of a previous Risk analysis job run on the--- same source table, with the same privacy metric and quasi-identifiers.--- Risk jobs that analyze the same table but compute a different privacy--- metric, or use different sets of quasi-identifiers, cannot store their--- results in the same table.-gpdvoscTable :: Lens' GooglePrivacyDlpV2OutputStorageConfig (Maybe GooglePrivacyDlpV2BigQueryTable)-gpdvoscTable-  = lens _gpdvoscTable (\ s a -> s{_gpdvoscTable = a})--instance FromJSON-         GooglePrivacyDlpV2OutputStorageConfig where-        parseJSON-          = withObject "GooglePrivacyDlpV2OutputStorageConfig"-              (\ o ->-                 GooglePrivacyDlpV2OutputStorageConfig' <$>-                   (o .:? "outputSchema") <*> (o .:? "table"))--instance ToJSON GooglePrivacyDlpV2OutputStorageConfig-         where-        toJSON GooglePrivacyDlpV2OutputStorageConfig'{..}-          = object-              (catMaybes-                 [("outputSchema" .=) <$> _gpdvoscOutputSchema,-                  ("table" .=) <$> _gpdvoscTable])---- | Message representing a set of files in Cloud Storage.------ /See:/ 'googlePrivacyDlpV2CloudStorageFileSet' smart constructor.-newtype GooglePrivacyDlpV2CloudStorageFileSet = GooglePrivacyDlpV2CloudStorageFileSet'-    { _gpdvcsfsURL :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CloudStorageFileSet' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcsfsURL'-googlePrivacyDlpV2CloudStorageFileSet-    :: GooglePrivacyDlpV2CloudStorageFileSet-googlePrivacyDlpV2CloudStorageFileSet =-    GooglePrivacyDlpV2CloudStorageFileSet'-    { _gpdvcsfsURL = Nothing-    }---- | The url, in the format \`gs:\/\/\/\`. Trailing wildcard in the path is--- allowed.-gpdvcsfsURL :: Lens' GooglePrivacyDlpV2CloudStorageFileSet (Maybe Text)-gpdvcsfsURL-  = lens _gpdvcsfsURL (\ s a -> s{_gpdvcsfsURL = a})--instance FromJSON-         GooglePrivacyDlpV2CloudStorageFileSet where-        parseJSON-          = withObject "GooglePrivacyDlpV2CloudStorageFileSet"-              (\ o ->-                 GooglePrivacyDlpV2CloudStorageFileSet' <$>-                   (o .:? "url"))--instance ToJSON GooglePrivacyDlpV2CloudStorageFileSet-         where-        toJSON GooglePrivacyDlpV2CloudStorageFileSet'{..}-          = object (catMaybes [("url" .=) <$> _gpdvcsfsURL])---- | A type of transformation that will scan unstructured text and apply--- various \`PrimitiveTransformation\`s to each finding, where the--- transformation is applied to only values that were identified as a--- specific info_type.------ /See:/ 'googlePrivacyDlpV2InfoTypeTransformations' smart constructor.-newtype GooglePrivacyDlpV2InfoTypeTransformations = GooglePrivacyDlpV2InfoTypeTransformations'-    { _gpdvittTransformations :: Maybe [GooglePrivacyDlpV2InfoTypeTransformation]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InfoTypeTransformations' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvittTransformations'-googlePrivacyDlpV2InfoTypeTransformations-    :: GooglePrivacyDlpV2InfoTypeTransformations-googlePrivacyDlpV2InfoTypeTransformations =-    GooglePrivacyDlpV2InfoTypeTransformations'-    { _gpdvittTransformations = Nothing-    }---- | Transformation for each infoType. Cannot specify more than one for a--- given infoType. [required]-gpdvittTransformations :: Lens' GooglePrivacyDlpV2InfoTypeTransformations [GooglePrivacyDlpV2InfoTypeTransformation]-gpdvittTransformations-  = lens _gpdvittTransformations-      (\ s a -> s{_gpdvittTransformations = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2InfoTypeTransformations where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2InfoTypeTransformations"-              (\ o ->-                 GooglePrivacyDlpV2InfoTypeTransformations' <$>-                   (o .:? "transformations" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2InfoTypeTransformations where-        toJSON GooglePrivacyDlpV2InfoTypeTransformations'{..}-          = object-              (catMaybes-                 [("transformations" .=) <$> _gpdvittTransformations])---- | Include to use an existing data crypto key wrapped by KMS. Authorization--- requires the following IAM permissions when sending a request to perform--- a crypto transformation using a kms-wrapped crypto key: dlp.kms.encrypt------ /See:/ 'googlePrivacyDlpV2KmsWrAppedCryptoKey' smart constructor.-data GooglePrivacyDlpV2KmsWrAppedCryptoKey = GooglePrivacyDlpV2KmsWrAppedCryptoKey'-    { _gpdvkwackWrAppedKey    :: !(Maybe Bytes)-    , _gpdvkwackCryptoKeyName :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2KmsWrAppedCryptoKey' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvkwackWrAppedKey'------ * 'gpdvkwackCryptoKeyName'-googlePrivacyDlpV2KmsWrAppedCryptoKey-    :: GooglePrivacyDlpV2KmsWrAppedCryptoKey-googlePrivacyDlpV2KmsWrAppedCryptoKey =-    GooglePrivacyDlpV2KmsWrAppedCryptoKey'-    { _gpdvkwackWrAppedKey = Nothing-    , _gpdvkwackCryptoKeyName = Nothing-    }---- | The wrapped data crypto key. [required]-gpdvkwackWrAppedKey :: Lens' GooglePrivacyDlpV2KmsWrAppedCryptoKey (Maybe ByteString)-gpdvkwackWrAppedKey-  = lens _gpdvkwackWrAppedKey-      (\ s a -> s{_gpdvkwackWrAppedKey = a})-      . mapping _Bytes---- | The resource name of the KMS CryptoKey to use for unwrapping. [required]-gpdvkwackCryptoKeyName :: Lens' GooglePrivacyDlpV2KmsWrAppedCryptoKey (Maybe Text)-gpdvkwackCryptoKeyName-  = lens _gpdvkwackCryptoKeyName-      (\ s a -> s{_gpdvkwackCryptoKeyName = a})--instance FromJSON-         GooglePrivacyDlpV2KmsWrAppedCryptoKey where-        parseJSON-          = withObject "GooglePrivacyDlpV2KmsWrAppedCryptoKey"-              (\ o ->-                 GooglePrivacyDlpV2KmsWrAppedCryptoKey' <$>-                   (o .:? "wrappedKey") <*> (o .:? "cryptoKeyName"))--instance ToJSON GooglePrivacyDlpV2KmsWrAppedCryptoKey-         where-        toJSON GooglePrivacyDlpV2KmsWrAppedCryptoKey'{..}-          = object-              (catMaybes-                 [("wrappedKey" .=) <$> _gpdvkwackWrAppedKey,-                  ("cryptoKeyName" .=) <$> _gpdvkwackCryptoKeyName])---- | Results of inspecting an item.------ /See:/ 'googlePrivacyDlpV2InspectContentResponse' smart constructor.-newtype GooglePrivacyDlpV2InspectContentResponse = GooglePrivacyDlpV2InspectContentResponse'-    { _gpdvicrResult :: Maybe GooglePrivacyDlpV2InspectResult-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InspectContentResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvicrResult'-googlePrivacyDlpV2InspectContentResponse-    :: GooglePrivacyDlpV2InspectContentResponse-googlePrivacyDlpV2InspectContentResponse =-    GooglePrivacyDlpV2InspectContentResponse'-    { _gpdvicrResult = Nothing-    }---- | The findings.-gpdvicrResult :: Lens' GooglePrivacyDlpV2InspectContentResponse (Maybe GooglePrivacyDlpV2InspectResult)-gpdvicrResult-  = lens _gpdvicrResult-      (\ s a -> s{_gpdvicrResult = a})--instance FromJSON-         GooglePrivacyDlpV2InspectContentResponse where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2InspectContentResponse"-              (\ o ->-                 GooglePrivacyDlpV2InspectContentResponse' <$>-                   (o .:? "result"))--instance ToJSON-         GooglePrivacyDlpV2InspectContentResponse where-        toJSON GooglePrivacyDlpV2InspectContentResponse'{..}-          = object-              (catMaybes [("result" .=) <$> _gpdvicrResult])------- /See:/ 'googlePrivacyDlpV2LDiversityHistogramBucket' smart constructor.-data GooglePrivacyDlpV2LDiversityHistogramBucket = GooglePrivacyDlpV2LDiversityHistogramBucket'-    { _gpdvldhbBucketValues                      :: !(Maybe [GooglePrivacyDlpV2LDiversityEquivalenceClass])-    , _gpdvldhbSensitiveValueFrequencyLowerBound :: !(Maybe (Textual Int64))-    , _gpdvldhbSensitiveValueFrequencyUpperBound :: !(Maybe (Textual Int64))-    , _gpdvldhbBucketSize                        :: !(Maybe (Textual Int64))-    , _gpdvldhbBucketValueCount                  :: !(Maybe (Textual Int64))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2LDiversityHistogramBucket' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvldhbBucketValues'------ * 'gpdvldhbSensitiveValueFrequencyLowerBound'------ * 'gpdvldhbSensitiveValueFrequencyUpperBound'------ * 'gpdvldhbBucketSize'------ * 'gpdvldhbBucketValueCount'-googlePrivacyDlpV2LDiversityHistogramBucket-    :: GooglePrivacyDlpV2LDiversityHistogramBucket-googlePrivacyDlpV2LDiversityHistogramBucket =-    GooglePrivacyDlpV2LDiversityHistogramBucket'-    { _gpdvldhbBucketValues = Nothing-    , _gpdvldhbSensitiveValueFrequencyLowerBound = Nothing-    , _gpdvldhbSensitiveValueFrequencyUpperBound = Nothing-    , _gpdvldhbBucketSize = Nothing-    , _gpdvldhbBucketValueCount = Nothing-    }---- | Sample of equivalence classes in this bucket. The total number of--- classes returned per bucket is capped at 20.-gpdvldhbBucketValues :: Lens' GooglePrivacyDlpV2LDiversityHistogramBucket [GooglePrivacyDlpV2LDiversityEquivalenceClass]-gpdvldhbBucketValues-  = lens _gpdvldhbBucketValues-      (\ s a -> s{_gpdvldhbBucketValues = a})-      . _Default-      . _Coerce---- | Lower bound on the sensitive value frequencies of the equivalence--- classes in this bucket.-gpdvldhbSensitiveValueFrequencyLowerBound :: Lens' GooglePrivacyDlpV2LDiversityHistogramBucket (Maybe Int64)-gpdvldhbSensitiveValueFrequencyLowerBound-  = lens _gpdvldhbSensitiveValueFrequencyLowerBound-      (\ s a ->-         s{_gpdvldhbSensitiveValueFrequencyLowerBound = a})-      . mapping _Coerce---- | Upper bound on the sensitive value frequencies of the equivalence--- classes in this bucket.-gpdvldhbSensitiveValueFrequencyUpperBound :: Lens' GooglePrivacyDlpV2LDiversityHistogramBucket (Maybe Int64)-gpdvldhbSensitiveValueFrequencyUpperBound-  = lens _gpdvldhbSensitiveValueFrequencyUpperBound-      (\ s a ->-         s{_gpdvldhbSensitiveValueFrequencyUpperBound = a})-      . mapping _Coerce---- | Total number of equivalence classes in this bucket.-gpdvldhbBucketSize :: Lens' GooglePrivacyDlpV2LDiversityHistogramBucket (Maybe Int64)-gpdvldhbBucketSize-  = lens _gpdvldhbBucketSize-      (\ s a -> s{_gpdvldhbBucketSize = a})-      . mapping _Coerce---- | Total number of distinct equivalence classes in this bucket.-gpdvldhbBucketValueCount :: Lens' GooglePrivacyDlpV2LDiversityHistogramBucket (Maybe Int64)-gpdvldhbBucketValueCount-  = lens _gpdvldhbBucketValueCount-      (\ s a -> s{_gpdvldhbBucketValueCount = a})-      . mapping _Coerce--instance FromJSON-         GooglePrivacyDlpV2LDiversityHistogramBucket where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2LDiversityHistogramBucket"-              (\ o ->-                 GooglePrivacyDlpV2LDiversityHistogramBucket' <$>-                   (o .:? "bucketValues" .!= mempty) <*>-                     (o .:? "sensitiveValueFrequencyLowerBound")-                     <*> (o .:? "sensitiveValueFrequencyUpperBound")-                     <*> (o .:? "bucketSize")-                     <*> (o .:? "bucketValueCount"))--instance ToJSON-         GooglePrivacyDlpV2LDiversityHistogramBucket where-        toJSON-          GooglePrivacyDlpV2LDiversityHistogramBucket'{..}-          = object-              (catMaybes-                 [("bucketValues" .=) <$> _gpdvldhbBucketValues,-                  ("sensitiveValueFrequencyLowerBound" .=) <$>-                    _gpdvldhbSensitiveValueFrequencyLowerBound,-                  ("sensitiveValueFrequencyUpperBound" .=) <$>-                    _gpdvldhbSensitiveValueFrequencyUpperBound,-                  ("bucketSize" .=) <$> _gpdvldhbBucketSize,-                  ("bucketValueCount" .=) <$>-                    _gpdvldhbBucketValueCount])---- | Results of re-identifying a item.------ /See:/ 'googlePrivacyDlpV2ReidentifyContentResponse' smart constructor.-data GooglePrivacyDlpV2ReidentifyContentResponse = GooglePrivacyDlpV2ReidentifyContentResponse'-    { _gpdvrcrOverview :: !(Maybe GooglePrivacyDlpV2TransformationOverview)-    , _gpdvrcrItem     :: !(Maybe GooglePrivacyDlpV2ContentItem)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ReidentifyContentResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrcrOverview'------ * 'gpdvrcrItem'-googlePrivacyDlpV2ReidentifyContentResponse-    :: GooglePrivacyDlpV2ReidentifyContentResponse-googlePrivacyDlpV2ReidentifyContentResponse =-    GooglePrivacyDlpV2ReidentifyContentResponse'-    { _gpdvrcrOverview = Nothing-    , _gpdvrcrItem = Nothing-    }---- | An overview of the changes that were made to the \`item\`.-gpdvrcrOverview :: Lens' GooglePrivacyDlpV2ReidentifyContentResponse (Maybe GooglePrivacyDlpV2TransformationOverview)-gpdvrcrOverview-  = lens _gpdvrcrOverview-      (\ s a -> s{_gpdvrcrOverview = a})---- | The re-identified item.-gpdvrcrItem :: Lens' GooglePrivacyDlpV2ReidentifyContentResponse (Maybe GooglePrivacyDlpV2ContentItem)-gpdvrcrItem-  = lens _gpdvrcrItem (\ s a -> s{_gpdvrcrItem = a})--instance FromJSON-         GooglePrivacyDlpV2ReidentifyContentResponse where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2ReidentifyContentResponse"-              (\ o ->-                 GooglePrivacyDlpV2ReidentifyContentResponse' <$>-                   (o .:? "overview") <*> (o .:? "item"))--instance ToJSON-         GooglePrivacyDlpV2ReidentifyContentResponse where-        toJSON-          GooglePrivacyDlpV2ReidentifyContentResponse'{..}-          = object-              (catMaybes-                 [("overview" .=) <$> _gpdvrcrOverview,-                  ("item" .=) <$> _gpdvrcrItem])---- | An expression, consisting or an operator and conditions.------ /See:/ 'googlePrivacyDlpV2Expressions' smart constructor.-data GooglePrivacyDlpV2Expressions = GooglePrivacyDlpV2Expressions'-    { _gpdveLogicalOperator :: !(Maybe GooglePrivacyDlpV2ExpressionsLogicalOperator)-    , _gpdveConditions      :: !(Maybe GooglePrivacyDlpV2Conditions)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Expressions' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdveLogicalOperator'------ * 'gpdveConditions'-googlePrivacyDlpV2Expressions-    :: GooglePrivacyDlpV2Expressions-googlePrivacyDlpV2Expressions =-    GooglePrivacyDlpV2Expressions'-    { _gpdveLogicalOperator = Nothing-    , _gpdveConditions = Nothing-    }---- | The operator to apply to the result of conditions. Default and currently--- only supported value is \`AND\`.-gpdveLogicalOperator :: Lens' GooglePrivacyDlpV2Expressions (Maybe GooglePrivacyDlpV2ExpressionsLogicalOperator)-gpdveLogicalOperator-  = lens _gpdveLogicalOperator-      (\ s a -> s{_gpdveLogicalOperator = a})--gpdveConditions :: Lens' GooglePrivacyDlpV2Expressions (Maybe GooglePrivacyDlpV2Conditions)-gpdveConditions-  = lens _gpdveConditions-      (\ s a -> s{_gpdveConditions = a})--instance FromJSON GooglePrivacyDlpV2Expressions where-        parseJSON-          = withObject "GooglePrivacyDlpV2Expressions"-              (\ o ->-                 GooglePrivacyDlpV2Expressions' <$>-                   (o .:? "logicalOperator") <*> (o .:? "conditions"))--instance ToJSON GooglePrivacyDlpV2Expressions where-        toJSON GooglePrivacyDlpV2Expressions'{..}-          = object-              (catMaybes-                 [("logicalOperator" .=) <$> _gpdveLogicalOperator,-                  ("conditions" .=) <$> _gpdveConditions])---- | Message for a date time object. e.g. 2018-01-01, 5th August.------ /See:/ 'googlePrivacyDlpV2DateTime' smart constructor.-data GooglePrivacyDlpV2DateTime = GooglePrivacyDlpV2DateTime'-    { _gpdvdtTime      :: !(Maybe GoogleTypeTimeOfDay)-    , _gpdvdtDate      :: !(Maybe GoogleTypeDate)-    , _gpdvdtTimeZone  :: !(Maybe GooglePrivacyDlpV2TimeZone)-    , _gpdvdtDayOfWeek :: !(Maybe GooglePrivacyDlpV2DateTimeDayOfWeek)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DateTime' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdtTime'------ * 'gpdvdtDate'------ * 'gpdvdtTimeZone'------ * 'gpdvdtDayOfWeek'-googlePrivacyDlpV2DateTime-    :: GooglePrivacyDlpV2DateTime-googlePrivacyDlpV2DateTime =-    GooglePrivacyDlpV2DateTime'-    { _gpdvdtTime = Nothing-    , _gpdvdtDate = Nothing-    , _gpdvdtTimeZone = Nothing-    , _gpdvdtDayOfWeek = Nothing-    }--gpdvdtTime :: Lens' GooglePrivacyDlpV2DateTime (Maybe GoogleTypeTimeOfDay)-gpdvdtTime-  = lens _gpdvdtTime (\ s a -> s{_gpdvdtTime = a})---- | One or more of the following must be set. All fields are optional, but--- when set must be valid date or time values.-gpdvdtDate :: Lens' GooglePrivacyDlpV2DateTime (Maybe GoogleTypeDate)-gpdvdtDate-  = lens _gpdvdtDate (\ s a -> s{_gpdvdtDate = a})--gpdvdtTimeZone :: Lens' GooglePrivacyDlpV2DateTime (Maybe GooglePrivacyDlpV2TimeZone)-gpdvdtTimeZone-  = lens _gpdvdtTimeZone-      (\ s a -> s{_gpdvdtTimeZone = a})--gpdvdtDayOfWeek :: Lens' GooglePrivacyDlpV2DateTime (Maybe GooglePrivacyDlpV2DateTimeDayOfWeek)-gpdvdtDayOfWeek-  = lens _gpdvdtDayOfWeek-      (\ s a -> s{_gpdvdtDayOfWeek = a})--instance FromJSON GooglePrivacyDlpV2DateTime where-        parseJSON-          = withObject "GooglePrivacyDlpV2DateTime"-              (\ o ->-                 GooglePrivacyDlpV2DateTime' <$>-                   (o .:? "time") <*> (o .:? "date") <*>-                     (o .:? "timeZone")-                     <*> (o .:? "dayOfWeek"))--instance ToJSON GooglePrivacyDlpV2DateTime where-        toJSON GooglePrivacyDlpV2DateTime'{..}-          = object-              (catMaybes-                 [("time" .=) <$> _gpdvdtTime,-                  ("date" .=) <$> _gpdvdtDate,-                  ("timeZone" .=) <$> _gpdvdtTimeZone,-                  ("dayOfWeek" .=) <$> _gpdvdtDayOfWeek])---- | Message representing a set of files in a Cloud Storage bucket. Regular--- expressions are used to allow fine-grained control over which files in--- the bucket to include. Included files are those that match at least one--- item in \`include_regex\` and do not match any items in--- \`exclude_regex\`. Note that a file that matches items from both lists--- will _not_ be included. For a match to occur, the entire file path--- (i.e., everything in the url after the bucket name) must match the--- regular expression. For example, given the input \`{bucket_name:--- \"mybucket\", include_regex: [\"directory1\/.*\"], exclude_regex:--- [\"directory1\/excluded.*\"]}\`: *--- \`gs:\/\/mybucket\/directory1\/myfile\` will be included *--- \`gs:\/\/mybucket\/directory1\/directory2\/myfile\` will be included--- (\`.*\` matches across \`\/\`) *--- \`gs:\/\/mybucket\/directory0\/directory1\/myfile\` will _not_ be--- included (the full path doesn\'t match any items in \`include_regex\`) *--- \`gs:\/\/mybucket\/directory1\/excludedfile\` will _not_ be included--- (the path matches an item in \`exclude_regex\`) If \`include_regex\` is--- left empty, it will match all files by default (this is equivalent to--- setting \`include_regex: [\".*\"]\`). Some other common use cases: *--- \`{bucket_name: \"mybucket\", exclude_regex: [\".*\\.pdf\"]}\` will--- include all files in \`mybucket\` except for .pdf files *--- \`{bucket_name: \"mybucket\", include_regex: [\"directory\/[^\/]+\"]}\`--- will include all files directly under \`gs:\/\/mybucket\/directory\/\`,--- without matching across \`\/\`------ /See:/ 'googlePrivacyDlpV2CloudStorageRegexFileSet' smart constructor.-data GooglePrivacyDlpV2CloudStorageRegexFileSet = GooglePrivacyDlpV2CloudStorageRegexFileSet'-    { _gpdvcsrfsExcludeRegex :: !(Maybe [Text])-    , _gpdvcsrfsBucketName   :: !(Maybe Text)-    , _gpdvcsrfsIncludeRegex :: !(Maybe [Text])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CloudStorageRegexFileSet' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcsrfsExcludeRegex'------ * 'gpdvcsrfsBucketName'------ * 'gpdvcsrfsIncludeRegex'-googlePrivacyDlpV2CloudStorageRegexFileSet-    :: GooglePrivacyDlpV2CloudStorageRegexFileSet-googlePrivacyDlpV2CloudStorageRegexFileSet =-    GooglePrivacyDlpV2CloudStorageRegexFileSet'-    { _gpdvcsrfsExcludeRegex = Nothing-    , _gpdvcsrfsBucketName = Nothing-    , _gpdvcsrfsIncludeRegex = Nothing-    }---- | A list of regular expressions matching file paths to exclude. All files--- in the bucket that match at least one of these regular expressions will--- be excluded from the scan. Regular expressions use RE2--- [syntax](https:\/\/github.com\/google\/re2\/wiki\/Syntax); a guide can--- be found under the google\/re2 repository on GitHub.-gpdvcsrfsExcludeRegex :: Lens' GooglePrivacyDlpV2CloudStorageRegexFileSet [Text]-gpdvcsrfsExcludeRegex-  = lens _gpdvcsrfsExcludeRegex-      (\ s a -> s{_gpdvcsrfsExcludeRegex = a})-      . _Default-      . _Coerce---- | The name of a Cloud Storage bucket. Required.-gpdvcsrfsBucketName :: Lens' GooglePrivacyDlpV2CloudStorageRegexFileSet (Maybe Text)-gpdvcsrfsBucketName-  = lens _gpdvcsrfsBucketName-      (\ s a -> s{_gpdvcsrfsBucketName = a})---- | A list of regular expressions matching file paths to include. All files--- in the bucket that match at least one of these regular expressions will--- be included in the set of files, except for those that also match an--- item in \`exclude_regex\`. Leaving this field empty will match all files--- by default (this is equivalent to including \`.*\` in the list). Regular--- expressions use RE2--- [syntax](https:\/\/github.com\/google\/re2\/wiki\/Syntax); a guide can--- be found under the google\/re2 repository on GitHub.-gpdvcsrfsIncludeRegex :: Lens' GooglePrivacyDlpV2CloudStorageRegexFileSet [Text]-gpdvcsrfsIncludeRegex-  = lens _gpdvcsrfsIncludeRegex-      (\ s a -> s{_gpdvcsrfsIncludeRegex = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2CloudStorageRegexFileSet where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2CloudStorageRegexFileSet"-              (\ o ->-                 GooglePrivacyDlpV2CloudStorageRegexFileSet' <$>-                   (o .:? "excludeRegex" .!= mempty) <*>-                     (o .:? "bucketName")-                     <*> (o .:? "includeRegex" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2CloudStorageRegexFileSet where-        toJSON-          GooglePrivacyDlpV2CloudStorageRegexFileSet'{..}-          = object-              (catMaybes-                 [("excludeRegex" .=) <$> _gpdvcsrfsExcludeRegex,-                  ("bucketName" .=) <$> _gpdvcsrfsBucketName,-                  ("includeRegex" .=) <$> _gpdvcsrfsIncludeRegex])---- | Bucket is represented as a range, along with replacement values.------ /See:/ 'googlePrivacyDlpV2Bucket' smart constructor.-data GooglePrivacyDlpV2Bucket = GooglePrivacyDlpV2Bucket'-    { _gpdvbMax              :: !(Maybe GooglePrivacyDlpV2Value)-    , _gpdvbReplacementValue :: !(Maybe GooglePrivacyDlpV2Value)-    , _gpdvbMin              :: !(Maybe GooglePrivacyDlpV2Value)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Bucket' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvbMax'------ * 'gpdvbReplacementValue'------ * 'gpdvbMin'-googlePrivacyDlpV2Bucket-    :: GooglePrivacyDlpV2Bucket-googlePrivacyDlpV2Bucket =-    GooglePrivacyDlpV2Bucket'-    { _gpdvbMax = Nothing-    , _gpdvbReplacementValue = Nothing-    , _gpdvbMin = Nothing-    }---- | Upper bound of the range, exclusive; type must match min.-gpdvbMax :: Lens' GooglePrivacyDlpV2Bucket (Maybe GooglePrivacyDlpV2Value)-gpdvbMax = lens _gpdvbMax (\ s a -> s{_gpdvbMax = a})---- | Replacement value for this bucket. If not provided the default behavior--- will be to hyphenate the min-max range.-gpdvbReplacementValue :: Lens' GooglePrivacyDlpV2Bucket (Maybe GooglePrivacyDlpV2Value)-gpdvbReplacementValue-  = lens _gpdvbReplacementValue-      (\ s a -> s{_gpdvbReplacementValue = a})---- | Lower bound of the range, inclusive. Type should be the same as max if--- used.-gpdvbMin :: Lens' GooglePrivacyDlpV2Bucket (Maybe GooglePrivacyDlpV2Value)-gpdvbMin = lens _gpdvbMin (\ s a -> s{_gpdvbMin = a})--instance FromJSON GooglePrivacyDlpV2Bucket where-        parseJSON-          = withObject "GooglePrivacyDlpV2Bucket"-              (\ o ->-                 GooglePrivacyDlpV2Bucket' <$>-                   (o .:? "max") <*> (o .:? "replacementValue") <*>-                     (o .:? "min"))--instance ToJSON GooglePrivacyDlpV2Bucket where-        toJSON GooglePrivacyDlpV2Bucket'{..}-          = object-              (catMaybes-                 [("max" .=) <$> _gpdvbMax,-                  ("replacementValue" .=) <$> _gpdvbReplacementValue,-                  ("min" .=) <$> _gpdvbMin])---- | A task to execute on the completion of a job. See--- https:\/\/cloud.google.com\/dlp\/docs\/concepts-actions to learn more.------ /See:/ 'googlePrivacyDlpV2Action' smart constructor.-data GooglePrivacyDlpV2Action = GooglePrivacyDlpV2Action'-    { _gpdvaPubSub               :: !(Maybe GooglePrivacyDlpV2PublishToPubSub)-    , _gpdvaSaveFindings         :: !(Maybe GooglePrivacyDlpV2SaveFindings)-    , _gpdvaPublishSummaryToCscc :: !(Maybe GooglePrivacyDlpV2PublishSummaryToCscc)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Action' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvaPubSub'------ * 'gpdvaSaveFindings'------ * 'gpdvaPublishSummaryToCscc'-googlePrivacyDlpV2Action-    :: GooglePrivacyDlpV2Action-googlePrivacyDlpV2Action =-    GooglePrivacyDlpV2Action'-    { _gpdvaPubSub = Nothing-    , _gpdvaSaveFindings = Nothing-    , _gpdvaPublishSummaryToCscc = Nothing-    }---- | Publish a notification to a pubsub topic.-gpdvaPubSub :: Lens' GooglePrivacyDlpV2Action (Maybe GooglePrivacyDlpV2PublishToPubSub)-gpdvaPubSub-  = lens _gpdvaPubSub (\ s a -> s{_gpdvaPubSub = a})---- | Save resulting findings in a provided location.-gpdvaSaveFindings :: Lens' GooglePrivacyDlpV2Action (Maybe GooglePrivacyDlpV2SaveFindings)-gpdvaSaveFindings-  = lens _gpdvaSaveFindings-      (\ s a -> s{_gpdvaSaveFindings = a})---- | Publish summary to Cloud Security Command Center (Alpha).-gpdvaPublishSummaryToCscc :: Lens' GooglePrivacyDlpV2Action (Maybe GooglePrivacyDlpV2PublishSummaryToCscc)-gpdvaPublishSummaryToCscc-  = lens _gpdvaPublishSummaryToCscc-      (\ s a -> s{_gpdvaPublishSummaryToCscc = a})--instance FromJSON GooglePrivacyDlpV2Action where-        parseJSON-          = withObject "GooglePrivacyDlpV2Action"-              (\ o ->-                 GooglePrivacyDlpV2Action' <$>-                   (o .:? "pubSub") <*> (o .:? "saveFindings") <*>-                     (o .:? "publishSummaryToCscc"))--instance ToJSON GooglePrivacyDlpV2Action where-        toJSON GooglePrivacyDlpV2Action'{..}-          = object-              (catMaybes-                 [("pubSub" .=) <$> _gpdvaPubSub,-                  ("saveFindings" .=) <$> _gpdvaSaveFindings,-                  ("publishSummaryToCscc" .=) <$>-                    _gpdvaPublishSummaryToCscc])---- | Represents a whole or partial calendar date, e.g. a birthday. The time--- of day and time zone are either specified elsewhere or are not--- significant. The date is relative to the Proleptic Gregorian Calendar.--- This can represent: * A full date, with non-zero year, month and day--- values * A month and day value, with a zero year, e.g. an anniversary *--- A year on its own, with zero month and day values * A year and month--- value, with a zero day, e.g. a credit card expiration date Related types--- are google.type.TimeOfDay and \`google.protobuf.Timestamp\`.------ /See:/ 'googleTypeDate' smart constructor.-data GoogleTypeDate = GoogleTypeDate'-    { _gtdDay   :: !(Maybe (Textual Int32))-    , _gtdYear  :: !(Maybe (Textual Int32))-    , _gtdMonth :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GoogleTypeDate' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gtdDay'------ * 'gtdYear'------ * 'gtdMonth'-googleTypeDate-    :: GoogleTypeDate-googleTypeDate =-    GoogleTypeDate'-    { _gtdDay = Nothing-    , _gtdYear = Nothing-    , _gtdMonth = Nothing-    }---- | Day of month. Must be from 1 to 31 and valid for the year and month, or--- 0 if specifying a year by itself or a year and month where the day is--- not significant.-gtdDay :: Lens' GoogleTypeDate (Maybe Int32)-gtdDay-  = lens _gtdDay (\ s a -> s{_gtdDay = a}) .-      mapping _Coerce---- | Year of date. Must be from 1 to 9999, or 0 if specifying a date without--- a year.-gtdYear :: Lens' GoogleTypeDate (Maybe Int32)-gtdYear-  = lens _gtdYear (\ s a -> s{_gtdYear = a}) .-      mapping _Coerce---- | Month of year. Must be from 1 to 12, or 0 if specifying a year without a--- month and day.-gtdMonth :: Lens' GoogleTypeDate (Maybe Int32)-gtdMonth-  = lens _gtdMonth (\ s a -> s{_gtdMonth = a}) .-      mapping _Coerce--instance FromJSON GoogleTypeDate where-        parseJSON-          = withObject "GoogleTypeDate"-              (\ o ->-                 GoogleTypeDate' <$>-                   (o .:? "day") <*> (o .:? "year") <*> (o .:? "month"))--instance ToJSON GoogleTypeDate where-        toJSON GoogleTypeDate'{..}-          = object-              (catMaybes-                 [("day" .=) <$> _gtdDay, ("year" .=) <$> _gtdYear,-                  ("month" .=) <$> _gtdMonth])---- | Message for detecting output from deidentification transformations such--- as--- [\`CryptoReplaceFfxFpeConfig\`](\/dlp\/docs\/reference\/rest\/v2\/organizations.deidentifyTemplates#cryptoreplaceffxfpeconfig).--- These types of transformations are those that perform pseudonymization,--- thereby producing a \"surrogate\" as output. This should be used in--- conjunction with a field on the transformation such as--- \`surrogate_info_type\`. This CustomInfoType does not support the use of--- \`detection_rules\`.------ /See:/ 'googlePrivacyDlpV2SurrogateType' smart constructor.-data GooglePrivacyDlpV2SurrogateType =-    GooglePrivacyDlpV2SurrogateType'-    deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2SurrogateType' with the minimum fields required to make a request.----googlePrivacyDlpV2SurrogateType-    :: GooglePrivacyDlpV2SurrogateType-googlePrivacyDlpV2SurrogateType = GooglePrivacyDlpV2SurrogateType'--instance FromJSON GooglePrivacyDlpV2SurrogateType-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2SurrogateType"-              (\ o -> pure GooglePrivacyDlpV2SurrogateType')--instance ToJSON GooglePrivacyDlpV2SurrogateType where-        toJSON = const emptyObject---- | Structured content to inspect. Up to 50,000 \`Value\`s per request--- allowed. See--- https:\/\/cloud.google.com\/dlp\/docs\/inspecting-text#inspecting_a_table--- to learn more.------ /See:/ 'googlePrivacyDlpV2Table' smart constructor.-data GooglePrivacyDlpV2Table = GooglePrivacyDlpV2Table'-    { _gpdvtRows    :: !(Maybe [GooglePrivacyDlpV2Row])-    , _gpdvtHeaders :: !(Maybe [GooglePrivacyDlpV2FieldId])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Table' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvtRows'------ * 'gpdvtHeaders'-googlePrivacyDlpV2Table-    :: GooglePrivacyDlpV2Table-googlePrivacyDlpV2Table =-    GooglePrivacyDlpV2Table'-    { _gpdvtRows = Nothing-    , _gpdvtHeaders = Nothing-    }--gpdvtRows :: Lens' GooglePrivacyDlpV2Table [GooglePrivacyDlpV2Row]-gpdvtRows-  = lens _gpdvtRows (\ s a -> s{_gpdvtRows = a}) .-      _Default-      . _Coerce--gpdvtHeaders :: Lens' GooglePrivacyDlpV2Table [GooglePrivacyDlpV2FieldId]-gpdvtHeaders-  = lens _gpdvtHeaders (\ s a -> s{_gpdvtHeaders = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2Table where-        parseJSON-          = withObject "GooglePrivacyDlpV2Table"-              (\ o ->-                 GooglePrivacyDlpV2Table' <$>-                   (o .:? "rows" .!= mempty) <*>-                     (o .:? "headers" .!= mempty))--instance ToJSON GooglePrivacyDlpV2Table where-        toJSON GooglePrivacyDlpV2Table'{..}-          = object-              (catMaybes-                 [("rows" .=) <$> _gpdvtRows,-                  ("headers" .=) <$> _gpdvtHeaders])---- | Result of the l-diversity computation.------ /See:/ 'googlePrivacyDlpV2LDiversityResult' smart constructor.-newtype GooglePrivacyDlpV2LDiversityResult = GooglePrivacyDlpV2LDiversityResult'-    { _gpdvldrSensitiveValueFrequencyHistogramBuckets :: Maybe [GooglePrivacyDlpV2LDiversityHistogramBucket]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2LDiversityResult' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvldrSensitiveValueFrequencyHistogramBuckets'-googlePrivacyDlpV2LDiversityResult-    :: GooglePrivacyDlpV2LDiversityResult-googlePrivacyDlpV2LDiversityResult =-    GooglePrivacyDlpV2LDiversityResult'-    { _gpdvldrSensitiveValueFrequencyHistogramBuckets = Nothing-    }---- | Histogram of l-diversity equivalence class sensitive value frequencies.-gpdvldrSensitiveValueFrequencyHistogramBuckets :: Lens' GooglePrivacyDlpV2LDiversityResult [GooglePrivacyDlpV2LDiversityHistogramBucket]-gpdvldrSensitiveValueFrequencyHistogramBuckets-  = lens-      _gpdvldrSensitiveValueFrequencyHistogramBuckets-      (\ s a ->-         s{_gpdvldrSensitiveValueFrequencyHistogramBuckets =-             a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2LDiversityResult-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2LDiversityResult"-              (\ o ->-                 GooglePrivacyDlpV2LDiversityResult' <$>-                   (o .:? "sensitiveValueFrequencyHistogramBuckets" .!=-                      mempty))--instance ToJSON GooglePrivacyDlpV2LDiversityResult-         where-        toJSON GooglePrivacyDlpV2LDiversityResult'{..}-          = object-              (catMaybes-                 [("sensitiveValueFrequencyHistogramBuckets" .=) <$>-                    _gpdvldrSensitiveValueFrequencyHistogramBuckets])---- | Reidentifiability metric. This corresponds to a risk model similar to--- what is called \"journalist risk\" in the literature, except the attack--- dataset is statistically modeled instead of being perfectly known. This--- can be done using publicly available data (like the US Census), or using--- a custom statistical model (indicated as one or several BigQuery--- tables), or by extrapolating from the distribution of values in the--- input dataset. A column with a semantic tag attached.------ /See:/ 'googlePrivacyDlpV2KMapEstimationConfig' smart constructor.-data GooglePrivacyDlpV2KMapEstimationConfig = GooglePrivacyDlpV2KMapEstimationConfig'-    { _gpdvkmecAuxiliaryTables :: !(Maybe [GooglePrivacyDlpV2AuxiliaryTable])-    , _gpdvkmecRegionCode      :: !(Maybe Text)-    , _gpdvkmecQuasiIds        :: !(Maybe [GooglePrivacyDlpV2TaggedField])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2KMapEstimationConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvkmecAuxiliaryTables'------ * 'gpdvkmecRegionCode'------ * 'gpdvkmecQuasiIds'-googlePrivacyDlpV2KMapEstimationConfig-    :: GooglePrivacyDlpV2KMapEstimationConfig-googlePrivacyDlpV2KMapEstimationConfig =-    GooglePrivacyDlpV2KMapEstimationConfig'-    { _gpdvkmecAuxiliaryTables = Nothing-    , _gpdvkmecRegionCode = Nothing-    , _gpdvkmecQuasiIds = Nothing-    }---- | Several auxiliary tables can be used in the analysis. Each custom_tag--- used to tag a quasi-identifiers column must appear in exactly one column--- of one auxiliary table.-gpdvkmecAuxiliaryTables :: Lens' GooglePrivacyDlpV2KMapEstimationConfig [GooglePrivacyDlpV2AuxiliaryTable]-gpdvkmecAuxiliaryTables-  = lens _gpdvkmecAuxiliaryTables-      (\ s a -> s{_gpdvkmecAuxiliaryTables = a})-      . _Default-      . _Coerce---- | ISO 3166-1 alpha-2 region code to use in the statistical modeling.--- Required if no column is tagged with a region-specific InfoType (like--- US_ZIP_5) or a region code.-gpdvkmecRegionCode :: Lens' GooglePrivacyDlpV2KMapEstimationConfig (Maybe Text)-gpdvkmecRegionCode-  = lens _gpdvkmecRegionCode-      (\ s a -> s{_gpdvkmecRegionCode = a})---- | Fields considered to be quasi-identifiers. No two columns can have the--- same tag. [required]-gpdvkmecQuasiIds :: Lens' GooglePrivacyDlpV2KMapEstimationConfig [GooglePrivacyDlpV2TaggedField]-gpdvkmecQuasiIds-  = lens _gpdvkmecQuasiIds-      (\ s a -> s{_gpdvkmecQuasiIds = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2KMapEstimationConfig where-        parseJSON-          = withObject "GooglePrivacyDlpV2KMapEstimationConfig"-              (\ o ->-                 GooglePrivacyDlpV2KMapEstimationConfig' <$>-                   (o .:? "auxiliaryTables" .!= mempty) <*>-                     (o .:? "regionCode")-                     <*> (o .:? "quasiIds" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2KMapEstimationConfig where-        toJSON GooglePrivacyDlpV2KMapEstimationConfig'{..}-          = object-              (catMaybes-                 [("auxiliaryTables" .=) <$> _gpdvkmecAuxiliaryTables,-                  ("regionCode" .=) <$> _gpdvkmecRegionCode,-                  ("quasiIds" .=) <$> _gpdvkmecQuasiIds])---- | Replaces an identifier with a surrogate using FPE with the FFX mode of--- operation; however when used in the \`ReidentifyContent\` API method, it--- serves the opposite function by reversing the surrogate back into the--- original identifier. The identifier must be encoded as ASCII. For a--- given crypto key and context, the same identifier will be replaced with--- the same surrogate. Identifiers must be at least two characters long. In--- the case that the identifier is the empty string, it will be skipped.--- See https:\/\/cloud.google.com\/dlp\/docs\/pseudonymization to learn--- more.------ /See:/ 'googlePrivacyDlpV2CryptoReplaceFfxFpeConfig' smart constructor.-data GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig = GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig'-    { _gpdvcrffcContext           :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvcrffcCommonAlphabet    :: !(Maybe GooglePrivacyDlpV2CryptoReplaceFfxFpeConfigCommonAlphabet)-    , _gpdvcrffcSurrogateInfoType :: !(Maybe GooglePrivacyDlpV2InfoType)-    , _gpdvcrffcCustomAlphabet    :: !(Maybe Text)-    , _gpdvcrffcCryptoKey         :: !(Maybe GooglePrivacyDlpV2CryptoKey)-    , _gpdvcrffcRadix             :: !(Maybe (Textual Int32))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcrffcContext'------ * 'gpdvcrffcCommonAlphabet'------ * 'gpdvcrffcSurrogateInfoType'------ * 'gpdvcrffcCustomAlphabet'------ * 'gpdvcrffcCryptoKey'------ * 'gpdvcrffcRadix'-googlePrivacyDlpV2CryptoReplaceFfxFpeConfig-    :: GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig-googlePrivacyDlpV2CryptoReplaceFfxFpeConfig =-    GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig'-    { _gpdvcrffcContext = Nothing-    , _gpdvcrffcCommonAlphabet = Nothing-    , _gpdvcrffcSurrogateInfoType = Nothing-    , _gpdvcrffcCustomAlphabet = Nothing-    , _gpdvcrffcCryptoKey = Nothing-    , _gpdvcrffcRadix = Nothing-    }---- | The \'tweak\', a context may be used for higher security since the same--- identifier in two different contexts won\'t be given the same surrogate.--- If the context is not set, a default tweak will be used. If the context--- is set but: 1. there is no record present when transforming a given--- value or 1. the field is not present when transforming a given value, a--- default tweak will be used. Note that case (1) is expected when an--- \`InfoTypeTransformation\` is applied to both structured and--- non-structured \`ContentItem\`s. Currently, the referenced field may be--- of value type integer or string. The tweak is constructed as a sequence--- of bytes in big endian byte order such that: - a 64 bit integer is--- encoded followed by a single byte of value 1 - a string is encoded in--- UTF-8 format followed by a single byte of value 2-gpdvcrffcContext :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe GooglePrivacyDlpV2FieldId)-gpdvcrffcContext-  = lens _gpdvcrffcContext-      (\ s a -> s{_gpdvcrffcContext = a})--gpdvcrffcCommonAlphabet :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe GooglePrivacyDlpV2CryptoReplaceFfxFpeConfigCommonAlphabet)-gpdvcrffcCommonAlphabet-  = lens _gpdvcrffcCommonAlphabet-      (\ s a -> s{_gpdvcrffcCommonAlphabet = a})---- | The custom infoType to annotate the surrogate with. This annotation will--- be applied to the surrogate by prefixing it with the name of the custom--- infoType followed by the number of characters comprising the surrogate.--- The following scheme defines the format:--- info_type_name(surrogate_character_count):surrogate For example, if the--- name of custom infoType is \'MY_TOKEN_INFO_TYPE\' and the surrogate is--- \'abc\', the full replacement value will be:--- \'MY_TOKEN_INFO_TYPE(3):abc\' This annotation identifies the surrogate--- when inspecting content using the custom infoType--- [\`SurrogateType\`](\/dlp\/docs\/reference\/rest\/v2\/InspectConfig#surrogatetype).--- This facilitates reversal of the surrogate when it occurs in free text.--- In order for inspection to work properly, the name of this infoType must--- not occur naturally anywhere in your data; otherwise, inspection may--- find a surrogate that does not correspond to an actual identifier.--- Therefore, choose your custom infoType name carefully after considering--- what your data looks like. One way to select a name that has a high--- chance of yielding reliable detection is to include one or more unicode--- characters that are highly improbable to exist in your data. For--- example, assuming your data is entered from a regular ASCII keyboard,--- the symbol with the hex code point 29DD might be used like so:--- ⧝MY_TOKEN_TYPE-gpdvcrffcSurrogateInfoType :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe GooglePrivacyDlpV2InfoType)-gpdvcrffcSurrogateInfoType-  = lens _gpdvcrffcSurrogateInfoType-      (\ s a -> s{_gpdvcrffcSurrogateInfoType = a})---- | This is supported by mapping these to the alphanumeric characters that--- the FFX mode natively supports. This happens before\/after--- encryption\/decryption. Each character listed must appear only once.--- Number of characters must be in the range [2, 62]. This must be encoded--- as ASCII. The order of characters does not matter.-gpdvcrffcCustomAlphabet :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe Text)-gpdvcrffcCustomAlphabet-  = lens _gpdvcrffcCustomAlphabet-      (\ s a -> s{_gpdvcrffcCustomAlphabet = a})---- | The key used by the encryption algorithm. [required]-gpdvcrffcCryptoKey :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe GooglePrivacyDlpV2CryptoKey)-gpdvcrffcCryptoKey-  = lens _gpdvcrffcCryptoKey-      (\ s a -> s{_gpdvcrffcCryptoKey = a})---- | The native way to select the alphabet. Must be in the range [2, 62].-gpdvcrffcRadix :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe Int32)-gpdvcrffcRadix-  = lens _gpdvcrffcRadix-      (\ s a -> s{_gpdvcrffcRadix = a})-      . mapping _Coerce--instance FromJSON-         GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig"-              (\ o ->-                 GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig' <$>-                   (o .:? "context") <*> (o .:? "commonAlphabet") <*>-                     (o .:? "surrogateInfoType")-                     <*> (o .:? "customAlphabet")-                     <*> (o .:? "cryptoKey")-                     <*> (o .:? "radix"))--instance ToJSON-         GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig where-        toJSON-          GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig'{..}-          = object-              (catMaybes-                 [("context" .=) <$> _gpdvcrffcContext,-                  ("commonAlphabet" .=) <$> _gpdvcrffcCommonAlphabet,-                  ("surrogateInfoType" .=) <$>-                    _gpdvcrffcSurrogateInfoType,-                  ("customAlphabet" .=) <$> _gpdvcrffcCustomAlphabet,-                  ("cryptoKey" .=) <$> _gpdvcrffcCryptoKey,-                  ("radix" .=) <$> _gpdvcrffcRadix])---- | A quasi-identifier column has a custom_tag, used to know which column in--- the data corresponds to which column in the statistical model.------ /See:/ 'googlePrivacyDlpV2QuasiIdentifierField' smart constructor.-data GooglePrivacyDlpV2QuasiIdentifierField = GooglePrivacyDlpV2QuasiIdentifierField'-    { _gField     :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gCustomTag :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2QuasiIdentifierField' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gField'------ * 'gCustomTag'-googlePrivacyDlpV2QuasiIdentifierField-    :: GooglePrivacyDlpV2QuasiIdentifierField-googlePrivacyDlpV2QuasiIdentifierField =-    GooglePrivacyDlpV2QuasiIdentifierField'-    { _gField = Nothing-    , _gCustomTag = Nothing-    }--gField :: Lens' GooglePrivacyDlpV2QuasiIdentifierField (Maybe GooglePrivacyDlpV2FieldId)-gField = lens _gField (\ s a -> s{_gField = a})--gCustomTag :: Lens' GooglePrivacyDlpV2QuasiIdentifierField (Maybe Text)-gCustomTag-  = lens _gCustomTag (\ s a -> s{_gCustomTag = a})--instance FromJSON-         GooglePrivacyDlpV2QuasiIdentifierField where-        parseJSON-          = withObject "GooglePrivacyDlpV2QuasiIdentifierField"-              (\ o ->-                 GooglePrivacyDlpV2QuasiIdentifierField' <$>-                   (o .:? "field") <*> (o .:? "customTag"))--instance ToJSON-         GooglePrivacyDlpV2QuasiIdentifierField where-        toJSON GooglePrivacyDlpV2QuasiIdentifierField'{..}-          = object-              (catMaybes-                 [("field" .=) <$> _gField,-                  ("customTag" .=) <$> _gCustomTag])---- | Type of information detected by the API.------ /See:/ 'googlePrivacyDlpV2InfoType' smart constructor.-newtype GooglePrivacyDlpV2InfoType = GooglePrivacyDlpV2InfoType'-    { _gpdvitName :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InfoType' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvitName'-googlePrivacyDlpV2InfoType-    :: GooglePrivacyDlpV2InfoType-googlePrivacyDlpV2InfoType =-    GooglePrivacyDlpV2InfoType'-    { _gpdvitName = Nothing-    }---- | Name of the information type. Either a name of your choosing when--- creating a CustomInfoType, or one of the names listed at--- https:\/\/cloud.google.com\/dlp\/docs\/infotypes-reference when--- specifying a built-in type. InfoType names should conform to the pattern--- [a-zA-Z0-9_]{1,64}.-gpdvitName :: Lens' GooglePrivacyDlpV2InfoType (Maybe Text)-gpdvitName-  = lens _gpdvitName (\ s a -> s{_gpdvitName = a})--instance FromJSON GooglePrivacyDlpV2InfoType where-        parseJSON-          = withObject "GooglePrivacyDlpV2InfoType"-              (\ o ->-                 GooglePrivacyDlpV2InfoType' <$> (o .:? "name"))--instance ToJSON GooglePrivacyDlpV2InfoType where-        toJSON GooglePrivacyDlpV2InfoType'{..}-          = object (catMaybes [("name" .=) <$> _gpdvitName])---- | The inspectTemplate contains a configuration (set of types of sensitive--- data to be detected) to be used anywhere you otherwise would normally--- specify InspectConfig. See--- https:\/\/cloud.google.com\/dlp\/docs\/concepts-templates to learn more.------ /See:/ 'googlePrivacyDlpV2InspectTemplate' smart constructor.-data GooglePrivacyDlpV2InspectTemplate = GooglePrivacyDlpV2InspectTemplate'-    { _gInspectConfig :: !(Maybe GooglePrivacyDlpV2InspectConfig)-    , _gUpdateTime    :: !(Maybe DateTime')-    , _gName          :: !(Maybe Text)-    , _gDisplayName   :: !(Maybe Text)-    , _gDescription   :: !(Maybe Text)-    , _gCreateTime    :: !(Maybe DateTime')-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InspectTemplate' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gInspectConfig'------ * 'gUpdateTime'------ * 'gName'------ * 'gDisplayName'------ * 'gDescription'------ * 'gCreateTime'-googlePrivacyDlpV2InspectTemplate-    :: GooglePrivacyDlpV2InspectTemplate-googlePrivacyDlpV2InspectTemplate =-    GooglePrivacyDlpV2InspectTemplate'-    { _gInspectConfig = Nothing-    , _gUpdateTime = Nothing-    , _gName = Nothing-    , _gDisplayName = Nothing-    , _gDescription = Nothing-    , _gCreateTime = Nothing-    }---- | The core content of the template. Configuration of the scanning process.-gInspectConfig :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe GooglePrivacyDlpV2InspectConfig)-gInspectConfig-  = lens _gInspectConfig-      (\ s a -> s{_gInspectConfig = a})---- | The last update timestamp of a inspectTemplate, output only field.-gUpdateTime :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe UTCTime)-gUpdateTime-  = lens _gUpdateTime (\ s a -> s{_gUpdateTime = a}) .-      mapping _DateTime---- | The template name. Output only. The template will have one of the--- following formats:--- \`projects\/PROJECT_ID\/inspectTemplates\/TEMPLATE_ID\` OR--- \`organizations\/ORGANIZATION_ID\/inspectTemplates\/TEMPLATE_ID\`-gName :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe Text)-gName = lens _gName (\ s a -> s{_gName = a})---- | Display name (max 256 chars).-gDisplayName :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe Text)-gDisplayName-  = lens _gDisplayName (\ s a -> s{_gDisplayName = a})---- | Short description (max 256 chars).-gDescription :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe Text)-gDescription-  = lens _gDescription (\ s a -> s{_gDescription = a})---- | The creation timestamp of a inspectTemplate, output only field.-gCreateTime :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe UTCTime)-gCreateTime-  = lens _gCreateTime (\ s a -> s{_gCreateTime = a}) .-      mapping _DateTime--instance FromJSON GooglePrivacyDlpV2InspectTemplate-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2InspectTemplate"-              (\ o ->-                 GooglePrivacyDlpV2InspectTemplate' <$>-                   (o .:? "inspectConfig") <*> (o .:? "updateTime") <*>-                     (o .:? "name")-                     <*> (o .:? "displayName")-                     <*> (o .:? "description")-                     <*> (o .:? "createTime"))--instance ToJSON GooglePrivacyDlpV2InspectTemplate-         where-        toJSON GooglePrivacyDlpV2InspectTemplate'{..}-          = object-              (catMaybes-                 [("inspectConfig" .=) <$> _gInspectConfig,-                  ("updateTime" .=) <$> _gUpdateTime,-                  ("name" .=) <$> _gName,-                  ("displayName" .=) <$> _gDisplayName,-                  ("description" .=) <$> _gDescription,-                  ("createTime" .=) <$> _gCreateTime])------- /See:/ 'googlePrivacyDlpV2KAnonymityHistogramBucket' smart constructor.-data GooglePrivacyDlpV2KAnonymityHistogramBucket = GooglePrivacyDlpV2KAnonymityHistogramBucket'-    { _gpdvkahbEquivalenceClassSizeLowerBound :: !(Maybe (Textual Int64))-    , _gpdvkahbEquivalenceClassSizeUpperBound :: !(Maybe (Textual Int64))-    , _gpdvkahbBucketValues                   :: !(Maybe [GooglePrivacyDlpV2KAnonymityEquivalenceClass])-    , _gpdvkahbBucketSize                     :: !(Maybe (Textual Int64))-    , _gpdvkahbBucketValueCount               :: !(Maybe (Textual Int64))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2KAnonymityHistogramBucket' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvkahbEquivalenceClassSizeLowerBound'------ * 'gpdvkahbEquivalenceClassSizeUpperBound'------ * 'gpdvkahbBucketValues'------ * 'gpdvkahbBucketSize'------ * 'gpdvkahbBucketValueCount'-googlePrivacyDlpV2KAnonymityHistogramBucket-    :: GooglePrivacyDlpV2KAnonymityHistogramBucket-googlePrivacyDlpV2KAnonymityHistogramBucket =-    GooglePrivacyDlpV2KAnonymityHistogramBucket'-    { _gpdvkahbEquivalenceClassSizeLowerBound = Nothing-    , _gpdvkahbEquivalenceClassSizeUpperBound = Nothing-    , _gpdvkahbBucketValues = Nothing-    , _gpdvkahbBucketSize = Nothing-    , _gpdvkahbBucketValueCount = Nothing-    }---- | Lower bound on the size of the equivalence classes in this bucket.-gpdvkahbEquivalenceClassSizeLowerBound :: Lens' GooglePrivacyDlpV2KAnonymityHistogramBucket (Maybe Int64)-gpdvkahbEquivalenceClassSizeLowerBound-  = lens _gpdvkahbEquivalenceClassSizeLowerBound-      (\ s a ->-         s{_gpdvkahbEquivalenceClassSizeLowerBound = a})-      . mapping _Coerce---- | Upper bound on the size of the equivalence classes in this bucket.-gpdvkahbEquivalenceClassSizeUpperBound :: Lens' GooglePrivacyDlpV2KAnonymityHistogramBucket (Maybe Int64)-gpdvkahbEquivalenceClassSizeUpperBound-  = lens _gpdvkahbEquivalenceClassSizeUpperBound-      (\ s a ->-         s{_gpdvkahbEquivalenceClassSizeUpperBound = a})-      . mapping _Coerce---- | Sample of equivalence classes in this bucket. The total number of--- classes returned per bucket is capped at 20.-gpdvkahbBucketValues :: Lens' GooglePrivacyDlpV2KAnonymityHistogramBucket [GooglePrivacyDlpV2KAnonymityEquivalenceClass]-gpdvkahbBucketValues-  = lens _gpdvkahbBucketValues-      (\ s a -> s{_gpdvkahbBucketValues = a})-      . _Default-      . _Coerce---- | Total number of equivalence classes in this bucket.-gpdvkahbBucketSize :: Lens' GooglePrivacyDlpV2KAnonymityHistogramBucket (Maybe Int64)-gpdvkahbBucketSize-  = lens _gpdvkahbBucketSize-      (\ s a -> s{_gpdvkahbBucketSize = a})-      . mapping _Coerce---- | Total number of distinct equivalence classes in this bucket.-gpdvkahbBucketValueCount :: Lens' GooglePrivacyDlpV2KAnonymityHistogramBucket (Maybe Int64)-gpdvkahbBucketValueCount-  = lens _gpdvkahbBucketValueCount-      (\ s a -> s{_gpdvkahbBucketValueCount = a})-      . mapping _Coerce--instance FromJSON-         GooglePrivacyDlpV2KAnonymityHistogramBucket where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2KAnonymityHistogramBucket"-              (\ o ->-                 GooglePrivacyDlpV2KAnonymityHistogramBucket' <$>-                   (o .:? "equivalenceClassSizeLowerBound") <*>-                     (o .:? "equivalenceClassSizeUpperBound")-                     <*> (o .:? "bucketValues" .!= mempty)-                     <*> (o .:? "bucketSize")-                     <*> (o .:? "bucketValueCount"))--instance ToJSON-         GooglePrivacyDlpV2KAnonymityHistogramBucket where-        toJSON-          GooglePrivacyDlpV2KAnonymityHistogramBucket'{..}-          = object-              (catMaybes-                 [("equivalenceClassSizeLowerBound" .=) <$>-                    _gpdvkahbEquivalenceClassSizeLowerBound,-                  ("equivalenceClassSizeUpperBound" .=) <$>-                    _gpdvkahbEquivalenceClassSizeUpperBound,-                  ("bucketValues" .=) <$> _gpdvkahbBucketValues,-                  ("bucketSize" .=) <$> _gpdvkahbBucketSize,-                  ("bucketValueCount" .=) <$>-                    _gpdvkahbBucketValueCount])---- | Request to re-identify an item.------ /See:/ 'googlePrivacyDlpV2ReidentifyContentRequest' smart constructor.-data GooglePrivacyDlpV2ReidentifyContentRequest = GooglePrivacyDlpV2ReidentifyContentRequest'-    { _gooInspectConfig          :: !(Maybe GooglePrivacyDlpV2InspectConfig)-    , _gooReidentifyTemplateName :: !(Maybe Text)-    , _gooItem                   :: !(Maybe GooglePrivacyDlpV2ContentItem)-    , _gooInspectTemplateName    :: !(Maybe Text)-    , _gooReidentifyConfig       :: !(Maybe GooglePrivacyDlpV2DeidentifyConfig)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ReidentifyContentRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gooInspectConfig'------ * 'gooReidentifyTemplateName'------ * 'gooItem'------ * 'gooInspectTemplateName'------ * 'gooReidentifyConfig'-googlePrivacyDlpV2ReidentifyContentRequest-    :: GooglePrivacyDlpV2ReidentifyContentRequest-googlePrivacyDlpV2ReidentifyContentRequest =-    GooglePrivacyDlpV2ReidentifyContentRequest'-    { _gooInspectConfig = Nothing-    , _gooReidentifyTemplateName = Nothing-    , _gooItem = Nothing-    , _gooInspectTemplateName = Nothing-    , _gooReidentifyConfig = Nothing-    }---- | Configuration for the inspector.-gooInspectConfig :: Lens' GooglePrivacyDlpV2ReidentifyContentRequest (Maybe GooglePrivacyDlpV2InspectConfig)-gooInspectConfig-  = lens _gooInspectConfig-      (\ s a -> s{_gooInspectConfig = a})---- | Optional template to use. References an instance of--- \`DeidentifyTemplate\`. Any configuration directly specified in--- \`reidentify_config\` or \`inspect_config\` will override those set in--- the template. Singular fields that are set in this request will replace--- their corresponding fields in the template. Repeated fields are--- appended. Singular sub-messages and groups are recursively merged.-gooReidentifyTemplateName :: Lens' GooglePrivacyDlpV2ReidentifyContentRequest (Maybe Text)-gooReidentifyTemplateName-  = lens _gooReidentifyTemplateName-      (\ s a -> s{_gooReidentifyTemplateName = a})---- | The item to re-identify. Will be treated as text.-gooItem :: Lens' GooglePrivacyDlpV2ReidentifyContentRequest (Maybe GooglePrivacyDlpV2ContentItem)-gooItem = lens _gooItem (\ s a -> s{_gooItem = a})---- | Optional template to use. Any configuration directly specified in--- \`inspect_config\` will override those set in the template. Singular--- fields that are set in this request will replace their corresponding--- fields in the template. Repeated fields are appended. Singular--- sub-messages and groups are recursively merged.-gooInspectTemplateName :: Lens' GooglePrivacyDlpV2ReidentifyContentRequest (Maybe Text)-gooInspectTemplateName-  = lens _gooInspectTemplateName-      (\ s a -> s{_gooInspectTemplateName = a})---- | Configuration for the re-identification of the content item. This field--- shares the same proto message type that is used for de-identification,--- however its usage here is for the reversal of the previous--- de-identification. Re-identification is performed by examining the--- transformations used to de-identify the items and executing the reverse.--- This requires that only reversible transformations be provided here. The--- reversible transformations are: - \`CryptoReplaceFfxFpeConfig\`-gooReidentifyConfig :: Lens' GooglePrivacyDlpV2ReidentifyContentRequest (Maybe GooglePrivacyDlpV2DeidentifyConfig)-gooReidentifyConfig-  = lens _gooReidentifyConfig-      (\ s a -> s{_gooReidentifyConfig = a})--instance FromJSON-         GooglePrivacyDlpV2ReidentifyContentRequest where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2ReidentifyContentRequest"-              (\ o ->-                 GooglePrivacyDlpV2ReidentifyContentRequest' <$>-                   (o .:? "inspectConfig") <*>-                     (o .:? "reidentifyTemplateName")-                     <*> (o .:? "item")-                     <*> (o .:? "inspectTemplateName")-                     <*> (o .:? "reidentifyConfig"))--instance ToJSON-         GooglePrivacyDlpV2ReidentifyContentRequest where-        toJSON-          GooglePrivacyDlpV2ReidentifyContentRequest'{..}-          = object-              (catMaybes-                 [("inspectConfig" .=) <$> _gooInspectConfig,-                  ("reidentifyTemplateName" .=) <$>-                    _gooReidentifyTemplateName,-                  ("item" .=) <$> _gooItem,-                  ("inspectTemplateName" .=) <$>-                    _gooInspectTemplateName,-                  ("reidentifyConfig" .=) <$> _gooReidentifyConfig])---- | Pseudonymization method that generates surrogates via cryptographic--- hashing. Uses SHA-256. The key size must be either 32 or 64 bytes.--- Outputs a base64 encoded representation of the hashed output (for--- example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=). Currently, only--- string and integer values can be hashed. See--- https:\/\/cloud.google.com\/dlp\/docs\/pseudonymization to learn more.------ /See:/ 'googlePrivacyDlpV2CryptoHashConfig' smart constructor.-newtype GooglePrivacyDlpV2CryptoHashConfig = GooglePrivacyDlpV2CryptoHashConfig'-    { _gpdvchcCryptoKey :: Maybe GooglePrivacyDlpV2CryptoKey-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CryptoHashConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvchcCryptoKey'-googlePrivacyDlpV2CryptoHashConfig-    :: GooglePrivacyDlpV2CryptoHashConfig-googlePrivacyDlpV2CryptoHashConfig =-    GooglePrivacyDlpV2CryptoHashConfig'-    { _gpdvchcCryptoKey = Nothing-    }---- | The key used by the hash function.-gpdvchcCryptoKey :: Lens' GooglePrivacyDlpV2CryptoHashConfig (Maybe GooglePrivacyDlpV2CryptoKey)-gpdvchcCryptoKey-  = lens _gpdvchcCryptoKey-      (\ s a -> s{_gpdvchcCryptoKey = a})--instance FromJSON GooglePrivacyDlpV2CryptoHashConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2CryptoHashConfig"-              (\ o ->-                 GooglePrivacyDlpV2CryptoHashConfig' <$>-                   (o .:? "cryptoKey"))--instance ToJSON GooglePrivacyDlpV2CryptoHashConfig-         where-        toJSON GooglePrivacyDlpV2CryptoHashConfig'{..}-          = object-              (catMaybes [("cryptoKey" .=) <$> _gpdvchcCryptoKey])---- | Max findings configuration per infoType, per content item or long--- running DlpJob.------ /See:/ 'googlePrivacyDlpV2InfoTypeLimit' smart constructor.-data GooglePrivacyDlpV2InfoTypeLimit = GooglePrivacyDlpV2InfoTypeLimit'-    { _gpdvitlMaxFindings :: !(Maybe (Textual Int32))-    , _gpdvitlInfoType    :: !(Maybe GooglePrivacyDlpV2InfoType)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InfoTypeLimit' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvitlMaxFindings'------ * 'gpdvitlInfoType'-googlePrivacyDlpV2InfoTypeLimit-    :: GooglePrivacyDlpV2InfoTypeLimit-googlePrivacyDlpV2InfoTypeLimit =-    GooglePrivacyDlpV2InfoTypeLimit'-    { _gpdvitlMaxFindings = Nothing-    , _gpdvitlInfoType = Nothing-    }---- | Max findings limit for the given infoType.-gpdvitlMaxFindings :: Lens' GooglePrivacyDlpV2InfoTypeLimit (Maybe Int32)-gpdvitlMaxFindings-  = lens _gpdvitlMaxFindings-      (\ s a -> s{_gpdvitlMaxFindings = a})-      . mapping _Coerce---- | Type of information the findings limit applies to. Only one limit per--- info_type should be provided. If InfoTypeLimit does not have an--- info_type, the DLP API applies the limit against all info_types that are--- found but not specified in another InfoTypeLimit.-gpdvitlInfoType :: Lens' GooglePrivacyDlpV2InfoTypeLimit (Maybe GooglePrivacyDlpV2InfoType)-gpdvitlInfoType-  = lens _gpdvitlInfoType-      (\ s a -> s{_gpdvitlInfoType = a})--instance FromJSON GooglePrivacyDlpV2InfoTypeLimit-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2InfoTypeLimit"-              (\ o ->-                 GooglePrivacyDlpV2InfoTypeLimit' <$>-                   (o .:? "maxFindings") <*> (o .:? "infoType"))--instance ToJSON GooglePrivacyDlpV2InfoTypeLimit where-        toJSON GooglePrivacyDlpV2InfoTypeLimit'{..}-          = object-              (catMaybes-                 [("maxFindings" .=) <$> _gpdvitlMaxFindings,-                  ("infoType" .=) <$> _gpdvitlInfoType])---- | Location of a finding within a table.------ /See:/ 'googlePrivacyDlpV2TableLocation' smart constructor.-newtype GooglePrivacyDlpV2TableLocation = GooglePrivacyDlpV2TableLocation'-    { _gpdvtlRowIndex :: Maybe (Textual Int64)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2TableLocation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvtlRowIndex'-googlePrivacyDlpV2TableLocation-    :: GooglePrivacyDlpV2TableLocation-googlePrivacyDlpV2TableLocation =-    GooglePrivacyDlpV2TableLocation'-    { _gpdvtlRowIndex = Nothing-    }---- | The zero-based index of the row where the finding is located.-gpdvtlRowIndex :: Lens' GooglePrivacyDlpV2TableLocation (Maybe Int64)-gpdvtlRowIndex-  = lens _gpdvtlRowIndex-      (\ s a -> s{_gpdvtlRowIndex = a})-      . mapping _Coerce--instance FromJSON GooglePrivacyDlpV2TableLocation-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2TableLocation"-              (\ o ->-                 GooglePrivacyDlpV2TableLocation' <$>-                   (o .:? "rowIndex"))--instance ToJSON GooglePrivacyDlpV2TableLocation where-        toJSON GooglePrivacyDlpV2TableLocation'{..}-          = object-              (catMaybes [("rowIndex" .=) <$> _gpdvtlRowIndex])------- /See:/ 'googlePrivacyDlpV2TimeZone' smart constructor.-newtype GooglePrivacyDlpV2TimeZone = GooglePrivacyDlpV2TimeZone'-    { _gpdvtzOffSetMinutes :: Maybe (Textual Int32)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2TimeZone' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvtzOffSetMinutes'-googlePrivacyDlpV2TimeZone-    :: GooglePrivacyDlpV2TimeZone-googlePrivacyDlpV2TimeZone =-    GooglePrivacyDlpV2TimeZone'-    { _gpdvtzOffSetMinutes = Nothing-    }---- | Set only if the offset can be determined. Positive for time ahead of--- UTC. E.g. For \"UTC-9\", this value is -540.-gpdvtzOffSetMinutes :: Lens' GooglePrivacyDlpV2TimeZone (Maybe Int32)-gpdvtzOffSetMinutes-  = lens _gpdvtzOffSetMinutes-      (\ s a -> s{_gpdvtzOffSetMinutes = a})-      . mapping _Coerce--instance FromJSON GooglePrivacyDlpV2TimeZone where-        parseJSON-          = withObject "GooglePrivacyDlpV2TimeZone"-              (\ o ->-                 GooglePrivacyDlpV2TimeZone' <$>-                   (o .:? "offsetMinutes"))--instance ToJSON GooglePrivacyDlpV2TimeZone where-        toJSON GooglePrivacyDlpV2TimeZone'{..}-          = object-              (catMaybes-                 [("offsetMinutes" .=) <$> _gpdvtzOffSetMinutes])---- | Shared message indicating Cloud storage type.------ /See:/ 'googlePrivacyDlpV2StorageConfig' smart constructor.-data GooglePrivacyDlpV2StorageConfig = GooglePrivacyDlpV2StorageConfig'-    { _gpdvscTimespanConfig      :: !(Maybe GooglePrivacyDlpV2TimespanConfig)-    , _gpdvscBigQueryOptions     :: !(Maybe GooglePrivacyDlpV2BigQueryOptions)-    , _gpdvscDatastoreOptions    :: !(Maybe GooglePrivacyDlpV2DatastoreOptions)-    , _gpdvscCloudStorageOptions :: !(Maybe GooglePrivacyDlpV2CloudStorageOptions)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2StorageConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvscTimespanConfig'------ * 'gpdvscBigQueryOptions'------ * 'gpdvscDatastoreOptions'------ * 'gpdvscCloudStorageOptions'-googlePrivacyDlpV2StorageConfig-    :: GooglePrivacyDlpV2StorageConfig-googlePrivacyDlpV2StorageConfig =-    GooglePrivacyDlpV2StorageConfig'-    { _gpdvscTimespanConfig = Nothing-    , _gpdvscBigQueryOptions = Nothing-    , _gpdvscDatastoreOptions = Nothing-    , _gpdvscCloudStorageOptions = Nothing-    }--gpdvscTimespanConfig :: Lens' GooglePrivacyDlpV2StorageConfig (Maybe GooglePrivacyDlpV2TimespanConfig)-gpdvscTimespanConfig-  = lens _gpdvscTimespanConfig-      (\ s a -> s{_gpdvscTimespanConfig = a})---- | BigQuery options specification.-gpdvscBigQueryOptions :: Lens' GooglePrivacyDlpV2StorageConfig (Maybe GooglePrivacyDlpV2BigQueryOptions)-gpdvscBigQueryOptions-  = lens _gpdvscBigQueryOptions-      (\ s a -> s{_gpdvscBigQueryOptions = a})---- | Google Cloud Datastore options specification.-gpdvscDatastoreOptions :: Lens' GooglePrivacyDlpV2StorageConfig (Maybe GooglePrivacyDlpV2DatastoreOptions)-gpdvscDatastoreOptions-  = lens _gpdvscDatastoreOptions-      (\ s a -> s{_gpdvscDatastoreOptions = a})---- | Google Cloud Storage options specification.-gpdvscCloudStorageOptions :: Lens' GooglePrivacyDlpV2StorageConfig (Maybe GooglePrivacyDlpV2CloudStorageOptions)-gpdvscCloudStorageOptions-  = lens _gpdvscCloudStorageOptions-      (\ s a -> s{_gpdvscCloudStorageOptions = a})--instance FromJSON GooglePrivacyDlpV2StorageConfig-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2StorageConfig"-              (\ o ->-                 GooglePrivacyDlpV2StorageConfig' <$>-                   (o .:? "timespanConfig") <*>-                     (o .:? "bigQueryOptions")-                     <*> (o .:? "datastoreOptions")-                     <*> (o .:? "cloudStorageOptions"))--instance ToJSON GooglePrivacyDlpV2StorageConfig where-        toJSON GooglePrivacyDlpV2StorageConfig'{..}-          = object-              (catMaybes-                 [("timespanConfig" .=) <$> _gpdvscTimespanConfig,-                  ("bigQueryOptions" .=) <$> _gpdvscBigQueryOptions,-                  ("datastoreOptions" .=) <$> _gpdvscDatastoreOptions,-                  ("cloudStorageOptions" .=) <$>-                    _gpdvscCloudStorageOptions])---- | Set of primitive values supported by the system. Note that for the--- purposes of inspection or transformation, the number of bytes considered--- to comprise a \'Value\' is based on its representation as a UTF-8--- encoded string. For example, if \'integer_value\' is set to 123456789,--- the number of bytes would be counted as 9, even though an int64 only--- holds up to 8 bytes of data.------ /See:/ 'googlePrivacyDlpV2Value' smart constructor.-data GooglePrivacyDlpV2Value = GooglePrivacyDlpV2Value'-    { _gpdvvDayOfWeekValue :: !(Maybe GooglePrivacyDlpV2ValueDayOfWeekValue)-    , _gpdvvIntegerValue   :: !(Maybe (Textual Int64))-    , _gpdvvTimestampValue :: !(Maybe DateTime')-    , _gpdvvTimeValue      :: !(Maybe GoogleTypeTimeOfDay)-    , _gpdvvStringValue    :: !(Maybe Text)-    , _gpdvvDateValue      :: !(Maybe GoogleTypeDate)-    , _gpdvvBooleanValue   :: !(Maybe Bool)-    , _gpdvvFloatValue     :: !(Maybe (Textual Double))-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Value' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvvDayOfWeekValue'------ * 'gpdvvIntegerValue'------ * 'gpdvvTimestampValue'------ * 'gpdvvTimeValue'------ * 'gpdvvStringValue'------ * 'gpdvvDateValue'------ * 'gpdvvBooleanValue'------ * 'gpdvvFloatValue'-googlePrivacyDlpV2Value-    :: GooglePrivacyDlpV2Value-googlePrivacyDlpV2Value =-    GooglePrivacyDlpV2Value'-    { _gpdvvDayOfWeekValue = Nothing-    , _gpdvvIntegerValue = Nothing-    , _gpdvvTimestampValue = Nothing-    , _gpdvvTimeValue = Nothing-    , _gpdvvStringValue = Nothing-    , _gpdvvDateValue = Nothing-    , _gpdvvBooleanValue = Nothing-    , _gpdvvFloatValue = Nothing-    }--gpdvvDayOfWeekValue :: Lens' GooglePrivacyDlpV2Value (Maybe GooglePrivacyDlpV2ValueDayOfWeekValue)-gpdvvDayOfWeekValue-  = lens _gpdvvDayOfWeekValue-      (\ s a -> s{_gpdvvDayOfWeekValue = a})--gpdvvIntegerValue :: Lens' GooglePrivacyDlpV2Value (Maybe Int64)-gpdvvIntegerValue-  = lens _gpdvvIntegerValue-      (\ s a -> s{_gpdvvIntegerValue = a})-      . mapping _Coerce--gpdvvTimestampValue :: Lens' GooglePrivacyDlpV2Value (Maybe UTCTime)-gpdvvTimestampValue-  = lens _gpdvvTimestampValue-      (\ s a -> s{_gpdvvTimestampValue = a})-      . mapping _DateTime--gpdvvTimeValue :: Lens' GooglePrivacyDlpV2Value (Maybe GoogleTypeTimeOfDay)-gpdvvTimeValue-  = lens _gpdvvTimeValue-      (\ s a -> s{_gpdvvTimeValue = a})--gpdvvStringValue :: Lens' GooglePrivacyDlpV2Value (Maybe Text)-gpdvvStringValue-  = lens _gpdvvStringValue-      (\ s a -> s{_gpdvvStringValue = a})--gpdvvDateValue :: Lens' GooglePrivacyDlpV2Value (Maybe GoogleTypeDate)-gpdvvDateValue-  = lens _gpdvvDateValue-      (\ s a -> s{_gpdvvDateValue = a})--gpdvvBooleanValue :: Lens' GooglePrivacyDlpV2Value (Maybe Bool)-gpdvvBooleanValue-  = lens _gpdvvBooleanValue-      (\ s a -> s{_gpdvvBooleanValue = a})--gpdvvFloatValue :: Lens' GooglePrivacyDlpV2Value (Maybe Double)-gpdvvFloatValue-  = lens _gpdvvFloatValue-      (\ s a -> s{_gpdvvFloatValue = a})-      . mapping _Coerce--instance FromJSON GooglePrivacyDlpV2Value where-        parseJSON-          = withObject "GooglePrivacyDlpV2Value"-              (\ o ->-                 GooglePrivacyDlpV2Value' <$>-                   (o .:? "dayOfWeekValue") <*> (o .:? "integerValue")-                     <*> (o .:? "timestampValue")-                     <*> (o .:? "timeValue")-                     <*> (o .:? "stringValue")-                     <*> (o .:? "dateValue")-                     <*> (o .:? "booleanValue")-                     <*> (o .:? "floatValue"))--instance ToJSON GooglePrivacyDlpV2Value where-        toJSON GooglePrivacyDlpV2Value'{..}-          = object-              (catMaybes-                 [("dayOfWeekValue" .=) <$> _gpdvvDayOfWeekValue,-                  ("integerValue" .=) <$> _gpdvvIntegerValue,-                  ("timestampValue" .=) <$> _gpdvvTimestampValue,-                  ("timeValue" .=) <$> _gpdvvTimeValue,-                  ("stringValue" .=) <$> _gpdvvStringValue,-                  ("dateValue" .=) <$> _gpdvvDateValue,-                  ("booleanValue" .=) <$> _gpdvvBooleanValue,-                  ("floatValue" .=) <$> _gpdvvFloatValue])---- | Custom information type based on a dictionary of words or phrases. This--- can be used to match sensitive information specific to the data, such as--- a list of employee IDs or job titles. Dictionary words are--- case-insensitive and all characters other than letters and digits in the--- unicode [Basic Multilingual--- Plane](https:\/\/en.wikipedia.org\/wiki\/Plane_%28Unicode%29#Basic_Multilingual_Plane)--- will be replaced with whitespace when scanning for matches, so the--- dictionary phrase \"Sam Johnson\" will match all three phrases \"sam--- johnson\", \"Sam, Johnson\", and \"Sam (Johnson)\". Additionally, the--- characters surrounding any match must be of a different type than the--- adjacent characters within the word, so letters must be next to--- non-letters and digits next to non-digits. For example, the dictionary--- word \"jen\" will match the first three letters of the text \"jen123\"--- but will return no matches for \"jennifer\". Dictionary words containing--- a large number of characters that are not letters or digits may result--- in unexpected findings because such characters are treated as--- whitespace. The [limits](https:\/\/cloud.google.com\/dlp\/limits) page--- contains details about the size limits of dictionaries. For dictionaries--- that do not fit within these constraints, consider using--- \`LargeCustomDictionaryConfig\` in the \`StoredInfoType\` API.------ /See:/ 'googlePrivacyDlpV2Dictionary' smart constructor.-data GooglePrivacyDlpV2Dictionary = GooglePrivacyDlpV2Dictionary'-    { _gpdvdWordList         :: !(Maybe GooglePrivacyDlpV2WordList)-    , _gpdvdCloudStoragePath :: !(Maybe GooglePrivacyDlpV2CloudStoragePath)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Dictionary' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdWordList'------ * 'gpdvdCloudStoragePath'-googlePrivacyDlpV2Dictionary-    :: GooglePrivacyDlpV2Dictionary-googlePrivacyDlpV2Dictionary =-    GooglePrivacyDlpV2Dictionary'-    { _gpdvdWordList = Nothing-    , _gpdvdCloudStoragePath = Nothing-    }---- | List of words or phrases to search for.-gpdvdWordList :: Lens' GooglePrivacyDlpV2Dictionary (Maybe GooglePrivacyDlpV2WordList)-gpdvdWordList-  = lens _gpdvdWordList-      (\ s a -> s{_gpdvdWordList = a})---- | Newline-delimited file of words in Cloud Storage. Only a single file is--- accepted.-gpdvdCloudStoragePath :: Lens' GooglePrivacyDlpV2Dictionary (Maybe GooglePrivacyDlpV2CloudStoragePath)-gpdvdCloudStoragePath-  = lens _gpdvdCloudStoragePath-      (\ s a -> s{_gpdvdCloudStoragePath = a})--instance FromJSON GooglePrivacyDlpV2Dictionary where-        parseJSON-          = withObject "GooglePrivacyDlpV2Dictionary"-              (\ o ->-                 GooglePrivacyDlpV2Dictionary' <$>-                   (o .:? "wordList") <*> (o .:? "cloudStoragePath"))--instance ToJSON GooglePrivacyDlpV2Dictionary where-        toJSON GooglePrivacyDlpV2Dictionary'{..}-          = object-              (catMaybes-                 [("wordList" .=) <$> _gpdvdWordList,-                  ("cloudStoragePath" .=) <$> _gpdvdCloudStoragePath])---- | Result of a risk analysis operation request.------ /See:/ 'googlePrivacyDlpV2AnalyzeDataSourceRiskDetails' smart constructor.-data GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails = GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails'-    { _gpdvadsrdRequestedPrivacyMetric        :: !(Maybe GooglePrivacyDlpV2PrivacyMetric)-    , _gpdvadsrdRequestedSourceTable          :: !(Maybe GooglePrivacyDlpV2BigQueryTable)-    , _gpdvadsrdLDiversityResult              :: !(Maybe GooglePrivacyDlpV2LDiversityResult)-    , _gpdvadsrdKAnonymityResult              :: !(Maybe GooglePrivacyDlpV2KAnonymityResult)-    , _gpdvadsrdKMapEstimationResult          :: !(Maybe GooglePrivacyDlpV2KMapEstimationResult)-    , _gpdvadsrdDeltaPresenceEstimationResult :: !(Maybe GooglePrivacyDlpV2DeltaPresenceEstimationResult)-    , _gpdvadsrdNumericalStatsResult          :: !(Maybe GooglePrivacyDlpV2NumericalStatsResult)-    , _gpdvadsrdCategoricalStatsResult        :: !(Maybe GooglePrivacyDlpV2CategoricalStatsResult)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvadsrdRequestedPrivacyMetric'------ * 'gpdvadsrdRequestedSourceTable'------ * 'gpdvadsrdLDiversityResult'------ * 'gpdvadsrdKAnonymityResult'------ * 'gpdvadsrdKMapEstimationResult'------ * 'gpdvadsrdDeltaPresenceEstimationResult'------ * 'gpdvadsrdNumericalStatsResult'------ * 'gpdvadsrdCategoricalStatsResult'-googlePrivacyDlpV2AnalyzeDataSourceRiskDetails-    :: GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails-googlePrivacyDlpV2AnalyzeDataSourceRiskDetails =-    GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails'-    { _gpdvadsrdRequestedPrivacyMetric = Nothing-    , _gpdvadsrdRequestedSourceTable = Nothing-    , _gpdvadsrdLDiversityResult = Nothing-    , _gpdvadsrdKAnonymityResult = Nothing-    , _gpdvadsrdKMapEstimationResult = Nothing-    , _gpdvadsrdDeltaPresenceEstimationResult = Nothing-    , _gpdvadsrdNumericalStatsResult = Nothing-    , _gpdvadsrdCategoricalStatsResult = Nothing-    }---- | Privacy metric to compute.-gpdvadsrdRequestedPrivacyMetric :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2PrivacyMetric)-gpdvadsrdRequestedPrivacyMetric-  = lens _gpdvadsrdRequestedPrivacyMetric-      (\ s a -> s{_gpdvadsrdRequestedPrivacyMetric = a})---- | Input dataset to compute metrics over.-gpdvadsrdRequestedSourceTable :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2BigQueryTable)-gpdvadsrdRequestedSourceTable-  = lens _gpdvadsrdRequestedSourceTable-      (\ s a -> s{_gpdvadsrdRequestedSourceTable = a})--gpdvadsrdLDiversityResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2LDiversityResult)-gpdvadsrdLDiversityResult-  = lens _gpdvadsrdLDiversityResult-      (\ s a -> s{_gpdvadsrdLDiversityResult = a})--gpdvadsrdKAnonymityResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2KAnonymityResult)-gpdvadsrdKAnonymityResult-  = lens _gpdvadsrdKAnonymityResult-      (\ s a -> s{_gpdvadsrdKAnonymityResult = a})--gpdvadsrdKMapEstimationResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2KMapEstimationResult)-gpdvadsrdKMapEstimationResult-  = lens _gpdvadsrdKMapEstimationResult-      (\ s a -> s{_gpdvadsrdKMapEstimationResult = a})--gpdvadsrdDeltaPresenceEstimationResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2DeltaPresenceEstimationResult)-gpdvadsrdDeltaPresenceEstimationResult-  = lens _gpdvadsrdDeltaPresenceEstimationResult-      (\ s a ->-         s{_gpdvadsrdDeltaPresenceEstimationResult = a})--gpdvadsrdNumericalStatsResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2NumericalStatsResult)-gpdvadsrdNumericalStatsResult-  = lens _gpdvadsrdNumericalStatsResult-      (\ s a -> s{_gpdvadsrdNumericalStatsResult = a})--gpdvadsrdCategoricalStatsResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2CategoricalStatsResult)-gpdvadsrdCategoricalStatsResult-  = lens _gpdvadsrdCategoricalStatsResult-      (\ s a -> s{_gpdvadsrdCategoricalStatsResult = a})--instance FromJSON-         GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails"-              (\ o ->-                 GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails' <$>-                   (o .:? "requestedPrivacyMetric") <*>-                     (o .:? "requestedSourceTable")-                     <*> (o .:? "lDiversityResult")-                     <*> (o .:? "kAnonymityResult")-                     <*> (o .:? "kMapEstimationResult")-                     <*> (o .:? "deltaPresenceEstimationResult")-                     <*> (o .:? "numericalStatsResult")-                     <*> (o .:? "categoricalStatsResult"))--instance ToJSON-         GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails where-        toJSON-          GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails'{..}-          = object-              (catMaybes-                 [("requestedPrivacyMetric" .=) <$>-                    _gpdvadsrdRequestedPrivacyMetric,-                  ("requestedSourceTable" .=) <$>-                    _gpdvadsrdRequestedSourceTable,-                  ("lDiversityResult" .=) <$>-                    _gpdvadsrdLDiversityResult,-                  ("kAnonymityResult" .=) <$>-                    _gpdvadsrdKAnonymityResult,-                  ("kMapEstimationResult" .=) <$>-                    _gpdvadsrdKMapEstimationResult,-                  ("deltaPresenceEstimationResult" .=) <$>-                    _gpdvadsrdDeltaPresenceEstimationResult,-                  ("numericalStatsResult" .=) <$>-                    _gpdvadsrdNumericalStatsResult,-                  ("categoricalStatsResult" .=) <$>-                    _gpdvadsrdCategoricalStatsResult])---- | A collection of conditions.------ /See:/ 'googlePrivacyDlpV2Conditions' smart constructor.-newtype GooglePrivacyDlpV2Conditions = GooglePrivacyDlpV2Conditions'-    { _gpdvcConditions :: Maybe [GooglePrivacyDlpV2Condition]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Conditions' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcConditions'-googlePrivacyDlpV2Conditions-    :: GooglePrivacyDlpV2Conditions-googlePrivacyDlpV2Conditions =-    GooglePrivacyDlpV2Conditions'-    { _gpdvcConditions = Nothing-    }--gpdvcConditions :: Lens' GooglePrivacyDlpV2Conditions [GooglePrivacyDlpV2Condition]-gpdvcConditions-  = lens _gpdvcConditions-      (\ s a -> s{_gpdvcConditions = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2Conditions where-        parseJSON-          = withObject "GooglePrivacyDlpV2Conditions"-              (\ o ->-                 GooglePrivacyDlpV2Conditions' <$>-                   (o .:? "conditions" .!= mempty))--instance ToJSON GooglePrivacyDlpV2Conditions where-        toJSON GooglePrivacyDlpV2Conditions'{..}-          = object-              (catMaybes [("conditions" .=) <$> _gpdvcConditions])---- | Record key for a finding in Cloud Datastore.------ /See:/ 'googlePrivacyDlpV2DatastoreKey' smart constructor.-newtype GooglePrivacyDlpV2DatastoreKey = GooglePrivacyDlpV2DatastoreKey'-    { _gpdvdkEntityKey :: Maybe GooglePrivacyDlpV2Key-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DatastoreKey' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdkEntityKey'-googlePrivacyDlpV2DatastoreKey-    :: GooglePrivacyDlpV2DatastoreKey-googlePrivacyDlpV2DatastoreKey =-    GooglePrivacyDlpV2DatastoreKey'-    { _gpdvdkEntityKey = Nothing-    }---- | Datastore entity key.-gpdvdkEntityKey :: Lens' GooglePrivacyDlpV2DatastoreKey (Maybe GooglePrivacyDlpV2Key)-gpdvdkEntityKey-  = lens _gpdvdkEntityKey-      (\ s a -> s{_gpdvdkEntityKey = a})--instance FromJSON GooglePrivacyDlpV2DatastoreKey-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2DatastoreKey"-              (\ o ->-                 GooglePrivacyDlpV2DatastoreKey' <$>-                   (o .:? "entityKey"))--instance ToJSON GooglePrivacyDlpV2DatastoreKey where-        toJSON GooglePrivacyDlpV2DatastoreKey'{..}-          = object-              (catMaybes [("entityKey" .=) <$> _gpdvdkEntityKey])---- | A tuple of values for the quasi-identifier columns.------ /See:/ 'googlePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues' smart constructor.-data GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues = GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues'-    { _gpdvdpeqivEstimatedProbability :: !(Maybe (Textual Double))-    , _gpdvdpeqivQuasiIdsValues       :: !(Maybe [GooglePrivacyDlpV2Value])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdpeqivEstimatedProbability'------ * 'gpdvdpeqivQuasiIdsValues'-googlePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues-    :: GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues-googlePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues =-    GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues'-    { _gpdvdpeqivEstimatedProbability = Nothing-    , _gpdvdpeqivQuasiIdsValues = Nothing-    }---- | The estimated probability that a given individual sharing these--- quasi-identifier values is in the dataset. This value, typically called--- δ, is the ratio between the number of records in the dataset with these--- quasi-identifier values, and the total number of individuals (inside--- *and* outside the dataset) with these quasi-identifier values. For--- example, if there are 15 individuals in the dataset who share the same--- quasi-identifier values, and an estimated 100 people in the entire--- population with these values, then δ is 0.15.-gpdvdpeqivEstimatedProbability :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues (Maybe Double)-gpdvdpeqivEstimatedProbability-  = lens _gpdvdpeqivEstimatedProbability-      (\ s a -> s{_gpdvdpeqivEstimatedProbability = a})-      . mapping _Coerce---- | The quasi-identifier values.-gpdvdpeqivQuasiIdsValues :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues [GooglePrivacyDlpV2Value]-gpdvdpeqivQuasiIdsValues-  = lens _gpdvdpeqivQuasiIdsValues-      (\ s a -> s{_gpdvdpeqivQuasiIdsValues = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues-         where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues"-              (\ o ->-                 GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues'-                   <$>-                   (o .:? "estimatedProbability") <*>-                     (o .:? "quasiIdsValues" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues-         where-        toJSON-          GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues'{..}-          = object-              (catMaybes-                 [("estimatedProbability" .=) <$>-                    _gpdvdpeqivEstimatedProbability,-                  ("quasiIdsValues" .=) <$> _gpdvdpeqivQuasiIdsValues])---- | Characters to skip when doing deidentification of a value. These will be--- left alone and skipped.------ /See:/ 'googlePrivacyDlpV2CharsToIgnore' smart constructor.-data GooglePrivacyDlpV2CharsToIgnore = GooglePrivacyDlpV2CharsToIgnore'-    { _gpdvctiCommonCharactersToIgnore :: !(Maybe GooglePrivacyDlpV2CharsToIgnoreCommonCharactersToIgnore)-    , _gpdvctiCharactersToSkip         :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CharsToIgnore' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvctiCommonCharactersToIgnore'------ * 'gpdvctiCharactersToSkip'-googlePrivacyDlpV2CharsToIgnore-    :: GooglePrivacyDlpV2CharsToIgnore-googlePrivacyDlpV2CharsToIgnore =-    GooglePrivacyDlpV2CharsToIgnore'-    { _gpdvctiCommonCharactersToIgnore = Nothing-    , _gpdvctiCharactersToSkip = Nothing-    }--gpdvctiCommonCharactersToIgnore :: Lens' GooglePrivacyDlpV2CharsToIgnore (Maybe GooglePrivacyDlpV2CharsToIgnoreCommonCharactersToIgnore)-gpdvctiCommonCharactersToIgnore-  = lens _gpdvctiCommonCharactersToIgnore-      (\ s a -> s{_gpdvctiCommonCharactersToIgnore = a})--gpdvctiCharactersToSkip :: Lens' GooglePrivacyDlpV2CharsToIgnore (Maybe Text)-gpdvctiCharactersToSkip-  = lens _gpdvctiCharactersToSkip-      (\ s a -> s{_gpdvctiCharactersToSkip = a})--instance FromJSON GooglePrivacyDlpV2CharsToIgnore-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2CharsToIgnore"-              (\ o ->-                 GooglePrivacyDlpV2CharsToIgnore' <$>-                   (o .:? "commonCharactersToIgnore") <*>-                     (o .:? "charactersToSkip"))--instance ToJSON GooglePrivacyDlpV2CharsToIgnore where-        toJSON GooglePrivacyDlpV2CharsToIgnore'{..}-          = object-              (catMaybes-                 [("commonCharactersToIgnore" .=) <$>-                    _gpdvctiCommonCharactersToIgnore,-                  ("charactersToSkip" .=) <$>-                    _gpdvctiCharactersToSkip])---- | Message defining the location of a BigQuery table. A table is uniquely--- identified by its project_id, dataset_id, and table_name. Within a query--- a table is often referenced with a string in the format of: \`:.\` or--- \`..\`.------ /See:/ 'googlePrivacyDlpV2BigQueryTable' smart constructor.-data GooglePrivacyDlpV2BigQueryTable = GooglePrivacyDlpV2BigQueryTable'-    { _gpdvbqtDataSetId :: !(Maybe Text)-    , _gpdvbqtProjectId :: !(Maybe Text)-    , _gpdvbqtTableId   :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2BigQueryTable' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvbqtDataSetId'------ * 'gpdvbqtProjectId'------ * 'gpdvbqtTableId'-googlePrivacyDlpV2BigQueryTable-    :: GooglePrivacyDlpV2BigQueryTable-googlePrivacyDlpV2BigQueryTable =-    GooglePrivacyDlpV2BigQueryTable'-    { _gpdvbqtDataSetId = Nothing-    , _gpdvbqtProjectId = Nothing-    , _gpdvbqtTableId = Nothing-    }---- | Dataset ID of the table.-gpdvbqtDataSetId :: Lens' GooglePrivacyDlpV2BigQueryTable (Maybe Text)-gpdvbqtDataSetId-  = lens _gpdvbqtDataSetId-      (\ s a -> s{_gpdvbqtDataSetId = a})---- | The Google Cloud Platform project ID of the project containing the--- table. If omitted, project ID is inferred from the API call.-gpdvbqtProjectId :: Lens' GooglePrivacyDlpV2BigQueryTable (Maybe Text)-gpdvbqtProjectId-  = lens _gpdvbqtProjectId-      (\ s a -> s{_gpdvbqtProjectId = a})---- | Name of the table.-gpdvbqtTableId :: Lens' GooglePrivacyDlpV2BigQueryTable (Maybe Text)-gpdvbqtTableId-  = lens _gpdvbqtTableId-      (\ s a -> s{_gpdvbqtTableId = a})--instance FromJSON GooglePrivacyDlpV2BigQueryTable-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2BigQueryTable"-              (\ o ->-                 GooglePrivacyDlpV2BigQueryTable' <$>-                   (o .:? "datasetId") <*> (o .:? "projectId") <*>-                     (o .:? "tableId"))--instance ToJSON GooglePrivacyDlpV2BigQueryTable where-        toJSON GooglePrivacyDlpV2BigQueryTable'{..}-          = object-              (catMaybes-                 [("datasetId" .=) <$> _gpdvbqtDataSetId,-                  ("projectId" .=) <$> _gpdvbqtProjectId,-                  ("tableId" .=) <$> _gpdvbqtTableId])------- /See:/ 'googlePrivacyDlpV2RequestedOptions' smart constructor.-data GooglePrivacyDlpV2RequestedOptions = GooglePrivacyDlpV2RequestedOptions'-    { _gpdvroSnapshotInspectTemplate :: !(Maybe GooglePrivacyDlpV2InspectTemplate)-    , _gpdvroJobConfig               :: !(Maybe GooglePrivacyDlpV2InspectJobConfig)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2RequestedOptions' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvroSnapshotInspectTemplate'------ * 'gpdvroJobConfig'-googlePrivacyDlpV2RequestedOptions-    :: GooglePrivacyDlpV2RequestedOptions-googlePrivacyDlpV2RequestedOptions =-    GooglePrivacyDlpV2RequestedOptions'-    { _gpdvroSnapshotInspectTemplate = Nothing-    , _gpdvroJobConfig = Nothing-    }---- | If run with an InspectTemplate, a snapshot of its state at the time of--- this run.-gpdvroSnapshotInspectTemplate :: Lens' GooglePrivacyDlpV2RequestedOptions (Maybe GooglePrivacyDlpV2InspectTemplate)-gpdvroSnapshotInspectTemplate-  = lens _gpdvroSnapshotInspectTemplate-      (\ s a -> s{_gpdvroSnapshotInspectTemplate = a})--gpdvroJobConfig :: Lens' GooglePrivacyDlpV2RequestedOptions (Maybe GooglePrivacyDlpV2InspectJobConfig)-gpdvroJobConfig-  = lens _gpdvroJobConfig-      (\ s a -> s{_gpdvroJobConfig = a})--instance FromJSON GooglePrivacyDlpV2RequestedOptions-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2RequestedOptions"-              (\ o ->-                 GooglePrivacyDlpV2RequestedOptions' <$>-                   (o .:? "snapshotInspectTemplate") <*>-                     (o .:? "jobConfig"))--instance ToJSON GooglePrivacyDlpV2RequestedOptions-         where-        toJSON GooglePrivacyDlpV2RequestedOptions'{..}-          = object-              (catMaybes-                 [("snapshotInspectTemplate" .=) <$>-                    _gpdvroSnapshotInspectTemplate,-                  ("jobConfig" .=) <$> _gpdvroJobConfig])---- | A rule for transforming a value.------ /See:/ 'googlePrivacyDlpV2PrimitiveTransformation' smart constructor.-data GooglePrivacyDlpV2PrimitiveTransformation = GooglePrivacyDlpV2PrimitiveTransformation'-    { _gpdvptFixedSizeBucketingConfig  :: !(Maybe GooglePrivacyDlpV2FixedSizeBucketingConfig)-    , _gpdvptRedactConfig              :: !(Maybe GooglePrivacyDlpV2RedactConfig)-    , _gpdvptCharacterMaskConfig       :: !(Maybe GooglePrivacyDlpV2CharacterMaskConfig)-    , _gpdvptTimePartConfig            :: !(Maybe GooglePrivacyDlpV2TimePartConfig)-    , _gpdvptDateShiftConfig           :: !(Maybe GooglePrivacyDlpV2DateShiftConfig)-    , _gpdvptBucketingConfig           :: !(Maybe GooglePrivacyDlpV2BucketingConfig)-    , _gpdvptReplaceWithInfoTypeConfig :: !(Maybe GooglePrivacyDlpV2ReplaceWithInfoTypeConfig)-    , _gpdvptCryptoHashConfig          :: !(Maybe GooglePrivacyDlpV2CryptoHashConfig)-    , _gpdvptReplaceConfig             :: !(Maybe GooglePrivacyDlpV2ReplaceValueConfig)-    , _gpdvptCryptoReplaceFfxFpeConfig :: !(Maybe GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2PrimitiveTransformation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvptFixedSizeBucketingConfig'------ * 'gpdvptRedactConfig'------ * 'gpdvptCharacterMaskConfig'------ * 'gpdvptTimePartConfig'------ * 'gpdvptDateShiftConfig'------ * 'gpdvptBucketingConfig'------ * 'gpdvptReplaceWithInfoTypeConfig'------ * 'gpdvptCryptoHashConfig'------ * 'gpdvptReplaceConfig'------ * 'gpdvptCryptoReplaceFfxFpeConfig'-googlePrivacyDlpV2PrimitiveTransformation-    :: GooglePrivacyDlpV2PrimitiveTransformation-googlePrivacyDlpV2PrimitiveTransformation =-    GooglePrivacyDlpV2PrimitiveTransformation'-    { _gpdvptFixedSizeBucketingConfig = Nothing-    , _gpdvptRedactConfig = Nothing-    , _gpdvptCharacterMaskConfig = Nothing-    , _gpdvptTimePartConfig = Nothing-    , _gpdvptDateShiftConfig = Nothing-    , _gpdvptBucketingConfig = Nothing-    , _gpdvptReplaceWithInfoTypeConfig = Nothing-    , _gpdvptCryptoHashConfig = Nothing-    , _gpdvptReplaceConfig = Nothing-    , _gpdvptCryptoReplaceFfxFpeConfig = Nothing-    }--gpdvptFixedSizeBucketingConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2FixedSizeBucketingConfig)-gpdvptFixedSizeBucketingConfig-  = lens _gpdvptFixedSizeBucketingConfig-      (\ s a -> s{_gpdvptFixedSizeBucketingConfig = a})--gpdvptRedactConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2RedactConfig)-gpdvptRedactConfig-  = lens _gpdvptRedactConfig-      (\ s a -> s{_gpdvptRedactConfig = a})--gpdvptCharacterMaskConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2CharacterMaskConfig)-gpdvptCharacterMaskConfig-  = lens _gpdvptCharacterMaskConfig-      (\ s a -> s{_gpdvptCharacterMaskConfig = a})--gpdvptTimePartConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2TimePartConfig)-gpdvptTimePartConfig-  = lens _gpdvptTimePartConfig-      (\ s a -> s{_gpdvptTimePartConfig = a})--gpdvptDateShiftConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2DateShiftConfig)-gpdvptDateShiftConfig-  = lens _gpdvptDateShiftConfig-      (\ s a -> s{_gpdvptDateShiftConfig = a})--gpdvptBucketingConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2BucketingConfig)-gpdvptBucketingConfig-  = lens _gpdvptBucketingConfig-      (\ s a -> s{_gpdvptBucketingConfig = a})--gpdvptReplaceWithInfoTypeConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2ReplaceWithInfoTypeConfig)-gpdvptReplaceWithInfoTypeConfig-  = lens _gpdvptReplaceWithInfoTypeConfig-      (\ s a -> s{_gpdvptReplaceWithInfoTypeConfig = a})--gpdvptCryptoHashConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2CryptoHashConfig)-gpdvptCryptoHashConfig-  = lens _gpdvptCryptoHashConfig-      (\ s a -> s{_gpdvptCryptoHashConfig = a})--gpdvptReplaceConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2ReplaceValueConfig)-gpdvptReplaceConfig-  = lens _gpdvptReplaceConfig-      (\ s a -> s{_gpdvptReplaceConfig = a})--gpdvptCryptoReplaceFfxFpeConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig)-gpdvptCryptoReplaceFfxFpeConfig-  = lens _gpdvptCryptoReplaceFfxFpeConfig-      (\ s a -> s{_gpdvptCryptoReplaceFfxFpeConfig = a})--instance FromJSON-         GooglePrivacyDlpV2PrimitiveTransformation where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2PrimitiveTransformation"-              (\ o ->-                 GooglePrivacyDlpV2PrimitiveTransformation' <$>-                   (o .:? "fixedSizeBucketingConfig") <*>-                     (o .:? "redactConfig")-                     <*> (o .:? "characterMaskConfig")-                     <*> (o .:? "timePartConfig")-                     <*> (o .:? "dateShiftConfig")-                     <*> (o .:? "bucketingConfig")-                     <*> (o .:? "replaceWithInfoTypeConfig")-                     <*> (o .:? "cryptoHashConfig")-                     <*> (o .:? "replaceConfig")-                     <*> (o .:? "cryptoReplaceFfxFpeConfig"))--instance ToJSON-         GooglePrivacyDlpV2PrimitiveTransformation where-        toJSON GooglePrivacyDlpV2PrimitiveTransformation'{..}-          = object-              (catMaybes-                 [("fixedSizeBucketingConfig" .=) <$>-                    _gpdvptFixedSizeBucketingConfig,-                  ("redactConfig" .=) <$> _gpdvptRedactConfig,-                  ("characterMaskConfig" .=) <$>-                    _gpdvptCharacterMaskConfig,-                  ("timePartConfig" .=) <$> _gpdvptTimePartConfig,-                  ("dateShiftConfig" .=) <$> _gpdvptDateShiftConfig,-                  ("bucketingConfig" .=) <$> _gpdvptBucketingConfig,-                  ("replaceWithInfoTypeConfig" .=) <$>-                    _gpdvptReplaceWithInfoTypeConfig,-                  ("cryptoHashConfig" .=) <$> _gpdvptCryptoHashConfig,-                  ("replaceConfig" .=) <$> _gpdvptReplaceConfig,-                  ("cryptoReplaceFfxFpeConfig" .=) <$>-                    _gpdvptCryptoReplaceFfxFpeConfig])---- | The request message for canceling a DLP job.------ /See:/ 'googlePrivacyDlpV2CancelDlpJobRequest' smart constructor.-data GooglePrivacyDlpV2CancelDlpJobRequest =-    GooglePrivacyDlpV2CancelDlpJobRequest'-    deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CancelDlpJobRequest' with the minimum fields required to make a request.----googlePrivacyDlpV2CancelDlpJobRequest-    :: GooglePrivacyDlpV2CancelDlpJobRequest-googlePrivacyDlpV2CancelDlpJobRequest = GooglePrivacyDlpV2CancelDlpJobRequest'--instance FromJSON-         GooglePrivacyDlpV2CancelDlpJobRequest where-        parseJSON-          = withObject "GooglePrivacyDlpV2CancelDlpJobRequest"-              (\ o -> pure GooglePrivacyDlpV2CancelDlpJobRequest')--instance ToJSON GooglePrivacyDlpV2CancelDlpJobRequest-         where-        toJSON = const emptyObject---- | Location of a finding within a row or record.------ /See:/ 'googlePrivacyDlpV2RecordLocation' smart constructor.-data GooglePrivacyDlpV2RecordLocation = GooglePrivacyDlpV2RecordLocation'-    { _gpdvrlTableLocation :: !(Maybe GooglePrivacyDlpV2TableLocation)-    , _gpdvrlFieldId       :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvrlRecordKey     :: !(Maybe GooglePrivacyDlpV2RecordKey)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2RecordLocation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrlTableLocation'------ * 'gpdvrlFieldId'------ * 'gpdvrlRecordKey'-googlePrivacyDlpV2RecordLocation-    :: GooglePrivacyDlpV2RecordLocation-googlePrivacyDlpV2RecordLocation =-    GooglePrivacyDlpV2RecordLocation'-    { _gpdvrlTableLocation = Nothing-    , _gpdvrlFieldId = Nothing-    , _gpdvrlRecordKey = Nothing-    }---- | Location within a \`ContentItem.Table\`.-gpdvrlTableLocation :: Lens' GooglePrivacyDlpV2RecordLocation (Maybe GooglePrivacyDlpV2TableLocation)-gpdvrlTableLocation-  = lens _gpdvrlTableLocation-      (\ s a -> s{_gpdvrlTableLocation = a})---- | Field id of the field containing the finding.-gpdvrlFieldId :: Lens' GooglePrivacyDlpV2RecordLocation (Maybe GooglePrivacyDlpV2FieldId)-gpdvrlFieldId-  = lens _gpdvrlFieldId-      (\ s a -> s{_gpdvrlFieldId = a})---- | Key of the finding.-gpdvrlRecordKey :: Lens' GooglePrivacyDlpV2RecordLocation (Maybe GooglePrivacyDlpV2RecordKey)-gpdvrlRecordKey-  = lens _gpdvrlRecordKey-      (\ s a -> s{_gpdvrlRecordKey = a})--instance FromJSON GooglePrivacyDlpV2RecordLocation-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2RecordLocation"-              (\ o ->-                 GooglePrivacyDlpV2RecordLocation' <$>-                   (o .:? "tableLocation") <*> (o .:? "fieldId") <*>-                     (o .:? "recordKey"))--instance ToJSON GooglePrivacyDlpV2RecordLocation-         where-        toJSON GooglePrivacyDlpV2RecordLocation'{..}-          = object-              (catMaybes-                 [("tableLocation" .=) <$> _gpdvrlTableLocation,-                  ("fieldId" .=) <$> _gpdvrlFieldId,-                  ("recordKey" .=) <$> _gpdvrlRecordKey])---- | Details information about an error encountered during job execution or--- the results of an unsuccessful activation of the JobTrigger. Output only--- field.------ /See:/ 'googlePrivacyDlpV2Error' smart constructor.-data GooglePrivacyDlpV2Error = GooglePrivacyDlpV2Error'-    { _gpdveDetails    :: !(Maybe GoogleRpcStatus)-    , _gpdveTimestamps :: !(Maybe [DateTime'])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Error' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdveDetails'------ * 'gpdveTimestamps'-googlePrivacyDlpV2Error-    :: GooglePrivacyDlpV2Error-googlePrivacyDlpV2Error =-    GooglePrivacyDlpV2Error'-    { _gpdveDetails = Nothing-    , _gpdveTimestamps = Nothing-    }--gpdveDetails :: Lens' GooglePrivacyDlpV2Error (Maybe GoogleRpcStatus)-gpdveDetails-  = lens _gpdveDetails (\ s a -> s{_gpdveDetails = a})---- | The times the error occurred.-gpdveTimestamps :: Lens' GooglePrivacyDlpV2Error [UTCTime]-gpdveTimestamps-  = lens _gpdveTimestamps-      (\ s a -> s{_gpdveTimestamps = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2Error where-        parseJSON-          = withObject "GooglePrivacyDlpV2Error"-              (\ o ->-                 GooglePrivacyDlpV2Error' <$>-                   (o .:? "details") <*>-                     (o .:? "timestamps" .!= mempty))--instance ToJSON GooglePrivacyDlpV2Error where-        toJSON GooglePrivacyDlpV2Error'{..}-          = object-              (catMaybes-                 [("details" .=) <$> _gpdveDetails,-                  ("timestamps" .=) <$> _gpdveTimestamps])---- | StoredInfoType resource message that contains information about the--- current version and any pending updates.------ /See:/ 'googlePrivacyDlpV2StoredInfoType' smart constructor.-data GooglePrivacyDlpV2StoredInfoType = GooglePrivacyDlpV2StoredInfoType'-    { _gpdvsitCurrentVersion  :: !(Maybe GooglePrivacyDlpV2StoredInfoTypeVersion)-    , _gpdvsitName            :: !(Maybe Text)-    , _gpdvsitPendingVersions :: !(Maybe [GooglePrivacyDlpV2StoredInfoTypeVersion])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2StoredInfoType' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvsitCurrentVersion'------ * 'gpdvsitName'------ * 'gpdvsitPendingVersions'-googlePrivacyDlpV2StoredInfoType-    :: GooglePrivacyDlpV2StoredInfoType-googlePrivacyDlpV2StoredInfoType =-    GooglePrivacyDlpV2StoredInfoType'-    { _gpdvsitCurrentVersion = Nothing-    , _gpdvsitName = Nothing-    , _gpdvsitPendingVersions = Nothing-    }---- | Current version of the stored info type.-gpdvsitCurrentVersion :: Lens' GooglePrivacyDlpV2StoredInfoType (Maybe GooglePrivacyDlpV2StoredInfoTypeVersion)-gpdvsitCurrentVersion-  = lens _gpdvsitCurrentVersion-      (\ s a -> s{_gpdvsitCurrentVersion = a})---- | Resource name.-gpdvsitName :: Lens' GooglePrivacyDlpV2StoredInfoType (Maybe Text)-gpdvsitName-  = lens _gpdvsitName (\ s a -> s{_gpdvsitName = a})---- | Pending versions of the stored info type. Empty if no versions are--- pending.-gpdvsitPendingVersions :: Lens' GooglePrivacyDlpV2StoredInfoType [GooglePrivacyDlpV2StoredInfoTypeVersion]-gpdvsitPendingVersions-  = lens _gpdvsitPendingVersions-      (\ s a -> s{_gpdvsitPendingVersions = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2StoredInfoType-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2StoredInfoType"-              (\ o ->-                 GooglePrivacyDlpV2StoredInfoType' <$>-                   (o .:? "currentVersion") <*> (o .:? "name") <*>-                     (o .:? "pendingVersions" .!= mempty))--instance ToJSON GooglePrivacyDlpV2StoredInfoType-         where-        toJSON GooglePrivacyDlpV2StoredInfoType'{..}-          = object-              (catMaybes-                 [("currentVersion" .=) <$> _gpdvsitCurrentVersion,-                  ("name" .=) <$> _gpdvsitName,-                  ("pendingVersions" .=) <$> _gpdvsitPendingVersions])---- | An auxiliary table containing statistical information on the relative--- frequency of different quasi-identifiers values. It has one or several--- quasi-identifiers columns, and one column that indicates the relative--- frequency of each quasi-identifier tuple. If a tuple is present in the--- data but not in the auxiliary table, the corresponding relative--- frequency is assumed to be zero (and thus, the tuple is highly--- reidentifiable).------ /See:/ 'googlePrivacyDlpV2StatisticalTable' smart constructor.-data GooglePrivacyDlpV2StatisticalTable = GooglePrivacyDlpV2StatisticalTable'-    { _gpdvstRelativeFrequency :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvstTable             :: !(Maybe GooglePrivacyDlpV2BigQueryTable)-    , _gpdvstQuasiIds          :: !(Maybe [GooglePrivacyDlpV2QuasiIdentifierField])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2StatisticalTable' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvstRelativeFrequency'------ * 'gpdvstTable'------ * 'gpdvstQuasiIds'-googlePrivacyDlpV2StatisticalTable-    :: GooglePrivacyDlpV2StatisticalTable-googlePrivacyDlpV2StatisticalTable =-    GooglePrivacyDlpV2StatisticalTable'-    { _gpdvstRelativeFrequency = Nothing-    , _gpdvstTable = Nothing-    , _gpdvstQuasiIds = Nothing-    }---- | The relative frequency column must contain a floating-point number--- between 0 and 1 (inclusive). Null values are assumed to be zero.--- [required]-gpdvstRelativeFrequency :: Lens' GooglePrivacyDlpV2StatisticalTable (Maybe GooglePrivacyDlpV2FieldId)-gpdvstRelativeFrequency-  = lens _gpdvstRelativeFrequency-      (\ s a -> s{_gpdvstRelativeFrequency = a})---- | Auxiliary table location. [required]-gpdvstTable :: Lens' GooglePrivacyDlpV2StatisticalTable (Maybe GooglePrivacyDlpV2BigQueryTable)-gpdvstTable-  = lens _gpdvstTable (\ s a -> s{_gpdvstTable = a})---- | Quasi-identifier columns. [required]-gpdvstQuasiIds :: Lens' GooglePrivacyDlpV2StatisticalTable [GooglePrivacyDlpV2QuasiIdentifierField]-gpdvstQuasiIds-  = lens _gpdvstQuasiIds-      (\ s a -> s{_gpdvstQuasiIds = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2StatisticalTable-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2StatisticalTable"-              (\ o ->-                 GooglePrivacyDlpV2StatisticalTable' <$>-                   (o .:? "relativeFrequency") <*> (o .:? "table") <*>-                     (o .:? "quasiIds" .!= mempty))--instance ToJSON GooglePrivacyDlpV2StatisticalTable-         where-        toJSON GooglePrivacyDlpV2StatisticalTable'{..}-          = object-              (catMaybes-                 [("relativeFrequency" .=) <$>-                    _gpdvstRelativeFrequency,-                  ("table" .=) <$> _gpdvstTable,-                  ("quasiIds" .=) <$> _gpdvstQuasiIds])---- | The DeidentifyTemplates contains instructions on how to deidentify--- content. See https:\/\/cloud.google.com\/dlp\/docs\/concepts-templates--- to learn more.------ /See:/ 'googlePrivacyDlpV2DeidentifyTemplate' smart constructor.-data GooglePrivacyDlpV2DeidentifyTemplate = GooglePrivacyDlpV2DeidentifyTemplate'-    { _gpdvdtUpdateTime       :: !(Maybe DateTime')-    , _gpdvdtName             :: !(Maybe Text)-    , _gpdvdtDeidentifyConfig :: !(Maybe GooglePrivacyDlpV2DeidentifyConfig)-    , _gpdvdtDisplayName      :: !(Maybe Text)-    , _gpdvdtDescription      :: !(Maybe Text)-    , _gpdvdtCreateTime       :: !(Maybe DateTime')-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DeidentifyTemplate' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdtUpdateTime'------ * 'gpdvdtName'------ * 'gpdvdtDeidentifyConfig'------ * 'gpdvdtDisplayName'------ * 'gpdvdtDescription'------ * 'gpdvdtCreateTime'-googlePrivacyDlpV2DeidentifyTemplate-    :: GooglePrivacyDlpV2DeidentifyTemplate-googlePrivacyDlpV2DeidentifyTemplate =-    GooglePrivacyDlpV2DeidentifyTemplate'-    { _gpdvdtUpdateTime = Nothing-    , _gpdvdtName = Nothing-    , _gpdvdtDeidentifyConfig = Nothing-    , _gpdvdtDisplayName = Nothing-    , _gpdvdtDescription = Nothing-    , _gpdvdtCreateTime = Nothing-    }---- | The last update timestamp of a inspectTemplate, output only field.-gpdvdtUpdateTime :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe UTCTime)-gpdvdtUpdateTime-  = lens _gpdvdtUpdateTime-      (\ s a -> s{_gpdvdtUpdateTime = a})-      . mapping _DateTime---- | The template name. Output only. The template will have one of the--- following formats:--- \`projects\/PROJECT_ID\/deidentifyTemplates\/TEMPLATE_ID\` OR--- \`organizations\/ORGANIZATION_ID\/deidentifyTemplates\/TEMPLATE_ID\`-gpdvdtName :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe Text)-gpdvdtName-  = lens _gpdvdtName (\ s a -> s{_gpdvdtName = a})---- | \/\/\/\/\/\/\/\/\/\/\/\/\/ \/\/ The core content of the template \/\/--- \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/-gpdvdtDeidentifyConfig :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe GooglePrivacyDlpV2DeidentifyConfig)-gpdvdtDeidentifyConfig-  = lens _gpdvdtDeidentifyConfig-      (\ s a -> s{_gpdvdtDeidentifyConfig = a})---- | Display name (max 256 chars).-gpdvdtDisplayName :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe Text)-gpdvdtDisplayName-  = lens _gpdvdtDisplayName-      (\ s a -> s{_gpdvdtDisplayName = a})---- | Short description (max 256 chars).-gpdvdtDescription :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe Text)-gpdvdtDescription-  = lens _gpdvdtDescription-      (\ s a -> s{_gpdvdtDescription = a})---- | The creation timestamp of a inspectTemplate, output only field.-gpdvdtCreateTime :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe UTCTime)-gpdvdtCreateTime-  = lens _gpdvdtCreateTime-      (\ s a -> s{_gpdvdtCreateTime = a})-      . mapping _DateTime--instance FromJSON-         GooglePrivacyDlpV2DeidentifyTemplate where-        parseJSON-          = withObject "GooglePrivacyDlpV2DeidentifyTemplate"-              (\ o ->-                 GooglePrivacyDlpV2DeidentifyTemplate' <$>-                   (o .:? "updateTime") <*> (o .:? "name") <*>-                     (o .:? "deidentifyConfig")-                     <*> (o .:? "displayName")-                     <*> (o .:? "description")-                     <*> (o .:? "createTime"))--instance ToJSON GooglePrivacyDlpV2DeidentifyTemplate-         where-        toJSON GooglePrivacyDlpV2DeidentifyTemplate'{..}-          = object-              (catMaybes-                 [("updateTime" .=) <$> _gpdvdtUpdateTime,-                  ("name" .=) <$> _gpdvdtName,-                  ("deidentifyConfig" .=) <$> _gpdvdtDeidentifyConfig,-                  ("displayName" .=) <$> _gpdvdtDisplayName,-                  ("description" .=) <$> _gpdvdtDescription,-                  ("createTime" .=) <$> _gpdvdtCreateTime])---- | Replace each input value with a given \`Value\`.------ /See:/ 'googlePrivacyDlpV2ReplaceValueConfig' smart constructor.-newtype GooglePrivacyDlpV2ReplaceValueConfig = GooglePrivacyDlpV2ReplaceValueConfig'-    { _gpdvrvcNewValue :: Maybe GooglePrivacyDlpV2Value-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ReplaceValueConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvrvcNewValue'-googlePrivacyDlpV2ReplaceValueConfig-    :: GooglePrivacyDlpV2ReplaceValueConfig-googlePrivacyDlpV2ReplaceValueConfig =-    GooglePrivacyDlpV2ReplaceValueConfig'-    { _gpdvrvcNewValue = Nothing-    }---- | Value to replace it with.-gpdvrvcNewValue :: Lens' GooglePrivacyDlpV2ReplaceValueConfig (Maybe GooglePrivacyDlpV2Value)-gpdvrvcNewValue-  = lens _gpdvrvcNewValue-      (\ s a -> s{_gpdvrvcNewValue = a})--instance FromJSON-         GooglePrivacyDlpV2ReplaceValueConfig where-        parseJSON-          = withObject "GooglePrivacyDlpV2ReplaceValueConfig"-              (\ o ->-                 GooglePrivacyDlpV2ReplaceValueConfig' <$>-                   (o .:? "newValue"))--instance ToJSON GooglePrivacyDlpV2ReplaceValueConfig-         where-        toJSON GooglePrivacyDlpV2ReplaceValueConfig'{..}-          = object-              (catMaybes [("newValue" .=) <$> _gpdvrvcNewValue])---- | Compute numerical stats over an individual column, including number of--- distinct values and value count distribution.------ /See:/ 'googlePrivacyDlpV2CategoricalStatsConfig' smart constructor.-newtype GooglePrivacyDlpV2CategoricalStatsConfig = GooglePrivacyDlpV2CategoricalStatsConfig'-    { _gpdvcscField :: Maybe GooglePrivacyDlpV2FieldId-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CategoricalStatsConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcscField'-googlePrivacyDlpV2CategoricalStatsConfig-    :: GooglePrivacyDlpV2CategoricalStatsConfig-googlePrivacyDlpV2CategoricalStatsConfig =-    GooglePrivacyDlpV2CategoricalStatsConfig'-    { _gpdvcscField = Nothing-    }---- | Field to compute categorical stats on. All column types are supported--- except for arrays and structs. However, it may be more informative to--- use NumericalStats when the field type is supported, depending on the--- data.-gpdvcscField :: Lens' GooglePrivacyDlpV2CategoricalStatsConfig (Maybe GooglePrivacyDlpV2FieldId)-gpdvcscField-  = lens _gpdvcscField (\ s a -> s{_gpdvcscField = a})--instance FromJSON-         GooglePrivacyDlpV2CategoricalStatsConfig where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2CategoricalStatsConfig"-              (\ o ->-                 GooglePrivacyDlpV2CategoricalStatsConfig' <$>-                   (o .:? "field"))--instance ToJSON-         GooglePrivacyDlpV2CategoricalStatsConfig where-        toJSON GooglePrivacyDlpV2CategoricalStatsConfig'{..}-          = object (catMaybes [("field" .=) <$> _gpdvcscField])---- | Compute numerical stats over an individual column, including min, max,--- and quantiles.------ /See:/ 'googlePrivacyDlpV2NumericalStatsConfig' smart constructor.-newtype GooglePrivacyDlpV2NumericalStatsConfig = GooglePrivacyDlpV2NumericalStatsConfig'-    { _gpdvnscField :: Maybe GooglePrivacyDlpV2FieldId-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2NumericalStatsConfig' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvnscField'-googlePrivacyDlpV2NumericalStatsConfig-    :: GooglePrivacyDlpV2NumericalStatsConfig-googlePrivacyDlpV2NumericalStatsConfig =-    GooglePrivacyDlpV2NumericalStatsConfig'-    { _gpdvnscField = Nothing-    }---- | Field to compute numerical stats on. Supported types are integer, float,--- date, datetime, timestamp, time.-gpdvnscField :: Lens' GooglePrivacyDlpV2NumericalStatsConfig (Maybe GooglePrivacyDlpV2FieldId)-gpdvnscField-  = lens _gpdvnscField (\ s a -> s{_gpdvnscField = a})--instance FromJSON-         GooglePrivacyDlpV2NumericalStatsConfig where-        parseJSON-          = withObject "GooglePrivacyDlpV2NumericalStatsConfig"-              (\ o ->-                 GooglePrivacyDlpV2NumericalStatsConfig' <$>-                   (o .:? "field"))--instance ToJSON-         GooglePrivacyDlpV2NumericalStatsConfig where-        toJSON GooglePrivacyDlpV2NumericalStatsConfig'{..}-          = object (catMaybes [("field" .=) <$> _gpdvnscField])---- | Response message for ListJobTriggers.------ /See:/ 'googlePrivacyDlpV2ListJobTriggersResponse' smart constructor.-data GooglePrivacyDlpV2ListJobTriggersResponse = GooglePrivacyDlpV2ListJobTriggersResponse'-    { _gpdvljtrNextPageToken :: !(Maybe Text)-    , _gpdvljtrJobTriggers   :: !(Maybe [GooglePrivacyDlpV2JobTrigger])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ListJobTriggersResponse' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvljtrNextPageToken'------ * 'gpdvljtrJobTriggers'-googlePrivacyDlpV2ListJobTriggersResponse-    :: GooglePrivacyDlpV2ListJobTriggersResponse-googlePrivacyDlpV2ListJobTriggersResponse =-    GooglePrivacyDlpV2ListJobTriggersResponse'-    { _gpdvljtrNextPageToken = Nothing-    , _gpdvljtrJobTriggers = Nothing-    }---- | If the next page is available then the next page token to be used in--- following ListJobTriggers request.-gpdvljtrNextPageToken :: Lens' GooglePrivacyDlpV2ListJobTriggersResponse (Maybe Text)-gpdvljtrNextPageToken-  = lens _gpdvljtrNextPageToken-      (\ s a -> s{_gpdvljtrNextPageToken = a})---- | List of triggeredJobs, up to page_size in ListJobTriggersRequest.-gpdvljtrJobTriggers :: Lens' GooglePrivacyDlpV2ListJobTriggersResponse [GooglePrivacyDlpV2JobTrigger]-gpdvljtrJobTriggers-  = lens _gpdvljtrJobTriggers-      (\ s a -> s{_gpdvljtrJobTriggers = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2ListJobTriggersResponse where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2ListJobTriggersResponse"-              (\ o ->-                 GooglePrivacyDlpV2ListJobTriggersResponse' <$>-                   (o .:? "nextPageToken") <*>-                     (o .:? "jobTriggers" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2ListJobTriggersResponse where-        toJSON GooglePrivacyDlpV2ListJobTriggersResponse'{..}-          = object-              (catMaybes-                 [("nextPageToken" .=) <$> _gpdvljtrNextPageToken,-                  ("jobTriggers" .=) <$> _gpdvljtrJobTriggers])---- | Message representing a single file or path in Cloud Storage.------ /See:/ 'googlePrivacyDlpV2CloudStoragePath' smart constructor.-newtype GooglePrivacyDlpV2CloudStoragePath = GooglePrivacyDlpV2CloudStoragePath'-    { _gpdvcspPath :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CloudStoragePath' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcspPath'-googlePrivacyDlpV2CloudStoragePath-    :: GooglePrivacyDlpV2CloudStoragePath-googlePrivacyDlpV2CloudStoragePath =-    GooglePrivacyDlpV2CloudStoragePath'-    { _gpdvcspPath = Nothing-    }---- | A url representing a file or path (no wildcards) in Cloud Storage.--- Example: gs:\/\/[BUCKET_NAME]\/dictionary.txt-gpdvcspPath :: Lens' GooglePrivacyDlpV2CloudStoragePath (Maybe Text)-gpdvcspPath-  = lens _gpdvcspPath (\ s a -> s{_gpdvcspPath = a})--instance FromJSON GooglePrivacyDlpV2CloudStoragePath-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2CloudStoragePath"-              (\ o ->-                 GooglePrivacyDlpV2CloudStoragePath' <$>-                   (o .:? "path"))--instance ToJSON GooglePrivacyDlpV2CloudStoragePath-         where-        toJSON GooglePrivacyDlpV2CloudStoragePath'{..}-          = object (catMaybes [("path" .=) <$> _gpdvcspPath])---- | Specifies the location of the finding.------ /See:/ 'googlePrivacyDlpV2Location' smart constructor.-data GooglePrivacyDlpV2Location = GooglePrivacyDlpV2Location'-    { _gpdvlCodepointRange   :: !(Maybe GooglePrivacyDlpV2Range)-    , _gpdvlContentLocations :: !(Maybe [GooglePrivacyDlpV2ContentLocation])-    , _gpdvlByteRange        :: !(Maybe GooglePrivacyDlpV2Range)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Location' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvlCodepointRange'------ * 'gpdvlContentLocations'------ * 'gpdvlByteRange'-googlePrivacyDlpV2Location-    :: GooglePrivacyDlpV2Location-googlePrivacyDlpV2Location =-    GooglePrivacyDlpV2Location'-    { _gpdvlCodepointRange = Nothing-    , _gpdvlContentLocations = Nothing-    , _gpdvlByteRange = Nothing-    }---- | Unicode character offsets delimiting the finding. These are relative to--- the finding\'s containing element. Provided when the content is text.-gpdvlCodepointRange :: Lens' GooglePrivacyDlpV2Location (Maybe GooglePrivacyDlpV2Range)-gpdvlCodepointRange-  = lens _gpdvlCodepointRange-      (\ s a -> s{_gpdvlCodepointRange = a})---- | List of nested objects pointing to the precise location of the finding--- within the file or record.-gpdvlContentLocations :: Lens' GooglePrivacyDlpV2Location [GooglePrivacyDlpV2ContentLocation]-gpdvlContentLocations-  = lens _gpdvlContentLocations-      (\ s a -> s{_gpdvlContentLocations = a})-      . _Default-      . _Coerce---- | Zero-based byte offsets delimiting the finding. These are relative to--- the finding\'s containing element. Note that when the content is not--- textual, this references the UTF-8 encoded textual representation of the--- content. Omitted if content is an image.-gpdvlByteRange :: Lens' GooglePrivacyDlpV2Location (Maybe GooglePrivacyDlpV2Range)-gpdvlByteRange-  = lens _gpdvlByteRange-      (\ s a -> s{_gpdvlByteRange = a})--instance FromJSON GooglePrivacyDlpV2Location where-        parseJSON-          = withObject "GooglePrivacyDlpV2Location"-              (\ o ->-                 GooglePrivacyDlpV2Location' <$>-                   (o .:? "codepointRange") <*>-                     (o .:? "contentLocations" .!= mempty)-                     <*> (o .:? "byteRange"))--instance ToJSON GooglePrivacyDlpV2Location where-        toJSON GooglePrivacyDlpV2Location'{..}-          = object-              (catMaybes-                 [("codepointRange" .=) <$> _gpdvlCodepointRange,-                  ("contentLocations" .=) <$> _gpdvlContentLocations,-                  ("byteRange" .=) <$> _gpdvlByteRange])---- | Schedule for triggeredJobs.------ /See:/ 'googlePrivacyDlpV2Schedule' smart constructor.-newtype GooglePrivacyDlpV2Schedule = GooglePrivacyDlpV2Schedule'-    { _gpdvsRecurrencePeriodDuration :: Maybe GDuration-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2Schedule' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvsRecurrencePeriodDuration'-googlePrivacyDlpV2Schedule-    :: GooglePrivacyDlpV2Schedule-googlePrivacyDlpV2Schedule =-    GooglePrivacyDlpV2Schedule'-    { _gpdvsRecurrencePeriodDuration = Nothing-    }---- | With this option a job is started a regular periodic basis. For example:--- every day (86400 seconds). A scheduled start time will be skipped if the--- previous execution has not ended when its scheduled time occurs. This--- value must be set to a time duration greater than or equal to 1 day and--- can be no longer than 60 days.-gpdvsRecurrencePeriodDuration :: Lens' GooglePrivacyDlpV2Schedule (Maybe Scientific)-gpdvsRecurrencePeriodDuration-  = lens _gpdvsRecurrencePeriodDuration-      (\ s a -> s{_gpdvsRecurrencePeriodDuration = a})-      . mapping _GDuration--instance FromJSON GooglePrivacyDlpV2Schedule where-        parseJSON-          = withObject "GooglePrivacyDlpV2Schedule"-              (\ o ->-                 GooglePrivacyDlpV2Schedule' <$>-                   (o .:? "recurrencePeriodDuration"))--instance ToJSON GooglePrivacyDlpV2Schedule where-        toJSON GooglePrivacyDlpV2Schedule'{..}-          = object-              (catMaybes-                 [("recurrencePeriodDuration" .=) <$>-                    _gpdvsRecurrencePeriodDuration])---- | Request message for CreateJobTrigger.------ /See:/ 'googlePrivacyDlpV2CreateJobTriggerRequest' smart constructor.-data GooglePrivacyDlpV2CreateJobTriggerRequest = GooglePrivacyDlpV2CreateJobTriggerRequest'-    { _gpdvcjtrTriggerId  :: !(Maybe Text)-    , _gpdvcjtrJobTrigger :: !(Maybe GooglePrivacyDlpV2JobTrigger)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2CreateJobTriggerRequest' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvcjtrTriggerId'------ * 'gpdvcjtrJobTrigger'-googlePrivacyDlpV2CreateJobTriggerRequest-    :: GooglePrivacyDlpV2CreateJobTriggerRequest-googlePrivacyDlpV2CreateJobTriggerRequest =-    GooglePrivacyDlpV2CreateJobTriggerRequest'-    { _gpdvcjtrTriggerId = Nothing-    , _gpdvcjtrJobTrigger = Nothing-    }---- | The trigger id can contain uppercase and lowercase letters, numbers, and--- hyphens; that is, it must match the regular expression:--- \`[a-zA-Z\\\\d-]+\`. The maximum length is 100 characters. Can be empty--- to allow the system to generate one.-gpdvcjtrTriggerId :: Lens' GooglePrivacyDlpV2CreateJobTriggerRequest (Maybe Text)-gpdvcjtrTriggerId-  = lens _gpdvcjtrTriggerId-      (\ s a -> s{_gpdvcjtrTriggerId = a})---- | The JobTrigger to create.-gpdvcjtrJobTrigger :: Lens' GooglePrivacyDlpV2CreateJobTriggerRequest (Maybe GooglePrivacyDlpV2JobTrigger)-gpdvcjtrJobTrigger-  = lens _gpdvcjtrJobTrigger-      (\ s a -> s{_gpdvcjtrJobTrigger = a})--instance FromJSON-         GooglePrivacyDlpV2CreateJobTriggerRequest where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2CreateJobTriggerRequest"-              (\ o ->-                 GooglePrivacyDlpV2CreateJobTriggerRequest' <$>-                   (o .:? "triggerId") <*> (o .:? "jobTrigger"))--instance ToJSON-         GooglePrivacyDlpV2CreateJobTriggerRequest where-        toJSON GooglePrivacyDlpV2CreateJobTriggerRequest'{..}-          = object-              (catMaybes-                 [("triggerId" .=) <$> _gpdvcjtrTriggerId,-                  ("jobTrigger" .=) <$> _gpdvcjtrJobTrigger])---- | Overview of the modifications that occurred.------ /See:/ 'googlePrivacyDlpV2TransformationOverview' smart constructor.-data GooglePrivacyDlpV2TransformationOverview = GooglePrivacyDlpV2TransformationOverview'-    { _gpdvtoTransformedBytes        :: !(Maybe (Textual Int64))-    , _gpdvtoTransformationSummaries :: !(Maybe [GooglePrivacyDlpV2TransformationSummary])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2TransformationOverview' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvtoTransformedBytes'------ * 'gpdvtoTransformationSummaries'-googlePrivacyDlpV2TransformationOverview-    :: GooglePrivacyDlpV2TransformationOverview-googlePrivacyDlpV2TransformationOverview =-    GooglePrivacyDlpV2TransformationOverview'-    { _gpdvtoTransformedBytes = Nothing-    , _gpdvtoTransformationSummaries = Nothing-    }---- | Total size in bytes that were transformed in some way.-gpdvtoTransformedBytes :: Lens' GooglePrivacyDlpV2TransformationOverview (Maybe Int64)-gpdvtoTransformedBytes-  = lens _gpdvtoTransformedBytes-      (\ s a -> s{_gpdvtoTransformedBytes = a})-      . mapping _Coerce---- | Transformations applied to the dataset.-gpdvtoTransformationSummaries :: Lens' GooglePrivacyDlpV2TransformationOverview [GooglePrivacyDlpV2TransformationSummary]-gpdvtoTransformationSummaries-  = lens _gpdvtoTransformationSummaries-      (\ s a -> s{_gpdvtoTransformationSummaries = a})-      . _Default-      . _Coerce--instance FromJSON-         GooglePrivacyDlpV2TransformationOverview where-        parseJSON-          = withObject-              "GooglePrivacyDlpV2TransformationOverview"-              (\ o ->-                 GooglePrivacyDlpV2TransformationOverview' <$>-                   (o .:? "transformedBytes") <*>-                     (o .:? "transformationSummaries" .!= mempty))--instance ToJSON-         GooglePrivacyDlpV2TransformationOverview where-        toJSON GooglePrivacyDlpV2TransformationOverview'{..}-          = object-              (catMaybes-                 [("transformedBytes" .=) <$> _gpdvtoTransformedBytes,-                  ("transformationSummaries" .=) <$>-                    _gpdvtoTransformationSummaries])---- | Location of the finding within an image.------ /See:/ 'googlePrivacyDlpV2ImageLocation' smart constructor.-newtype GooglePrivacyDlpV2ImageLocation = GooglePrivacyDlpV2ImageLocation'-    { _gpdvilBoundingBoxes :: Maybe [GooglePrivacyDlpV2BoundingBox]-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2ImageLocation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvilBoundingBoxes'-googlePrivacyDlpV2ImageLocation-    :: GooglePrivacyDlpV2ImageLocation-googlePrivacyDlpV2ImageLocation =-    GooglePrivacyDlpV2ImageLocation'-    { _gpdvilBoundingBoxes = Nothing-    }---- | Bounding boxes locating the pixels within the image containing the--- finding.-gpdvilBoundingBoxes :: Lens' GooglePrivacyDlpV2ImageLocation [GooglePrivacyDlpV2BoundingBox]-gpdvilBoundingBoxes-  = lens _gpdvilBoundingBoxes-      (\ s a -> s{_gpdvilBoundingBoxes = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2ImageLocation-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2ImageLocation"-              (\ o ->-                 GooglePrivacyDlpV2ImageLocation' <$>-                   (o .:? "boundingBoxes" .!= mempty))--instance ToJSON GooglePrivacyDlpV2ImageLocation where-        toJSON GooglePrivacyDlpV2ImageLocation'{..}-          = object-              (catMaybes-                 [("boundingBoxes" .=) <$> _gpdvilBoundingBoxes])---- | A representation of a Datastore kind.------ /See:/ 'googlePrivacyDlpV2KindExpression' smart constructor.-newtype GooglePrivacyDlpV2KindExpression = GooglePrivacyDlpV2KindExpression'-    { _gpdvkeName :: Maybe Text-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2KindExpression' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvkeName'-googlePrivacyDlpV2KindExpression-    :: GooglePrivacyDlpV2KindExpression-googlePrivacyDlpV2KindExpression =-    GooglePrivacyDlpV2KindExpression'-    { _gpdvkeName = Nothing-    }---- | The name of the kind.-gpdvkeName :: Lens' GooglePrivacyDlpV2KindExpression (Maybe Text)-gpdvkeName-  = lens _gpdvkeName (\ s a -> s{_gpdvkeName = a})--instance FromJSON GooglePrivacyDlpV2KindExpression-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2KindExpression"-              (\ o ->-                 GooglePrivacyDlpV2KindExpression' <$> (o .:? "name"))--instance ToJSON GooglePrivacyDlpV2KindExpression-         where-        toJSON GooglePrivacyDlpV2KindExpression'{..}-          = object (catMaybes [("name" .=) <$> _gpdvkeName])---- | Privacy metric to compute for reidentification risk analysis.------ /See:/ 'googlePrivacyDlpV2PrivacyMetric' smart constructor.-data GooglePrivacyDlpV2PrivacyMetric = GooglePrivacyDlpV2PrivacyMetric'-    { _gpdvpmNumericalStatsConfig          :: !(Maybe GooglePrivacyDlpV2NumericalStatsConfig)-    , _gpdvpmCategoricalStatsConfig        :: !(Maybe GooglePrivacyDlpV2CategoricalStatsConfig)-    , _gpdvpmKMapEstimationConfig          :: !(Maybe GooglePrivacyDlpV2KMapEstimationConfig)-    , _gpdvpmKAnonymityConfig              :: !(Maybe GooglePrivacyDlpV2KAnonymityConfig)-    , _gpdvpmLDiversityConfig              :: !(Maybe GooglePrivacyDlpV2LDiversityConfig)-    , _gpdvpmDeltaPresenceEstimationConfig :: !(Maybe GooglePrivacyDlpV2DeltaPresenceEstimationConfig)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2PrivacyMetric' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvpmNumericalStatsConfig'------ * 'gpdvpmCategoricalStatsConfig'------ * 'gpdvpmKMapEstimationConfig'------ * 'gpdvpmKAnonymityConfig'------ * 'gpdvpmLDiversityConfig'------ * 'gpdvpmDeltaPresenceEstimationConfig'-googlePrivacyDlpV2PrivacyMetric-    :: GooglePrivacyDlpV2PrivacyMetric-googlePrivacyDlpV2PrivacyMetric =-    GooglePrivacyDlpV2PrivacyMetric'-    { _gpdvpmNumericalStatsConfig = Nothing-    , _gpdvpmCategoricalStatsConfig = Nothing-    , _gpdvpmKMapEstimationConfig = Nothing-    , _gpdvpmKAnonymityConfig = Nothing-    , _gpdvpmLDiversityConfig = Nothing-    , _gpdvpmDeltaPresenceEstimationConfig = Nothing-    }--gpdvpmNumericalStatsConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2NumericalStatsConfig)-gpdvpmNumericalStatsConfig-  = lens _gpdvpmNumericalStatsConfig-      (\ s a -> s{_gpdvpmNumericalStatsConfig = a})--gpdvpmCategoricalStatsConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2CategoricalStatsConfig)-gpdvpmCategoricalStatsConfig-  = lens _gpdvpmCategoricalStatsConfig-      (\ s a -> s{_gpdvpmCategoricalStatsConfig = a})--gpdvpmKMapEstimationConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2KMapEstimationConfig)-gpdvpmKMapEstimationConfig-  = lens _gpdvpmKMapEstimationConfig-      (\ s a -> s{_gpdvpmKMapEstimationConfig = a})--gpdvpmKAnonymityConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2KAnonymityConfig)-gpdvpmKAnonymityConfig-  = lens _gpdvpmKAnonymityConfig-      (\ s a -> s{_gpdvpmKAnonymityConfig = a})--gpdvpmLDiversityConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2LDiversityConfig)-gpdvpmLDiversityConfig-  = lens _gpdvpmLDiversityConfig-      (\ s a -> s{_gpdvpmLDiversityConfig = a})--gpdvpmDeltaPresenceEstimationConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2DeltaPresenceEstimationConfig)-gpdvpmDeltaPresenceEstimationConfig-  = lens _gpdvpmDeltaPresenceEstimationConfig-      (\ s a ->-         s{_gpdvpmDeltaPresenceEstimationConfig = a})--instance FromJSON GooglePrivacyDlpV2PrivacyMetric-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2PrivacyMetric"-              (\ o ->-                 GooglePrivacyDlpV2PrivacyMetric' <$>-                   (o .:? "numericalStatsConfig") <*>-                     (o .:? "categoricalStatsConfig")-                     <*> (o .:? "kMapEstimationConfig")-                     <*> (o .:? "kAnonymityConfig")-                     <*> (o .:? "lDiversityConfig")-                     <*> (o .:? "deltaPresenceEstimationConfig"))--instance ToJSON GooglePrivacyDlpV2PrivacyMetric where-        toJSON GooglePrivacyDlpV2PrivacyMetric'{..}-          = object-              (catMaybes-                 [("numericalStatsConfig" .=) <$>-                    _gpdvpmNumericalStatsConfig,-                  ("categoricalStatsConfig" .=) <$>-                    _gpdvpmCategoricalStatsConfig,-                  ("kMapEstimationConfig" .=) <$>-                    _gpdvpmKMapEstimationConfig,-                  ("kAnonymityConfig" .=) <$> _gpdvpmKAnonymityConfig,-                  ("lDiversityConfig" .=) <$> _gpdvpmLDiversityConfig,-                  ("deltaPresenceEstimationConfig" .=) <$>-                    _gpdvpmDeltaPresenceEstimationConfig])---- | Using raw keys is prone to security risks due to accidentally leaking--- the key. Choose another type of key if possible.------ /See:/ 'googlePrivacyDlpV2UnwrAppedCryptoKey' smart constructor.-newtype GooglePrivacyDlpV2UnwrAppedCryptoKey = GooglePrivacyDlpV2UnwrAppedCryptoKey'-    { _gpdvuackKey :: Maybe Bytes-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2UnwrAppedCryptoKey' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvuackKey'-googlePrivacyDlpV2UnwrAppedCryptoKey-    :: GooglePrivacyDlpV2UnwrAppedCryptoKey-googlePrivacyDlpV2UnwrAppedCryptoKey =-    GooglePrivacyDlpV2UnwrAppedCryptoKey'-    { _gpdvuackKey = Nothing-    }---- | The AES 128\/192\/256 bit key. [required]-gpdvuackKey :: Lens' GooglePrivacyDlpV2UnwrAppedCryptoKey (Maybe ByteString)-gpdvuackKey-  = lens _gpdvuackKey (\ s a -> s{_gpdvuackKey = a}) .-      mapping _Bytes--instance FromJSON-         GooglePrivacyDlpV2UnwrAppedCryptoKey where-        parseJSON-          = withObject "GooglePrivacyDlpV2UnwrAppedCryptoKey"-              (\ o ->-                 GooglePrivacyDlpV2UnwrAppedCryptoKey' <$>-                   (o .:? "key"))--instance ToJSON GooglePrivacyDlpV2UnwrAppedCryptoKey-         where-        toJSON GooglePrivacyDlpV2UnwrAppedCryptoKey'{..}-          = object (catMaybes [("key" .=) <$> _gpdvuackKey])---- | Rule set for modifying a set of infoTypes to alter behavior under--- certain circumstances, depending on the specific details of the rules--- within the set.------ /See:/ 'googlePrivacyDlpV2InspectionRuleSet' smart constructor.-data GooglePrivacyDlpV2InspectionRuleSet = GooglePrivacyDlpV2InspectionRuleSet'-    { _gpdvirsRules     :: !(Maybe [GooglePrivacyDlpV2InspectionRule])-    , _gpdvirsInfoTypes :: !(Maybe [GooglePrivacyDlpV2InfoType])-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2InspectionRuleSet' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvirsRules'------ * 'gpdvirsInfoTypes'-googlePrivacyDlpV2InspectionRuleSet-    :: GooglePrivacyDlpV2InspectionRuleSet-googlePrivacyDlpV2InspectionRuleSet =-    GooglePrivacyDlpV2InspectionRuleSet'-    { _gpdvirsRules = Nothing-    , _gpdvirsInfoTypes = Nothing-    }---- | Set of rules to be applied to infoTypes. The rules are applied in order.-gpdvirsRules :: Lens' GooglePrivacyDlpV2InspectionRuleSet [GooglePrivacyDlpV2InspectionRule]-gpdvirsRules-  = lens _gpdvirsRules (\ s a -> s{_gpdvirsRules = a})-      . _Default-      . _Coerce---- | List of infoTypes this rule set is applied to.-gpdvirsInfoTypes :: Lens' GooglePrivacyDlpV2InspectionRuleSet [GooglePrivacyDlpV2InfoType]-gpdvirsInfoTypes-  = lens _gpdvirsInfoTypes-      (\ s a -> s{_gpdvirsInfoTypes = a})-      . _Default-      . _Coerce--instance FromJSON GooglePrivacyDlpV2InspectionRuleSet-         where-        parseJSON-          = withObject "GooglePrivacyDlpV2InspectionRuleSet"-              (\ o ->-                 GooglePrivacyDlpV2InspectionRuleSet' <$>-                   (o .:? "rules" .!= mempty) <*>-                     (o .:? "infoTypes" .!= mempty))--instance ToJSON GooglePrivacyDlpV2InspectionRuleSet-         where-        toJSON GooglePrivacyDlpV2InspectionRuleSet'{..}-          = object-              (catMaybes-                 [("rules" .=) <$> _gpdvirsRules,-                  ("infoTypes" .=) <$> _gpdvirsInfoTypes])---- | A column with a semantic tag attached.------ /See:/ 'googlePrivacyDlpV2QuasiId' smart constructor.-data GooglePrivacyDlpV2QuasiId = GooglePrivacyDlpV2QuasiId'-    { _gpdvqiField     :: !(Maybe GooglePrivacyDlpV2FieldId)-    , _gpdvqiInfoType  :: !(Maybe GooglePrivacyDlpV2InfoType)-    , _gpdvqiInferred  :: !(Maybe GoogleProtobufEmpty)-    , _gpdvqiCustomTag :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2QuasiId' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvqiField'------ * 'gpdvqiInfoType'------ * 'gpdvqiInferred'------ * 'gpdvqiCustomTag'-googlePrivacyDlpV2QuasiId-    :: GooglePrivacyDlpV2QuasiId-googlePrivacyDlpV2QuasiId =-    GooglePrivacyDlpV2QuasiId'-    { _gpdvqiField = Nothing-    , _gpdvqiInfoType = Nothing-    , _gpdvqiInferred = Nothing-    , _gpdvqiCustomTag = Nothing-    }---- | Identifies the column. [required]-gpdvqiField :: Lens' GooglePrivacyDlpV2QuasiId (Maybe GooglePrivacyDlpV2FieldId)-gpdvqiField-  = lens _gpdvqiField (\ s a -> s{_gpdvqiField = a})---- | A column can be tagged with a InfoType to use the relevant public--- dataset as a statistical model of population, if available. We currently--- support US ZIP codes, region codes, ages and genders. To--- programmatically obtain the list of supported InfoTypes, use--- ListInfoTypes with the supported_by=RISK_ANALYSIS filter.-gpdvqiInfoType :: Lens' GooglePrivacyDlpV2QuasiId (Maybe GooglePrivacyDlpV2InfoType)-gpdvqiInfoType-  = lens _gpdvqiInfoType-      (\ s a -> s{_gpdvqiInfoType = a})---- | If no semantic tag is indicated, we infer the statistical model from the--- distribution of values in the input data-gpdvqiInferred :: Lens' GooglePrivacyDlpV2QuasiId (Maybe GoogleProtobufEmpty)-gpdvqiInferred-  = lens _gpdvqiInferred-      (\ s a -> s{_gpdvqiInferred = a})---- | A column can be tagged with a custom tag. In this case, the user must--- indicate an auxiliary table that contains statistical information on the--- possible values of this column (below).-gpdvqiCustomTag :: Lens' GooglePrivacyDlpV2QuasiId (Maybe Text)-gpdvqiCustomTag-  = lens _gpdvqiCustomTag-      (\ s a -> s{_gpdvqiCustomTag = a})--instance FromJSON GooglePrivacyDlpV2QuasiId where-        parseJSON-          = withObject "GooglePrivacyDlpV2QuasiId"-              (\ o ->-                 GooglePrivacyDlpV2QuasiId' <$>-                   (o .:? "field") <*> (o .:? "infoType") <*>-                     (o .:? "inferred")-                     <*> (o .:? "customTag"))--instance ToJSON GooglePrivacyDlpV2QuasiId where-        toJSON GooglePrivacyDlpV2QuasiId'{..}-          = object-              (catMaybes-                 [("field" .=) <$> _gpdvqiField,-                  ("infoType" .=) <$> _gpdvqiInfoType,-                  ("inferred" .=) <$> _gpdvqiInferred,-                  ("customTag" .=) <$> _gpdvqiCustomTag])---- | Location of a finding within a document.------ /See:/ 'googlePrivacyDlpV2DocumentLocation' smart constructor.-newtype GooglePrivacyDlpV2DocumentLocation = GooglePrivacyDlpV2DocumentLocation'-    { _gpdvdlFileOffSet :: Maybe (Textual Int64)-    } deriving (Eq,Show,Data,Typeable,Generic)---- | Creates a value of 'GooglePrivacyDlpV2DocumentLocation' with the minimum fields required to make a request.------ Use one of the following lenses to modify other fields as desired:------ * 'gpdvdlFileOffSet'-googlePrivacyDlpV2DocumentLocation-    :: GooglePrivacyDlpV2DocumentLocation-googlePrivacyDlpV2DocumentLocation =-    GooglePrivacyDlpV2DocumentLocation'-    { _gpdvdlFileOffSet = Nothing-    }+data GooglePrivacyDlpV2InfoTypeStats =+  GooglePrivacyDlpV2InfoTypeStats'+    { _gpdvitsCount    :: !(Maybe (Textual Int64))+    , _gpdvitsInfoType :: !(Maybe GooglePrivacyDlpV2InfoType)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InfoTypeStats' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvitsCount'+--+-- * 'gpdvitsInfoType'+googlePrivacyDlpV2InfoTypeStats+    :: GooglePrivacyDlpV2InfoTypeStats+googlePrivacyDlpV2InfoTypeStats =+  GooglePrivacyDlpV2InfoTypeStats'+    {_gpdvitsCount = Nothing, _gpdvitsInfoType = Nothing}+++-- | Number of findings for this infoType.+gpdvitsCount :: Lens' GooglePrivacyDlpV2InfoTypeStats (Maybe Int64)+gpdvitsCount+  = lens _gpdvitsCount (\ s a -> s{_gpdvitsCount = a})+      . mapping _Coerce++-- | The type of finding this stat is for.+gpdvitsInfoType :: Lens' GooglePrivacyDlpV2InfoTypeStats (Maybe GooglePrivacyDlpV2InfoType)+gpdvitsInfoType+  = lens _gpdvitsInfoType+      (\ s a -> s{_gpdvitsInfoType = a})++instance FromJSON GooglePrivacyDlpV2InfoTypeStats+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2InfoTypeStats"+              (\ o ->+                 GooglePrivacyDlpV2InfoTypeStats' <$>+                   (o .:? "count") <*> (o .:? "infoType"))++instance ToJSON GooglePrivacyDlpV2InfoTypeStats where+        toJSON GooglePrivacyDlpV2InfoTypeStats'{..}+          = object+              (catMaybes+                 [("count" .=) <$> _gpdvitsCount,+                  ("infoType" .=) <$> _gpdvitsInfoType])++-- | Redact a given value. For example, if used with an+-- \`InfoTypeTransformation\` transforming PHONE_NUMBER, and input \'My+-- phone number is 206-555-0123\', the output would be \'My phone number is+-- \'.+--+-- /See:/ 'googlePrivacyDlpV2RedactConfig' smart constructor.+data GooglePrivacyDlpV2RedactConfig =+  GooglePrivacyDlpV2RedactConfig'+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2RedactConfig' with the minimum fields required to make a request.+--+googlePrivacyDlpV2RedactConfig+    :: GooglePrivacyDlpV2RedactConfig+googlePrivacyDlpV2RedactConfig = GooglePrivacyDlpV2RedactConfig'+++instance FromJSON GooglePrivacyDlpV2RedactConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2RedactConfig"+              (\ o -> pure GooglePrivacyDlpV2RedactConfig')++instance ToJSON GooglePrivacyDlpV2RedactConfig where+        toJSON = const emptyObject++-- | Request message for UpdateJobTrigger.+--+-- /See:/ 'googlePrivacyDlpV2UpdateJobTriggerRequest' smart constructor.+data GooglePrivacyDlpV2UpdateJobTriggerRequest =+  GooglePrivacyDlpV2UpdateJobTriggerRequest'+    { _gpdvujtrUpdateMask :: !(Maybe GFieldMask)+    , _gpdvujtrJobTrigger :: !(Maybe GooglePrivacyDlpV2JobTrigger)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2UpdateJobTriggerRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvujtrUpdateMask'+--+-- * 'gpdvujtrJobTrigger'+googlePrivacyDlpV2UpdateJobTriggerRequest+    :: GooglePrivacyDlpV2UpdateJobTriggerRequest+googlePrivacyDlpV2UpdateJobTriggerRequest =+  GooglePrivacyDlpV2UpdateJobTriggerRequest'+    {_gpdvujtrUpdateMask = Nothing, _gpdvujtrJobTrigger = Nothing}+++-- | Mask to control which fields get updated.+gpdvujtrUpdateMask :: Lens' GooglePrivacyDlpV2UpdateJobTriggerRequest (Maybe GFieldMask)+gpdvujtrUpdateMask+  = lens _gpdvujtrUpdateMask+      (\ s a -> s{_gpdvujtrUpdateMask = a})++-- | New JobTrigger value.+gpdvujtrJobTrigger :: Lens' GooglePrivacyDlpV2UpdateJobTriggerRequest (Maybe GooglePrivacyDlpV2JobTrigger)+gpdvujtrJobTrigger+  = lens _gpdvujtrJobTrigger+      (\ s a -> s{_gpdvujtrJobTrigger = a})++instance FromJSON+           GooglePrivacyDlpV2UpdateJobTriggerRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2UpdateJobTriggerRequest"+              (\ o ->+                 GooglePrivacyDlpV2UpdateJobTriggerRequest' <$>+                   (o .:? "updateMask") <*> (o .:? "jobTrigger"))++instance ToJSON+           GooglePrivacyDlpV2UpdateJobTriggerRequest+         where+        toJSON GooglePrivacyDlpV2UpdateJobTriggerRequest'{..}+          = object+              (catMaybes+                 [("updateMask" .=) <$> _gpdvujtrUpdateMask,+                  ("jobTrigger" .=) <$> _gpdvujtrJobTrigger])++-- | Generic half-open interval [start, end)+--+-- /See:/ 'googlePrivacyDlpV2Range' smart constructor.+data GooglePrivacyDlpV2Range =+  GooglePrivacyDlpV2Range'+    { _gpdvrStart :: !(Maybe (Textual Int64))+    , _gpdvrEnd   :: !(Maybe (Textual Int64))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Range' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrStart'+--+-- * 'gpdvrEnd'+googlePrivacyDlpV2Range+    :: GooglePrivacyDlpV2Range+googlePrivacyDlpV2Range =+  GooglePrivacyDlpV2Range' {_gpdvrStart = Nothing, _gpdvrEnd = Nothing}+++-- | Index of the first character of the range (inclusive).+gpdvrStart :: Lens' GooglePrivacyDlpV2Range (Maybe Int64)+gpdvrStart+  = lens _gpdvrStart (\ s a -> s{_gpdvrStart = a}) .+      mapping _Coerce++-- | Index of the last character of the range (exclusive).+gpdvrEnd :: Lens' GooglePrivacyDlpV2Range (Maybe Int64)+gpdvrEnd+  = lens _gpdvrEnd (\ s a -> s{_gpdvrEnd = a}) .+      mapping _Coerce++instance FromJSON GooglePrivacyDlpV2Range where+        parseJSON+          = withObject "GooglePrivacyDlpV2Range"+              (\ o ->+                 GooglePrivacyDlpV2Range' <$>+                   (o .:? "start") <*> (o .:? "end"))++instance ToJSON GooglePrivacyDlpV2Range where+        toJSON GooglePrivacyDlpV2Range'{..}+          = object+              (catMaybes+                 [("start" .=) <$> _gpdvrStart,+                  ("end" .=) <$> _gpdvrEnd])++-- | The \`Status\` type defines a logical error model that is suitable for+-- different programming environments, including REST APIs and RPC APIs. It+-- is used by [gRPC](https:\/\/github.com\/grpc). The error model is+-- designed to be: - Simple to use and understand for most users - Flexible+-- enough to meet unexpected needs # Overview The \`Status\` message+-- contains three pieces of data: error code, error message, and error+-- details. The error code should be an enum value of google.rpc.Code, but+-- it may accept additional error codes if needed. The error message should+-- be a developer-facing English message that helps developers *understand*+-- and *resolve* the error. If a localized user-facing error message is+-- needed, put the localized message in the error details or localize it in+-- the client. The optional error details may contain arbitrary information+-- about the error. There is a predefined set of error detail types in the+-- package \`google.rpc\` that can be used for common error conditions. #+-- Language mapping The \`Status\` message is the logical representation of+-- the error model, but it is not necessarily the actual wire format. When+-- the \`Status\` message is exposed in different client libraries and+-- different wire protocols, it can be mapped differently. For example, it+-- will likely be mapped to some exceptions in Java, but more likely mapped+-- to some error codes in C. # Other uses The error model and the+-- \`Status\` message can be used in a variety of environments, either with+-- or without APIs, to provide a consistent developer experience across+-- different environments. Example uses of this error model include: -+-- Partial errors. If a service needs to return partial errors to the+-- client, it may embed the \`Status\` in the normal response to indicate+-- the partial errors. - Workflow errors. A typical workflow has multiple+-- steps. Each step may have a \`Status\` message for error reporting. -+-- Batch operations. If a client uses batch request and batch response, the+-- \`Status\` message should be used directly inside batch response, one+-- for each error sub-response. - Asynchronous operations. If an API call+-- embeds asynchronous operation results in its response, the status of+-- those operations should be represented directly using the \`Status\`+-- message. - Logging. If some API errors are stored in logs, the message+-- \`Status\` could be used directly after any stripping needed for+-- security\/privacy reasons.+--+-- /See:/ 'googleRpcStatus' smart constructor.+data GoogleRpcStatus =+  GoogleRpcStatus'+    { _grsDetails :: !(Maybe [GoogleRpcStatusDetailsItem])+    , _grsCode    :: !(Maybe (Textual Int32))+    , _grsMessage :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GoogleRpcStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grsDetails'+--+-- * 'grsCode'+--+-- * 'grsMessage'+googleRpcStatus+    :: GoogleRpcStatus+googleRpcStatus =+  GoogleRpcStatus'+    {_grsDetails = Nothing, _grsCode = Nothing, _grsMessage = Nothing}+++-- | A list of messages that carry the error details. There is a common set+-- of message types for APIs to use.+grsDetails :: Lens' GoogleRpcStatus [GoogleRpcStatusDetailsItem]+grsDetails+  = lens _grsDetails (\ s a -> s{_grsDetails = a}) .+      _Default+      . _Coerce++-- | The status code, which should be an enum value of google.rpc.Code.+grsCode :: Lens' GoogleRpcStatus (Maybe Int32)+grsCode+  = lens _grsCode (\ s a -> s{_grsCode = a}) .+      mapping _Coerce++-- | A developer-facing error message, which should be in English. Any+-- user-facing error message should be localized and sent in the+-- google.rpc.Status.details field, or localized by the client.+grsMessage :: Lens' GoogleRpcStatus (Maybe Text)+grsMessage+  = lens _grsMessage (\ s a -> s{_grsMessage = a})++instance FromJSON GoogleRpcStatus where+        parseJSON+          = withObject "GoogleRpcStatus"+              (\ o ->+                 GoogleRpcStatus' <$>+                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>+                     (o .:? "message"))++instance ToJSON GoogleRpcStatus where+        toJSON GoogleRpcStatus'{..}+          = object+              (catMaybes+                 [("details" .=) <$> _grsDetails,+                  ("code" .=) <$> _grsCode,+                  ("message" .=) <$> _grsMessage])++-- | Buckets values based on fixed size ranges. The Bucketing transformation+-- can provide all of this functionality, but requires more configuration.+-- This message is provided as a convenience to the user for simple+-- bucketing strategies. The transformed value will be a hyphenated string+-- of -, i.e if lower_bound = 10 and upper_bound = 20 all values that are+-- within this bucket will be replaced with \"10-20\". This can be used on+-- data of type: double, long. If the bound Value type differs from the+-- type of data being transformed, we will first attempt converting the+-- type of the data to be transformed to match the type of the bound before+-- comparing. See https:\/\/cloud.google.com\/dlp\/docs\/concepts-bucketing+-- to learn more.+--+-- /See:/ 'googlePrivacyDlpV2FixedSizeBucketingConfig' smart constructor.+data GooglePrivacyDlpV2FixedSizeBucketingConfig =+  GooglePrivacyDlpV2FixedSizeBucketingConfig'+    { _gpdvfsbcUpperBound :: !(Maybe GooglePrivacyDlpV2Value)+    , _gpdvfsbcLowerBound :: !(Maybe GooglePrivacyDlpV2Value)+    , _gpdvfsbcBucketSize :: !(Maybe (Textual Double))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2FixedSizeBucketingConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvfsbcUpperBound'+--+-- * 'gpdvfsbcLowerBound'+--+-- * 'gpdvfsbcBucketSize'+googlePrivacyDlpV2FixedSizeBucketingConfig+    :: GooglePrivacyDlpV2FixedSizeBucketingConfig+googlePrivacyDlpV2FixedSizeBucketingConfig =+  GooglePrivacyDlpV2FixedSizeBucketingConfig'+    { _gpdvfsbcUpperBound = Nothing+    , _gpdvfsbcLowerBound = Nothing+    , _gpdvfsbcBucketSize = Nothing+    }+++-- | Upper bound value of buckets. All values greater than upper_bound are+-- grouped together into a single bucket; for example if \`upper_bound\` =+-- 89, then all values greater than 89 are replaced with the value “89+”.+-- [Required].+gpdvfsbcUpperBound :: Lens' GooglePrivacyDlpV2FixedSizeBucketingConfig (Maybe GooglePrivacyDlpV2Value)+gpdvfsbcUpperBound+  = lens _gpdvfsbcUpperBound+      (\ s a -> s{_gpdvfsbcUpperBound = a})++-- | Lower bound value of buckets. All values less than \`lower_bound\` are+-- grouped together into a single bucket; for example if \`lower_bound\` =+-- 10, then all values less than 10 are replaced with the value “-10”.+-- [Required].+gpdvfsbcLowerBound :: Lens' GooglePrivacyDlpV2FixedSizeBucketingConfig (Maybe GooglePrivacyDlpV2Value)+gpdvfsbcLowerBound+  = lens _gpdvfsbcLowerBound+      (\ s a -> s{_gpdvfsbcLowerBound = a})++-- | Size of each bucket (except for minimum and maximum buckets). So if+-- \`lower_bound\` = 10, \`upper_bound\` = 89, and \`bucket_size\` = 10,+-- then the following buckets would be used: -10, 10-20, 20-30, 30-40,+-- 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals+-- works. [Required].+gpdvfsbcBucketSize :: Lens' GooglePrivacyDlpV2FixedSizeBucketingConfig (Maybe Double)+gpdvfsbcBucketSize+  = lens _gpdvfsbcBucketSize+      (\ s a -> s{_gpdvfsbcBucketSize = a})+      . mapping _Coerce++instance FromJSON+           GooglePrivacyDlpV2FixedSizeBucketingConfig+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2FixedSizeBucketingConfig"+              (\ o ->+                 GooglePrivacyDlpV2FixedSizeBucketingConfig' <$>+                   (o .:? "upperBound") <*> (o .:? "lowerBound") <*>+                     (o .:? "bucketSize"))++instance ToJSON+           GooglePrivacyDlpV2FixedSizeBucketingConfig+         where+        toJSON+          GooglePrivacyDlpV2FixedSizeBucketingConfig'{..}+          = object+              (catMaybes+                 [("upperBound" .=) <$> _gpdvfsbcUpperBound,+                  ("lowerBound" .=) <$> _gpdvfsbcLowerBound,+                  ("bucketSize" .=) <$> _gpdvfsbcBucketSize])++-- | All the findings for a single scanned item.+--+-- /See:/ 'googlePrivacyDlpV2InspectResult' smart constructor.+data GooglePrivacyDlpV2InspectResult =+  GooglePrivacyDlpV2InspectResult'+    { _gpdvirFindingsTruncated :: !(Maybe Bool)+    , _gpdvirFindings          :: !(Maybe [GooglePrivacyDlpV2Finding])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InspectResult' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvirFindingsTruncated'+--+-- * 'gpdvirFindings'+googlePrivacyDlpV2InspectResult+    :: GooglePrivacyDlpV2InspectResult+googlePrivacyDlpV2InspectResult =+  GooglePrivacyDlpV2InspectResult'+    {_gpdvirFindingsTruncated = Nothing, _gpdvirFindings = Nothing}+++-- | If true, then this item might have more findings than were returned, and+-- the findings returned are an arbitrary subset of all findings. The+-- findings list might be truncated because the input items were too large,+-- or because the server reached the maximum amount of resources allowed+-- for a single API call. For best results, divide the input into smaller+-- batches.+gpdvirFindingsTruncated :: Lens' GooglePrivacyDlpV2InspectResult (Maybe Bool)+gpdvirFindingsTruncated+  = lens _gpdvirFindingsTruncated+      (\ s a -> s{_gpdvirFindingsTruncated = a})++-- | List of findings for an item.+gpdvirFindings :: Lens' GooglePrivacyDlpV2InspectResult [GooglePrivacyDlpV2Finding]+gpdvirFindings+  = lens _gpdvirFindings+      (\ s a -> s{_gpdvirFindings = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2InspectResult+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2InspectResult"+              (\ o ->+                 GooglePrivacyDlpV2InspectResult' <$>+                   (o .:? "findingsTruncated") <*>+                     (o .:? "findings" .!= mempty))++instance ToJSON GooglePrivacyDlpV2InspectResult where+        toJSON GooglePrivacyDlpV2InspectResult'{..}+          = object+              (catMaybes+                 [("findingsTruncated" .=) <$>+                    _gpdvirFindingsTruncated,+                  ("findings" .=) <$> _gpdvirFindings])++-- | Configuration for a StoredInfoType.+--+-- /See:/ 'googlePrivacyDlpV2StoredInfoTypeConfig' smart constructor.+data GooglePrivacyDlpV2StoredInfoTypeConfig =+  GooglePrivacyDlpV2StoredInfoTypeConfig'+    { _gpdvsitcLargeCustomDictionary :: !(Maybe GooglePrivacyDlpV2LargeCustomDictionaryConfig)+    , _gpdvsitcDisplayName           :: !(Maybe Text)+    , _gpdvsitcDescription           :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2StoredInfoTypeConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvsitcLargeCustomDictionary'+--+-- * 'gpdvsitcDisplayName'+--+-- * 'gpdvsitcDescription'+googlePrivacyDlpV2StoredInfoTypeConfig+    :: GooglePrivacyDlpV2StoredInfoTypeConfig+googlePrivacyDlpV2StoredInfoTypeConfig =+  GooglePrivacyDlpV2StoredInfoTypeConfig'+    { _gpdvsitcLargeCustomDictionary = Nothing+    , _gpdvsitcDisplayName = Nothing+    , _gpdvsitcDescription = Nothing+    }+++-- | StoredInfoType where findings are defined by a dictionary of phrases.+gpdvsitcLargeCustomDictionary :: Lens' GooglePrivacyDlpV2StoredInfoTypeConfig (Maybe GooglePrivacyDlpV2LargeCustomDictionaryConfig)+gpdvsitcLargeCustomDictionary+  = lens _gpdvsitcLargeCustomDictionary+      (\ s a -> s{_gpdvsitcLargeCustomDictionary = a})++-- | Display name of the StoredInfoType (max 256 characters).+gpdvsitcDisplayName :: Lens' GooglePrivacyDlpV2StoredInfoTypeConfig (Maybe Text)+gpdvsitcDisplayName+  = lens _gpdvsitcDisplayName+      (\ s a -> s{_gpdvsitcDisplayName = a})++-- | Description of the StoredInfoType (max 256 characters).+gpdvsitcDescription :: Lens' GooglePrivacyDlpV2StoredInfoTypeConfig (Maybe Text)+gpdvsitcDescription+  = lens _gpdvsitcDescription+      (\ s a -> s{_gpdvsitcDescription = a})++instance FromJSON+           GooglePrivacyDlpV2StoredInfoTypeConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2StoredInfoTypeConfig"+              (\ o ->+                 GooglePrivacyDlpV2StoredInfoTypeConfig' <$>+                   (o .:? "largeCustomDictionary") <*>+                     (o .:? "displayName")+                     <*> (o .:? "description"))++instance ToJSON+           GooglePrivacyDlpV2StoredInfoTypeConfig+         where+        toJSON GooglePrivacyDlpV2StoredInfoTypeConfig'{..}+          = object+              (catMaybes+                 [("largeCustomDictionary" .=) <$>+                    _gpdvsitcLargeCustomDictionary,+                  ("displayName" .=) <$> _gpdvsitcDisplayName,+                  ("description" .=) <$> _gpdvsitcDescription])++-- | A transformation to apply to text that is identified as a specific+-- info_type.+--+-- /See:/ 'googlePrivacyDlpV2InfoTypeTransformation' smart constructor.+data GooglePrivacyDlpV2InfoTypeTransformation =+  GooglePrivacyDlpV2InfoTypeTransformation'+    { _gpdvittInfoTypes               :: !(Maybe [GooglePrivacyDlpV2InfoType])+    , _gpdvittPrimitiveTransformation :: !(Maybe GooglePrivacyDlpV2PrimitiveTransformation)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InfoTypeTransformation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvittInfoTypes'+--+-- * 'gpdvittPrimitiveTransformation'+googlePrivacyDlpV2InfoTypeTransformation+    :: GooglePrivacyDlpV2InfoTypeTransformation+googlePrivacyDlpV2InfoTypeTransformation =+  GooglePrivacyDlpV2InfoTypeTransformation'+    {_gpdvittInfoTypes = Nothing, _gpdvittPrimitiveTransformation = Nothing}+++-- | InfoTypes to apply the transformation to. An empty list will cause this+-- transformation to apply to all findings that correspond to infoTypes+-- that were requested in \`InspectConfig\`.+gpdvittInfoTypes :: Lens' GooglePrivacyDlpV2InfoTypeTransformation [GooglePrivacyDlpV2InfoType]+gpdvittInfoTypes+  = lens _gpdvittInfoTypes+      (\ s a -> s{_gpdvittInfoTypes = a})+      . _Default+      . _Coerce++-- | Primitive transformation to apply to the infoType. [required]+gpdvittPrimitiveTransformation :: Lens' GooglePrivacyDlpV2InfoTypeTransformation (Maybe GooglePrivacyDlpV2PrimitiveTransformation)+gpdvittPrimitiveTransformation+  = lens _gpdvittPrimitiveTransformation+      (\ s a -> s{_gpdvittPrimitiveTransformation = a})++instance FromJSON+           GooglePrivacyDlpV2InfoTypeTransformation+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2InfoTypeTransformation"+              (\ o ->+                 GooglePrivacyDlpV2InfoTypeTransformation' <$>+                   (o .:? "infoTypes" .!= mempty) <*>+                     (o .:? "primitiveTransformation"))++instance ToJSON+           GooglePrivacyDlpV2InfoTypeTransformation+         where+        toJSON GooglePrivacyDlpV2InfoTypeTransformation'{..}+          = object+              (catMaybes+                 [("infoTypes" .=) <$> _gpdvittInfoTypes,+                  ("primitiveTransformation" .=) <$>+                    _gpdvittPrimitiveTransformation])++-- | General identifier of a data field in a storage service.+--+-- /See:/ 'googlePrivacyDlpV2FieldId' smart constructor.+newtype GooglePrivacyDlpV2FieldId =+  GooglePrivacyDlpV2FieldId'+    { _gpdvfiName :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2FieldId' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvfiName'+googlePrivacyDlpV2FieldId+    :: GooglePrivacyDlpV2FieldId+googlePrivacyDlpV2FieldId = GooglePrivacyDlpV2FieldId' {_gpdvfiName = Nothing}+++-- | Name describing the field.+gpdvfiName :: Lens' GooglePrivacyDlpV2FieldId (Maybe Text)+gpdvfiName+  = lens _gpdvfiName (\ s a -> s{_gpdvfiName = a})++instance FromJSON GooglePrivacyDlpV2FieldId where+        parseJSON+          = withObject "GooglePrivacyDlpV2FieldId"+              (\ o ->+                 GooglePrivacyDlpV2FieldId' <$> (o .:? "name"))++instance ToJSON GooglePrivacyDlpV2FieldId where+        toJSON GooglePrivacyDlpV2FieldId'{..}+          = object (catMaybes [("name" .=) <$> _gpdvfiName])++-- | Combines all of the information about a DLP job.+--+-- /See:/ 'googlePrivacyDlpV2DlpJob' smart constructor.+data GooglePrivacyDlpV2DlpJob =+  GooglePrivacyDlpV2DlpJob'+    { _gpdvdjInspectDetails :: !(Maybe GooglePrivacyDlpV2InspectDataSourceDetails)+    , _gpdvdjState          :: !(Maybe GooglePrivacyDlpV2DlpJobState)+    , _gpdvdjStartTime      :: !(Maybe DateTime')+    , _gpdvdjJobTriggerName :: !(Maybe Text)+    , _gpdvdjRiskDetails    :: !(Maybe GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails)+    , _gpdvdjName           :: !(Maybe Text)+    , _gpdvdjEndTime        :: !(Maybe DateTime')+    , _gpdvdjType           :: !(Maybe GooglePrivacyDlpV2DlpJobType)+    , _gpdvdjErrors         :: !(Maybe [GooglePrivacyDlpV2Error])+    , _gpdvdjCreateTime     :: !(Maybe DateTime')+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DlpJob' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdjInspectDetails'+--+-- * 'gpdvdjState'+--+-- * 'gpdvdjStartTime'+--+-- * 'gpdvdjJobTriggerName'+--+-- * 'gpdvdjRiskDetails'+--+-- * 'gpdvdjName'+--+-- * 'gpdvdjEndTime'+--+-- * 'gpdvdjType'+--+-- * 'gpdvdjErrors'+--+-- * 'gpdvdjCreateTime'+googlePrivacyDlpV2DlpJob+    :: GooglePrivacyDlpV2DlpJob+googlePrivacyDlpV2DlpJob =+  GooglePrivacyDlpV2DlpJob'+    { _gpdvdjInspectDetails = Nothing+    , _gpdvdjState = Nothing+    , _gpdvdjStartTime = Nothing+    , _gpdvdjJobTriggerName = Nothing+    , _gpdvdjRiskDetails = Nothing+    , _gpdvdjName = Nothing+    , _gpdvdjEndTime = Nothing+    , _gpdvdjType = Nothing+    , _gpdvdjErrors = Nothing+    , _gpdvdjCreateTime = Nothing+    }+++-- | Results from inspecting a data source.+gpdvdjInspectDetails :: Lens' GooglePrivacyDlpV2DlpJob (Maybe GooglePrivacyDlpV2InspectDataSourceDetails)+gpdvdjInspectDetails+  = lens _gpdvdjInspectDetails+      (\ s a -> s{_gpdvdjInspectDetails = a})++-- | State of a job.+gpdvdjState :: Lens' GooglePrivacyDlpV2DlpJob (Maybe GooglePrivacyDlpV2DlpJobState)+gpdvdjState+  = lens _gpdvdjState (\ s a -> s{_gpdvdjState = a})++-- | Time when the job started.+gpdvdjStartTime :: Lens' GooglePrivacyDlpV2DlpJob (Maybe UTCTime)+gpdvdjStartTime+  = lens _gpdvdjStartTime+      (\ s a -> s{_gpdvdjStartTime = a})+      . mapping _DateTime++-- | If created by a job trigger, the resource name of the trigger that+-- instantiated the job.+gpdvdjJobTriggerName :: Lens' GooglePrivacyDlpV2DlpJob (Maybe Text)+gpdvdjJobTriggerName+  = lens _gpdvdjJobTriggerName+      (\ s a -> s{_gpdvdjJobTriggerName = a})++-- | Results from analyzing risk of a data source.+gpdvdjRiskDetails :: Lens' GooglePrivacyDlpV2DlpJob (Maybe GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails)+gpdvdjRiskDetails+  = lens _gpdvdjRiskDetails+      (\ s a -> s{_gpdvdjRiskDetails = a})++-- | The server-assigned name.+gpdvdjName :: Lens' GooglePrivacyDlpV2DlpJob (Maybe Text)+gpdvdjName+  = lens _gpdvdjName (\ s a -> s{_gpdvdjName = a})++-- | Time when the job finished.+gpdvdjEndTime :: Lens' GooglePrivacyDlpV2DlpJob (Maybe UTCTime)+gpdvdjEndTime+  = lens _gpdvdjEndTime+      (\ s a -> s{_gpdvdjEndTime = a})+      . mapping _DateTime++-- | The type of job.+gpdvdjType :: Lens' GooglePrivacyDlpV2DlpJob (Maybe GooglePrivacyDlpV2DlpJobType)+gpdvdjType+  = lens _gpdvdjType (\ s a -> s{_gpdvdjType = a})++-- | A stream of errors encountered running the job.+gpdvdjErrors :: Lens' GooglePrivacyDlpV2DlpJob [GooglePrivacyDlpV2Error]+gpdvdjErrors+  = lens _gpdvdjErrors (\ s a -> s{_gpdvdjErrors = a})+      . _Default+      . _Coerce++-- | Time when the job was created.+gpdvdjCreateTime :: Lens' GooglePrivacyDlpV2DlpJob (Maybe UTCTime)+gpdvdjCreateTime+  = lens _gpdvdjCreateTime+      (\ s a -> s{_gpdvdjCreateTime = a})+      . mapping _DateTime++instance FromJSON GooglePrivacyDlpV2DlpJob where+        parseJSON+          = withObject "GooglePrivacyDlpV2DlpJob"+              (\ o ->+                 GooglePrivacyDlpV2DlpJob' <$>+                   (o .:? "inspectDetails") <*> (o .:? "state") <*>+                     (o .:? "startTime")+                     <*> (o .:? "jobTriggerName")+                     <*> (o .:? "riskDetails")+                     <*> (o .:? "name")+                     <*> (o .:? "endTime")+                     <*> (o .:? "type")+                     <*> (o .:? "errors" .!= mempty)+                     <*> (o .:? "createTime"))++instance ToJSON GooglePrivacyDlpV2DlpJob where+        toJSON GooglePrivacyDlpV2DlpJob'{..}+          = object+              (catMaybes+                 [("inspectDetails" .=) <$> _gpdvdjInspectDetails,+                  ("state" .=) <$> _gpdvdjState,+                  ("startTime" .=) <$> _gpdvdjStartTime,+                  ("jobTriggerName" .=) <$> _gpdvdjJobTriggerName,+                  ("riskDetails" .=) <$> _gpdvdjRiskDetails,+                  ("name" .=) <$> _gpdvdjName,+                  ("endTime" .=) <$> _gpdvdjEndTime,+                  ("type" .=) <$> _gpdvdjType,+                  ("errors" .=) <$> _gpdvdjErrors,+                  ("createTime" .=) <$> _gpdvdjCreateTime])++-- | A type of transformation that is applied over structured data such as a+-- table.+--+-- /See:/ 'googlePrivacyDlpV2RecordTransformations' smart constructor.+data GooglePrivacyDlpV2RecordTransformations =+  GooglePrivacyDlpV2RecordTransformations'+    { _gpdvrtRecordSuppressions   :: !(Maybe [GooglePrivacyDlpV2RecordSuppression])+    , _gpdvrtFieldTransformations :: !(Maybe [GooglePrivacyDlpV2FieldTransformation])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2RecordTransformations' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrtRecordSuppressions'+--+-- * 'gpdvrtFieldTransformations'+googlePrivacyDlpV2RecordTransformations+    :: GooglePrivacyDlpV2RecordTransformations+googlePrivacyDlpV2RecordTransformations =+  GooglePrivacyDlpV2RecordTransformations'+    {_gpdvrtRecordSuppressions = Nothing, _gpdvrtFieldTransformations = Nothing}+++-- | Configuration defining which records get suppressed entirely. Records+-- that match any suppression rule are omitted from the output [optional].+gpdvrtRecordSuppressions :: Lens' GooglePrivacyDlpV2RecordTransformations [GooglePrivacyDlpV2RecordSuppression]+gpdvrtRecordSuppressions+  = lens _gpdvrtRecordSuppressions+      (\ s a -> s{_gpdvrtRecordSuppressions = a})+      . _Default+      . _Coerce++-- | Transform the record by applying various field transformations.+gpdvrtFieldTransformations :: Lens' GooglePrivacyDlpV2RecordTransformations [GooglePrivacyDlpV2FieldTransformation]+gpdvrtFieldTransformations+  = lens _gpdvrtFieldTransformations+      (\ s a -> s{_gpdvrtFieldTransformations = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2RecordTransformations+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2RecordTransformations"+              (\ o ->+                 GooglePrivacyDlpV2RecordTransformations' <$>+                   (o .:? "recordSuppressions" .!= mempty) <*>+                     (o .:? "fieldTransformations" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2RecordTransformations+         where+        toJSON GooglePrivacyDlpV2RecordTransformations'{..}+          = object+              (catMaybes+                 [("recordSuppressions" .=) <$>+                    _gpdvrtRecordSuppressions,+                  ("fieldTransformations" .=) <$>+                    _gpdvrtFieldTransformations])++-- | A unique identifier for a Datastore entity. If a key\'s partition ID or+-- any of its path kinds or names are reserved\/read-only, the key is+-- reserved\/read-only. A reserved\/read-only key is forbidden in certain+-- documented contexts.+--+-- /See:/ 'googlePrivacyDlpV2Key' smart constructor.+data GooglePrivacyDlpV2Key =+  GooglePrivacyDlpV2Key'+    { _gpdvkPartitionId :: !(Maybe GooglePrivacyDlpV2PartitionId)+    , _gpdvkPath        :: !(Maybe [GooglePrivacyDlpV2PathElement])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Key' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvkPartitionId'+--+-- * 'gpdvkPath'+googlePrivacyDlpV2Key+    :: GooglePrivacyDlpV2Key+googlePrivacyDlpV2Key =+  GooglePrivacyDlpV2Key' {_gpdvkPartitionId = Nothing, _gpdvkPath = Nothing}+++-- | Entities are partitioned into subsets, currently identified by a project+-- ID and namespace ID. Queries are scoped to a single partition.+gpdvkPartitionId :: Lens' GooglePrivacyDlpV2Key (Maybe GooglePrivacyDlpV2PartitionId)+gpdvkPartitionId+  = lens _gpdvkPartitionId+      (\ s a -> s{_gpdvkPartitionId = a})++-- | The entity path. An entity path consists of one or more elements+-- composed of a kind and a string or numerical identifier, which identify+-- entities. The first element identifies a _root entity_, the second+-- element identifies a _child_ of the root entity, the third element+-- identifies a child of the second entity, and so forth. The entities+-- identified by all prefixes of the path are called the element\'s+-- _ancestors_. A path can never be empty, and a path can have at most 100+-- elements.+gpdvkPath :: Lens' GooglePrivacyDlpV2Key [GooglePrivacyDlpV2PathElement]+gpdvkPath+  = lens _gpdvkPath (\ s a -> s{_gpdvkPath = a}) .+      _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2Key where+        parseJSON+          = withObject "GooglePrivacyDlpV2Key"+              (\ o ->+                 GooglePrivacyDlpV2Key' <$>+                   (o .:? "partitionId") <*> (o .:? "path" .!= mempty))++instance ToJSON GooglePrivacyDlpV2Key where+        toJSON GooglePrivacyDlpV2Key'{..}+          = object+              (catMaybes+                 [("partitionId" .=) <$> _gpdvkPartitionId,+                  ("path" .=) <$> _gpdvkPath])++-- | Generalization function that buckets values based on ranges. The ranges+-- and replacement values are dynamically provided by the user for custom+-- behavior, such as 1-30 -> LOW 31-65 -> MEDIUM 66-100 -> HIGH This can be+-- used on data of type: number, long, string, timestamp. If the bound+-- \`Value\` type differs from the type of data being transformed, we will+-- first attempt converting the type of the data to be transformed to match+-- the type of the bound before comparing. See+-- https:\/\/cloud.google.com\/dlp\/docs\/concepts-bucketing to learn more.+--+-- /See:/ 'googlePrivacyDlpV2BucketingConfig' smart constructor.+newtype GooglePrivacyDlpV2BucketingConfig =+  GooglePrivacyDlpV2BucketingConfig'+    { _gpdvbcBuckets :: Maybe [GooglePrivacyDlpV2Bucket]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2BucketingConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvbcBuckets'+googlePrivacyDlpV2BucketingConfig+    :: GooglePrivacyDlpV2BucketingConfig+googlePrivacyDlpV2BucketingConfig =+  GooglePrivacyDlpV2BucketingConfig' {_gpdvbcBuckets = Nothing}+++-- | Set of buckets. Ranges must be non-overlapping.+gpdvbcBuckets :: Lens' GooglePrivacyDlpV2BucketingConfig [GooglePrivacyDlpV2Bucket]+gpdvbcBuckets+  = lens _gpdvbcBuckets+      (\ s a -> s{_gpdvbcBuckets = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2BucketingConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2BucketingConfig"+              (\ o ->+                 GooglePrivacyDlpV2BucketingConfig' <$>+                   (o .:? "buckets" .!= mempty))++instance ToJSON GooglePrivacyDlpV2BucketingConfig+         where+        toJSON GooglePrivacyDlpV2BucketingConfig'{..}+          = object+              (catMaybes [("buckets" .=) <$> _gpdvbcBuckets])++-- | Configuration description of the scanning process. When used with+-- redactContent only info_types and min_likelihood are currently used.+--+-- /See:/ 'googlePrivacyDlpV2InspectConfig' smart constructor.+data GooglePrivacyDlpV2InspectConfig =+  GooglePrivacyDlpV2InspectConfig'+    { _gpdvicInfoTypes        :: !(Maybe [GooglePrivacyDlpV2InfoType])+    , _gpdvicMinLikelihood    :: !(Maybe GooglePrivacyDlpV2InspectConfigMinLikelihood)+    , _gpdvicExcludeInfoTypes :: !(Maybe Bool)+    , _gpdvicIncludeQuote     :: !(Maybe Bool)+    , _gpdvicCustomInfoTypes  :: !(Maybe [GooglePrivacyDlpV2CustomInfoType])+    , _gpdvicLimits           :: !(Maybe GooglePrivacyDlpV2FindingLimits)+    , _gpdvicContentOptions   :: !(Maybe [Text])+    , _gpdvicRuleSet          :: !(Maybe [GooglePrivacyDlpV2InspectionRuleSet])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InspectConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvicInfoTypes'+--+-- * 'gpdvicMinLikelihood'+--+-- * 'gpdvicExcludeInfoTypes'+--+-- * 'gpdvicIncludeQuote'+--+-- * 'gpdvicCustomInfoTypes'+--+-- * 'gpdvicLimits'+--+-- * 'gpdvicContentOptions'+--+-- * 'gpdvicRuleSet'+googlePrivacyDlpV2InspectConfig+    :: GooglePrivacyDlpV2InspectConfig+googlePrivacyDlpV2InspectConfig =+  GooglePrivacyDlpV2InspectConfig'+    { _gpdvicInfoTypes = Nothing+    , _gpdvicMinLikelihood = Nothing+    , _gpdvicExcludeInfoTypes = Nothing+    , _gpdvicIncludeQuote = Nothing+    , _gpdvicCustomInfoTypes = Nothing+    , _gpdvicLimits = Nothing+    , _gpdvicContentOptions = Nothing+    , _gpdvicRuleSet = Nothing+    }+++-- | Restricts what info_types to look for. The values must correspond to+-- InfoType values returned by ListInfoTypes or listed at+-- https:\/\/cloud.google.com\/dlp\/docs\/infotypes-reference. When no+-- InfoTypes or CustomInfoTypes are specified in a request, the system may+-- automatically choose what detectors to run. By default this may be all+-- types, but may change over time as detectors are updated. The special+-- InfoType name \"ALL_BASIC\" can be used to trigger all detectors, but+-- may change over time as new InfoTypes are added. If you need precise+-- control and predictability as to what detectors are run you should+-- specify specific InfoTypes listed in the reference.+gpdvicInfoTypes :: Lens' GooglePrivacyDlpV2InspectConfig [GooglePrivacyDlpV2InfoType]+gpdvicInfoTypes+  = lens _gpdvicInfoTypes+      (\ s a -> s{_gpdvicInfoTypes = a})+      . _Default+      . _Coerce++-- | Only returns findings equal or above this threshold. The default is+-- POSSIBLE. See https:\/\/cloud.google.com\/dlp\/docs\/likelihood to learn+-- more.+gpdvicMinLikelihood :: Lens' GooglePrivacyDlpV2InspectConfig (Maybe GooglePrivacyDlpV2InspectConfigMinLikelihood)+gpdvicMinLikelihood+  = lens _gpdvicMinLikelihood+      (\ s a -> s{_gpdvicMinLikelihood = a})++-- | When true, excludes type information of the findings.+gpdvicExcludeInfoTypes :: Lens' GooglePrivacyDlpV2InspectConfig (Maybe Bool)+gpdvicExcludeInfoTypes+  = lens _gpdvicExcludeInfoTypes+      (\ s a -> s{_gpdvicExcludeInfoTypes = a})++-- | When true, a contextual quote from the data that triggered a finding is+-- included in the response; see Finding.quote.+gpdvicIncludeQuote :: Lens' GooglePrivacyDlpV2InspectConfig (Maybe Bool)+gpdvicIncludeQuote+  = lens _gpdvicIncludeQuote+      (\ s a -> s{_gpdvicIncludeQuote = a})++-- | CustomInfoTypes provided by the user. See+-- https:\/\/cloud.google.com\/dlp\/docs\/creating-custom-infotypes to+-- learn more.+gpdvicCustomInfoTypes :: Lens' GooglePrivacyDlpV2InspectConfig [GooglePrivacyDlpV2CustomInfoType]+gpdvicCustomInfoTypes+  = lens _gpdvicCustomInfoTypes+      (\ s a -> s{_gpdvicCustomInfoTypes = a})+      . _Default+      . _Coerce++gpdvicLimits :: Lens' GooglePrivacyDlpV2InspectConfig (Maybe GooglePrivacyDlpV2FindingLimits)+gpdvicLimits+  = lens _gpdvicLimits (\ s a -> s{_gpdvicLimits = a})++-- | List of options defining data content to scan. If empty, text, images,+-- and other content will be included.+gpdvicContentOptions :: Lens' GooglePrivacyDlpV2InspectConfig [Text]+gpdvicContentOptions+  = lens _gpdvicContentOptions+      (\ s a -> s{_gpdvicContentOptions = a})+      . _Default+      . _Coerce++-- | Set of rules to apply to the findings for this InspectConfig. Exclusion+-- rules, contained in the set are executed in the end, other rules are+-- executed in the order they are specified for each info type.+gpdvicRuleSet :: Lens' GooglePrivacyDlpV2InspectConfig [GooglePrivacyDlpV2InspectionRuleSet]+gpdvicRuleSet+  = lens _gpdvicRuleSet+      (\ s a -> s{_gpdvicRuleSet = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2InspectConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2InspectConfig"+              (\ o ->+                 GooglePrivacyDlpV2InspectConfig' <$>+                   (o .:? "infoTypes" .!= mempty) <*>+                     (o .:? "minLikelihood")+                     <*> (o .:? "excludeInfoTypes")+                     <*> (o .:? "includeQuote")+                     <*> (o .:? "customInfoTypes" .!= mempty)+                     <*> (o .:? "limits")+                     <*> (o .:? "contentOptions" .!= mempty)+                     <*> (o .:? "ruleSet" .!= mempty))++instance ToJSON GooglePrivacyDlpV2InspectConfig where+        toJSON GooglePrivacyDlpV2InspectConfig'{..}+          = object+              (catMaybes+                 [("infoTypes" .=) <$> _gpdvicInfoTypes,+                  ("minLikelihood" .=) <$> _gpdvicMinLikelihood,+                  ("excludeInfoTypes" .=) <$> _gpdvicExcludeInfoTypes,+                  ("includeQuote" .=) <$> _gpdvicIncludeQuote,+                  ("customInfoTypes" .=) <$> _gpdvicCustomInfoTypes,+                  ("limits" .=) <$> _gpdvicLimits,+                  ("contentOptions" .=) <$> _gpdvicContentOptions,+                  ("ruleSet" .=) <$> _gpdvicRuleSet])++-- | Configuration for a risk analysis job. See+-- https:\/\/cloud.google.com\/dlp\/docs\/concepts-risk-analysis to learn+-- more.+--+-- /See:/ 'googlePrivacyDlpV2RiskAnalysisJobConfig' smart constructor.+data GooglePrivacyDlpV2RiskAnalysisJobConfig =+  GooglePrivacyDlpV2RiskAnalysisJobConfig'+    { _gpdvrajcPrivacyMetric :: !(Maybe GooglePrivacyDlpV2PrivacyMetric)+    , _gpdvrajcActions       :: !(Maybe [GooglePrivacyDlpV2Action])+    , _gpdvrajcSourceTable   :: !(Maybe GooglePrivacyDlpV2BigQueryTable)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2RiskAnalysisJobConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrajcPrivacyMetric'+--+-- * 'gpdvrajcActions'+--+-- * 'gpdvrajcSourceTable'+googlePrivacyDlpV2RiskAnalysisJobConfig+    :: GooglePrivacyDlpV2RiskAnalysisJobConfig+googlePrivacyDlpV2RiskAnalysisJobConfig =+  GooglePrivacyDlpV2RiskAnalysisJobConfig'+    { _gpdvrajcPrivacyMetric = Nothing+    , _gpdvrajcActions = Nothing+    , _gpdvrajcSourceTable = Nothing+    }+++-- | Privacy metric to compute.+gpdvrajcPrivacyMetric :: Lens' GooglePrivacyDlpV2RiskAnalysisJobConfig (Maybe GooglePrivacyDlpV2PrivacyMetric)+gpdvrajcPrivacyMetric+  = lens _gpdvrajcPrivacyMetric+      (\ s a -> s{_gpdvrajcPrivacyMetric = a})++-- | Actions to execute at the completion of the job. Are executed in the+-- order provided.+gpdvrajcActions :: Lens' GooglePrivacyDlpV2RiskAnalysisJobConfig [GooglePrivacyDlpV2Action]+gpdvrajcActions+  = lens _gpdvrajcActions+      (\ s a -> s{_gpdvrajcActions = a})+      . _Default+      . _Coerce++-- | Input dataset to compute metrics over.+gpdvrajcSourceTable :: Lens' GooglePrivacyDlpV2RiskAnalysisJobConfig (Maybe GooglePrivacyDlpV2BigQueryTable)+gpdvrajcSourceTable+  = lens _gpdvrajcSourceTable+      (\ s a -> s{_gpdvrajcSourceTable = a})++instance FromJSON+           GooglePrivacyDlpV2RiskAnalysisJobConfig+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2RiskAnalysisJobConfig"+              (\ o ->+                 GooglePrivacyDlpV2RiskAnalysisJobConfig' <$>+                   (o .:? "privacyMetric") <*>+                     (o .:? "actions" .!= mempty)+                     <*> (o .:? "sourceTable"))++instance ToJSON+           GooglePrivacyDlpV2RiskAnalysisJobConfig+         where+        toJSON GooglePrivacyDlpV2RiskAnalysisJobConfig'{..}+          = object+              (catMaybes+                 [("privacyMetric" .=) <$> _gpdvrajcPrivacyMetric,+                  ("actions" .=) <$> _gpdvrajcActions,+                  ("sourceTable" .=) <$> _gpdvrajcSourceTable])++-- | Message for infoType-dependent details parsed from quote.+--+-- /See:/ 'googlePrivacyDlpV2QuoteInfo' smart constructor.+newtype GooglePrivacyDlpV2QuoteInfo =+  GooglePrivacyDlpV2QuoteInfo'+    { _gpdvqiDateTime :: Maybe GooglePrivacyDlpV2DateTime+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2QuoteInfo' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvqiDateTime'+googlePrivacyDlpV2QuoteInfo+    :: GooglePrivacyDlpV2QuoteInfo+googlePrivacyDlpV2QuoteInfo =+  GooglePrivacyDlpV2QuoteInfo' {_gpdvqiDateTime = Nothing}+++-- | The date time indicated by the quote.+gpdvqiDateTime :: Lens' GooglePrivacyDlpV2QuoteInfo (Maybe GooglePrivacyDlpV2DateTime)+gpdvqiDateTime+  = lens _gpdvqiDateTime+      (\ s a -> s{_gpdvqiDateTime = a})++instance FromJSON GooglePrivacyDlpV2QuoteInfo where+        parseJSON+          = withObject "GooglePrivacyDlpV2QuoteInfo"+              (\ o ->+                 GooglePrivacyDlpV2QuoteInfo' <$> (o .:? "dateTime"))++instance ToJSON GooglePrivacyDlpV2QuoteInfo where+        toJSON GooglePrivacyDlpV2QuoteInfo'{..}+          = object+              (catMaybes [("dateTime" .=) <$> _gpdvqiDateTime])++-- | Configuration to suppress records whose suppression conditions evaluate+-- to true.+--+-- /See:/ 'googlePrivacyDlpV2RecordSuppression' smart constructor.+newtype GooglePrivacyDlpV2RecordSuppression =+  GooglePrivacyDlpV2RecordSuppression'+    { _gpdvrsCondition :: Maybe GooglePrivacyDlpV2RecordCondition+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2RecordSuppression' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrsCondition'+googlePrivacyDlpV2RecordSuppression+    :: GooglePrivacyDlpV2RecordSuppression+googlePrivacyDlpV2RecordSuppression =+  GooglePrivacyDlpV2RecordSuppression' {_gpdvrsCondition = Nothing}+++-- | A condition that when it evaluates to true will result in the record+-- being evaluated to be suppressed from the transformed content.+gpdvrsCondition :: Lens' GooglePrivacyDlpV2RecordSuppression (Maybe GooglePrivacyDlpV2RecordCondition)+gpdvrsCondition+  = lens _gpdvrsCondition+      (\ s a -> s{_gpdvrsCondition = a})++instance FromJSON GooglePrivacyDlpV2RecordSuppression+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2RecordSuppression"+              (\ o ->+                 GooglePrivacyDlpV2RecordSuppression' <$>+                   (o .:? "condition"))++instance ToJSON GooglePrivacyDlpV2RecordSuppression+         where+        toJSON GooglePrivacyDlpV2RecordSuppression'{..}+          = object+              (catMaybes [("condition" .=) <$> _gpdvrsCondition])++-- | This is a data encryption key (DEK) (as opposed to a key encryption key+-- (KEK) stored by KMS). When using KMS to wrap\/unwrap DEKs, be sure to+-- set an appropriate IAM policy on the KMS CryptoKey (KEK) to ensure an+-- attacker cannot unwrap the data crypto key.+--+-- /See:/ 'googlePrivacyDlpV2CryptoKey' smart constructor.+data GooglePrivacyDlpV2CryptoKey =+  GooglePrivacyDlpV2CryptoKey'+    { _gpdvckTransient  :: !(Maybe GooglePrivacyDlpV2TransientCryptoKey)+    , _gpdvckKmsWrApped :: !(Maybe GooglePrivacyDlpV2KmsWrAppedCryptoKey)+    , _gpdvckUnwrApped  :: !(Maybe GooglePrivacyDlpV2UnwrAppedCryptoKey)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CryptoKey' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvckTransient'+--+-- * 'gpdvckKmsWrApped'+--+-- * 'gpdvckUnwrApped'+googlePrivacyDlpV2CryptoKey+    :: GooglePrivacyDlpV2CryptoKey+googlePrivacyDlpV2CryptoKey =+  GooglePrivacyDlpV2CryptoKey'+    { _gpdvckTransient = Nothing+    , _gpdvckKmsWrApped = Nothing+    , _gpdvckUnwrApped = Nothing+    }+++gpdvckTransient :: Lens' GooglePrivacyDlpV2CryptoKey (Maybe GooglePrivacyDlpV2TransientCryptoKey)+gpdvckTransient+  = lens _gpdvckTransient+      (\ s a -> s{_gpdvckTransient = a})++gpdvckKmsWrApped :: Lens' GooglePrivacyDlpV2CryptoKey (Maybe GooglePrivacyDlpV2KmsWrAppedCryptoKey)+gpdvckKmsWrApped+  = lens _gpdvckKmsWrApped+      (\ s a -> s{_gpdvckKmsWrApped = a})++gpdvckUnwrApped :: Lens' GooglePrivacyDlpV2CryptoKey (Maybe GooglePrivacyDlpV2UnwrAppedCryptoKey)+gpdvckUnwrApped+  = lens _gpdvckUnwrApped+      (\ s a -> s{_gpdvckUnwrApped = a})++instance FromJSON GooglePrivacyDlpV2CryptoKey where+        parseJSON+          = withObject "GooglePrivacyDlpV2CryptoKey"+              (\ o ->+                 GooglePrivacyDlpV2CryptoKey' <$>+                   (o .:? "transient") <*> (o .:? "kmsWrapped") <*>+                     (o .:? "unwrapped"))++instance ToJSON GooglePrivacyDlpV2CryptoKey where+        toJSON GooglePrivacyDlpV2CryptoKey'{..}+          = object+              (catMaybes+                 [("transient" .=) <$> _gpdvckTransient,+                  ("kmsWrapped" .=) <$> _gpdvckKmsWrApped,+                  ("unwrapped" .=) <$> _gpdvckUnwrApped])++-- | Configuration for a custom dictionary created from a data source of any+-- size up to the maximum size defined in the+-- [limits](https:\/\/cloud.google.com\/dlp\/limits) page. The artifacts of+-- dictionary creation are stored in the specified Google Cloud Storage+-- location. Consider using \`CustomInfoType.Dictionary\` for smaller+-- dictionaries that satisfy the size requirements.+--+-- /See:/ 'googlePrivacyDlpV2LargeCustomDictionaryConfig' smart constructor.+data GooglePrivacyDlpV2LargeCustomDictionaryConfig =+  GooglePrivacyDlpV2LargeCustomDictionaryConfig'+    { _gpdvlcdcBigQueryField       :: !(Maybe GooglePrivacyDlpV2BigQueryField)+    , _gpdvlcdcCloudStorageFileSet :: !(Maybe GooglePrivacyDlpV2CloudStorageFileSet)+    , _gpdvlcdcOutputPath          :: !(Maybe GooglePrivacyDlpV2CloudStoragePath)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2LargeCustomDictionaryConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvlcdcBigQueryField'+--+-- * 'gpdvlcdcCloudStorageFileSet'+--+-- * 'gpdvlcdcOutputPath'+googlePrivacyDlpV2LargeCustomDictionaryConfig+    :: GooglePrivacyDlpV2LargeCustomDictionaryConfig+googlePrivacyDlpV2LargeCustomDictionaryConfig =+  GooglePrivacyDlpV2LargeCustomDictionaryConfig'+    { _gpdvlcdcBigQueryField = Nothing+    , _gpdvlcdcCloudStorageFileSet = Nothing+    , _gpdvlcdcOutputPath = Nothing+    }+++-- | Field in a BigQuery table where each cell represents a dictionary+-- phrase.+gpdvlcdcBigQueryField :: Lens' GooglePrivacyDlpV2LargeCustomDictionaryConfig (Maybe GooglePrivacyDlpV2BigQueryField)+gpdvlcdcBigQueryField+  = lens _gpdvlcdcBigQueryField+      (\ s a -> s{_gpdvlcdcBigQueryField = a})++-- | Set of files containing newline-delimited lists of dictionary phrases.+gpdvlcdcCloudStorageFileSet :: Lens' GooglePrivacyDlpV2LargeCustomDictionaryConfig (Maybe GooglePrivacyDlpV2CloudStorageFileSet)+gpdvlcdcCloudStorageFileSet+  = lens _gpdvlcdcCloudStorageFileSet+      (\ s a -> s{_gpdvlcdcCloudStorageFileSet = a})++-- | Location to store dictionary artifacts in Google Cloud Storage. These+-- files will only be accessible by project owners and the DLP API. If any+-- of these artifacts are modified, the dictionary is considered invalid+-- and can no longer be used.+gpdvlcdcOutputPath :: Lens' GooglePrivacyDlpV2LargeCustomDictionaryConfig (Maybe GooglePrivacyDlpV2CloudStoragePath)+gpdvlcdcOutputPath+  = lens _gpdvlcdcOutputPath+      (\ s a -> s{_gpdvlcdcOutputPath = a})++instance FromJSON+           GooglePrivacyDlpV2LargeCustomDictionaryConfig+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2LargeCustomDictionaryConfig"+              (\ o ->+                 GooglePrivacyDlpV2LargeCustomDictionaryConfig' <$>+                   (o .:? "bigQueryField") <*>+                     (o .:? "cloudStorageFileSet")+                     <*> (o .:? "outputPath"))++instance ToJSON+           GooglePrivacyDlpV2LargeCustomDictionaryConfig+         where+        toJSON+          GooglePrivacyDlpV2LargeCustomDictionaryConfig'{..}+          = object+              (catMaybes+                 [("bigQueryField" .=) <$> _gpdvlcdcBigQueryField,+                  ("cloudStorageFileSet" .=) <$>+                    _gpdvlcdcCloudStorageFileSet,+                  ("outputPath" .=) <$> _gpdvlcdcOutputPath])++-- | Message defining a list of words or phrases to search for in the data.+--+-- /See:/ 'googlePrivacyDlpV2WordList' smart constructor.+newtype GooglePrivacyDlpV2WordList =+  GooglePrivacyDlpV2WordList'+    { _gpdvwlWords :: Maybe [Text]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2WordList' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvwlWords'+googlePrivacyDlpV2WordList+    :: GooglePrivacyDlpV2WordList+googlePrivacyDlpV2WordList =+  GooglePrivacyDlpV2WordList' {_gpdvwlWords = Nothing}+++-- | Words or phrases defining the dictionary. The dictionary must contain at+-- least one phrase and every phrase must contain at least 2 characters+-- that are letters or digits. [required]+gpdvwlWords :: Lens' GooglePrivacyDlpV2WordList [Text]+gpdvwlWords+  = lens _gpdvwlWords (\ s a -> s{_gpdvwlWords = a}) .+      _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2WordList where+        parseJSON+          = withObject "GooglePrivacyDlpV2WordList"+              (\ o ->+                 GooglePrivacyDlpV2WordList' <$>+                   (o .:? "words" .!= mempty))++instance ToJSON GooglePrivacyDlpV2WordList where+        toJSON GooglePrivacyDlpV2WordList'{..}+          = object (catMaybes [("words" .=) <$> _gpdvwlWords])++-- | Container structure for the content to inspect.+--+-- /See:/ 'googlePrivacyDlpV2ContentItem' smart constructor.+data GooglePrivacyDlpV2ContentItem =+  GooglePrivacyDlpV2ContentItem'+    { _gpdvciValue    :: !(Maybe Text)+    , _gpdvciByteItem :: !(Maybe GooglePrivacyDlpV2ByteContentItem)+    , _gpdvciTable    :: !(Maybe GooglePrivacyDlpV2Table)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ContentItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvciValue'+--+-- * 'gpdvciByteItem'+--+-- * 'gpdvciTable'+googlePrivacyDlpV2ContentItem+    :: GooglePrivacyDlpV2ContentItem+googlePrivacyDlpV2ContentItem =+  GooglePrivacyDlpV2ContentItem'+    {_gpdvciValue = Nothing, _gpdvciByteItem = Nothing, _gpdvciTable = Nothing}+++-- | String data to inspect or redact.+gpdvciValue :: Lens' GooglePrivacyDlpV2ContentItem (Maybe Text)+gpdvciValue+  = lens _gpdvciValue (\ s a -> s{_gpdvciValue = a})++-- | Content data to inspect or redact. Replaces \`type\` and \`data\`.+gpdvciByteItem :: Lens' GooglePrivacyDlpV2ContentItem (Maybe GooglePrivacyDlpV2ByteContentItem)+gpdvciByteItem+  = lens _gpdvciByteItem+      (\ s a -> s{_gpdvciByteItem = a})++-- | Structured content for inspection. See+-- https:\/\/cloud.google.com\/dlp\/docs\/inspecting-text#inspecting_a_table+-- to learn more.+gpdvciTable :: Lens' GooglePrivacyDlpV2ContentItem (Maybe GooglePrivacyDlpV2Table)+gpdvciTable+  = lens _gpdvciTable (\ s a -> s{_gpdvciTable = a})++instance FromJSON GooglePrivacyDlpV2ContentItem where+        parseJSON+          = withObject "GooglePrivacyDlpV2ContentItem"+              (\ o ->+                 GooglePrivacyDlpV2ContentItem' <$>+                   (o .:? "value") <*> (o .:? "byteItem") <*>+                     (o .:? "table"))++instance ToJSON GooglePrivacyDlpV2ContentItem where+        toJSON GooglePrivacyDlpV2ContentItem'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _gpdvciValue,+                  ("byteItem" .=) <$> _gpdvciByteItem,+                  ("table" .=) <$> _gpdvciTable])++--+-- /See:/ 'googlePrivacyDlpV2CategoricalStatsHistogramBucket' smart constructor.+data GooglePrivacyDlpV2CategoricalStatsHistogramBucket =+  GooglePrivacyDlpV2CategoricalStatsHistogramBucket'+    { _gpdvcshbValueFrequencyLowerBound :: !(Maybe (Textual Int64))+    , _gpdvcshbBucketValues             :: !(Maybe [GooglePrivacyDlpV2ValueFrequency])+    , _gpdvcshbValueFrequencyUpperBound :: !(Maybe (Textual Int64))+    , _gpdvcshbBucketSize               :: !(Maybe (Textual Int64))+    , _gpdvcshbBucketValueCount         :: !(Maybe (Textual Int64))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CategoricalStatsHistogramBucket' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcshbValueFrequencyLowerBound'+--+-- * 'gpdvcshbBucketValues'+--+-- * 'gpdvcshbValueFrequencyUpperBound'+--+-- * 'gpdvcshbBucketSize'+--+-- * 'gpdvcshbBucketValueCount'+googlePrivacyDlpV2CategoricalStatsHistogramBucket+    :: GooglePrivacyDlpV2CategoricalStatsHistogramBucket+googlePrivacyDlpV2CategoricalStatsHistogramBucket =+  GooglePrivacyDlpV2CategoricalStatsHistogramBucket'+    { _gpdvcshbValueFrequencyLowerBound = Nothing+    , _gpdvcshbBucketValues = Nothing+    , _gpdvcshbValueFrequencyUpperBound = Nothing+    , _gpdvcshbBucketSize = Nothing+    , _gpdvcshbBucketValueCount = Nothing+    }+++-- | Lower bound on the value frequency of the values in this bucket.+gpdvcshbValueFrequencyLowerBound :: Lens' GooglePrivacyDlpV2CategoricalStatsHistogramBucket (Maybe Int64)+gpdvcshbValueFrequencyLowerBound+  = lens _gpdvcshbValueFrequencyLowerBound+      (\ s a -> s{_gpdvcshbValueFrequencyLowerBound = a})+      . mapping _Coerce++-- | Sample of value frequencies in this bucket. The total number of values+-- returned per bucket is capped at 20.+gpdvcshbBucketValues :: Lens' GooglePrivacyDlpV2CategoricalStatsHistogramBucket [GooglePrivacyDlpV2ValueFrequency]+gpdvcshbBucketValues+  = lens _gpdvcshbBucketValues+      (\ s a -> s{_gpdvcshbBucketValues = a})+      . _Default+      . _Coerce++-- | Upper bound on the value frequency of the values in this bucket.+gpdvcshbValueFrequencyUpperBound :: Lens' GooglePrivacyDlpV2CategoricalStatsHistogramBucket (Maybe Int64)+gpdvcshbValueFrequencyUpperBound+  = lens _gpdvcshbValueFrequencyUpperBound+      (\ s a -> s{_gpdvcshbValueFrequencyUpperBound = a})+      . mapping _Coerce++-- | Total number of values in this bucket.+gpdvcshbBucketSize :: Lens' GooglePrivacyDlpV2CategoricalStatsHistogramBucket (Maybe Int64)+gpdvcshbBucketSize+  = lens _gpdvcshbBucketSize+      (\ s a -> s{_gpdvcshbBucketSize = a})+      . mapping _Coerce++-- | Total number of distinct values in this bucket.+gpdvcshbBucketValueCount :: Lens' GooglePrivacyDlpV2CategoricalStatsHistogramBucket (Maybe Int64)+gpdvcshbBucketValueCount+  = lens _gpdvcshbBucketValueCount+      (\ s a -> s{_gpdvcshbBucketValueCount = a})+      . mapping _Coerce++instance FromJSON+           GooglePrivacyDlpV2CategoricalStatsHistogramBucket+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2CategoricalStatsHistogramBucket"+              (\ o ->+                 GooglePrivacyDlpV2CategoricalStatsHistogramBucket'+                   <$>+                   (o .:? "valueFrequencyLowerBound") <*>+                     (o .:? "bucketValues" .!= mempty)+                     <*> (o .:? "valueFrequencyUpperBound")+                     <*> (o .:? "bucketSize")+                     <*> (o .:? "bucketValueCount"))++instance ToJSON+           GooglePrivacyDlpV2CategoricalStatsHistogramBucket+         where+        toJSON+          GooglePrivacyDlpV2CategoricalStatsHistogramBucket'{..}+          = object+              (catMaybes+                 [("valueFrequencyLowerBound" .=) <$>+                    _gpdvcshbValueFrequencyLowerBound,+                  ("bucketValues" .=) <$> _gpdvcshbBucketValues,+                  ("valueFrequencyUpperBound" .=) <$>+                    _gpdvcshbValueFrequencyUpperBound,+                  ("bucketSize" .=) <$> _gpdvcshbBucketSize,+                  ("bucketValueCount" .=) <$>+                    _gpdvcshbBucketValueCount])++-- | All result fields mentioned below are updated while the job is+-- processing.+--+-- /See:/ 'googlePrivacyDlpV2Result' smart constructor.+data GooglePrivacyDlpV2Result =+  GooglePrivacyDlpV2Result'+    { _gpdvrProcessedBytes      :: !(Maybe (Textual Int64))+    , _gpdvrInfoTypeStats       :: !(Maybe [GooglePrivacyDlpV2InfoTypeStats])+    , _gpdvrTotalEstimatedBytes :: !(Maybe (Textual Int64))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Result' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrProcessedBytes'+--+-- * 'gpdvrInfoTypeStats'+--+-- * 'gpdvrTotalEstimatedBytes'+googlePrivacyDlpV2Result+    :: GooglePrivacyDlpV2Result+googlePrivacyDlpV2Result =+  GooglePrivacyDlpV2Result'+    { _gpdvrProcessedBytes = Nothing+    , _gpdvrInfoTypeStats = Nothing+    , _gpdvrTotalEstimatedBytes = Nothing+    }+++-- | Total size in bytes that were processed.+gpdvrProcessedBytes :: Lens' GooglePrivacyDlpV2Result (Maybe Int64)+gpdvrProcessedBytes+  = lens _gpdvrProcessedBytes+      (\ s a -> s{_gpdvrProcessedBytes = a})+      . mapping _Coerce++-- | Statistics of how many instances of each info type were found during+-- inspect job.+gpdvrInfoTypeStats :: Lens' GooglePrivacyDlpV2Result [GooglePrivacyDlpV2InfoTypeStats]+gpdvrInfoTypeStats+  = lens _gpdvrInfoTypeStats+      (\ s a -> s{_gpdvrInfoTypeStats = a})+      . _Default+      . _Coerce++-- | Estimate of the number of bytes to process.+gpdvrTotalEstimatedBytes :: Lens' GooglePrivacyDlpV2Result (Maybe Int64)+gpdvrTotalEstimatedBytes+  = lens _gpdvrTotalEstimatedBytes+      (\ s a -> s{_gpdvrTotalEstimatedBytes = a})+      . mapping _Coerce++instance FromJSON GooglePrivacyDlpV2Result where+        parseJSON+          = withObject "GooglePrivacyDlpV2Result"+              (\ o ->+                 GooglePrivacyDlpV2Result' <$>+                   (o .:? "processedBytes") <*>+                     (o .:? "infoTypeStats" .!= mempty)+                     <*> (o .:? "totalEstimatedBytes"))++instance ToJSON GooglePrivacyDlpV2Result where+        toJSON GooglePrivacyDlpV2Result'{..}+          = object+              (catMaybes+                 [("processedBytes" .=) <$> _gpdvrProcessedBytes,+                  ("infoTypeStats" .=) <$> _gpdvrInfoTypeStats,+                  ("totalEstimatedBytes" .=) <$>+                    _gpdvrTotalEstimatedBytes])++-- | The results of an inspect DataSource job.+--+-- /See:/ 'googlePrivacyDlpV2InspectDataSourceDetails' smart constructor.+data GooglePrivacyDlpV2InspectDataSourceDetails =+  GooglePrivacyDlpV2InspectDataSourceDetails'+    { _gpdvidsdResult           :: !(Maybe GooglePrivacyDlpV2Result)+    , _gpdvidsdRequestedOptions :: !(Maybe GooglePrivacyDlpV2RequestedOptions)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InspectDataSourceDetails' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvidsdResult'+--+-- * 'gpdvidsdRequestedOptions'+googlePrivacyDlpV2InspectDataSourceDetails+    :: GooglePrivacyDlpV2InspectDataSourceDetails+googlePrivacyDlpV2InspectDataSourceDetails =+  GooglePrivacyDlpV2InspectDataSourceDetails'+    {_gpdvidsdResult = Nothing, _gpdvidsdRequestedOptions = Nothing}+++-- | A summary of the outcome of this inspect job.+gpdvidsdResult :: Lens' GooglePrivacyDlpV2InspectDataSourceDetails (Maybe GooglePrivacyDlpV2Result)+gpdvidsdResult+  = lens _gpdvidsdResult+      (\ s a -> s{_gpdvidsdResult = a})++-- | The configuration used for this job.+gpdvidsdRequestedOptions :: Lens' GooglePrivacyDlpV2InspectDataSourceDetails (Maybe GooglePrivacyDlpV2RequestedOptions)+gpdvidsdRequestedOptions+  = lens _gpdvidsdRequestedOptions+      (\ s a -> s{_gpdvidsdRequestedOptions = a})++instance FromJSON+           GooglePrivacyDlpV2InspectDataSourceDetails+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2InspectDataSourceDetails"+              (\ o ->+                 GooglePrivacyDlpV2InspectDataSourceDetails' <$>+                   (o .:? "result") <*> (o .:? "requestedOptions"))++instance ToJSON+           GooglePrivacyDlpV2InspectDataSourceDetails+         where+        toJSON+          GooglePrivacyDlpV2InspectDataSourceDetails'{..}+          = object+              (catMaybes+                 [("result" .=) <$> _gpdvidsdResult,+                  ("requestedOptions" .=) <$>+                    _gpdvidsdRequestedOptions])++-- | Results of redacting an image.+--+-- /See:/ 'googlePrivacyDlpV2RedactImageResponse' smart constructor.+data GooglePrivacyDlpV2RedactImageResponse =+  GooglePrivacyDlpV2RedactImageResponse'+    { _gpdvrirExtractedText :: !(Maybe Text)+    , _gpdvrirInspectResult :: !(Maybe GooglePrivacyDlpV2InspectResult)+    , _gpdvrirRedactedImage :: !(Maybe Bytes)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2RedactImageResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrirExtractedText'+--+-- * 'gpdvrirInspectResult'+--+-- * 'gpdvrirRedactedImage'+googlePrivacyDlpV2RedactImageResponse+    :: GooglePrivacyDlpV2RedactImageResponse+googlePrivacyDlpV2RedactImageResponse =+  GooglePrivacyDlpV2RedactImageResponse'+    { _gpdvrirExtractedText = Nothing+    , _gpdvrirInspectResult = Nothing+    , _gpdvrirRedactedImage = Nothing+    }+++-- | If an image was being inspected and the InspectConfig\'s include_quote+-- was set to true, then this field will include all text, if any, that was+-- found in the image.+gpdvrirExtractedText :: Lens' GooglePrivacyDlpV2RedactImageResponse (Maybe Text)+gpdvrirExtractedText+  = lens _gpdvrirExtractedText+      (\ s a -> s{_gpdvrirExtractedText = a})++-- | The findings. Populated when include_findings in the request is true.+gpdvrirInspectResult :: Lens' GooglePrivacyDlpV2RedactImageResponse (Maybe GooglePrivacyDlpV2InspectResult)+gpdvrirInspectResult+  = lens _gpdvrirInspectResult+      (\ s a -> s{_gpdvrirInspectResult = a})++-- | The redacted image. The type will be the same as the original image.+gpdvrirRedactedImage :: Lens' GooglePrivacyDlpV2RedactImageResponse (Maybe ByteString)+gpdvrirRedactedImage+  = lens _gpdvrirRedactedImage+      (\ s a -> s{_gpdvrirRedactedImage = a})+      . mapping _Bytes++instance FromJSON+           GooglePrivacyDlpV2RedactImageResponse+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2RedactImageResponse"+              (\ o ->+                 GooglePrivacyDlpV2RedactImageResponse' <$>+                   (o .:? "extractedText") <*> (o .:? "inspectResult")+                     <*> (o .:? "redactedImage"))++instance ToJSON GooglePrivacyDlpV2RedactImageResponse+         where+        toJSON GooglePrivacyDlpV2RedactImageResponse'{..}+          = object+              (catMaybes+                 [("extractedText" .=) <$> _gpdvrirExtractedText,+                  ("inspectResult" .=) <$> _gpdvrirInspectResult,+                  ("redactedImage" .=) <$> _gpdvrirRedactedImage])++-- | Publish the results of a DlpJob to a pub sub channel. Compatible with:+-- Inspect, Risk+--+-- /See:/ 'googlePrivacyDlpV2PublishToPubSub' smart constructor.+newtype GooglePrivacyDlpV2PublishToPubSub =+  GooglePrivacyDlpV2PublishToPubSub'+    { _gpdvptpsTopic :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2PublishToPubSub' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvptpsTopic'+googlePrivacyDlpV2PublishToPubSub+    :: GooglePrivacyDlpV2PublishToPubSub+googlePrivacyDlpV2PublishToPubSub =+  GooglePrivacyDlpV2PublishToPubSub' {_gpdvptpsTopic = Nothing}+++-- | Cloud Pub\/Sub topic to send notifications to. The topic must have given+-- publishing access rights to the DLP API service account executing the+-- long running DlpJob sending the notifications. Format is+-- projects\/{project}\/topics\/{topic}.+gpdvptpsTopic :: Lens' GooglePrivacyDlpV2PublishToPubSub (Maybe Text)+gpdvptpsTopic+  = lens _gpdvptpsTopic+      (\ s a -> s{_gpdvptpsTopic = a})++instance FromJSON GooglePrivacyDlpV2PublishToPubSub+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2PublishToPubSub"+              (\ o ->+                 GooglePrivacyDlpV2PublishToPubSub' <$>+                   (o .:? "topic"))++instance ToJSON GooglePrivacyDlpV2PublishToPubSub+         where+        toJSON GooglePrivacyDlpV2PublishToPubSub'{..}+          = object+              (catMaybes [("topic" .=) <$> _gpdvptpsTopic])++-- | Row key for identifying a record in BigQuery table.+--+-- /See:/ 'googlePrivacyDlpV2BigQueryKey' smart constructor.+data GooglePrivacyDlpV2BigQueryKey =+  GooglePrivacyDlpV2BigQueryKey'+    { _gpdvbqkTableReference :: !(Maybe GooglePrivacyDlpV2BigQueryTable)+    , _gpdvbqkRowNumber      :: !(Maybe (Textual Int64))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2BigQueryKey' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvbqkTableReference'+--+-- * 'gpdvbqkRowNumber'+googlePrivacyDlpV2BigQueryKey+    :: GooglePrivacyDlpV2BigQueryKey+googlePrivacyDlpV2BigQueryKey =+  GooglePrivacyDlpV2BigQueryKey'+    {_gpdvbqkTableReference = Nothing, _gpdvbqkRowNumber = Nothing}+++-- | Complete BigQuery table reference.+gpdvbqkTableReference :: Lens' GooglePrivacyDlpV2BigQueryKey (Maybe GooglePrivacyDlpV2BigQueryTable)+gpdvbqkTableReference+  = lens _gpdvbqkTableReference+      (\ s a -> s{_gpdvbqkTableReference = a})++-- | Absolute number of the row from the beginning of the table at the time+-- of scanning.+gpdvbqkRowNumber :: Lens' GooglePrivacyDlpV2BigQueryKey (Maybe Int64)+gpdvbqkRowNumber+  = lens _gpdvbqkRowNumber+      (\ s a -> s{_gpdvbqkRowNumber = a})+      . mapping _Coerce++instance FromJSON GooglePrivacyDlpV2BigQueryKey where+        parseJSON+          = withObject "GooglePrivacyDlpV2BigQueryKey"+              (\ o ->+                 GooglePrivacyDlpV2BigQueryKey' <$>+                   (o .:? "tableReference") <*> (o .:? "rowNumber"))++instance ToJSON GooglePrivacyDlpV2BigQueryKey where+        toJSON GooglePrivacyDlpV2BigQueryKey'{..}+          = object+              (catMaybes+                 [("tableReference" .=) <$> _gpdvbqkTableReference,+                  ("rowNumber" .=) <$> _gpdvbqkRowNumber])++-- | Rule for modifying a CustomInfoType to alter behavior under certain+-- circumstances, depending on the specific details of the rule. Not+-- supported for the \`surrogate_type\` custom info type.+--+-- /See:/ 'googlePrivacyDlpV2DetectionRule' smart constructor.+newtype GooglePrivacyDlpV2DetectionRule =+  GooglePrivacyDlpV2DetectionRule'+    { _gpdvdrHotwordRule :: Maybe GooglePrivacyDlpV2HotwordRule+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DetectionRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdrHotwordRule'+googlePrivacyDlpV2DetectionRule+    :: GooglePrivacyDlpV2DetectionRule+googlePrivacyDlpV2DetectionRule =+  GooglePrivacyDlpV2DetectionRule' {_gpdvdrHotwordRule = Nothing}+++-- | Hotword-based detection rule.+gpdvdrHotwordRule :: Lens' GooglePrivacyDlpV2DetectionRule (Maybe GooglePrivacyDlpV2HotwordRule)+gpdvdrHotwordRule+  = lens _gpdvdrHotwordRule+      (\ s a -> s{_gpdvdrHotwordRule = a})++instance FromJSON GooglePrivacyDlpV2DetectionRule+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2DetectionRule"+              (\ o ->+                 GooglePrivacyDlpV2DetectionRule' <$>+                   (o .:? "hotwordRule"))++instance ToJSON GooglePrivacyDlpV2DetectionRule where+        toJSON GooglePrivacyDlpV2DetectionRule'{..}+          = object+              (catMaybes+                 [("hotwordRule" .=) <$> _gpdvdrHotwordRule])++-- | A condition for determining whether a transformation should be applied+-- to a field.+--+-- /See:/ 'googlePrivacyDlpV2RecordCondition' smart constructor.+newtype GooglePrivacyDlpV2RecordCondition =+  GooglePrivacyDlpV2RecordCondition'+    { _gpdvrcExpressions :: Maybe GooglePrivacyDlpV2Expressions+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2RecordCondition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrcExpressions'+googlePrivacyDlpV2RecordCondition+    :: GooglePrivacyDlpV2RecordCondition+googlePrivacyDlpV2RecordCondition =+  GooglePrivacyDlpV2RecordCondition' {_gpdvrcExpressions = Nothing}+++-- | An expression.+gpdvrcExpressions :: Lens' GooglePrivacyDlpV2RecordCondition (Maybe GooglePrivacyDlpV2Expressions)+gpdvrcExpressions+  = lens _gpdvrcExpressions+      (\ s a -> s{_gpdvrcExpressions = a})++instance FromJSON GooglePrivacyDlpV2RecordCondition+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2RecordCondition"+              (\ o ->+                 GooglePrivacyDlpV2RecordCondition' <$>+                   (o .:? "expressions"))++instance ToJSON GooglePrivacyDlpV2RecordCondition+         where+        toJSON GooglePrivacyDlpV2RecordCondition'{..}+          = object+              (catMaybes+                 [("expressions" .=) <$> _gpdvrcExpressions])++-- | Shifts dates by random number of days, with option to be consistent for+-- the same context. See+-- https:\/\/cloud.google.com\/dlp\/docs\/concepts-date-shifting to learn+-- more.+--+-- /See:/ 'googlePrivacyDlpV2DateShiftConfig' smart constructor.+data GooglePrivacyDlpV2DateShiftConfig =+  GooglePrivacyDlpV2DateShiftConfig'+    { _gpdvdscContext        :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvdscUpperBoundDays :: !(Maybe (Textual Int32))+    , _gpdvdscCryptoKey      :: !(Maybe GooglePrivacyDlpV2CryptoKey)+    , _gpdvdscLowerBoundDays :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DateShiftConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdscContext'+--+-- * 'gpdvdscUpperBoundDays'+--+-- * 'gpdvdscCryptoKey'+--+-- * 'gpdvdscLowerBoundDays'+googlePrivacyDlpV2DateShiftConfig+    :: GooglePrivacyDlpV2DateShiftConfig+googlePrivacyDlpV2DateShiftConfig =+  GooglePrivacyDlpV2DateShiftConfig'+    { _gpdvdscContext = Nothing+    , _gpdvdscUpperBoundDays = Nothing+    , _gpdvdscCryptoKey = Nothing+    , _gpdvdscLowerBoundDays = Nothing+    }+++-- | Points to the field that contains the context, for example, an entity+-- id. If set, must also set method. If set, shift will be consistent for+-- the given context.+gpdvdscContext :: Lens' GooglePrivacyDlpV2DateShiftConfig (Maybe GooglePrivacyDlpV2FieldId)+gpdvdscContext+  = lens _gpdvdscContext+      (\ s a -> s{_gpdvdscContext = a})++-- | Range of shift in days. Actual shift will be selected at random within+-- this range (inclusive ends). Negative means shift to earlier in time.+-- Must not be more than 365250 days (1000 years) each direction. For+-- example, 3 means shift date to at most 3 days into the future.+-- [Required]+gpdvdscUpperBoundDays :: Lens' GooglePrivacyDlpV2DateShiftConfig (Maybe Int32)+gpdvdscUpperBoundDays+  = lens _gpdvdscUpperBoundDays+      (\ s a -> s{_gpdvdscUpperBoundDays = a})+      . mapping _Coerce++-- | Causes the shift to be computed based on this key and the context. This+-- results in the same shift for the same context and crypto_key.+gpdvdscCryptoKey :: Lens' GooglePrivacyDlpV2DateShiftConfig (Maybe GooglePrivacyDlpV2CryptoKey)+gpdvdscCryptoKey+  = lens _gpdvdscCryptoKey+      (\ s a -> s{_gpdvdscCryptoKey = a})++-- | For example, -5 means shift date to at most 5 days back in the past.+-- [Required]+gpdvdscLowerBoundDays :: Lens' GooglePrivacyDlpV2DateShiftConfig (Maybe Int32)+gpdvdscLowerBoundDays+  = lens _gpdvdscLowerBoundDays+      (\ s a -> s{_gpdvdscLowerBoundDays = a})+      . mapping _Coerce++instance FromJSON GooglePrivacyDlpV2DateShiftConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2DateShiftConfig"+              (\ o ->+                 GooglePrivacyDlpV2DateShiftConfig' <$>+                   (o .:? "context") <*> (o .:? "upperBoundDays") <*>+                     (o .:? "cryptoKey")+                     <*> (o .:? "lowerBoundDays"))++instance ToJSON GooglePrivacyDlpV2DateShiftConfig+         where+        toJSON GooglePrivacyDlpV2DateShiftConfig'{..}+          = object+              (catMaybes+                 [("context" .=) <$> _gpdvdscContext,+                  ("upperBoundDays" .=) <$> _gpdvdscUpperBoundDays,+                  ("cryptoKey" .=) <$> _gpdvdscCryptoKey,+                  ("lowerBoundDays" .=) <$> _gpdvdscLowerBoundDays])++-- | Request to search for potentially sensitive info in a ContentItem.+--+-- /See:/ 'googlePrivacyDlpV2InspectContentRequest' smart constructor.+data GooglePrivacyDlpV2InspectContentRequest =+  GooglePrivacyDlpV2InspectContentRequest'+    { _gpdvicrInspectConfig       :: !(Maybe GooglePrivacyDlpV2InspectConfig)+    , _gpdvicrItem                :: !(Maybe GooglePrivacyDlpV2ContentItem)+    , _gpdvicrInspectTemplateName :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InspectContentRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvicrInspectConfig'+--+-- * 'gpdvicrItem'+--+-- * 'gpdvicrInspectTemplateName'+googlePrivacyDlpV2InspectContentRequest+    :: GooglePrivacyDlpV2InspectContentRequest+googlePrivacyDlpV2InspectContentRequest =+  GooglePrivacyDlpV2InspectContentRequest'+    { _gpdvicrInspectConfig = Nothing+    , _gpdvicrItem = Nothing+    , _gpdvicrInspectTemplateName = Nothing+    }+++-- | Configuration for the inspector. What specified here will override the+-- template referenced by the inspect_template_name argument.+gpdvicrInspectConfig :: Lens' GooglePrivacyDlpV2InspectContentRequest (Maybe GooglePrivacyDlpV2InspectConfig)+gpdvicrInspectConfig+  = lens _gpdvicrInspectConfig+      (\ s a -> s{_gpdvicrInspectConfig = a})++-- | The item to inspect.+gpdvicrItem :: Lens' GooglePrivacyDlpV2InspectContentRequest (Maybe GooglePrivacyDlpV2ContentItem)+gpdvicrItem+  = lens _gpdvicrItem (\ s a -> s{_gpdvicrItem = a})++-- | Optional template to use. Any configuration directly specified in+-- inspect_config will override those set in the template. Singular fields+-- that are set in this request will replace their corresponding fields in+-- the template. Repeated fields are appended. Singular sub-messages and+-- groups are recursively merged.+gpdvicrInspectTemplateName :: Lens' GooglePrivacyDlpV2InspectContentRequest (Maybe Text)+gpdvicrInspectTemplateName+  = lens _gpdvicrInspectTemplateName+      (\ s a -> s{_gpdvicrInspectTemplateName = a})++instance FromJSON+           GooglePrivacyDlpV2InspectContentRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2InspectContentRequest"+              (\ o ->+                 GooglePrivacyDlpV2InspectContentRequest' <$>+                   (o .:? "inspectConfig") <*> (o .:? "item") <*>+                     (o .:? "inspectTemplateName"))++instance ToJSON+           GooglePrivacyDlpV2InspectContentRequest+         where+        toJSON GooglePrivacyDlpV2InspectContentRequest'{..}+          = object+              (catMaybes+                 [("inspectConfig" .=) <$> _gpdvicrInspectConfig,+                  ("item" .=) <$> _gpdvicrItem,+                  ("inspectTemplateName" .=) <$>+                    _gpdvicrInspectTemplateName])++-- | Result of the categorical stats computation.+--+-- /See:/ 'googlePrivacyDlpV2CategoricalStatsResult' smart constructor.+newtype GooglePrivacyDlpV2CategoricalStatsResult =+  GooglePrivacyDlpV2CategoricalStatsResult'+    { _gpdvcsrValueFrequencyHistogramBuckets :: Maybe [GooglePrivacyDlpV2CategoricalStatsHistogramBucket]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CategoricalStatsResult' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcsrValueFrequencyHistogramBuckets'+googlePrivacyDlpV2CategoricalStatsResult+    :: GooglePrivacyDlpV2CategoricalStatsResult+googlePrivacyDlpV2CategoricalStatsResult =+  GooglePrivacyDlpV2CategoricalStatsResult'+    {_gpdvcsrValueFrequencyHistogramBuckets = Nothing}+++-- | Histogram of value frequencies in the column.+gpdvcsrValueFrequencyHistogramBuckets :: Lens' GooglePrivacyDlpV2CategoricalStatsResult [GooglePrivacyDlpV2CategoricalStatsHistogramBucket]+gpdvcsrValueFrequencyHistogramBuckets+  = lens _gpdvcsrValueFrequencyHistogramBuckets+      (\ s a ->+         s{_gpdvcsrValueFrequencyHistogramBuckets = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2CategoricalStatsResult+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2CategoricalStatsResult"+              (\ o ->+                 GooglePrivacyDlpV2CategoricalStatsResult' <$>+                   (o .:? "valueFrequencyHistogramBuckets" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2CategoricalStatsResult+         where+        toJSON GooglePrivacyDlpV2CategoricalStatsResult'{..}+          = object+              (catMaybes+                 [("valueFrequencyHistogramBuckets" .=) <$>+                    _gpdvcsrValueFrequencyHistogramBuckets])++-- | Result of the numerical stats computation.+--+-- /See:/ 'googlePrivacyDlpV2NumericalStatsResult' smart constructor.+data GooglePrivacyDlpV2NumericalStatsResult =+  GooglePrivacyDlpV2NumericalStatsResult'+    { _gpdvnsrMaxValue       :: !(Maybe GooglePrivacyDlpV2Value)+    , _gpdvnsrQuantileValues :: !(Maybe [GooglePrivacyDlpV2Value])+    , _gpdvnsrMinValue       :: !(Maybe GooglePrivacyDlpV2Value)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2NumericalStatsResult' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvnsrMaxValue'+--+-- * 'gpdvnsrQuantileValues'+--+-- * 'gpdvnsrMinValue'+googlePrivacyDlpV2NumericalStatsResult+    :: GooglePrivacyDlpV2NumericalStatsResult+googlePrivacyDlpV2NumericalStatsResult =+  GooglePrivacyDlpV2NumericalStatsResult'+    { _gpdvnsrMaxValue = Nothing+    , _gpdvnsrQuantileValues = Nothing+    , _gpdvnsrMinValue = Nothing+    }+++-- | Maximum value appearing in the column.+gpdvnsrMaxValue :: Lens' GooglePrivacyDlpV2NumericalStatsResult (Maybe GooglePrivacyDlpV2Value)+gpdvnsrMaxValue+  = lens _gpdvnsrMaxValue+      (\ s a -> s{_gpdvnsrMaxValue = a})++-- | List of 99 values that partition the set of field values into 100 equal+-- sized buckets.+gpdvnsrQuantileValues :: Lens' GooglePrivacyDlpV2NumericalStatsResult [GooglePrivacyDlpV2Value]+gpdvnsrQuantileValues+  = lens _gpdvnsrQuantileValues+      (\ s a -> s{_gpdvnsrQuantileValues = a})+      . _Default+      . _Coerce++-- | Minimum value appearing in the column.+gpdvnsrMinValue :: Lens' GooglePrivacyDlpV2NumericalStatsResult (Maybe GooglePrivacyDlpV2Value)+gpdvnsrMinValue+  = lens _gpdvnsrMinValue+      (\ s a -> s{_gpdvnsrMinValue = a})++instance FromJSON+           GooglePrivacyDlpV2NumericalStatsResult+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2NumericalStatsResult"+              (\ o ->+                 GooglePrivacyDlpV2NumericalStatsResult' <$>+                   (o .:? "maxValue") <*>+                     (o .:? "quantileValues" .!= mempty)+                     <*> (o .:? "minValue"))++instance ToJSON+           GooglePrivacyDlpV2NumericalStatsResult+         where+        toJSON GooglePrivacyDlpV2NumericalStatsResult'{..}+          = object+              (catMaybes+                 [("maxValue" .=) <$> _gpdvnsrMaxValue,+                  ("quantileValues" .=) <$> _gpdvnsrQuantileValues,+                  ("minValue" .=) <$> _gpdvnsrMinValue])++-- | Publish the result summary of a DlpJob to the Cloud Security Command+-- Center (CSCC Alpha). This action is only available for projects which+-- are parts of an organization and whitelisted for the alpha Cloud+-- Security Command Center. The action will publish count of finding+-- instances and their info types. The summary of findings will be+-- persisted in CSCC and are governed by CSCC service-specific policy, see+-- https:\/\/cloud.google.com\/terms\/service-terms Only a single instance+-- of this action can be specified. Compatible with: Inspect+--+-- /See:/ 'googlePrivacyDlpV2PublishSummaryToCscc' smart constructor.+data GooglePrivacyDlpV2PublishSummaryToCscc =+  GooglePrivacyDlpV2PublishSummaryToCscc'+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2PublishSummaryToCscc' with the minimum fields required to make a request.+--+googlePrivacyDlpV2PublishSummaryToCscc+    :: GooglePrivacyDlpV2PublishSummaryToCscc+googlePrivacyDlpV2PublishSummaryToCscc = GooglePrivacyDlpV2PublishSummaryToCscc'+++instance FromJSON+           GooglePrivacyDlpV2PublishSummaryToCscc+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2PublishSummaryToCscc"+              (\ o -> pure GooglePrivacyDlpV2PublishSummaryToCscc')++instance ToJSON+           GooglePrivacyDlpV2PublishSummaryToCscc+         where+        toJSON = const emptyObject++-- | Request message for UpdateInspectTemplate.+--+-- /See:/ 'googlePrivacyDlpV2UpdateInspectTemplateRequest' smart constructor.+data GooglePrivacyDlpV2UpdateInspectTemplateRequest =+  GooglePrivacyDlpV2UpdateInspectTemplateRequest'+    { _gpdvuitrUpdateMask      :: !(Maybe GFieldMask)+    , _gpdvuitrInspectTemplate :: !(Maybe GooglePrivacyDlpV2InspectTemplate)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2UpdateInspectTemplateRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvuitrUpdateMask'+--+-- * 'gpdvuitrInspectTemplate'+googlePrivacyDlpV2UpdateInspectTemplateRequest+    :: GooglePrivacyDlpV2UpdateInspectTemplateRequest+googlePrivacyDlpV2UpdateInspectTemplateRequest =+  GooglePrivacyDlpV2UpdateInspectTemplateRequest'+    {_gpdvuitrUpdateMask = Nothing, _gpdvuitrInspectTemplate = Nothing}+++-- | Mask to control which fields get updated.+gpdvuitrUpdateMask :: Lens' GooglePrivacyDlpV2UpdateInspectTemplateRequest (Maybe GFieldMask)+gpdvuitrUpdateMask+  = lens _gpdvuitrUpdateMask+      (\ s a -> s{_gpdvuitrUpdateMask = a})++-- | New InspectTemplate value.+gpdvuitrInspectTemplate :: Lens' GooglePrivacyDlpV2UpdateInspectTemplateRequest (Maybe GooglePrivacyDlpV2InspectTemplate)+gpdvuitrInspectTemplate+  = lens _gpdvuitrInspectTemplate+      (\ s a -> s{_gpdvuitrInspectTemplate = a})++instance FromJSON+           GooglePrivacyDlpV2UpdateInspectTemplateRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2UpdateInspectTemplateRequest"+              (\ o ->+                 GooglePrivacyDlpV2UpdateInspectTemplateRequest' <$>+                   (o .:? "updateMask") <*> (o .:? "inspectTemplate"))++instance ToJSON+           GooglePrivacyDlpV2UpdateInspectTemplateRequest+         where+        toJSON+          GooglePrivacyDlpV2UpdateInspectTemplateRequest'{..}+          = object+              (catMaybes+                 [("updateMask" .=) <$> _gpdvuitrUpdateMask,+                  ("inspectTemplate" .=) <$> _gpdvuitrInspectTemplate])++-- | An entity in a dataset is a field or set of fields that correspond to a+-- single person. For example, in medical records the \`EntityId\` might be+-- a patient identifier, or for financial records it might be an account+-- identifier. This message is used when generalizations or analysis must+-- take into account that multiple rows correspond to the same entity.+--+-- /See:/ 'googlePrivacyDlpV2EntityId' smart constructor.+newtype GooglePrivacyDlpV2EntityId =+  GooglePrivacyDlpV2EntityId'+    { _gpdveiField :: Maybe GooglePrivacyDlpV2FieldId+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2EntityId' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdveiField'+googlePrivacyDlpV2EntityId+    :: GooglePrivacyDlpV2EntityId+googlePrivacyDlpV2EntityId =+  GooglePrivacyDlpV2EntityId' {_gpdveiField = Nothing}+++-- | Composite key indicating which field contains the entity identifier.+gpdveiField :: Lens' GooglePrivacyDlpV2EntityId (Maybe GooglePrivacyDlpV2FieldId)+gpdveiField+  = lens _gpdveiField (\ s a -> s{_gpdveiField = a})++instance FromJSON GooglePrivacyDlpV2EntityId where+        parseJSON+          = withObject "GooglePrivacyDlpV2EntityId"+              (\ o ->+                 GooglePrivacyDlpV2EntityId' <$> (o .:? "field"))++instance ToJSON GooglePrivacyDlpV2EntityId where+        toJSON GooglePrivacyDlpV2EntityId'{..}+          = object (catMaybes [("field" .=) <$> _gpdveiField])++-- | Container for bytes to inspect or redact.+--+-- /See:/ 'googlePrivacyDlpV2ByteContentItem' smart constructor.+data GooglePrivacyDlpV2ByteContentItem =+  GooglePrivacyDlpV2ByteContentItem'+    { _gpdvbciData :: !(Maybe Bytes)+    , _gpdvbciType :: !(Maybe GooglePrivacyDlpV2ByteContentItemType)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ByteContentItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvbciData'+--+-- * 'gpdvbciType'+googlePrivacyDlpV2ByteContentItem+    :: GooglePrivacyDlpV2ByteContentItem+googlePrivacyDlpV2ByteContentItem =+  GooglePrivacyDlpV2ByteContentItem'+    {_gpdvbciData = Nothing, _gpdvbciType = Nothing}+++-- | Content data to inspect or redact.+gpdvbciData :: Lens' GooglePrivacyDlpV2ByteContentItem (Maybe ByteString)+gpdvbciData+  = lens _gpdvbciData (\ s a -> s{_gpdvbciData = a}) .+      mapping _Bytes++-- | The type of data stored in the bytes string. Default will be TEXT_UTF8.+gpdvbciType :: Lens' GooglePrivacyDlpV2ByteContentItem (Maybe GooglePrivacyDlpV2ByteContentItemType)+gpdvbciType+  = lens _gpdvbciType (\ s a -> s{_gpdvbciType = a})++instance FromJSON GooglePrivacyDlpV2ByteContentItem+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2ByteContentItem"+              (\ o ->+                 GooglePrivacyDlpV2ByteContentItem' <$>+                   (o .:? "data") <*> (o .:? "type"))++instance ToJSON GooglePrivacyDlpV2ByteContentItem+         where+        toJSON GooglePrivacyDlpV2ByteContentItem'{..}+          = object+              (catMaybes+                 [("data" .=) <$> _gpdvbciData,+                  ("type" .=) <$> _gpdvbciType])++--+-- /See:/ 'googlePrivacyDlpV2TaggedField' smart constructor.+data GooglePrivacyDlpV2TaggedField =+  GooglePrivacyDlpV2TaggedField'+    { _gpdvtfField     :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvtfInfoType  :: !(Maybe GooglePrivacyDlpV2InfoType)+    , _gpdvtfInferred  :: !(Maybe GoogleProtobufEmpty)+    , _gpdvtfCustomTag :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2TaggedField' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvtfField'+--+-- * 'gpdvtfInfoType'+--+-- * 'gpdvtfInferred'+--+-- * 'gpdvtfCustomTag'+googlePrivacyDlpV2TaggedField+    :: GooglePrivacyDlpV2TaggedField+googlePrivacyDlpV2TaggedField =+  GooglePrivacyDlpV2TaggedField'+    { _gpdvtfField = Nothing+    , _gpdvtfInfoType = Nothing+    , _gpdvtfInferred = Nothing+    , _gpdvtfCustomTag = Nothing+    }+++-- | Identifies the column. [required]+gpdvtfField :: Lens' GooglePrivacyDlpV2TaggedField (Maybe GooglePrivacyDlpV2FieldId)+gpdvtfField+  = lens _gpdvtfField (\ s a -> s{_gpdvtfField = a})++-- | A column can be tagged with a InfoType to use the relevant public+-- dataset as a statistical model of population, if available. We currently+-- support US ZIP codes, region codes, ages and genders. To+-- programmatically obtain the list of supported InfoTypes, use+-- ListInfoTypes with the supported_by=RISK_ANALYSIS filter.+gpdvtfInfoType :: Lens' GooglePrivacyDlpV2TaggedField (Maybe GooglePrivacyDlpV2InfoType)+gpdvtfInfoType+  = lens _gpdvtfInfoType+      (\ s a -> s{_gpdvtfInfoType = a})++-- | If no semantic tag is indicated, we infer the statistical model from the+-- distribution of values in the input data+gpdvtfInferred :: Lens' GooglePrivacyDlpV2TaggedField (Maybe GoogleProtobufEmpty)+gpdvtfInferred+  = lens _gpdvtfInferred+      (\ s a -> s{_gpdvtfInferred = a})++-- | A column can be tagged with a custom tag. In this case, the user must+-- indicate an auxiliary table that contains statistical information on the+-- possible values of this column (below).+gpdvtfCustomTag :: Lens' GooglePrivacyDlpV2TaggedField (Maybe Text)+gpdvtfCustomTag+  = lens _gpdvtfCustomTag+      (\ s a -> s{_gpdvtfCustomTag = a})++instance FromJSON GooglePrivacyDlpV2TaggedField where+        parseJSON+          = withObject "GooglePrivacyDlpV2TaggedField"+              (\ o ->+                 GooglePrivacyDlpV2TaggedField' <$>+                   (o .:? "field") <*> (o .:? "infoType") <*>+                     (o .:? "inferred")+                     <*> (o .:? "customTag"))++instance ToJSON GooglePrivacyDlpV2TaggedField where+        toJSON GooglePrivacyDlpV2TaggedField'{..}+          = object+              (catMaybes+                 [("field" .=) <$> _gpdvtfField,+                  ("infoType" .=) <$> _gpdvtfInfoType,+                  ("inferred" .=) <$> _gpdvtfInferred,+                  ("customTag" .=) <$> _gpdvtfCustomTag])++-- | Options defining BigQuery table and row identifiers.+--+-- /See:/ 'googlePrivacyDlpV2BigQueryOptions' smart constructor.+data GooglePrivacyDlpV2BigQueryOptions =+  GooglePrivacyDlpV2BigQueryOptions'+    { _gpdvbqoRowsLimit         :: !(Maybe (Textual Int64))+    , _gpdvbqoRowsLimitPercent  :: !(Maybe (Textual Int32))+    , _gpdvbqoTableReference    :: !(Maybe GooglePrivacyDlpV2BigQueryTable)+    , _gpdvbqoIdentifyingFields :: !(Maybe [GooglePrivacyDlpV2FieldId])+    , _gpdvbqoExcludedFields    :: !(Maybe [GooglePrivacyDlpV2FieldId])+    , _gpdvbqoSampleMethod      :: !(Maybe GooglePrivacyDlpV2BigQueryOptionsSampleMethod)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2BigQueryOptions' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvbqoRowsLimit'+--+-- * 'gpdvbqoRowsLimitPercent'+--+-- * 'gpdvbqoTableReference'+--+-- * 'gpdvbqoIdentifyingFields'+--+-- * 'gpdvbqoExcludedFields'+--+-- * 'gpdvbqoSampleMethod'+googlePrivacyDlpV2BigQueryOptions+    :: GooglePrivacyDlpV2BigQueryOptions+googlePrivacyDlpV2BigQueryOptions =+  GooglePrivacyDlpV2BigQueryOptions'+    { _gpdvbqoRowsLimit = Nothing+    , _gpdvbqoRowsLimitPercent = Nothing+    , _gpdvbqoTableReference = Nothing+    , _gpdvbqoIdentifyingFields = Nothing+    , _gpdvbqoExcludedFields = Nothing+    , _gpdvbqoSampleMethod = Nothing+    }+++-- | Max number of rows to scan. If the table has more rows than this value,+-- the rest of the rows are omitted. If not set, or if set to 0, all rows+-- will be scanned. Only one of rows_limit and rows_limit_percent can be+-- specified. Cannot be used in conjunction with TimespanConfig.+gpdvbqoRowsLimit :: Lens' GooglePrivacyDlpV2BigQueryOptions (Maybe Int64)+gpdvbqoRowsLimit+  = lens _gpdvbqoRowsLimit+      (\ s a -> s{_gpdvbqoRowsLimit = a})+      . mapping _Coerce++-- | Max percentage of rows to scan. The rest are omitted. The number of rows+-- scanned is rounded down. Must be between 0 and 100, inclusively. Both 0+-- and 100 means no limit. Defaults to 0. Only one of rows_limit and+-- rows_limit_percent can be specified. Cannot be used in conjunction with+-- TimespanConfig.+gpdvbqoRowsLimitPercent :: Lens' GooglePrivacyDlpV2BigQueryOptions (Maybe Int32)+gpdvbqoRowsLimitPercent+  = lens _gpdvbqoRowsLimitPercent+      (\ s a -> s{_gpdvbqoRowsLimitPercent = a})+      . mapping _Coerce++-- | Complete BigQuery table reference.+gpdvbqoTableReference :: Lens' GooglePrivacyDlpV2BigQueryOptions (Maybe GooglePrivacyDlpV2BigQueryTable)+gpdvbqoTableReference+  = lens _gpdvbqoTableReference+      (\ s a -> s{_gpdvbqoTableReference = a})++-- | References to fields uniquely identifying rows within the table. Nested+-- fields in the format, like \`person.birthdate.year\`, are allowed.+gpdvbqoIdentifyingFields :: Lens' GooglePrivacyDlpV2BigQueryOptions [GooglePrivacyDlpV2FieldId]+gpdvbqoIdentifyingFields+  = lens _gpdvbqoIdentifyingFields+      (\ s a -> s{_gpdvbqoIdentifyingFields = a})+      . _Default+      . _Coerce++-- | References to fields excluded from scanning. This allows you to skip+-- inspection of entire columns which you know have no findings.+gpdvbqoExcludedFields :: Lens' GooglePrivacyDlpV2BigQueryOptions [GooglePrivacyDlpV2FieldId]+gpdvbqoExcludedFields+  = lens _gpdvbqoExcludedFields+      (\ s a -> s{_gpdvbqoExcludedFields = a})+      . _Default+      . _Coerce++gpdvbqoSampleMethod :: Lens' GooglePrivacyDlpV2BigQueryOptions (Maybe GooglePrivacyDlpV2BigQueryOptionsSampleMethod)+gpdvbqoSampleMethod+  = lens _gpdvbqoSampleMethod+      (\ s a -> s{_gpdvbqoSampleMethod = a})++instance FromJSON GooglePrivacyDlpV2BigQueryOptions+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2BigQueryOptions"+              (\ o ->+                 GooglePrivacyDlpV2BigQueryOptions' <$>+                   (o .:? "rowsLimit") <*> (o .:? "rowsLimitPercent")+                     <*> (o .:? "tableReference")+                     <*> (o .:? "identifyingFields" .!= mempty)+                     <*> (o .:? "excludedFields" .!= mempty)+                     <*> (o .:? "sampleMethod"))++instance ToJSON GooglePrivacyDlpV2BigQueryOptions+         where+        toJSON GooglePrivacyDlpV2BigQueryOptions'{..}+          = object+              (catMaybes+                 [("rowsLimit" .=) <$> _gpdvbqoRowsLimit,+                  ("rowsLimitPercent" .=) <$> _gpdvbqoRowsLimitPercent,+                  ("tableReference" .=) <$> _gpdvbqoTableReference,+                  ("identifyingFields" .=) <$>+                    _gpdvbqoIdentifyingFields,+                  ("excludedFields" .=) <$> _gpdvbqoExcludedFields,+                  ("sampleMethod" .=) <$> _gpdvbqoSampleMethod])++-- | A tuple of values for the quasi-identifier columns.+--+-- /See:/ 'googlePrivacyDlpV2KMapEstimationQuasiIdValues' smart constructor.+data GooglePrivacyDlpV2KMapEstimationQuasiIdValues =+  GooglePrivacyDlpV2KMapEstimationQuasiIdValues'+    { _gpdvkmeqivEstimatedAnonymity :: !(Maybe (Textual Int64))+    , _gpdvkmeqivQuasiIdsValues     :: !(Maybe [GooglePrivacyDlpV2Value])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2KMapEstimationQuasiIdValues' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvkmeqivEstimatedAnonymity'+--+-- * 'gpdvkmeqivQuasiIdsValues'+googlePrivacyDlpV2KMapEstimationQuasiIdValues+    :: GooglePrivacyDlpV2KMapEstimationQuasiIdValues+googlePrivacyDlpV2KMapEstimationQuasiIdValues =+  GooglePrivacyDlpV2KMapEstimationQuasiIdValues'+    { _gpdvkmeqivEstimatedAnonymity = Nothing+    , _gpdvkmeqivQuasiIdsValues = Nothing+    }+++-- | The estimated anonymity for these quasi-identifier values.+gpdvkmeqivEstimatedAnonymity :: Lens' GooglePrivacyDlpV2KMapEstimationQuasiIdValues (Maybe Int64)+gpdvkmeqivEstimatedAnonymity+  = lens _gpdvkmeqivEstimatedAnonymity+      (\ s a -> s{_gpdvkmeqivEstimatedAnonymity = a})+      . mapping _Coerce++-- | The quasi-identifier values.+gpdvkmeqivQuasiIdsValues :: Lens' GooglePrivacyDlpV2KMapEstimationQuasiIdValues [GooglePrivacyDlpV2Value]+gpdvkmeqivQuasiIdsValues+  = lens _gpdvkmeqivQuasiIdsValues+      (\ s a -> s{_gpdvkmeqivQuasiIdsValues = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2KMapEstimationQuasiIdValues+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2KMapEstimationQuasiIdValues"+              (\ o ->+                 GooglePrivacyDlpV2KMapEstimationQuasiIdValues' <$>+                   (o .:? "estimatedAnonymity") <*>+                     (o .:? "quasiIdsValues" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2KMapEstimationQuasiIdValues+         where+        toJSON+          GooglePrivacyDlpV2KMapEstimationQuasiIdValues'{..}+          = object+              (catMaybes+                 [("estimatedAnonymity" .=) <$>+                    _gpdvkmeqivEstimatedAnonymity,+                  ("quasiIdsValues" .=) <$> _gpdvkmeqivQuasiIdsValues])++-- | List of exclude infoTypes.+--+-- /See:/ 'googlePrivacyDlpV2ExcludeInfoTypes' smart constructor.+newtype GooglePrivacyDlpV2ExcludeInfoTypes =+  GooglePrivacyDlpV2ExcludeInfoTypes'+    { _gpdveitInfoTypes :: Maybe [GooglePrivacyDlpV2InfoType]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ExcludeInfoTypes' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdveitInfoTypes'+googlePrivacyDlpV2ExcludeInfoTypes+    :: GooglePrivacyDlpV2ExcludeInfoTypes+googlePrivacyDlpV2ExcludeInfoTypes =+  GooglePrivacyDlpV2ExcludeInfoTypes' {_gpdveitInfoTypes = Nothing}+++-- | InfoType list in ExclusionRule rule drops a finding when it overlaps or+-- contained within with a finding of an infoType from this list. For+-- example, for \`InspectionRuleSet.info_types\` containing+-- \"PHONE_NUMBER\"\` and \`exclusion_rule\` containing+-- \`exclude_info_types.info_types\` with \"EMAIL_ADDRESS\" the phone+-- number findings are dropped if they overlap with EMAIL_ADDRESS finding.+-- That leads to \"555-222-2222\'example.org\" to generate only a single+-- finding, namely email address.+gpdveitInfoTypes :: Lens' GooglePrivacyDlpV2ExcludeInfoTypes [GooglePrivacyDlpV2InfoType]+gpdveitInfoTypes+  = lens _gpdveitInfoTypes+      (\ s a -> s{_gpdveitInfoTypes = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2ExcludeInfoTypes+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2ExcludeInfoTypes"+              (\ o ->+                 GooglePrivacyDlpV2ExcludeInfoTypes' <$>+                   (o .:? "infoTypes" .!= mempty))++instance ToJSON GooglePrivacyDlpV2ExcludeInfoTypes+         where+        toJSON GooglePrivacyDlpV2ExcludeInfoTypes'{..}+          = object+              (catMaybes [("infoTypes" .=) <$> _gpdveitInfoTypes])++-- | Request message for CreateInspectTemplate.+--+-- /See:/ 'googlePrivacyDlpV2CreateInspectTemplateRequest' smart constructor.+data GooglePrivacyDlpV2CreateInspectTemplateRequest =+  GooglePrivacyDlpV2CreateInspectTemplateRequest'+    { _gpdvcitrTemplateId      :: !(Maybe Text)+    , _gpdvcitrInspectTemplate :: !(Maybe GooglePrivacyDlpV2InspectTemplate)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CreateInspectTemplateRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcitrTemplateId'+--+-- * 'gpdvcitrInspectTemplate'+googlePrivacyDlpV2CreateInspectTemplateRequest+    :: GooglePrivacyDlpV2CreateInspectTemplateRequest+googlePrivacyDlpV2CreateInspectTemplateRequest =+  GooglePrivacyDlpV2CreateInspectTemplateRequest'+    {_gpdvcitrTemplateId = Nothing, _gpdvcitrInspectTemplate = Nothing}+++-- | The template id can contain uppercase and lowercase letters, numbers,+-- and hyphens; that is, it must match the regular expression:+-- \`[a-zA-Z\\\\d-_]+\`. The maximum length is 100 characters. Can be empty+-- to allow the system to generate one.+gpdvcitrTemplateId :: Lens' GooglePrivacyDlpV2CreateInspectTemplateRequest (Maybe Text)+gpdvcitrTemplateId+  = lens _gpdvcitrTemplateId+      (\ s a -> s{_gpdvcitrTemplateId = a})++-- | The InspectTemplate to create.+gpdvcitrInspectTemplate :: Lens' GooglePrivacyDlpV2CreateInspectTemplateRequest (Maybe GooglePrivacyDlpV2InspectTemplate)+gpdvcitrInspectTemplate+  = lens _gpdvcitrInspectTemplate+      (\ s a -> s{_gpdvcitrInspectTemplate = a})++instance FromJSON+           GooglePrivacyDlpV2CreateInspectTemplateRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2CreateInspectTemplateRequest"+              (\ o ->+                 GooglePrivacyDlpV2CreateInspectTemplateRequest' <$>+                   (o .:? "templateId") <*> (o .:? "inspectTemplate"))++instance ToJSON+           GooglePrivacyDlpV2CreateInspectTemplateRequest+         where+        toJSON+          GooglePrivacyDlpV2CreateInspectTemplateRequest'{..}+          = object+              (catMaybes+                 [("templateId" .=) <$> _gpdvcitrTemplateId,+                  ("inspectTemplate" .=) <$> _gpdvcitrInspectTemplate])++-- | A (kind, ID\/name) pair used to construct a key path. If either name or+-- ID is set, the element is complete. If neither is set, the element is+-- incomplete.+--+-- /See:/ 'googlePrivacyDlpV2PathElement' smart constructor.+data GooglePrivacyDlpV2PathElement =+  GooglePrivacyDlpV2PathElement'+    { _gpdvpeKind :: !(Maybe Text)+    , _gpdvpeName :: !(Maybe Text)+    , _gpdvpeId   :: !(Maybe (Textual Int64))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2PathElement' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvpeKind'+--+-- * 'gpdvpeName'+--+-- * 'gpdvpeId'+googlePrivacyDlpV2PathElement+    :: GooglePrivacyDlpV2PathElement+googlePrivacyDlpV2PathElement =+  GooglePrivacyDlpV2PathElement'+    {_gpdvpeKind = Nothing, _gpdvpeName = Nothing, _gpdvpeId = Nothing}+++-- | The kind of the entity. A kind matching regex \`__.*__\` is+-- reserved\/read-only. A kind must not contain more than 1500 bytes when+-- UTF-8 encoded. Cannot be \`\"\"\`.+gpdvpeKind :: Lens' GooglePrivacyDlpV2PathElement (Maybe Text)+gpdvpeKind+  = lens _gpdvpeKind (\ s a -> s{_gpdvpeKind = a})++-- | The name of the entity. A name matching regex \`__.*__\` is+-- reserved\/read-only. A name must not be more than 1500 bytes when UTF-8+-- encoded. Cannot be \`\"\"\`.+gpdvpeName :: Lens' GooglePrivacyDlpV2PathElement (Maybe Text)+gpdvpeName+  = lens _gpdvpeName (\ s a -> s{_gpdvpeName = a})++-- | The auto-allocated ID of the entity. Never equal to zero. Values less+-- than zero are discouraged and may not be supported in the future.+gpdvpeId :: Lens' GooglePrivacyDlpV2PathElement (Maybe Int64)+gpdvpeId+  = lens _gpdvpeId (\ s a -> s{_gpdvpeId = a}) .+      mapping _Coerce++instance FromJSON GooglePrivacyDlpV2PathElement where+        parseJSON+          = withObject "GooglePrivacyDlpV2PathElement"+              (\ o ->+                 GooglePrivacyDlpV2PathElement' <$>+                   (o .:? "kind") <*> (o .:? "name") <*> (o .:? "id"))++instance ToJSON GooglePrivacyDlpV2PathElement where+        toJSON GooglePrivacyDlpV2PathElement'{..}+          = object+              (catMaybes+                 [("kind" .=) <$> _gpdvpeKind,+                  ("name" .=) <$> _gpdvpeName,+                  ("id" .=) <$> _gpdvpeId])++-- | Result of the δ-presence computation. Note that these results are an+-- estimation, not exact values.+--+-- /See:/ 'googlePrivacyDlpV2DeltaPresenceEstimationResult' smart constructor.+newtype GooglePrivacyDlpV2DeltaPresenceEstimationResult =+  GooglePrivacyDlpV2DeltaPresenceEstimationResult'+    { _gpdvdperDeltaPresenceEstimationHistogram :: Maybe [GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DeltaPresenceEstimationResult' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdperDeltaPresenceEstimationHistogram'+googlePrivacyDlpV2DeltaPresenceEstimationResult+    :: GooglePrivacyDlpV2DeltaPresenceEstimationResult+googlePrivacyDlpV2DeltaPresenceEstimationResult =+  GooglePrivacyDlpV2DeltaPresenceEstimationResult'+    {_gpdvdperDeltaPresenceEstimationHistogram = Nothing}+++-- | The intervals [min_probability, max_probability) do not overlap. If a+-- value doesn\'t correspond to any such interval, the associated frequency+-- is zero. For example, the following records: {min_probability: 0,+-- max_probability: 0.1, frequency: 17} {min_probability: 0.2,+-- max_probability: 0.3, frequency: 42} {min_probability: 0.3,+-- max_probability: 0.4, frequency: 99} mean that there are no record with+-- an estimated probability in [0.1, 0.2) nor larger or equal to 0.4.+gpdvdperDeltaPresenceEstimationHistogram :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationResult [GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket]+gpdvdperDeltaPresenceEstimationHistogram+  = lens _gpdvdperDeltaPresenceEstimationHistogram+      (\ s a ->+         s{_gpdvdperDeltaPresenceEstimationHistogram = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2DeltaPresenceEstimationResult+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2DeltaPresenceEstimationResult"+              (\ o ->+                 GooglePrivacyDlpV2DeltaPresenceEstimationResult' <$>+                   (o .:? "deltaPresenceEstimationHistogram" .!=+                      mempty))++instance ToJSON+           GooglePrivacyDlpV2DeltaPresenceEstimationResult+         where+        toJSON+          GooglePrivacyDlpV2DeltaPresenceEstimationResult'{..}+          = object+              (catMaybes+                 [("deltaPresenceEstimationHistogram" .=) <$>+                    _gpdvdperDeltaPresenceEstimationHistogram])++--+-- /See:/ 'googlePrivacyDlpV2InspectJobConfig' smart constructor.+data GooglePrivacyDlpV2InspectJobConfig =+  GooglePrivacyDlpV2InspectJobConfig'+    { _gpdvijcActions             :: !(Maybe [GooglePrivacyDlpV2Action])+    , _gpdvijcStorageConfig       :: !(Maybe GooglePrivacyDlpV2StorageConfig)+    , _gpdvijcInspectConfig       :: !(Maybe GooglePrivacyDlpV2InspectConfig)+    , _gpdvijcInspectTemplateName :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InspectJobConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvijcActions'+--+-- * 'gpdvijcStorageConfig'+--+-- * 'gpdvijcInspectConfig'+--+-- * 'gpdvijcInspectTemplateName'+googlePrivacyDlpV2InspectJobConfig+    :: GooglePrivacyDlpV2InspectJobConfig+googlePrivacyDlpV2InspectJobConfig =+  GooglePrivacyDlpV2InspectJobConfig'+    { _gpdvijcActions = Nothing+    , _gpdvijcStorageConfig = Nothing+    , _gpdvijcInspectConfig = Nothing+    , _gpdvijcInspectTemplateName = Nothing+    }+++-- | Actions to execute at the completion of the job.+gpdvijcActions :: Lens' GooglePrivacyDlpV2InspectJobConfig [GooglePrivacyDlpV2Action]+gpdvijcActions+  = lens _gpdvijcActions+      (\ s a -> s{_gpdvijcActions = a})+      . _Default+      . _Coerce++-- | The data to scan.+gpdvijcStorageConfig :: Lens' GooglePrivacyDlpV2InspectJobConfig (Maybe GooglePrivacyDlpV2StorageConfig)+gpdvijcStorageConfig+  = lens _gpdvijcStorageConfig+      (\ s a -> s{_gpdvijcStorageConfig = a})++-- | How and what to scan for.+gpdvijcInspectConfig :: Lens' GooglePrivacyDlpV2InspectJobConfig (Maybe GooglePrivacyDlpV2InspectConfig)+gpdvijcInspectConfig+  = lens _gpdvijcInspectConfig+      (\ s a -> s{_gpdvijcInspectConfig = a})++-- | If provided, will be used as the default for all values in+-- InspectConfig. \`inspect_config\` will be merged into the values+-- persisted as part of the template.+gpdvijcInspectTemplateName :: Lens' GooglePrivacyDlpV2InspectJobConfig (Maybe Text)+gpdvijcInspectTemplateName+  = lens _gpdvijcInspectTemplateName+      (\ s a -> s{_gpdvijcInspectTemplateName = a})++instance FromJSON GooglePrivacyDlpV2InspectJobConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2InspectJobConfig"+              (\ o ->+                 GooglePrivacyDlpV2InspectJobConfig' <$>+                   (o .:? "actions" .!= mempty) <*>+                     (o .:? "storageConfig")+                     <*> (o .:? "inspectConfig")+                     <*> (o .:? "inspectTemplateName"))++instance ToJSON GooglePrivacyDlpV2InspectJobConfig+         where+        toJSON GooglePrivacyDlpV2InspectJobConfig'{..}+          = object+              (catMaybes+                 [("actions" .=) <$> _gpdvijcActions,+                  ("storageConfig" .=) <$> _gpdvijcStorageConfig,+                  ("inspectConfig" .=) <$> _gpdvijcInspectConfig,+                  ("inspectTemplateName" .=) <$>+                    _gpdvijcInspectTemplateName])++-- | A reference to a StoredInfoType to use with scanning.+--+-- /See:/ 'googlePrivacyDlpV2StoredType' smart constructor.+data GooglePrivacyDlpV2StoredType =+  GooglePrivacyDlpV2StoredType'+    { _gpdvstName       :: !(Maybe Text)+    , _gpdvstCreateTime :: !(Maybe DateTime')+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2StoredType' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvstName'+--+-- * 'gpdvstCreateTime'+googlePrivacyDlpV2StoredType+    :: GooglePrivacyDlpV2StoredType+googlePrivacyDlpV2StoredType =+  GooglePrivacyDlpV2StoredType'+    {_gpdvstName = Nothing, _gpdvstCreateTime = Nothing}+++-- | Resource name of the requested \`StoredInfoType\`, for example+-- \`organizations\/433245324\/storedInfoTypes\/432452342\` or+-- \`projects\/project-id\/storedInfoTypes\/432452342\`.+gpdvstName :: Lens' GooglePrivacyDlpV2StoredType (Maybe Text)+gpdvstName+  = lens _gpdvstName (\ s a -> s{_gpdvstName = a})++-- | Timestamp indicating when the version of the \`StoredInfoType\` used for+-- inspection was created. Output-only field, populated by the system.+gpdvstCreateTime :: Lens' GooglePrivacyDlpV2StoredType (Maybe UTCTime)+gpdvstCreateTime+  = lens _gpdvstCreateTime+      (\ s a -> s{_gpdvstCreateTime = a})+      . mapping _DateTime++instance FromJSON GooglePrivacyDlpV2StoredType where+        parseJSON+          = withObject "GooglePrivacyDlpV2StoredType"+              (\ o ->+                 GooglePrivacyDlpV2StoredType' <$>+                   (o .:? "name") <*> (o .:? "createTime"))++instance ToJSON GooglePrivacyDlpV2StoredType where+        toJSON GooglePrivacyDlpV2StoredType'{..}+          = object+              (catMaybes+                 [("name" .=) <$> _gpdvstName,+                  ("createTime" .=) <$> _gpdvstCreateTime])++-- | The transformation to apply to the field.+--+-- /See:/ 'googlePrivacyDlpV2FieldTransformation' smart constructor.+data GooglePrivacyDlpV2FieldTransformation =+  GooglePrivacyDlpV2FieldTransformation'+    { _gpdvftInfoTypeTransformations :: !(Maybe GooglePrivacyDlpV2InfoTypeTransformations)+    , _gpdvftPrimitiveTransformation :: !(Maybe GooglePrivacyDlpV2PrimitiveTransformation)+    , _gpdvftCondition               :: !(Maybe GooglePrivacyDlpV2RecordCondition)+    , _gpdvftFields                  :: !(Maybe [GooglePrivacyDlpV2FieldId])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2FieldTransformation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvftInfoTypeTransformations'+--+-- * 'gpdvftPrimitiveTransformation'+--+-- * 'gpdvftCondition'+--+-- * 'gpdvftFields'+googlePrivacyDlpV2FieldTransformation+    :: GooglePrivacyDlpV2FieldTransformation+googlePrivacyDlpV2FieldTransformation =+  GooglePrivacyDlpV2FieldTransformation'+    { _gpdvftInfoTypeTransformations = Nothing+    , _gpdvftPrimitiveTransformation = Nothing+    , _gpdvftCondition = Nothing+    , _gpdvftFields = Nothing+    }+++-- | Treat the contents of the field as free text, and selectively transform+-- content that matches an \`InfoType\`.+gpdvftInfoTypeTransformations :: Lens' GooglePrivacyDlpV2FieldTransformation (Maybe GooglePrivacyDlpV2InfoTypeTransformations)+gpdvftInfoTypeTransformations+  = lens _gpdvftInfoTypeTransformations+      (\ s a -> s{_gpdvftInfoTypeTransformations = a})++-- | Apply the transformation to the entire field.+gpdvftPrimitiveTransformation :: Lens' GooglePrivacyDlpV2FieldTransformation (Maybe GooglePrivacyDlpV2PrimitiveTransformation)+gpdvftPrimitiveTransformation+  = lens _gpdvftPrimitiveTransformation+      (\ s a -> s{_gpdvftPrimitiveTransformation = a})++-- | Only apply the transformation if the condition evaluates to true for the+-- given \`RecordCondition\`. The conditions are allowed to reference+-- fields that are not used in the actual transformation. [optional]+-- Example Use Cases: - Apply a different bucket transformation to an age+-- column if the zip code column for the same record is within a specific+-- range. - Redact a field if the date of birth field is greater than 85.+gpdvftCondition :: Lens' GooglePrivacyDlpV2FieldTransformation (Maybe GooglePrivacyDlpV2RecordCondition)+gpdvftCondition+  = lens _gpdvftCondition+      (\ s a -> s{_gpdvftCondition = a})++-- | Input field(s) to apply the transformation to. [required]+gpdvftFields :: Lens' GooglePrivacyDlpV2FieldTransformation [GooglePrivacyDlpV2FieldId]+gpdvftFields+  = lens _gpdvftFields (\ s a -> s{_gpdvftFields = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2FieldTransformation+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2FieldTransformation"+              (\ o ->+                 GooglePrivacyDlpV2FieldTransformation' <$>+                   (o .:? "infoTypeTransformations") <*>+                     (o .:? "primitiveTransformation")+                     <*> (o .:? "condition")+                     <*> (o .:? "fields" .!= mempty))++instance ToJSON GooglePrivacyDlpV2FieldTransformation+         where+        toJSON GooglePrivacyDlpV2FieldTransformation'{..}+          = object+              (catMaybes+                 [("infoTypeTransformations" .=) <$>+                    _gpdvftInfoTypeTransformations,+                  ("primitiveTransformation" .=) <$>+                    _gpdvftPrimitiveTransformation,+                  ("condition" .=) <$> _gpdvftCondition,+                  ("fields" .=) <$> _gpdvftFields])++-- | The rule that adjusts the likelihood of findings within a certain+-- proximity of hotwords.+--+-- /See:/ 'googlePrivacyDlpV2HotwordRule' smart constructor.+data GooglePrivacyDlpV2HotwordRule =+  GooglePrivacyDlpV2HotwordRule'+    { _gpdvhrProximity            :: !(Maybe GooglePrivacyDlpV2Proximity)+    , _gpdvhrLikelihoodAdjustment :: !(Maybe GooglePrivacyDlpV2LikelihoodAdjustment)+    , _gpdvhrHotwordRegex         :: !(Maybe GooglePrivacyDlpV2Regex)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2HotwordRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvhrProximity'+--+-- * 'gpdvhrLikelihoodAdjustment'+--+-- * 'gpdvhrHotwordRegex'+googlePrivacyDlpV2HotwordRule+    :: GooglePrivacyDlpV2HotwordRule+googlePrivacyDlpV2HotwordRule =+  GooglePrivacyDlpV2HotwordRule'+    { _gpdvhrProximity = Nothing+    , _gpdvhrLikelihoodAdjustment = Nothing+    , _gpdvhrHotwordRegex = Nothing+    }+++-- | Proximity of the finding within which the entire hotword must reside.+-- The total length of the window cannot exceed 1000 characters. Note that+-- the finding itself will be included in the window, so that hotwords may+-- be used to match substrings of the finding itself. For example, the+-- certainty of a phone number regex \"\\(\\d{3}\\) \\d{3}-\\d{4}\" could+-- be adjusted upwards if the area code is known to be the local area code+-- of a company office using the hotword regex \"\\(xxx\\)\", where \"xxx\"+-- is the area code in question.+gpdvhrProximity :: Lens' GooglePrivacyDlpV2HotwordRule (Maybe GooglePrivacyDlpV2Proximity)+gpdvhrProximity+  = lens _gpdvhrProximity+      (\ s a -> s{_gpdvhrProximity = a})++-- | Likelihood adjustment to apply to all matching findings.+gpdvhrLikelihoodAdjustment :: Lens' GooglePrivacyDlpV2HotwordRule (Maybe GooglePrivacyDlpV2LikelihoodAdjustment)+gpdvhrLikelihoodAdjustment+  = lens _gpdvhrLikelihoodAdjustment+      (\ s a -> s{_gpdvhrLikelihoodAdjustment = a})++-- | Regular expression pattern defining what qualifies as a hotword.+gpdvhrHotwordRegex :: Lens' GooglePrivacyDlpV2HotwordRule (Maybe GooglePrivacyDlpV2Regex)+gpdvhrHotwordRegex+  = lens _gpdvhrHotwordRegex+      (\ s a -> s{_gpdvhrHotwordRegex = a})++instance FromJSON GooglePrivacyDlpV2HotwordRule where+        parseJSON+          = withObject "GooglePrivacyDlpV2HotwordRule"+              (\ o ->+                 GooglePrivacyDlpV2HotwordRule' <$>+                   (o .:? "proximity") <*>+                     (o .:? "likelihoodAdjustment")+                     <*> (o .:? "hotwordRegex"))++instance ToJSON GooglePrivacyDlpV2HotwordRule where+        toJSON GooglePrivacyDlpV2HotwordRule'{..}+          = object+              (catMaybes+                 [("proximity" .=) <$> _gpdvhrProximity,+                  ("likelihoodAdjustment" .=) <$>+                    _gpdvhrLikelihoodAdjustment,+                  ("hotwordRegex" .=) <$> _gpdvhrHotwordRegex])++-- | Request to search for potentially sensitive info in an image and redact+-- it by covering it with a colored rectangle.+--+-- /See:/ 'googlePrivacyDlpV2RedactImageRequest' smart constructor.+data GooglePrivacyDlpV2RedactImageRequest =+  GooglePrivacyDlpV2RedactImageRequest'+    { _gpdvrirIncludeFindings       :: !(Maybe Bool)+    , _gpdvrirInspectConfig         :: !(Maybe GooglePrivacyDlpV2InspectConfig)+    , _gpdvrirByteItem              :: !(Maybe GooglePrivacyDlpV2ByteContentItem)+    , _gpdvrirImageRedactionConfigs :: !(Maybe [GooglePrivacyDlpV2ImageRedactionConfig])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2RedactImageRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrirIncludeFindings'+--+-- * 'gpdvrirInspectConfig'+--+-- * 'gpdvrirByteItem'+--+-- * 'gpdvrirImageRedactionConfigs'+googlePrivacyDlpV2RedactImageRequest+    :: GooglePrivacyDlpV2RedactImageRequest+googlePrivacyDlpV2RedactImageRequest =+  GooglePrivacyDlpV2RedactImageRequest'+    { _gpdvrirIncludeFindings = Nothing+    , _gpdvrirInspectConfig = Nothing+    , _gpdvrirByteItem = Nothing+    , _gpdvrirImageRedactionConfigs = Nothing+    }+++-- | Whether the response should include findings along with the redacted+-- image.+gpdvrirIncludeFindings :: Lens' GooglePrivacyDlpV2RedactImageRequest (Maybe Bool)+gpdvrirIncludeFindings+  = lens _gpdvrirIncludeFindings+      (\ s a -> s{_gpdvrirIncludeFindings = a})++-- | Configuration for the inspector.+gpdvrirInspectConfig :: Lens' GooglePrivacyDlpV2RedactImageRequest (Maybe GooglePrivacyDlpV2InspectConfig)+gpdvrirInspectConfig+  = lens _gpdvrirInspectConfig+      (\ s a -> s{_gpdvrirInspectConfig = a})++-- | The content must be PNG, JPEG, SVG or BMP.+gpdvrirByteItem :: Lens' GooglePrivacyDlpV2RedactImageRequest (Maybe GooglePrivacyDlpV2ByteContentItem)+gpdvrirByteItem+  = lens _gpdvrirByteItem+      (\ s a -> s{_gpdvrirByteItem = a})++-- | The configuration for specifying what content to redact from images.+gpdvrirImageRedactionConfigs :: Lens' GooglePrivacyDlpV2RedactImageRequest [GooglePrivacyDlpV2ImageRedactionConfig]+gpdvrirImageRedactionConfigs+  = lens _gpdvrirImageRedactionConfigs+      (\ s a -> s{_gpdvrirImageRedactionConfigs = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2RedactImageRequest+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2RedactImageRequest"+              (\ o ->+                 GooglePrivacyDlpV2RedactImageRequest' <$>+                   (o .:? "includeFindings") <*> (o .:? "inspectConfig")+                     <*> (o .:? "byteItem")+                     <*> (o .:? "imageRedactionConfigs" .!= mempty))++instance ToJSON GooglePrivacyDlpV2RedactImageRequest+         where+        toJSON GooglePrivacyDlpV2RedactImageRequest'{..}+          = object+              (catMaybes+                 [("includeFindings" .=) <$> _gpdvrirIncludeFindings,+                  ("inspectConfig" .=) <$> _gpdvrirInspectConfig,+                  ("byteItem" .=) <$> _gpdvrirByteItem,+                  ("imageRedactionConfigs" .=) <$>+                    _gpdvrirImageRedactionConfigs])++--+-- /See:/ 'googlePrivacyDlpV2FindingLimits' smart constructor.+data GooglePrivacyDlpV2FindingLimits =+  GooglePrivacyDlpV2FindingLimits'+    { _gpdvflMaxFindingsPerItem     :: !(Maybe (Textual Int32))+    , _gpdvflMaxFindingsPerInfoType :: !(Maybe [GooglePrivacyDlpV2InfoTypeLimit])+    , _gpdvflMaxFindingsPerRequest  :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2FindingLimits' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvflMaxFindingsPerItem'+--+-- * 'gpdvflMaxFindingsPerInfoType'+--+-- * 'gpdvflMaxFindingsPerRequest'+googlePrivacyDlpV2FindingLimits+    :: GooglePrivacyDlpV2FindingLimits+googlePrivacyDlpV2FindingLimits =+  GooglePrivacyDlpV2FindingLimits'+    { _gpdvflMaxFindingsPerItem = Nothing+    , _gpdvflMaxFindingsPerInfoType = Nothing+    , _gpdvflMaxFindingsPerRequest = Nothing+    }+++-- | Max number of findings that will be returned for each item scanned. When+-- set within \`InspectDataSourceRequest\`, the maximum returned is 2000+-- regardless if this is set higher. When set within+-- \`InspectContentRequest\`, this field is ignored.+gpdvflMaxFindingsPerItem :: Lens' GooglePrivacyDlpV2FindingLimits (Maybe Int32)+gpdvflMaxFindingsPerItem+  = lens _gpdvflMaxFindingsPerItem+      (\ s a -> s{_gpdvflMaxFindingsPerItem = a})+      . mapping _Coerce++-- | Configuration of findings limit given for specified infoTypes.+gpdvflMaxFindingsPerInfoType :: Lens' GooglePrivacyDlpV2FindingLimits [GooglePrivacyDlpV2InfoTypeLimit]+gpdvflMaxFindingsPerInfoType+  = lens _gpdvflMaxFindingsPerInfoType+      (\ s a -> s{_gpdvflMaxFindingsPerInfoType = a})+      . _Default+      . _Coerce++-- | Max number of findings that will be returned per request\/job. When set+-- within \`InspectContentRequest\`, the maximum returned is 2000+-- regardless if this is set higher.+gpdvflMaxFindingsPerRequest :: Lens' GooglePrivacyDlpV2FindingLimits (Maybe Int32)+gpdvflMaxFindingsPerRequest+  = lens _gpdvflMaxFindingsPerRequest+      (\ s a -> s{_gpdvflMaxFindingsPerRequest = a})+      . mapping _Coerce++instance FromJSON GooglePrivacyDlpV2FindingLimits+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2FindingLimits"+              (\ o ->+                 GooglePrivacyDlpV2FindingLimits' <$>+                   (o .:? "maxFindingsPerItem") <*>+                     (o .:? "maxFindingsPerInfoType" .!= mempty)+                     <*> (o .:? "maxFindingsPerRequest"))++instance ToJSON GooglePrivacyDlpV2FindingLimits where+        toJSON GooglePrivacyDlpV2FindingLimits'{..}+          = object+              (catMaybes+                 [("maxFindingsPerItem" .=) <$>+                    _gpdvflMaxFindingsPerItem,+                  ("maxFindingsPerInfoType" .=) <$>+                    _gpdvflMaxFindingsPerInfoType,+                  ("maxFindingsPerRequest" .=) <$>+                    _gpdvflMaxFindingsPerRequest])++-- | The field type of \`value\` and \`field\` do not need to match to be+-- considered equal, but not all comparisons are possible. EQUAL_TO and+-- NOT_EQUAL_TO attempt to compare even with incompatible types, but all+-- other comparisons are invalid with incompatible types. A \`value\` of+-- type: - \`string\` can be compared against all other types - \`boolean\`+-- can only be compared against other booleans - \`integer\` can be+-- compared against doubles or a string if the string value can be parsed+-- as an integer. - \`double\` can be compared against integers or a string+-- if the string can be parsed as a double. - \`Timestamp\` can be compared+-- against strings in RFC 3339 date string format. - \`TimeOfDay\` can be+-- compared against timestamps and strings in the format of \'HH:mm:ss\'.+-- If we fail to compare do to type mismatch, a warning will be given and+-- the condition will evaluate to false.+--+-- /See:/ 'googlePrivacyDlpV2Condition' smart constructor.+data GooglePrivacyDlpV2Condition =+  GooglePrivacyDlpV2Condition'+    { _gpdvcField    :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvcOperator :: !(Maybe GooglePrivacyDlpV2ConditionOperator)+    , _gpdvcValue    :: !(Maybe GooglePrivacyDlpV2Value)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Condition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcField'+--+-- * 'gpdvcOperator'+--+-- * 'gpdvcValue'+googlePrivacyDlpV2Condition+    :: GooglePrivacyDlpV2Condition+googlePrivacyDlpV2Condition =+  GooglePrivacyDlpV2Condition'+    {_gpdvcField = Nothing, _gpdvcOperator = Nothing, _gpdvcValue = Nothing}+++-- | Field within the record this condition is evaluated against. [required]+gpdvcField :: Lens' GooglePrivacyDlpV2Condition (Maybe GooglePrivacyDlpV2FieldId)+gpdvcField+  = lens _gpdvcField (\ s a -> s{_gpdvcField = a})++-- | Operator used to compare the field or infoType to the value. [required]+gpdvcOperator :: Lens' GooglePrivacyDlpV2Condition (Maybe GooglePrivacyDlpV2ConditionOperator)+gpdvcOperator+  = lens _gpdvcOperator+      (\ s a -> s{_gpdvcOperator = a})++-- | Value to compare against. [Required, except for \`EXISTS\` tests.]+gpdvcValue :: Lens' GooglePrivacyDlpV2Condition (Maybe GooglePrivacyDlpV2Value)+gpdvcValue+  = lens _gpdvcValue (\ s a -> s{_gpdvcValue = a})++instance FromJSON GooglePrivacyDlpV2Condition where+        parseJSON+          = withObject "GooglePrivacyDlpV2Condition"+              (\ o ->+                 GooglePrivacyDlpV2Condition' <$>+                   (o .:? "field") <*> (o .:? "operator") <*>+                     (o .:? "value"))++instance ToJSON GooglePrivacyDlpV2Condition where+        toJSON GooglePrivacyDlpV2Condition'{..}+          = object+              (catMaybes+                 [("field" .=) <$> _gpdvcField,+                  ("operator" .=) <$> _gpdvcOperator,+                  ("value" .=) <$> _gpdvcValue])++-- | Configuration of the timespan of the items to include in scanning.+-- Currently only supported when inspecting Google Cloud Storage and+-- BigQuery.+--+-- /See:/ 'googlePrivacyDlpV2TimespanConfig' smart constructor.+data GooglePrivacyDlpV2TimespanConfig =+  GooglePrivacyDlpV2TimespanConfig'+    { _gpdvtcTimestampField                       :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvtcStartTime                            :: !(Maybe DateTime')+    , _gpdvtcEnableAutoPopulationOfTimespanConfig :: !(Maybe Bool)+    , _gpdvtcEndTime                              :: !(Maybe DateTime')+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2TimespanConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvtcTimestampField'+--+-- * 'gpdvtcStartTime'+--+-- * 'gpdvtcEnableAutoPopulationOfTimespanConfig'+--+-- * 'gpdvtcEndTime'+googlePrivacyDlpV2TimespanConfig+    :: GooglePrivacyDlpV2TimespanConfig+googlePrivacyDlpV2TimespanConfig =+  GooglePrivacyDlpV2TimespanConfig'+    { _gpdvtcTimestampField = Nothing+    , _gpdvtcStartTime = Nothing+    , _gpdvtcEnableAutoPopulationOfTimespanConfig = Nothing+    , _gpdvtcEndTime = Nothing+    }+++-- | Specification of the field containing the timestamp of scanned items.+-- Used for data sources like Datastore or BigQuery. If not specified for+-- BigQuery, table last modification timestamp is checked against given+-- time span. The valid data types of the timestamp field are: for BigQuery+-- - timestamp, date, datetime; for Datastore - timestamp. Datastore entity+-- will be scanned if the timestamp property does not exist or its value is+-- empty or invalid.+gpdvtcTimestampField :: Lens' GooglePrivacyDlpV2TimespanConfig (Maybe GooglePrivacyDlpV2FieldId)+gpdvtcTimestampField+  = lens _gpdvtcTimestampField+      (\ s a -> s{_gpdvtcTimestampField = a})++-- | Exclude files or rows older than this value.+gpdvtcStartTime :: Lens' GooglePrivacyDlpV2TimespanConfig (Maybe UTCTime)+gpdvtcStartTime+  = lens _gpdvtcStartTime+      (\ s a -> s{_gpdvtcStartTime = a})+      . mapping _DateTime++-- | When the job is started by a JobTrigger we will automatically figure out+-- a valid start_time to avoid scanning files that have not been modified+-- since the last time the JobTrigger executed. This will be based on the+-- time of the execution of the last run of the JobTrigger.+gpdvtcEnableAutoPopulationOfTimespanConfig :: Lens' GooglePrivacyDlpV2TimespanConfig (Maybe Bool)+gpdvtcEnableAutoPopulationOfTimespanConfig+  = lens _gpdvtcEnableAutoPopulationOfTimespanConfig+      (\ s a ->+         s{_gpdvtcEnableAutoPopulationOfTimespanConfig = a})++-- | Exclude files or rows newer than this value. If set to zero, no upper+-- time limit is applied.+gpdvtcEndTime :: Lens' GooglePrivacyDlpV2TimespanConfig (Maybe UTCTime)+gpdvtcEndTime+  = lens _gpdvtcEndTime+      (\ s a -> s{_gpdvtcEndTime = a})+      . mapping _DateTime++instance FromJSON GooglePrivacyDlpV2TimespanConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2TimespanConfig"+              (\ o ->+                 GooglePrivacyDlpV2TimespanConfig' <$>+                   (o .:? "timestampField") <*> (o .:? "startTime") <*>+                     (o .:? "enableAutoPopulationOfTimespanConfig")+                     <*> (o .:? "endTime"))++instance ToJSON GooglePrivacyDlpV2TimespanConfig+         where+        toJSON GooglePrivacyDlpV2TimespanConfig'{..}+          = object+              (catMaybes+                 [("timestampField" .=) <$> _gpdvtcTimestampField,+                  ("startTime" .=) <$> _gpdvtcStartTime,+                  ("enableAutoPopulationOfTimespanConfig" .=) <$>+                    _gpdvtcEnableAutoPopulationOfTimespanConfig,+                  ("endTime" .=) <$> _gpdvtcEndTime])++-- | Request message for CreateDeidentifyTemplate.+--+-- /See:/ 'googlePrivacyDlpV2CreateDeidentifyTemplateRequest' smart constructor.+data GooglePrivacyDlpV2CreateDeidentifyTemplateRequest =+  GooglePrivacyDlpV2CreateDeidentifyTemplateRequest'+    { _gpdvcdtrTemplateId         :: !(Maybe Text)+    , _gpdvcdtrDeidentifyTemplate :: !(Maybe GooglePrivacyDlpV2DeidentifyTemplate)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CreateDeidentifyTemplateRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcdtrTemplateId'+--+-- * 'gpdvcdtrDeidentifyTemplate'+googlePrivacyDlpV2CreateDeidentifyTemplateRequest+    :: GooglePrivacyDlpV2CreateDeidentifyTemplateRequest+googlePrivacyDlpV2CreateDeidentifyTemplateRequest =+  GooglePrivacyDlpV2CreateDeidentifyTemplateRequest'+    {_gpdvcdtrTemplateId = Nothing, _gpdvcdtrDeidentifyTemplate = Nothing}+++-- | The template id can contain uppercase and lowercase letters, numbers,+-- and hyphens; that is, it must match the regular expression:+-- \`[a-zA-Z\\\\d-_]+\`. The maximum length is 100 characters. Can be empty+-- to allow the system to generate one.+gpdvcdtrTemplateId :: Lens' GooglePrivacyDlpV2CreateDeidentifyTemplateRequest (Maybe Text)+gpdvcdtrTemplateId+  = lens _gpdvcdtrTemplateId+      (\ s a -> s{_gpdvcdtrTemplateId = a})++-- | The DeidentifyTemplate to create.+gpdvcdtrDeidentifyTemplate :: Lens' GooglePrivacyDlpV2CreateDeidentifyTemplateRequest (Maybe GooglePrivacyDlpV2DeidentifyTemplate)+gpdvcdtrDeidentifyTemplate+  = lens _gpdvcdtrDeidentifyTemplate+      (\ s a -> s{_gpdvcdtrDeidentifyTemplate = a})++instance FromJSON+           GooglePrivacyDlpV2CreateDeidentifyTemplateRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2CreateDeidentifyTemplateRequest"+              (\ o ->+                 GooglePrivacyDlpV2CreateDeidentifyTemplateRequest'+                   <$>+                   (o .:? "templateId") <*>+                     (o .:? "deidentifyTemplate"))++instance ToJSON+           GooglePrivacyDlpV2CreateDeidentifyTemplateRequest+         where+        toJSON+          GooglePrivacyDlpV2CreateDeidentifyTemplateRequest'{..}+          = object+              (catMaybes+                 [("templateId" .=) <$> _gpdvcdtrTemplateId,+                  ("deidentifyTemplate" .=) <$>+                    _gpdvcdtrDeidentifyTemplate])++-- | Use this to have a random data crypto key generated. It will be+-- discarded after the request finishes.+--+-- /See:/ 'googlePrivacyDlpV2TransientCryptoKey' smart constructor.+newtype GooglePrivacyDlpV2TransientCryptoKey =+  GooglePrivacyDlpV2TransientCryptoKey'+    { _gpdvtckName :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2TransientCryptoKey' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvtckName'+googlePrivacyDlpV2TransientCryptoKey+    :: GooglePrivacyDlpV2TransientCryptoKey+googlePrivacyDlpV2TransientCryptoKey =+  GooglePrivacyDlpV2TransientCryptoKey' {_gpdvtckName = Nothing}+++-- | Name of the key. [required] This is an arbitrary string used to+-- differentiate different keys. A unique key is generated per name: two+-- separate \`TransientCryptoKey\` protos share the same generated key if+-- their names are the same. When the data crypto key is generated, this+-- name is not used in any way (repeating the api call will result in a+-- different key being generated).+gpdvtckName :: Lens' GooglePrivacyDlpV2TransientCryptoKey (Maybe Text)+gpdvtckName+  = lens _gpdvtckName (\ s a -> s{_gpdvtckName = a})++instance FromJSON+           GooglePrivacyDlpV2TransientCryptoKey+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2TransientCryptoKey"+              (\ o ->+                 GooglePrivacyDlpV2TransientCryptoKey' <$>+                   (o .:? "name"))++instance ToJSON GooglePrivacyDlpV2TransientCryptoKey+         where+        toJSON GooglePrivacyDlpV2TransientCryptoKey'{..}+          = object (catMaybes [("name" .=) <$> _gpdvtckName])++-- | InfoType description.+--+-- /See:/ 'googlePrivacyDlpV2InfoTypeDescription' smart constructor.+data GooglePrivacyDlpV2InfoTypeDescription =+  GooglePrivacyDlpV2InfoTypeDescription'+    { _gpdvitdName        :: !(Maybe Text)+    , _gpdvitdDisplayName :: !(Maybe Text)+    , _gpdvitdSupportedBy :: !(Maybe [Text])+    , _gpdvitdDescription :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InfoTypeDescription' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvitdName'+--+-- * 'gpdvitdDisplayName'+--+-- * 'gpdvitdSupportedBy'+--+-- * 'gpdvitdDescription'+googlePrivacyDlpV2InfoTypeDescription+    :: GooglePrivacyDlpV2InfoTypeDescription+googlePrivacyDlpV2InfoTypeDescription =+  GooglePrivacyDlpV2InfoTypeDescription'+    { _gpdvitdName = Nothing+    , _gpdvitdDisplayName = Nothing+    , _gpdvitdSupportedBy = Nothing+    , _gpdvitdDescription = Nothing+    }+++-- | Internal name of the infoType.+gpdvitdName :: Lens' GooglePrivacyDlpV2InfoTypeDescription (Maybe Text)+gpdvitdName+  = lens _gpdvitdName (\ s a -> s{_gpdvitdName = a})++-- | Human readable form of the infoType name.+gpdvitdDisplayName :: Lens' GooglePrivacyDlpV2InfoTypeDescription (Maybe Text)+gpdvitdDisplayName+  = lens _gpdvitdDisplayName+      (\ s a -> s{_gpdvitdDisplayName = a})++-- | Which parts of the API supports this InfoType.+gpdvitdSupportedBy :: Lens' GooglePrivacyDlpV2InfoTypeDescription [Text]+gpdvitdSupportedBy+  = lens _gpdvitdSupportedBy+      (\ s a -> s{_gpdvitdSupportedBy = a})+      . _Default+      . _Coerce++-- | Description of the infotype. Translated when language is provided in the+-- request.+gpdvitdDescription :: Lens' GooglePrivacyDlpV2InfoTypeDescription (Maybe Text)+gpdvitdDescription+  = lens _gpdvitdDescription+      (\ s a -> s{_gpdvitdDescription = a})++instance FromJSON+           GooglePrivacyDlpV2InfoTypeDescription+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2InfoTypeDescription"+              (\ o ->+                 GooglePrivacyDlpV2InfoTypeDescription' <$>+                   (o .:? "name") <*> (o .:? "displayName") <*>+                     (o .:? "supportedBy" .!= mempty)+                     <*> (o .:? "description"))++instance ToJSON GooglePrivacyDlpV2InfoTypeDescription+         where+        toJSON GooglePrivacyDlpV2InfoTypeDescription'{..}+          = object+              (catMaybes+                 [("name" .=) <$> _gpdvitdName,+                  ("displayName" .=) <$> _gpdvitdDisplayName,+                  ("supportedBy" .=) <$> _gpdvitdSupportedBy,+                  ("description" .=) <$> _gpdvitdDescription])++-- | A generic empty message that you can re-use to avoid defining duplicated+-- empty messages in your APIs. A typical example is to use it as the+-- request or the response type of an API method. For instance: service Foo+-- { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The+-- JSON representation for \`Empty\` is empty JSON object \`{}\`.+--+-- /See:/ 'googleProtobufEmpty' smart constructor.+data GoogleProtobufEmpty =+  GoogleProtobufEmpty'+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GoogleProtobufEmpty' with the minimum fields required to make a request.+--+googleProtobufEmpty+    :: GoogleProtobufEmpty+googleProtobufEmpty = GoogleProtobufEmpty'+++instance FromJSON GoogleProtobufEmpty where+        parseJSON+          = withObject "GoogleProtobufEmpty"+              (\ o -> pure GoogleProtobufEmpty')++instance ToJSON GoogleProtobufEmpty where+        toJSON = const emptyObject++--+-- /See:/ 'googleRpcStatusDetailsItem' smart constructor.+newtype GoogleRpcStatusDetailsItem =+  GoogleRpcStatusDetailsItem'+    { _grsdiAddtional :: HashMap Text JSONValue+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GoogleRpcStatusDetailsItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grsdiAddtional'+googleRpcStatusDetailsItem+    :: HashMap Text JSONValue -- ^ 'grsdiAddtional'+    -> GoogleRpcStatusDetailsItem+googleRpcStatusDetailsItem pGrsdiAddtional_ =+  GoogleRpcStatusDetailsItem' {_grsdiAddtional = _Coerce # pGrsdiAddtional_}+++-- | Properties of the object. Contains field \'type with type URL.+grsdiAddtional :: Lens' GoogleRpcStatusDetailsItem (HashMap Text JSONValue)+grsdiAddtional+  = lens _grsdiAddtional+      (\ s a -> s{_grsdiAddtional = a})+      . _Coerce++instance FromJSON GoogleRpcStatusDetailsItem where+        parseJSON+          = withObject "GoogleRpcStatusDetailsItem"+              (\ o ->+                 GoogleRpcStatusDetailsItem' <$> (parseJSONObject o))++instance ToJSON GoogleRpcStatusDetailsItem where+        toJSON = toJSON . _grsdiAddtional++-- | Configuration for determining how redaction of images should occur.+--+-- /See:/ 'googlePrivacyDlpV2ImageRedactionConfig' smart constructor.+data GooglePrivacyDlpV2ImageRedactionConfig =+  GooglePrivacyDlpV2ImageRedactionConfig'+    { _gpdvircRedactionColor :: !(Maybe GooglePrivacyDlpV2Color)+    , _gpdvircInfoType       :: !(Maybe GooglePrivacyDlpV2InfoType)+    , _gpdvircRedactAllText  :: !(Maybe Bool)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ImageRedactionConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvircRedactionColor'+--+-- * 'gpdvircInfoType'+--+-- * 'gpdvircRedactAllText'+googlePrivacyDlpV2ImageRedactionConfig+    :: GooglePrivacyDlpV2ImageRedactionConfig+googlePrivacyDlpV2ImageRedactionConfig =+  GooglePrivacyDlpV2ImageRedactionConfig'+    { _gpdvircRedactionColor = Nothing+    , _gpdvircInfoType = Nothing+    , _gpdvircRedactAllText = Nothing+    }+++-- | The color to use when redacting content from an image. If not specified,+-- the default is black.+gpdvircRedactionColor :: Lens' GooglePrivacyDlpV2ImageRedactionConfig (Maybe GooglePrivacyDlpV2Color)+gpdvircRedactionColor+  = lens _gpdvircRedactionColor+      (\ s a -> s{_gpdvircRedactionColor = a})++-- | Only one per info_type should be provided per request. If not specified,+-- and redact_all_text is false, the DLP API will redact all text that it+-- matches against all info_types that are found, but not specified in+-- another ImageRedactionConfig.+gpdvircInfoType :: Lens' GooglePrivacyDlpV2ImageRedactionConfig (Maybe GooglePrivacyDlpV2InfoType)+gpdvircInfoType+  = lens _gpdvircInfoType+      (\ s a -> s{_gpdvircInfoType = a})++-- | If true, all text found in the image, regardless whether it matches an+-- info_type, is redacted. Only one should be provided.+gpdvircRedactAllText :: Lens' GooglePrivacyDlpV2ImageRedactionConfig (Maybe Bool)+gpdvircRedactAllText+  = lens _gpdvircRedactAllText+      (\ s a -> s{_gpdvircRedactAllText = a})++instance FromJSON+           GooglePrivacyDlpV2ImageRedactionConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2ImageRedactionConfig"+              (\ o ->+                 GooglePrivacyDlpV2ImageRedactionConfig' <$>+                   (o .:? "redactionColor") <*> (o .:? "infoType") <*>+                     (o .:? "redactAllText"))++instance ToJSON+           GooglePrivacyDlpV2ImageRedactionConfig+         where+        toJSON GooglePrivacyDlpV2ImageRedactionConfig'{..}+          = object+              (catMaybes+                 [("redactionColor" .=) <$> _gpdvircRedactionColor,+                  ("infoType" .=) <$> _gpdvircInfoType,+                  ("redactAllText" .=) <$> _gpdvircRedactAllText])++-- | What event needs to occur for a new job to be started.+--+-- /See:/ 'googlePrivacyDlpV2Trigger' smart constructor.+newtype GooglePrivacyDlpV2Trigger =+  GooglePrivacyDlpV2Trigger'+    { _gpdvtSchedule :: Maybe GooglePrivacyDlpV2Schedule+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Trigger' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvtSchedule'+googlePrivacyDlpV2Trigger+    :: GooglePrivacyDlpV2Trigger+googlePrivacyDlpV2Trigger =+  GooglePrivacyDlpV2Trigger' {_gpdvtSchedule = Nothing}+++-- | Create a job on a repeating basis based on the elapse of time.+gpdvtSchedule :: Lens' GooglePrivacyDlpV2Trigger (Maybe GooglePrivacyDlpV2Schedule)+gpdvtSchedule+  = lens _gpdvtSchedule+      (\ s a -> s{_gpdvtSchedule = a})++instance FromJSON GooglePrivacyDlpV2Trigger where+        parseJSON+          = withObject "GooglePrivacyDlpV2Trigger"+              (\ o ->+                 GooglePrivacyDlpV2Trigger' <$> (o .:? "schedule"))++instance ToJSON GooglePrivacyDlpV2Trigger where+        toJSON GooglePrivacyDlpV2Trigger'{..}+          = object+              (catMaybes [("schedule" .=) <$> _gpdvtSchedule])++-- | Options defining a file or a set of files within a Google Cloud Storage+-- bucket.+--+-- /See:/ 'googlePrivacyDlpV2CloudStorageOptions' smart constructor.+data GooglePrivacyDlpV2CloudStorageOptions =+  GooglePrivacyDlpV2CloudStorageOptions'+    { _gpdvcsoFileSet                  :: !(Maybe GooglePrivacyDlpV2FileSet)+    , _gpdvcsoBytesLimitPerFile        :: !(Maybe (Textual Int64))+    , _gpdvcsoFileTypes                :: !(Maybe [Text])+    , _gpdvcsoBytesLimitPerFilePercent :: !(Maybe (Textual Int32))+    , _gpdvcsoFilesLimitPercent        :: !(Maybe (Textual Int32))+    , _gpdvcsoSampleMethod             :: !(Maybe GooglePrivacyDlpV2CloudStorageOptionsSampleMethod)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CloudStorageOptions' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcsoFileSet'+--+-- * 'gpdvcsoBytesLimitPerFile'+--+-- * 'gpdvcsoFileTypes'+--+-- * 'gpdvcsoBytesLimitPerFilePercent'+--+-- * 'gpdvcsoFilesLimitPercent'+--+-- * 'gpdvcsoSampleMethod'+googlePrivacyDlpV2CloudStorageOptions+    :: GooglePrivacyDlpV2CloudStorageOptions+googlePrivacyDlpV2CloudStorageOptions =+  GooglePrivacyDlpV2CloudStorageOptions'+    { _gpdvcsoFileSet = Nothing+    , _gpdvcsoBytesLimitPerFile = Nothing+    , _gpdvcsoFileTypes = Nothing+    , _gpdvcsoBytesLimitPerFilePercent = Nothing+    , _gpdvcsoFilesLimitPercent = Nothing+    , _gpdvcsoSampleMethod = Nothing+    }+++-- | The set of one or more files to scan.+gpdvcsoFileSet :: Lens' GooglePrivacyDlpV2CloudStorageOptions (Maybe GooglePrivacyDlpV2FileSet)+gpdvcsoFileSet+  = lens _gpdvcsoFileSet+      (\ s a -> s{_gpdvcsoFileSet = a})++-- | Max number of bytes to scan from a file. If a scanned file\'s size is+-- bigger than this value then the rest of the bytes are omitted. Only one+-- of bytes_limit_per_file and bytes_limit_per_file_percent can be+-- specified.+gpdvcsoBytesLimitPerFile :: Lens' GooglePrivacyDlpV2CloudStorageOptions (Maybe Int64)+gpdvcsoBytesLimitPerFile+  = lens _gpdvcsoBytesLimitPerFile+      (\ s a -> s{_gpdvcsoBytesLimitPerFile = a})+      . mapping _Coerce++-- | List of file type groups to include in the scan. If empty, all files are+-- scanned and available data format processors are applied. In addition,+-- the binary content of the selected files is always scanned as well.+gpdvcsoFileTypes :: Lens' GooglePrivacyDlpV2CloudStorageOptions [Text]+gpdvcsoFileTypes+  = lens _gpdvcsoFileTypes+      (\ s a -> s{_gpdvcsoFileTypes = a})+      . _Default+      . _Coerce++-- | Max percentage of bytes to scan from a file. The rest are omitted. The+-- number of bytes scanned is rounded down. Must be between 0 and 100,+-- inclusively. Both 0 and 100 means no limit. Defaults to 0. Only one of+-- bytes_limit_per_file and bytes_limit_per_file_percent can be specified.+gpdvcsoBytesLimitPerFilePercent :: Lens' GooglePrivacyDlpV2CloudStorageOptions (Maybe Int32)+gpdvcsoBytesLimitPerFilePercent+  = lens _gpdvcsoBytesLimitPerFilePercent+      (\ s a -> s{_gpdvcsoBytesLimitPerFilePercent = a})+      . mapping _Coerce++-- | Limits the number of files to scan to this percentage of the input+-- FileSet. Number of files scanned is rounded down. Must be between 0 and+-- 100, inclusively. Both 0 and 100 means no limit. Defaults to 0.+gpdvcsoFilesLimitPercent :: Lens' GooglePrivacyDlpV2CloudStorageOptions (Maybe Int32)+gpdvcsoFilesLimitPercent+  = lens _gpdvcsoFilesLimitPercent+      (\ s a -> s{_gpdvcsoFilesLimitPercent = a})+      . mapping _Coerce++gpdvcsoSampleMethod :: Lens' GooglePrivacyDlpV2CloudStorageOptions (Maybe GooglePrivacyDlpV2CloudStorageOptionsSampleMethod)+gpdvcsoSampleMethod+  = lens _gpdvcsoSampleMethod+      (\ s a -> s{_gpdvcsoSampleMethod = a})++instance FromJSON+           GooglePrivacyDlpV2CloudStorageOptions+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2CloudStorageOptions"+              (\ o ->+                 GooglePrivacyDlpV2CloudStorageOptions' <$>+                   (o .:? "fileSet") <*> (o .:? "bytesLimitPerFile") <*>+                     (o .:? "fileTypes" .!= mempty)+                     <*> (o .:? "bytesLimitPerFilePercent")+                     <*> (o .:? "filesLimitPercent")+                     <*> (o .:? "sampleMethod"))++instance ToJSON GooglePrivacyDlpV2CloudStorageOptions+         where+        toJSON GooglePrivacyDlpV2CloudStorageOptions'{..}+          = object+              (catMaybes+                 [("fileSet" .=) <$> _gpdvcsoFileSet,+                  ("bytesLimitPerFile" .=) <$>+                    _gpdvcsoBytesLimitPerFile,+                  ("fileTypes" .=) <$> _gpdvcsoFileTypes,+                  ("bytesLimitPerFilePercent" .=) <$>+                    _gpdvcsoBytesLimitPerFilePercent,+                  ("filesLimitPercent" .=) <$>+                    _gpdvcsoFilesLimitPercent,+                  ("sampleMethod" .=) <$> _gpdvcsoSampleMethod])++-- | δ-presence metric, used to estimate how likely it is for an attacker to+-- figure out that one given individual appears in a de-identified dataset.+-- Similarly to the k-map metric, we cannot compute δ-presence exactly+-- without knowing the attack dataset, so we use a statistical model+-- instead.+--+-- /See:/ 'googlePrivacyDlpV2DeltaPresenceEstimationConfig' smart constructor.+data GooglePrivacyDlpV2DeltaPresenceEstimationConfig =+  GooglePrivacyDlpV2DeltaPresenceEstimationConfig'+    { _gpdvdpecAuxiliaryTables :: !(Maybe [GooglePrivacyDlpV2StatisticalTable])+    , _gpdvdpecRegionCode      :: !(Maybe Text)+    , _gpdvdpecQuasiIds        :: !(Maybe [GooglePrivacyDlpV2QuasiId])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DeltaPresenceEstimationConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdpecAuxiliaryTables'+--+-- * 'gpdvdpecRegionCode'+--+-- * 'gpdvdpecQuasiIds'+googlePrivacyDlpV2DeltaPresenceEstimationConfig+    :: GooglePrivacyDlpV2DeltaPresenceEstimationConfig+googlePrivacyDlpV2DeltaPresenceEstimationConfig =+  GooglePrivacyDlpV2DeltaPresenceEstimationConfig'+    { _gpdvdpecAuxiliaryTables = Nothing+    , _gpdvdpecRegionCode = Nothing+    , _gpdvdpecQuasiIds = Nothing+    }+++-- | Several auxiliary tables can be used in the analysis. Each custom_tag+-- used to tag a quasi-identifiers field must appear in exactly one field+-- of one auxiliary table.+gpdvdpecAuxiliaryTables :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationConfig [GooglePrivacyDlpV2StatisticalTable]+gpdvdpecAuxiliaryTables+  = lens _gpdvdpecAuxiliaryTables+      (\ s a -> s{_gpdvdpecAuxiliaryTables = a})+      . _Default+      . _Coerce++-- | ISO 3166-1 alpha-2 region code to use in the statistical modeling.+-- Required if no column is tagged with a region-specific InfoType (like+-- US_ZIP_5) or a region code.+gpdvdpecRegionCode :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationConfig (Maybe Text)+gpdvdpecRegionCode+  = lens _gpdvdpecRegionCode+      (\ s a -> s{_gpdvdpecRegionCode = a})++-- | Fields considered to be quasi-identifiers. No two fields can have the+-- same tag. [required]+gpdvdpecQuasiIds :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationConfig [GooglePrivacyDlpV2QuasiId]+gpdvdpecQuasiIds+  = lens _gpdvdpecQuasiIds+      (\ s a -> s{_gpdvdpecQuasiIds = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2DeltaPresenceEstimationConfig+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2DeltaPresenceEstimationConfig"+              (\ o ->+                 GooglePrivacyDlpV2DeltaPresenceEstimationConfig' <$>+                   (o .:? "auxiliaryTables" .!= mempty) <*>+                     (o .:? "regionCode")+                     <*> (o .:? "quasiIds" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2DeltaPresenceEstimationConfig+         where+        toJSON+          GooglePrivacyDlpV2DeltaPresenceEstimationConfig'{..}+          = object+              (catMaybes+                 [("auxiliaryTables" .=) <$> _gpdvdpecAuxiliaryTables,+                  ("regionCode" .=) <$> _gpdvdpecRegionCode,+                  ("quasiIds" .=) <$> _gpdvdpecQuasiIds])++-- | Request message for CreateStoredInfoType.+--+-- /See:/ 'googlePrivacyDlpV2CreateStoredInfoTypeRequest' smart constructor.+data GooglePrivacyDlpV2CreateStoredInfoTypeRequest =+  GooglePrivacyDlpV2CreateStoredInfoTypeRequest'+    { _gpdvcsitrConfig           :: !(Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)+    , _gpdvcsitrStoredInfoTypeId :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CreateStoredInfoTypeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcsitrConfig'+--+-- * 'gpdvcsitrStoredInfoTypeId'+googlePrivacyDlpV2CreateStoredInfoTypeRequest+    :: GooglePrivacyDlpV2CreateStoredInfoTypeRequest+googlePrivacyDlpV2CreateStoredInfoTypeRequest =+  GooglePrivacyDlpV2CreateStoredInfoTypeRequest'+    {_gpdvcsitrConfig = Nothing, _gpdvcsitrStoredInfoTypeId = Nothing}+++-- | Configuration of the storedInfoType to create.+gpdvcsitrConfig :: Lens' GooglePrivacyDlpV2CreateStoredInfoTypeRequest (Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)+gpdvcsitrConfig+  = lens _gpdvcsitrConfig+      (\ s a -> s{_gpdvcsitrConfig = a})++-- | The storedInfoType ID can contain uppercase and lowercase letters,+-- numbers, and hyphens; that is, it must match the regular expression:+-- \`[a-zA-Z\\\\d-_]+\`. The maximum length is 100 characters. Can be empty+-- to allow the system to generate one.+gpdvcsitrStoredInfoTypeId :: Lens' GooglePrivacyDlpV2CreateStoredInfoTypeRequest (Maybe Text)+gpdvcsitrStoredInfoTypeId+  = lens _gpdvcsitrStoredInfoTypeId+      (\ s a -> s{_gpdvcsitrStoredInfoTypeId = a})++instance FromJSON+           GooglePrivacyDlpV2CreateStoredInfoTypeRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2CreateStoredInfoTypeRequest"+              (\ o ->+                 GooglePrivacyDlpV2CreateStoredInfoTypeRequest' <$>+                   (o .:? "config") <*> (o .:? "storedInfoTypeId"))++instance ToJSON+           GooglePrivacyDlpV2CreateStoredInfoTypeRequest+         where+        toJSON+          GooglePrivacyDlpV2CreateStoredInfoTypeRequest'{..}+          = object+              (catMaybes+                 [("config" .=) <$> _gpdvcsitrConfig,+                  ("storedInfoTypeId" .=) <$>+                    _gpdvcsitrStoredInfoTypeId])++-- | A quasi-identifier column has a custom_tag, used to know which column in+-- the data corresponds to which column in the statistical model.+--+-- /See:/ 'googlePrivacyDlpV2QuasiIdField' smart constructor.+data GooglePrivacyDlpV2QuasiIdField =+  GooglePrivacyDlpV2QuasiIdField'+    { _gpdvqifField     :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvqifCustomTag :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2QuasiIdField' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvqifField'+--+-- * 'gpdvqifCustomTag'+googlePrivacyDlpV2QuasiIdField+    :: GooglePrivacyDlpV2QuasiIdField+googlePrivacyDlpV2QuasiIdField =+  GooglePrivacyDlpV2QuasiIdField'+    {_gpdvqifField = Nothing, _gpdvqifCustomTag = Nothing}+++gpdvqifField :: Lens' GooglePrivacyDlpV2QuasiIdField (Maybe GooglePrivacyDlpV2FieldId)+gpdvqifField+  = lens _gpdvqifField (\ s a -> s{_gpdvqifField = a})++gpdvqifCustomTag :: Lens' GooglePrivacyDlpV2QuasiIdField (Maybe Text)+gpdvqifCustomTag+  = lens _gpdvqifCustomTag+      (\ s a -> s{_gpdvqifCustomTag = a})++instance FromJSON GooglePrivacyDlpV2QuasiIdField+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2QuasiIdField"+              (\ o ->+                 GooglePrivacyDlpV2QuasiIdField' <$>+                   (o .:? "field") <*> (o .:? "customTag"))++instance ToJSON GooglePrivacyDlpV2QuasiIdField where+        toJSON GooglePrivacyDlpV2QuasiIdField'{..}+          = object+              (catMaybes+                 [("field" .=) <$> _gpdvqifField,+                  ("customTag" .=) <$> _gpdvqifCustomTag])++-- | For use with \`Date\`, \`Timestamp\`, and \`TimeOfDay\`, extract or+-- preserve a portion of the value.+--+-- /See:/ 'googlePrivacyDlpV2TimePartConfig' smart constructor.+newtype GooglePrivacyDlpV2TimePartConfig =+  GooglePrivacyDlpV2TimePartConfig'+    { _gpdvtpcPartToExtract :: Maybe GooglePrivacyDlpV2TimePartConfigPartToExtract+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2TimePartConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvtpcPartToExtract'+googlePrivacyDlpV2TimePartConfig+    :: GooglePrivacyDlpV2TimePartConfig+googlePrivacyDlpV2TimePartConfig =+  GooglePrivacyDlpV2TimePartConfig' {_gpdvtpcPartToExtract = Nothing}+++gpdvtpcPartToExtract :: Lens' GooglePrivacyDlpV2TimePartConfig (Maybe GooglePrivacyDlpV2TimePartConfigPartToExtract)+gpdvtpcPartToExtract+  = lens _gpdvtpcPartToExtract+      (\ s a -> s{_gpdvtpcPartToExtract = a})++instance FromJSON GooglePrivacyDlpV2TimePartConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2TimePartConfig"+              (\ o ->+                 GooglePrivacyDlpV2TimePartConfig' <$>+                   (o .:? "partToExtract"))++instance ToJSON GooglePrivacyDlpV2TimePartConfig+         where+        toJSON GooglePrivacyDlpV2TimePartConfig'{..}+          = object+              (catMaybes+                 [("partToExtract" .=) <$> _gpdvtpcPartToExtract])++-- | A single inspection rule to be applied to infoTypes, specified in+-- \`InspectionRuleSet\`.+--+-- /See:/ 'googlePrivacyDlpV2InspectionRule' smart constructor.+data GooglePrivacyDlpV2InspectionRule =+  GooglePrivacyDlpV2InspectionRule'+    { _gpdvirExclusionRule :: !(Maybe GooglePrivacyDlpV2ExclusionRule)+    , _gpdvirHotwordRule   :: !(Maybe GooglePrivacyDlpV2HotwordRule)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InspectionRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvirExclusionRule'+--+-- * 'gpdvirHotwordRule'+googlePrivacyDlpV2InspectionRule+    :: GooglePrivacyDlpV2InspectionRule+googlePrivacyDlpV2InspectionRule =+  GooglePrivacyDlpV2InspectionRule'+    {_gpdvirExclusionRule = Nothing, _gpdvirHotwordRule = Nothing}+++-- | Exclusion rule.+gpdvirExclusionRule :: Lens' GooglePrivacyDlpV2InspectionRule (Maybe GooglePrivacyDlpV2ExclusionRule)+gpdvirExclusionRule+  = lens _gpdvirExclusionRule+      (\ s a -> s{_gpdvirExclusionRule = a})++-- | Hotword-based detection rule.+gpdvirHotwordRule :: Lens' GooglePrivacyDlpV2InspectionRule (Maybe GooglePrivacyDlpV2HotwordRule)+gpdvirHotwordRule+  = lens _gpdvirHotwordRule+      (\ s a -> s{_gpdvirHotwordRule = a})++instance FromJSON GooglePrivacyDlpV2InspectionRule+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2InspectionRule"+              (\ o ->+                 GooglePrivacyDlpV2InspectionRule' <$>+                   (o .:? "exclusionRule") <*> (o .:? "hotwordRule"))++instance ToJSON GooglePrivacyDlpV2InspectionRule+         where+        toJSON GooglePrivacyDlpV2InspectionRule'{..}+          = object+              (catMaybes+                 [("exclusionRule" .=) <$> _gpdvirExclusionRule,+                  ("hotwordRule" .=) <$> _gpdvirHotwordRule])++-- | Custom information type provided by the user. Used to find+-- domain-specific sensitive information configurable to the data in+-- question.+--+-- /See:/ 'googlePrivacyDlpV2CustomInfoType' smart constructor.+data GooglePrivacyDlpV2CustomInfoType =+  GooglePrivacyDlpV2CustomInfoType'+    { _gpdvcitRegex          :: !(Maybe GooglePrivacyDlpV2Regex)+    , _gpdvcitStoredType     :: !(Maybe GooglePrivacyDlpV2StoredType)+    , _gpdvcitInfoType       :: !(Maybe GooglePrivacyDlpV2InfoType)+    , _gpdvcitExclusionType  :: !(Maybe GooglePrivacyDlpV2CustomInfoTypeExclusionType)+    , _gpdvcitLikelihood     :: !(Maybe GooglePrivacyDlpV2CustomInfoTypeLikelihood)+    , _gpdvcitDetectionRules :: !(Maybe [GooglePrivacyDlpV2DetectionRule])+    , _gpdvcitDictionary     :: !(Maybe GooglePrivacyDlpV2Dictionary)+    , _gpdvcitSurrogateType  :: !(Maybe GooglePrivacyDlpV2SurrogateType)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CustomInfoType' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcitRegex'+--+-- * 'gpdvcitStoredType'+--+-- * 'gpdvcitInfoType'+--+-- * 'gpdvcitExclusionType'+--+-- * 'gpdvcitLikelihood'+--+-- * 'gpdvcitDetectionRules'+--+-- * 'gpdvcitDictionary'+--+-- * 'gpdvcitSurrogateType'+googlePrivacyDlpV2CustomInfoType+    :: GooglePrivacyDlpV2CustomInfoType+googlePrivacyDlpV2CustomInfoType =+  GooglePrivacyDlpV2CustomInfoType'+    { _gpdvcitRegex = Nothing+    , _gpdvcitStoredType = Nothing+    , _gpdvcitInfoType = Nothing+    , _gpdvcitExclusionType = Nothing+    , _gpdvcitLikelihood = Nothing+    , _gpdvcitDetectionRules = Nothing+    , _gpdvcitDictionary = Nothing+    , _gpdvcitSurrogateType = Nothing+    }+++-- | Regular expression based CustomInfoType.+gpdvcitRegex :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2Regex)+gpdvcitRegex+  = lens _gpdvcitRegex (\ s a -> s{_gpdvcitRegex = a})++-- | Load an existing \`StoredInfoType\` resource for use in+-- \`InspectDataSource\`. Not currently supported in \`InspectContent\`.+gpdvcitStoredType :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2StoredType)+gpdvcitStoredType+  = lens _gpdvcitStoredType+      (\ s a -> s{_gpdvcitStoredType = a})++-- | CustomInfoType can either be a new infoType, or an extension of built-in+-- infoType, when the name matches one of existing infoTypes and that+-- infoType is specified in \`InspectContent.info_types\` field. Specifying+-- the latter adds findings to the one detected by the system. If built-in+-- info type is not specified in \`InspectContent.info_types\` list then+-- the name is treated as a custom info type.+gpdvcitInfoType :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2InfoType)+gpdvcitInfoType+  = lens _gpdvcitInfoType+      (\ s a -> s{_gpdvcitInfoType = a})++-- | If set to EXCLUSION_TYPE_EXCLUDE this infoType will not cause a finding+-- to be returned. It still can be used for rules matching.+gpdvcitExclusionType :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2CustomInfoTypeExclusionType)+gpdvcitExclusionType+  = lens _gpdvcitExclusionType+      (\ s a -> s{_gpdvcitExclusionType = a})++-- | Likelihood to return for this CustomInfoType. This base value can be+-- altered by a detection rule if the finding meets the criteria specified+-- by the rule. Defaults to \`VERY_LIKELY\` if not specified.+gpdvcitLikelihood :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2CustomInfoTypeLikelihood)+gpdvcitLikelihood+  = lens _gpdvcitLikelihood+      (\ s a -> s{_gpdvcitLikelihood = a})++-- | Set of detection rules to apply to all findings of this CustomInfoType.+-- Rules are applied in order that they are specified. Not supported for+-- the \`surrogate_type\` CustomInfoType.+gpdvcitDetectionRules :: Lens' GooglePrivacyDlpV2CustomInfoType [GooglePrivacyDlpV2DetectionRule]+gpdvcitDetectionRules+  = lens _gpdvcitDetectionRules+      (\ s a -> s{_gpdvcitDetectionRules = a})+      . _Default+      . _Coerce++-- | A list of phrases to detect as a CustomInfoType.+gpdvcitDictionary :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2Dictionary)+gpdvcitDictionary+  = lens _gpdvcitDictionary+      (\ s a -> s{_gpdvcitDictionary = a})++-- | Message for detecting output from deidentification transformations that+-- support reversing.+gpdvcitSurrogateType :: Lens' GooglePrivacyDlpV2CustomInfoType (Maybe GooglePrivacyDlpV2SurrogateType)+gpdvcitSurrogateType+  = lens _gpdvcitSurrogateType+      (\ s a -> s{_gpdvcitSurrogateType = a})++instance FromJSON GooglePrivacyDlpV2CustomInfoType+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2CustomInfoType"+              (\ o ->+                 GooglePrivacyDlpV2CustomInfoType' <$>+                   (o .:? "regex") <*> (o .:? "storedType") <*>+                     (o .:? "infoType")+                     <*> (o .:? "exclusionType")+                     <*> (o .:? "likelihood")+                     <*> (o .:? "detectionRules" .!= mempty)+                     <*> (o .:? "dictionary")+                     <*> (o .:? "surrogateType"))++instance ToJSON GooglePrivacyDlpV2CustomInfoType+         where+        toJSON GooglePrivacyDlpV2CustomInfoType'{..}+          = object+              (catMaybes+                 [("regex" .=) <$> _gpdvcitRegex,+                  ("storedType" .=) <$> _gpdvcitStoredType,+                  ("infoType" .=) <$> _gpdvcitInfoType,+                  ("exclusionType" .=) <$> _gpdvcitExclusionType,+                  ("likelihood" .=) <$> _gpdvcitLikelihood,+                  ("detectionRules" .=) <$> _gpdvcitDetectionRules,+                  ("dictionary" .=) <$> _gpdvcitDictionary,+                  ("surrogateType" .=) <$> _gpdvcitSurrogateType])++-- | Result of the reidentifiability analysis. Note that these results are an+-- estimation, not exact values.+--+-- /See:/ 'googlePrivacyDlpV2KMapEstimationResult' smart constructor.+newtype GooglePrivacyDlpV2KMapEstimationResult =+  GooglePrivacyDlpV2KMapEstimationResult'+    { _gpdvkmerKMapEstimationHistogram :: Maybe [GooglePrivacyDlpV2KMapEstimationHistogramBucket]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2KMapEstimationResult' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvkmerKMapEstimationHistogram'+googlePrivacyDlpV2KMapEstimationResult+    :: GooglePrivacyDlpV2KMapEstimationResult+googlePrivacyDlpV2KMapEstimationResult =+  GooglePrivacyDlpV2KMapEstimationResult'+    {_gpdvkmerKMapEstimationHistogram = Nothing}+++-- | The intervals [min_anonymity, max_anonymity] do not overlap. If a value+-- doesn\'t correspond to any such interval, the associated frequency is+-- zero. For example, the following records: {min_anonymity: 1,+-- max_anonymity: 1, frequency: 17} {min_anonymity: 2, max_anonymity: 3,+-- frequency: 42} {min_anonymity: 5, max_anonymity: 10, frequency: 99} mean+-- that there are no record with an estimated anonymity of 4, 5, or larger+-- than 10.+gpdvkmerKMapEstimationHistogram :: Lens' GooglePrivacyDlpV2KMapEstimationResult [GooglePrivacyDlpV2KMapEstimationHistogramBucket]+gpdvkmerKMapEstimationHistogram+  = lens _gpdvkmerKMapEstimationHistogram+      (\ s a -> s{_gpdvkmerKMapEstimationHistogram = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2KMapEstimationResult+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2KMapEstimationResult"+              (\ o ->+                 GooglePrivacyDlpV2KMapEstimationResult' <$>+                   (o .:? "kMapEstimationHistogram" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2KMapEstimationResult+         where+        toJSON GooglePrivacyDlpV2KMapEstimationResult'{..}+          = object+              (catMaybes+                 [("kMapEstimationHistogram" .=) <$>+                    _gpdvkmerKMapEstimationHistogram])++-- | Summary of a single transformation. Only one of \'transformation\',+-- \'field_transformation\', or \'record_suppress\' will be set.+--+-- /See:/ 'googlePrivacyDlpV2TransformationSummary' smart constructor.+data GooglePrivacyDlpV2TransformationSummary =+  GooglePrivacyDlpV2TransformationSummary'+    { _gpdvtsResults              :: !(Maybe [GooglePrivacyDlpV2SummaryResult])+    , _gpdvtsField                :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvtsInfoType             :: !(Maybe GooglePrivacyDlpV2InfoType)+    , _gpdvtsRecordSuppress       :: !(Maybe GooglePrivacyDlpV2RecordSuppression)+    , _gpdvtsTransformedBytes     :: !(Maybe (Textual Int64))+    , _gpdvtsFieldTransformations :: !(Maybe [GooglePrivacyDlpV2FieldTransformation])+    , _gpdvtsTransformation       :: !(Maybe GooglePrivacyDlpV2PrimitiveTransformation)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2TransformationSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvtsResults'+--+-- * 'gpdvtsField'+--+-- * 'gpdvtsInfoType'+--+-- * 'gpdvtsRecordSuppress'+--+-- * 'gpdvtsTransformedBytes'+--+-- * 'gpdvtsFieldTransformations'+--+-- * 'gpdvtsTransformation'+googlePrivacyDlpV2TransformationSummary+    :: GooglePrivacyDlpV2TransformationSummary+googlePrivacyDlpV2TransformationSummary =+  GooglePrivacyDlpV2TransformationSummary'+    { _gpdvtsResults = Nothing+    , _gpdvtsField = Nothing+    , _gpdvtsInfoType = Nothing+    , _gpdvtsRecordSuppress = Nothing+    , _gpdvtsTransformedBytes = Nothing+    , _gpdvtsFieldTransformations = Nothing+    , _gpdvtsTransformation = Nothing+    }+++gpdvtsResults :: Lens' GooglePrivacyDlpV2TransformationSummary [GooglePrivacyDlpV2SummaryResult]+gpdvtsResults+  = lens _gpdvtsResults+      (\ s a -> s{_gpdvtsResults = a})+      . _Default+      . _Coerce++-- | Set if the transformation was limited to a specific FieldId.+gpdvtsField :: Lens' GooglePrivacyDlpV2TransformationSummary (Maybe GooglePrivacyDlpV2FieldId)+gpdvtsField+  = lens _gpdvtsField (\ s a -> s{_gpdvtsField = a})++-- | Set if the transformation was limited to a specific InfoType.+gpdvtsInfoType :: Lens' GooglePrivacyDlpV2TransformationSummary (Maybe GooglePrivacyDlpV2InfoType)+gpdvtsInfoType+  = lens _gpdvtsInfoType+      (\ s a -> s{_gpdvtsInfoType = a})++-- | The specific suppression option these stats apply to.+gpdvtsRecordSuppress :: Lens' GooglePrivacyDlpV2TransformationSummary (Maybe GooglePrivacyDlpV2RecordSuppression)+gpdvtsRecordSuppress+  = lens _gpdvtsRecordSuppress+      (\ s a -> s{_gpdvtsRecordSuppress = a})++-- | Total size in bytes that were transformed in some way.+gpdvtsTransformedBytes :: Lens' GooglePrivacyDlpV2TransformationSummary (Maybe Int64)+gpdvtsTransformedBytes+  = lens _gpdvtsTransformedBytes+      (\ s a -> s{_gpdvtsTransformedBytes = a})+      . mapping _Coerce++-- | The field transformation that was applied. If multiple field+-- transformations are requested for a single field, this list will contain+-- all of them; otherwise, only one is supplied.+gpdvtsFieldTransformations :: Lens' GooglePrivacyDlpV2TransformationSummary [GooglePrivacyDlpV2FieldTransformation]+gpdvtsFieldTransformations+  = lens _gpdvtsFieldTransformations+      (\ s a -> s{_gpdvtsFieldTransformations = a})+      . _Default+      . _Coerce++-- | The specific transformation these stats apply to.+gpdvtsTransformation :: Lens' GooglePrivacyDlpV2TransformationSummary (Maybe GooglePrivacyDlpV2PrimitiveTransformation)+gpdvtsTransformation+  = lens _gpdvtsTransformation+      (\ s a -> s{_gpdvtsTransformation = a})++instance FromJSON+           GooglePrivacyDlpV2TransformationSummary+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2TransformationSummary"+              (\ o ->+                 GooglePrivacyDlpV2TransformationSummary' <$>+                   (o .:? "results" .!= mempty) <*> (o .:? "field") <*>+                     (o .:? "infoType")+                     <*> (o .:? "recordSuppress")+                     <*> (o .:? "transformedBytes")+                     <*> (o .:? "fieldTransformations" .!= mempty)+                     <*> (o .:? "transformation"))++instance ToJSON+           GooglePrivacyDlpV2TransformationSummary+         where+        toJSON GooglePrivacyDlpV2TransformationSummary'{..}+          = object+              (catMaybes+                 [("results" .=) <$> _gpdvtsResults,+                  ("field" .=) <$> _gpdvtsField,+                  ("infoType" .=) <$> _gpdvtsInfoType,+                  ("recordSuppress" .=) <$> _gpdvtsRecordSuppress,+                  ("transformedBytes" .=) <$> _gpdvtsTransformedBytes,+                  ("fieldTransformations" .=) <$>+                    _gpdvtsFieldTransformations,+                  ("transformation" .=) <$> _gpdvtsTransformation])++-- | Message for specifying an adjustment to the likelihood of a finding as+-- part of a detection rule.+--+-- /See:/ 'googlePrivacyDlpV2LikelihoodAdjustment' smart constructor.+data GooglePrivacyDlpV2LikelihoodAdjustment =+  GooglePrivacyDlpV2LikelihoodAdjustment'+    { _gpdvlaFixedLikelihood    :: !(Maybe GooglePrivacyDlpV2LikelihoodAdjustmentFixedLikelihood)+    , _gpdvlaRelativeLikelihood :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2LikelihoodAdjustment' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvlaFixedLikelihood'+--+-- * 'gpdvlaRelativeLikelihood'+googlePrivacyDlpV2LikelihoodAdjustment+    :: GooglePrivacyDlpV2LikelihoodAdjustment+googlePrivacyDlpV2LikelihoodAdjustment =+  GooglePrivacyDlpV2LikelihoodAdjustment'+    {_gpdvlaFixedLikelihood = Nothing, _gpdvlaRelativeLikelihood = Nothing}+++-- | Set the likelihood of a finding to a fixed value.+gpdvlaFixedLikelihood :: Lens' GooglePrivacyDlpV2LikelihoodAdjustment (Maybe GooglePrivacyDlpV2LikelihoodAdjustmentFixedLikelihood)+gpdvlaFixedLikelihood+  = lens _gpdvlaFixedLikelihood+      (\ s a -> s{_gpdvlaFixedLikelihood = a})++-- | Increase or decrease the likelihood by the specified number of levels.+-- For example, if a finding would be \`POSSIBLE\` without the detection+-- rule and \`relative_likelihood\` is 1, then it is upgraded to+-- \`LIKELY\`, while a value of -1 would downgrade it to \`UNLIKELY\`.+-- Likelihood may never drop below \`VERY_UNLIKELY\` or exceed+-- \`VERY_LIKELY\`, so applying an adjustment of 1 followed by an+-- adjustment of -1 when base likelihood is \`VERY_LIKELY\` will result in+-- a final likelihood of \`LIKELY\`.+gpdvlaRelativeLikelihood :: Lens' GooglePrivacyDlpV2LikelihoodAdjustment (Maybe Int32)+gpdvlaRelativeLikelihood+  = lens _gpdvlaRelativeLikelihood+      (\ s a -> s{_gpdvlaRelativeLikelihood = a})+      . mapping _Coerce++instance FromJSON+           GooglePrivacyDlpV2LikelihoodAdjustment+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2LikelihoodAdjustment"+              (\ o ->+                 GooglePrivacyDlpV2LikelihoodAdjustment' <$>+                   (o .:? "fixedLikelihood") <*>+                     (o .:? "relativeLikelihood"))++instance ToJSON+           GooglePrivacyDlpV2LikelihoodAdjustment+         where+        toJSON GooglePrivacyDlpV2LikelihoodAdjustment'{..}+          = object+              (catMaybes+                 [("fixedLikelihood" .=) <$> _gpdvlaFixedLikelihood,+                  ("relativeLikelihood" .=) <$>+                    _gpdvlaRelativeLikelihood])++-- | Message defining a custom regular expression.+--+-- /See:/ 'googlePrivacyDlpV2Regex' smart constructor.+data GooglePrivacyDlpV2Regex =+  GooglePrivacyDlpV2Regex'+    { _gpdvrGroupIndexes :: !(Maybe [Textual Int32])+    , _gpdvrPattern      :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Regex' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrGroupIndexes'+--+-- * 'gpdvrPattern'+googlePrivacyDlpV2Regex+    :: GooglePrivacyDlpV2Regex+googlePrivacyDlpV2Regex =+  GooglePrivacyDlpV2Regex'+    {_gpdvrGroupIndexes = Nothing, _gpdvrPattern = Nothing}+++-- | The index of the submatch to extract as findings. When not specified,+-- the entire match is returned. No more than 3 may be included.+gpdvrGroupIndexes :: Lens' GooglePrivacyDlpV2Regex [Int32]+gpdvrGroupIndexes+  = lens _gpdvrGroupIndexes+      (\ s a -> s{_gpdvrGroupIndexes = a})+      . _Default+      . _Coerce++-- | Pattern defining the regular expression. Its syntax+-- (https:\/\/github.com\/google\/re2\/wiki\/Syntax) can be found under the+-- google\/re2 repository on GitHub.+gpdvrPattern :: Lens' GooglePrivacyDlpV2Regex (Maybe Text)+gpdvrPattern+  = lens _gpdvrPattern (\ s a -> s{_gpdvrPattern = a})++instance FromJSON GooglePrivacyDlpV2Regex where+        parseJSON+          = withObject "GooglePrivacyDlpV2Regex"+              (\ o ->+                 GooglePrivacyDlpV2Regex' <$>+                   (o .:? "groupIndexes" .!= mempty) <*>+                     (o .:? "pattern"))++instance ToJSON GooglePrivacyDlpV2Regex where+        toJSON GooglePrivacyDlpV2Regex'{..}+          = object+              (catMaybes+                 [("groupIndexes" .=) <$> _gpdvrGroupIndexes,+                  ("pattern" .=) <$> _gpdvrPattern])++-- | Request message for UpdateStoredInfoType.+--+-- /See:/ 'googlePrivacyDlpV2UpdateStoredInfoTypeRequest' smart constructor.+data GooglePrivacyDlpV2UpdateStoredInfoTypeRequest =+  GooglePrivacyDlpV2UpdateStoredInfoTypeRequest'+    { _gpdvusitrConfig     :: !(Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)+    , _gpdvusitrUpdateMask :: !(Maybe GFieldMask)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2UpdateStoredInfoTypeRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvusitrConfig'+--+-- * 'gpdvusitrUpdateMask'+googlePrivacyDlpV2UpdateStoredInfoTypeRequest+    :: GooglePrivacyDlpV2UpdateStoredInfoTypeRequest+googlePrivacyDlpV2UpdateStoredInfoTypeRequest =+  GooglePrivacyDlpV2UpdateStoredInfoTypeRequest'+    {_gpdvusitrConfig = Nothing, _gpdvusitrUpdateMask = Nothing}+++-- | Updated configuration for the storedInfoType. If not provided, a new+-- version of the storedInfoType will be created with the existing+-- configuration.+gpdvusitrConfig :: Lens' GooglePrivacyDlpV2UpdateStoredInfoTypeRequest (Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)+gpdvusitrConfig+  = lens _gpdvusitrConfig+      (\ s a -> s{_gpdvusitrConfig = a})++-- | Mask to control which fields get updated.+gpdvusitrUpdateMask :: Lens' GooglePrivacyDlpV2UpdateStoredInfoTypeRequest (Maybe GFieldMask)+gpdvusitrUpdateMask+  = lens _gpdvusitrUpdateMask+      (\ s a -> s{_gpdvusitrUpdateMask = a})++instance FromJSON+           GooglePrivacyDlpV2UpdateStoredInfoTypeRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2UpdateStoredInfoTypeRequest"+              (\ o ->+                 GooglePrivacyDlpV2UpdateStoredInfoTypeRequest' <$>+                   (o .:? "config") <*> (o .:? "updateMask"))++instance ToJSON+           GooglePrivacyDlpV2UpdateStoredInfoTypeRequest+         where+        toJSON+          GooglePrivacyDlpV2UpdateStoredInfoTypeRequest'{..}+          = object+              (catMaybes+                 [("config" .=) <$> _gpdvusitrConfig,+                  ("updateMask" .=) <$> _gpdvusitrUpdateMask])++-- | The set of columns\' values that share the same ldiversity value+--+-- /See:/ 'googlePrivacyDlpV2KAnonymityEquivalenceClass' smart constructor.+data GooglePrivacyDlpV2KAnonymityEquivalenceClass =+  GooglePrivacyDlpV2KAnonymityEquivalenceClass'+    { _gpdvkaecEquivalenceClassSize :: !(Maybe (Textual Int64))+    , _gpdvkaecQuasiIdsValues       :: !(Maybe [GooglePrivacyDlpV2Value])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2KAnonymityEquivalenceClass' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvkaecEquivalenceClassSize'+--+-- * 'gpdvkaecQuasiIdsValues'+googlePrivacyDlpV2KAnonymityEquivalenceClass+    :: GooglePrivacyDlpV2KAnonymityEquivalenceClass+googlePrivacyDlpV2KAnonymityEquivalenceClass =+  GooglePrivacyDlpV2KAnonymityEquivalenceClass'+    {_gpdvkaecEquivalenceClassSize = Nothing, _gpdvkaecQuasiIdsValues = Nothing}+++-- | Size of the equivalence class, for example number of rows with the above+-- set of values.+gpdvkaecEquivalenceClassSize :: Lens' GooglePrivacyDlpV2KAnonymityEquivalenceClass (Maybe Int64)+gpdvkaecEquivalenceClassSize+  = lens _gpdvkaecEquivalenceClassSize+      (\ s a -> s{_gpdvkaecEquivalenceClassSize = a})+      . mapping _Coerce++-- | Set of values defining the equivalence class. One value per+-- quasi-identifier column in the original KAnonymity metric message. The+-- order is always the same as the original request.+gpdvkaecQuasiIdsValues :: Lens' GooglePrivacyDlpV2KAnonymityEquivalenceClass [GooglePrivacyDlpV2Value]+gpdvkaecQuasiIdsValues+  = lens _gpdvkaecQuasiIdsValues+      (\ s a -> s{_gpdvkaecQuasiIdsValues = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2KAnonymityEquivalenceClass+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2KAnonymityEquivalenceClass"+              (\ o ->+                 GooglePrivacyDlpV2KAnonymityEquivalenceClass' <$>+                   (o .:? "equivalenceClassSize") <*>+                     (o .:? "quasiIdsValues" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2KAnonymityEquivalenceClass+         where+        toJSON+          GooglePrivacyDlpV2KAnonymityEquivalenceClass'{..}+          = object+              (catMaybes+                 [("equivalenceClassSize" .=) <$>+                    _gpdvkaecEquivalenceClassSize,+                  ("quasiIdsValues" .=) <$> _gpdvkaecQuasiIdsValues])++-- | Request message for UpdateDeidentifyTemplate.+--+-- /See:/ 'googlePrivacyDlpV2UpdateDeidentifyTemplateRequest' smart constructor.+data GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest =+  GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest'+    { _gpdvudtrUpdateMask         :: !(Maybe GFieldMask)+    , _gpdvudtrDeidentifyTemplate :: !(Maybe GooglePrivacyDlpV2DeidentifyTemplate)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvudtrUpdateMask'+--+-- * 'gpdvudtrDeidentifyTemplate'+googlePrivacyDlpV2UpdateDeidentifyTemplateRequest+    :: GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest+googlePrivacyDlpV2UpdateDeidentifyTemplateRequest =+  GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest'+    {_gpdvudtrUpdateMask = Nothing, _gpdvudtrDeidentifyTemplate = Nothing}+++-- | Mask to control which fields get updated.+gpdvudtrUpdateMask :: Lens' GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest (Maybe GFieldMask)+gpdvudtrUpdateMask+  = lens _gpdvudtrUpdateMask+      (\ s a -> s{_gpdvudtrUpdateMask = a})++-- | New DeidentifyTemplate value.+gpdvudtrDeidentifyTemplate :: Lens' GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest (Maybe GooglePrivacyDlpV2DeidentifyTemplate)+gpdvudtrDeidentifyTemplate+  = lens _gpdvudtrDeidentifyTemplate+      (\ s a -> s{_gpdvudtrDeidentifyTemplate = a})++instance FromJSON+           GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest"+              (\ o ->+                 GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest'+                   <$>+                   (o .:? "updateMask") <*>+                     (o .:? "deidentifyTemplate"))++instance ToJSON+           GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest+         where+        toJSON+          GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest'{..}+          = object+              (catMaybes+                 [("updateMask" .=) <$> _gpdvudtrUpdateMask,+                  ("deidentifyTemplate" .=) <$>+                    _gpdvudtrDeidentifyTemplate])++-- | l-diversity metric, used for analysis of reidentification risk.+--+-- /See:/ 'googlePrivacyDlpV2LDiversityConfig' smart constructor.+data GooglePrivacyDlpV2LDiversityConfig =+  GooglePrivacyDlpV2LDiversityConfig'+    { _gpdvldcSensitiveAttribute :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvldcQuasiIds           :: !(Maybe [GooglePrivacyDlpV2FieldId])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2LDiversityConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvldcSensitiveAttribute'+--+-- * 'gpdvldcQuasiIds'+googlePrivacyDlpV2LDiversityConfig+    :: GooglePrivacyDlpV2LDiversityConfig+googlePrivacyDlpV2LDiversityConfig =+  GooglePrivacyDlpV2LDiversityConfig'+    {_gpdvldcSensitiveAttribute = Nothing, _gpdvldcQuasiIds = Nothing}+++-- | Sensitive field for computing the l-value.+gpdvldcSensitiveAttribute :: Lens' GooglePrivacyDlpV2LDiversityConfig (Maybe GooglePrivacyDlpV2FieldId)+gpdvldcSensitiveAttribute+  = lens _gpdvldcSensitiveAttribute+      (\ s a -> s{_gpdvldcSensitiveAttribute = a})++-- | Set of quasi-identifiers indicating how equivalence classes are defined+-- for the l-diversity computation. When multiple fields are specified,+-- they are considered a single composite key.+gpdvldcQuasiIds :: Lens' GooglePrivacyDlpV2LDiversityConfig [GooglePrivacyDlpV2FieldId]+gpdvldcQuasiIds+  = lens _gpdvldcQuasiIds+      (\ s a -> s{_gpdvldcQuasiIds = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2LDiversityConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2LDiversityConfig"+              (\ o ->+                 GooglePrivacyDlpV2LDiversityConfig' <$>+                   (o .:? "sensitiveAttribute") <*>+                     (o .:? "quasiIds" .!= mempty))++instance ToJSON GooglePrivacyDlpV2LDiversityConfig+         where+        toJSON GooglePrivacyDlpV2LDiversityConfig'{..}+          = object+              (catMaybes+                 [("sensitiveAttribute" .=) <$>+                    _gpdvldcSensitiveAttribute,+                  ("quasiIds" .=) <$> _gpdvldcQuasiIds])++-- | Enable email notification to project owners and editors on jobs\'s+-- completion\/failure.+--+-- /See:/ 'googlePrivacyDlpV2JobNotificationEmails' smart constructor.+data GooglePrivacyDlpV2JobNotificationEmails =+  GooglePrivacyDlpV2JobNotificationEmails'+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2JobNotificationEmails' with the minimum fields required to make a request.+--+googlePrivacyDlpV2JobNotificationEmails+    :: GooglePrivacyDlpV2JobNotificationEmails+googlePrivacyDlpV2JobNotificationEmails =+  GooglePrivacyDlpV2JobNotificationEmails'+++instance FromJSON+           GooglePrivacyDlpV2JobNotificationEmails+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2JobNotificationEmails"+              (\ o ->+                 pure GooglePrivacyDlpV2JobNotificationEmails')++instance ToJSON+           GooglePrivacyDlpV2JobNotificationEmails+         where+        toJSON = const emptyObject++-- | Request to de-identify a list of items.+--+-- /See:/ 'googlePrivacyDlpV2DeidentifyContentRequest' smart constructor.+data GooglePrivacyDlpV2DeidentifyContentRequest =+  GooglePrivacyDlpV2DeidentifyContentRequest'+    { _gpdvdcrInspectConfig          :: !(Maybe GooglePrivacyDlpV2InspectConfig)+    , _gpdvdcrDeidentifyConfig       :: !(Maybe GooglePrivacyDlpV2DeidentifyConfig)+    , _gpdvdcrDeidentifyTemplateName :: !(Maybe Text)+    , _gpdvdcrItem                   :: !(Maybe GooglePrivacyDlpV2ContentItem)+    , _gpdvdcrInspectTemplateName    :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DeidentifyContentRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdcrInspectConfig'+--+-- * 'gpdvdcrDeidentifyConfig'+--+-- * 'gpdvdcrDeidentifyTemplateName'+--+-- * 'gpdvdcrItem'+--+-- * 'gpdvdcrInspectTemplateName'+googlePrivacyDlpV2DeidentifyContentRequest+    :: GooglePrivacyDlpV2DeidentifyContentRequest+googlePrivacyDlpV2DeidentifyContentRequest =+  GooglePrivacyDlpV2DeidentifyContentRequest'+    { _gpdvdcrInspectConfig = Nothing+    , _gpdvdcrDeidentifyConfig = Nothing+    , _gpdvdcrDeidentifyTemplateName = Nothing+    , _gpdvdcrItem = Nothing+    , _gpdvdcrInspectTemplateName = Nothing+    }+++-- | Configuration for the inspector. Items specified here will override the+-- template referenced by the inspect_template_name argument.+gpdvdcrInspectConfig :: Lens' GooglePrivacyDlpV2DeidentifyContentRequest (Maybe GooglePrivacyDlpV2InspectConfig)+gpdvdcrInspectConfig+  = lens _gpdvdcrInspectConfig+      (\ s a -> s{_gpdvdcrInspectConfig = a})++-- | Configuration for the de-identification of the content item. Items+-- specified here will override the template referenced by the+-- deidentify_template_name argument.+gpdvdcrDeidentifyConfig :: Lens' GooglePrivacyDlpV2DeidentifyContentRequest (Maybe GooglePrivacyDlpV2DeidentifyConfig)+gpdvdcrDeidentifyConfig+  = lens _gpdvdcrDeidentifyConfig+      (\ s a -> s{_gpdvdcrDeidentifyConfig = a})++-- | Optional template to use. Any configuration directly specified in+-- deidentify_config will override those set in the template. Singular+-- fields that are set in this request will replace their corresponding+-- fields in the template. Repeated fields are appended. Singular+-- sub-messages and groups are recursively merged.+gpdvdcrDeidentifyTemplateName :: Lens' GooglePrivacyDlpV2DeidentifyContentRequest (Maybe Text)+gpdvdcrDeidentifyTemplateName+  = lens _gpdvdcrDeidentifyTemplateName+      (\ s a -> s{_gpdvdcrDeidentifyTemplateName = a})++-- | The item to de-identify. Will be treated as text.+gpdvdcrItem :: Lens' GooglePrivacyDlpV2DeidentifyContentRequest (Maybe GooglePrivacyDlpV2ContentItem)+gpdvdcrItem+  = lens _gpdvdcrItem (\ s a -> s{_gpdvdcrItem = a})++-- | Optional template to use. Any configuration directly specified in+-- inspect_config will override those set in the template. Singular fields+-- that are set in this request will replace their corresponding fields in+-- the template. Repeated fields are appended. Singular sub-messages and+-- groups are recursively merged.+gpdvdcrInspectTemplateName :: Lens' GooglePrivacyDlpV2DeidentifyContentRequest (Maybe Text)+gpdvdcrInspectTemplateName+  = lens _gpdvdcrInspectTemplateName+      (\ s a -> s{_gpdvdcrInspectTemplateName = a})++instance FromJSON+           GooglePrivacyDlpV2DeidentifyContentRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2DeidentifyContentRequest"+              (\ o ->+                 GooglePrivacyDlpV2DeidentifyContentRequest' <$>+                   (o .:? "inspectConfig") <*>+                     (o .:? "deidentifyConfig")+                     <*> (o .:? "deidentifyTemplateName")+                     <*> (o .:? "item")+                     <*> (o .:? "inspectTemplateName"))++instance ToJSON+           GooglePrivacyDlpV2DeidentifyContentRequest+         where+        toJSON+          GooglePrivacyDlpV2DeidentifyContentRequest'{..}+          = object+              (catMaybes+                 [("inspectConfig" .=) <$> _gpdvdcrInspectConfig,+                  ("deidentifyConfig" .=) <$> _gpdvdcrDeidentifyConfig,+                  ("deidentifyTemplateName" .=) <$>+                    _gpdvdcrDeidentifyTemplateName,+                  ("item" .=) <$> _gpdvdcrItem,+                  ("inspectTemplateName" .=) <$>+                    _gpdvdcrInspectTemplateName])++-- | Represents a color in the RGB color space.+--+-- /See:/ 'googlePrivacyDlpV2Color' smart constructor.+data GooglePrivacyDlpV2Color =+  GooglePrivacyDlpV2Color'+    { _gpdvcRed   :: !(Maybe (Textual Double))+    , _gpdvcGreen :: !(Maybe (Textual Double))+    , _gpdvcBlue  :: !(Maybe (Textual Double))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Color' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcRed'+--+-- * 'gpdvcGreen'+--+-- * 'gpdvcBlue'+googlePrivacyDlpV2Color+    :: GooglePrivacyDlpV2Color+googlePrivacyDlpV2Color =+  GooglePrivacyDlpV2Color'+    {_gpdvcRed = Nothing, _gpdvcGreen = Nothing, _gpdvcBlue = Nothing}+++-- | The amount of red in the color as a value in the interval [0, 1].+gpdvcRed :: Lens' GooglePrivacyDlpV2Color (Maybe Double)+gpdvcRed+  = lens _gpdvcRed (\ s a -> s{_gpdvcRed = a}) .+      mapping _Coerce++-- | The amount of green in the color as a value in the interval [0, 1].+gpdvcGreen :: Lens' GooglePrivacyDlpV2Color (Maybe Double)+gpdvcGreen+  = lens _gpdvcGreen (\ s a -> s{_gpdvcGreen = a}) .+      mapping _Coerce++-- | The amount of blue in the color as a value in the interval [0, 1].+gpdvcBlue :: Lens' GooglePrivacyDlpV2Color (Maybe Double)+gpdvcBlue+  = lens _gpdvcBlue (\ s a -> s{_gpdvcBlue = a}) .+      mapping _Coerce++instance FromJSON GooglePrivacyDlpV2Color where+        parseJSON+          = withObject "GooglePrivacyDlpV2Color"+              (\ o ->+                 GooglePrivacyDlpV2Color' <$>+                   (o .:? "red") <*> (o .:? "green") <*> (o .:? "blue"))++instance ToJSON GooglePrivacyDlpV2Color where+        toJSON GooglePrivacyDlpV2Color'{..}+          = object+              (catMaybes+                 [("red" .=) <$> _gpdvcRed,+                  ("green" .=) <$> _gpdvcGreen,+                  ("blue" .=) <$> _gpdvcBlue])++-- | The response message for listing DLP jobs.+--+-- /See:/ 'googlePrivacyDlpV2ListDlpJobsResponse' smart constructor.+data GooglePrivacyDlpV2ListDlpJobsResponse =+  GooglePrivacyDlpV2ListDlpJobsResponse'+    { _gpdvldjrNextPageToken :: !(Maybe Text)+    , _gpdvldjrJobs          :: !(Maybe [GooglePrivacyDlpV2DlpJob])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ListDlpJobsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvldjrNextPageToken'+--+-- * 'gpdvldjrJobs'+googlePrivacyDlpV2ListDlpJobsResponse+    :: GooglePrivacyDlpV2ListDlpJobsResponse+googlePrivacyDlpV2ListDlpJobsResponse =+  GooglePrivacyDlpV2ListDlpJobsResponse'+    {_gpdvldjrNextPageToken = Nothing, _gpdvldjrJobs = Nothing}+++-- | The standard List next-page token.+gpdvldjrNextPageToken :: Lens' GooglePrivacyDlpV2ListDlpJobsResponse (Maybe Text)+gpdvldjrNextPageToken+  = lens _gpdvldjrNextPageToken+      (\ s a -> s{_gpdvldjrNextPageToken = a})++-- | A list of DlpJobs that matches the specified filter in the request.+gpdvldjrJobs :: Lens' GooglePrivacyDlpV2ListDlpJobsResponse [GooglePrivacyDlpV2DlpJob]+gpdvldjrJobs+  = lens _gpdvldjrJobs (\ s a -> s{_gpdvldjrJobs = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2ListDlpJobsResponse+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2ListDlpJobsResponse"+              (\ o ->+                 GooglePrivacyDlpV2ListDlpJobsResponse' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "jobs" .!= mempty))++instance ToJSON GooglePrivacyDlpV2ListDlpJobsResponse+         where+        toJSON GooglePrivacyDlpV2ListDlpJobsResponse'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _gpdvldjrNextPageToken,+                  ("jobs" .=) <$> _gpdvldjrJobs])++-- | Message for specifying a window around a finding to apply a detection+-- rule.+--+-- /See:/ 'googlePrivacyDlpV2Proximity' smart constructor.+data GooglePrivacyDlpV2Proximity =+  GooglePrivacyDlpV2Proximity'+    { _gpdvpWindowAfter  :: !(Maybe (Textual Int32))+    , _gpdvpWindowBefore :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Proximity' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvpWindowAfter'+--+-- * 'gpdvpWindowBefore'+googlePrivacyDlpV2Proximity+    :: GooglePrivacyDlpV2Proximity+googlePrivacyDlpV2Proximity =+  GooglePrivacyDlpV2Proximity'+    {_gpdvpWindowAfter = Nothing, _gpdvpWindowBefore = Nothing}+++-- | Number of characters after the finding to consider.+gpdvpWindowAfter :: Lens' GooglePrivacyDlpV2Proximity (Maybe Int32)+gpdvpWindowAfter+  = lens _gpdvpWindowAfter+      (\ s a -> s{_gpdvpWindowAfter = a})+      . mapping _Coerce++-- | Number of characters before the finding to consider.+gpdvpWindowBefore :: Lens' GooglePrivacyDlpV2Proximity (Maybe Int32)+gpdvpWindowBefore+  = lens _gpdvpWindowBefore+      (\ s a -> s{_gpdvpWindowBefore = a})+      . mapping _Coerce++instance FromJSON GooglePrivacyDlpV2Proximity where+        parseJSON+          = withObject "GooglePrivacyDlpV2Proximity"+              (\ o ->+                 GooglePrivacyDlpV2Proximity' <$>+                   (o .:? "windowAfter") <*> (o .:? "windowBefore"))++instance ToJSON GooglePrivacyDlpV2Proximity where+        toJSON GooglePrivacyDlpV2Proximity'{..}+          = object+              (catMaybes+                 [("windowAfter" .=) <$> _gpdvpWindowAfter,+                  ("windowBefore" .=) <$> _gpdvpWindowBefore])++-- | Represents a piece of potentially sensitive content.+--+-- /See:/ 'googlePrivacyDlpV2Finding' smart constructor.+data GooglePrivacyDlpV2Finding =+  GooglePrivacyDlpV2Finding'+    { _gpdvfLocation   :: !(Maybe GooglePrivacyDlpV2Location)+    , _gpdvfInfoType   :: !(Maybe GooglePrivacyDlpV2InfoType)+    , _gpdvfQuoteInfo  :: !(Maybe GooglePrivacyDlpV2QuoteInfo)+    , _gpdvfLikelihood :: !(Maybe GooglePrivacyDlpV2FindingLikelihood)+    , _gpdvfQuote      :: !(Maybe Text)+    , _gpdvfCreateTime :: !(Maybe DateTime')+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Finding' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvfLocation'+--+-- * 'gpdvfInfoType'+--+-- * 'gpdvfQuoteInfo'+--+-- * 'gpdvfLikelihood'+--+-- * 'gpdvfQuote'+--+-- * 'gpdvfCreateTime'+googlePrivacyDlpV2Finding+    :: GooglePrivacyDlpV2Finding+googlePrivacyDlpV2Finding =+  GooglePrivacyDlpV2Finding'+    { _gpdvfLocation = Nothing+    , _gpdvfInfoType = Nothing+    , _gpdvfQuoteInfo = Nothing+    , _gpdvfLikelihood = Nothing+    , _gpdvfQuote = Nothing+    , _gpdvfCreateTime = Nothing+    }+++-- | Where the content was found.+gpdvfLocation :: Lens' GooglePrivacyDlpV2Finding (Maybe GooglePrivacyDlpV2Location)+gpdvfLocation+  = lens _gpdvfLocation+      (\ s a -> s{_gpdvfLocation = a})++-- | The type of content that might have been found. Provided if+-- \`excluded_types\` is false.+gpdvfInfoType :: Lens' GooglePrivacyDlpV2Finding (Maybe GooglePrivacyDlpV2InfoType)+gpdvfInfoType+  = lens _gpdvfInfoType+      (\ s a -> s{_gpdvfInfoType = a})++-- | Contains data parsed from quotes. Only populated if include_quote was+-- set to true and a supported infoType was requested. Currently supported+-- infoTypes: DATE, DATE_OF_BIRTH and TIME.+gpdvfQuoteInfo :: Lens' GooglePrivacyDlpV2Finding (Maybe GooglePrivacyDlpV2QuoteInfo)+gpdvfQuoteInfo+  = lens _gpdvfQuoteInfo+      (\ s a -> s{_gpdvfQuoteInfo = a})++-- | Confidence of how likely it is that the \`info_type\` is correct.+gpdvfLikelihood :: Lens' GooglePrivacyDlpV2Finding (Maybe GooglePrivacyDlpV2FindingLikelihood)+gpdvfLikelihood+  = lens _gpdvfLikelihood+      (\ s a -> s{_gpdvfLikelihood = a})++-- | The content that was found. Even if the content is not textual, it may+-- be converted to a textual representation here. Provided if+-- \`include_quote\` is true and the finding is less than or equal to 4096+-- bytes long. If the finding exceeds 4096 bytes in length, the quote may+-- be omitted.+gpdvfQuote :: Lens' GooglePrivacyDlpV2Finding (Maybe Text)+gpdvfQuote+  = lens _gpdvfQuote (\ s a -> s{_gpdvfQuote = a})++-- | Timestamp when finding was detected.+gpdvfCreateTime :: Lens' GooglePrivacyDlpV2Finding (Maybe UTCTime)+gpdvfCreateTime+  = lens _gpdvfCreateTime+      (\ s a -> s{_gpdvfCreateTime = a})+      . mapping _DateTime++instance FromJSON GooglePrivacyDlpV2Finding where+        parseJSON+          = withObject "GooglePrivacyDlpV2Finding"+              (\ o ->+                 GooglePrivacyDlpV2Finding' <$>+                   (o .:? "location") <*> (o .:? "infoType") <*>+                     (o .:? "quoteInfo")+                     <*> (o .:? "likelihood")+                     <*> (o .:? "quote")+                     <*> (o .:? "createTime"))++instance ToJSON GooglePrivacyDlpV2Finding where+        toJSON GooglePrivacyDlpV2Finding'{..}+          = object+              (catMaybes+                 [("location" .=) <$> _gpdvfLocation,+                  ("infoType" .=) <$> _gpdvfInfoType,+                  ("quoteInfo" .=) <$> _gpdvfQuoteInfo,+                  ("likelihood" .=) <$> _gpdvfLikelihood,+                  ("quote" .=) <$> _gpdvfQuote,+                  ("createTime" .=) <$> _gpdvfCreateTime])++-- | A collection that informs the user the number of times a particular+-- \`TransformationResultCode\` and error details occurred.+--+-- /See:/ 'googlePrivacyDlpV2SummaryResult' smart constructor.+data GooglePrivacyDlpV2SummaryResult =+  GooglePrivacyDlpV2SummaryResult'+    { _gpdvsrCount   :: !(Maybe (Textual Int64))+    , _gpdvsrDetails :: !(Maybe Text)+    , _gpdvsrCode    :: !(Maybe GooglePrivacyDlpV2SummaryResultCode)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2SummaryResult' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvsrCount'+--+-- * 'gpdvsrDetails'+--+-- * 'gpdvsrCode'+googlePrivacyDlpV2SummaryResult+    :: GooglePrivacyDlpV2SummaryResult+googlePrivacyDlpV2SummaryResult =+  GooglePrivacyDlpV2SummaryResult'+    {_gpdvsrCount = Nothing, _gpdvsrDetails = Nothing, _gpdvsrCode = Nothing}+++gpdvsrCount :: Lens' GooglePrivacyDlpV2SummaryResult (Maybe Int64)+gpdvsrCount+  = lens _gpdvsrCount (\ s a -> s{_gpdvsrCount = a}) .+      mapping _Coerce++-- | A place for warnings or errors to show up if a transformation didn\'t+-- work as expected.+gpdvsrDetails :: Lens' GooglePrivacyDlpV2SummaryResult (Maybe Text)+gpdvsrDetails+  = lens _gpdvsrDetails+      (\ s a -> s{_gpdvsrDetails = a})++gpdvsrCode :: Lens' GooglePrivacyDlpV2SummaryResult (Maybe GooglePrivacyDlpV2SummaryResultCode)+gpdvsrCode+  = lens _gpdvsrCode (\ s a -> s{_gpdvsrCode = a})++instance FromJSON GooglePrivacyDlpV2SummaryResult+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2SummaryResult"+              (\ o ->+                 GooglePrivacyDlpV2SummaryResult' <$>+                   (o .:? "count") <*> (o .:? "details") <*>+                     (o .:? "code"))++instance ToJSON GooglePrivacyDlpV2SummaryResult where+        toJSON GooglePrivacyDlpV2SummaryResult'{..}+          = object+              (catMaybes+                 [("count" .=) <$> _gpdvsrCount,+                  ("details" .=) <$> _gpdvsrDetails,+                  ("code" .=) <$> _gpdvsrCode])++--+-- /See:/ 'googlePrivacyDlpV2Row' smart constructor.+newtype GooglePrivacyDlpV2Row =+  GooglePrivacyDlpV2Row'+    { _gpdvrValues :: Maybe [GooglePrivacyDlpV2Value]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Row' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrValues'+googlePrivacyDlpV2Row+    :: GooglePrivacyDlpV2Row+googlePrivacyDlpV2Row = GooglePrivacyDlpV2Row' {_gpdvrValues = Nothing}+++gpdvrValues :: Lens' GooglePrivacyDlpV2Row [GooglePrivacyDlpV2Value]+gpdvrValues+  = lens _gpdvrValues (\ s a -> s{_gpdvrValues = a}) .+      _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2Row where+        parseJSON+          = withObject "GooglePrivacyDlpV2Row"+              (\ o ->+                 GooglePrivacyDlpV2Row' <$>+                   (o .:? "values" .!= mempty))++instance ToJSON GooglePrivacyDlpV2Row where+        toJSON GooglePrivacyDlpV2Row'{..}+          = object (catMaybes [("values" .=) <$> _gpdvrValues])++-- | Replace each matching finding with the name of the info_type.+--+-- /See:/ 'googlePrivacyDlpV2ReplaceWithInfoTypeConfig' smart constructor.+data GooglePrivacyDlpV2ReplaceWithInfoTypeConfig =+  GooglePrivacyDlpV2ReplaceWithInfoTypeConfig'+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ReplaceWithInfoTypeConfig' with the minimum fields required to make a request.+--+googlePrivacyDlpV2ReplaceWithInfoTypeConfig+    :: GooglePrivacyDlpV2ReplaceWithInfoTypeConfig+googlePrivacyDlpV2ReplaceWithInfoTypeConfig =+  GooglePrivacyDlpV2ReplaceWithInfoTypeConfig'+++instance FromJSON+           GooglePrivacyDlpV2ReplaceWithInfoTypeConfig+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2ReplaceWithInfoTypeConfig"+              (\ o ->+                 pure GooglePrivacyDlpV2ReplaceWithInfoTypeConfig')++instance ToJSON+           GooglePrivacyDlpV2ReplaceWithInfoTypeConfig+         where+        toJSON = const emptyObject++-- | Represents a time of day. The date and time zone are either not+-- significant or are specified elsewhere. An API may choose to allow leap+-- seconds. Related types are google.type.Date and+-- \`google.protobuf.Timestamp\`.+--+-- /See:/ 'googleTypeTimeOfDay' smart constructor.+data GoogleTypeTimeOfDay =+  GoogleTypeTimeOfDay'+    { _gttodNanos   :: !(Maybe (Textual Int32))+    , _gttodHours   :: !(Maybe (Textual Int32))+    , _gttodMinutes :: !(Maybe (Textual Int32))+    , _gttodSeconds :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GoogleTypeTimeOfDay' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gttodNanos'+--+-- * 'gttodHours'+--+-- * 'gttodMinutes'+--+-- * 'gttodSeconds'+googleTypeTimeOfDay+    :: GoogleTypeTimeOfDay+googleTypeTimeOfDay =+  GoogleTypeTimeOfDay'+    { _gttodNanos = Nothing+    , _gttodHours = Nothing+    , _gttodMinutes = Nothing+    , _gttodSeconds = Nothing+    }+++-- | Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.+gttodNanos :: Lens' GoogleTypeTimeOfDay (Maybe Int32)+gttodNanos+  = lens _gttodNanos (\ s a -> s{_gttodNanos = a}) .+      mapping _Coerce++-- | Hours of day in 24 hour format. Should be from 0 to 23. An API may+-- choose to allow the value \"24:00:00\" for scenarios like business+-- closing time.+gttodHours :: Lens' GoogleTypeTimeOfDay (Maybe Int32)+gttodHours+  = lens _gttodHours (\ s a -> s{_gttodHours = a}) .+      mapping _Coerce++-- | Minutes of hour of day. Must be from 0 to 59.+gttodMinutes :: Lens' GoogleTypeTimeOfDay (Maybe Int32)+gttodMinutes+  = lens _gttodMinutes (\ s a -> s{_gttodMinutes = a})+      . mapping _Coerce++-- | Seconds of minutes of the time. Must normally be from 0 to 59. An API+-- may allow the value 60 if it allows leap-seconds.+gttodSeconds :: Lens' GoogleTypeTimeOfDay (Maybe Int32)+gttodSeconds+  = lens _gttodSeconds (\ s a -> s{_gttodSeconds = a})+      . mapping _Coerce++instance FromJSON GoogleTypeTimeOfDay where+        parseJSON+          = withObject "GoogleTypeTimeOfDay"+              (\ o ->+                 GoogleTypeTimeOfDay' <$>+                   (o .:? "nanos") <*> (o .:? "hours") <*>+                     (o .:? "minutes")+                     <*> (o .:? "seconds"))++instance ToJSON GoogleTypeTimeOfDay where+        toJSON GoogleTypeTimeOfDay'{..}+          = object+              (catMaybes+                 [("nanos" .=) <$> _gttodNanos,+                  ("hours" .=) <$> _gttodHours,+                  ("minutes" .=) <$> _gttodMinutes,+                  ("seconds" .=) <$> _gttodSeconds])++-- | The rule that specifies conditions when findings of infoTypes specified+-- in \`InspectionRuleSet\` are removed from results.+--+-- /See:/ 'googlePrivacyDlpV2ExclusionRule' smart constructor.+data GooglePrivacyDlpV2ExclusionRule =+  GooglePrivacyDlpV2ExclusionRule'+    { _gpdverRegex            :: !(Maybe GooglePrivacyDlpV2Regex)+    , _gpdverExcludeInfoTypes :: !(Maybe GooglePrivacyDlpV2ExcludeInfoTypes)+    , _gpdverDictionary       :: !(Maybe GooglePrivacyDlpV2Dictionary)+    , _gpdverMatchingType     :: !(Maybe GooglePrivacyDlpV2ExclusionRuleMatchingType)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ExclusionRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdverRegex'+--+-- * 'gpdverExcludeInfoTypes'+--+-- * 'gpdverDictionary'+--+-- * 'gpdverMatchingType'+googlePrivacyDlpV2ExclusionRule+    :: GooglePrivacyDlpV2ExclusionRule+googlePrivacyDlpV2ExclusionRule =+  GooglePrivacyDlpV2ExclusionRule'+    { _gpdverRegex = Nothing+    , _gpdverExcludeInfoTypes = Nothing+    , _gpdverDictionary = Nothing+    , _gpdverMatchingType = Nothing+    }+++-- | Regular expression which defines the rule.+gpdverRegex :: Lens' GooglePrivacyDlpV2ExclusionRule (Maybe GooglePrivacyDlpV2Regex)+gpdverRegex+  = lens _gpdverRegex (\ s a -> s{_gpdverRegex = a})++-- | Set of infoTypes for which findings would affect this rule.+gpdverExcludeInfoTypes :: Lens' GooglePrivacyDlpV2ExclusionRule (Maybe GooglePrivacyDlpV2ExcludeInfoTypes)+gpdverExcludeInfoTypes+  = lens _gpdverExcludeInfoTypes+      (\ s a -> s{_gpdverExcludeInfoTypes = a})++-- | Dictionary which defines the rule.+gpdverDictionary :: Lens' GooglePrivacyDlpV2ExclusionRule (Maybe GooglePrivacyDlpV2Dictionary)+gpdverDictionary+  = lens _gpdverDictionary+      (\ s a -> s{_gpdverDictionary = a})++-- | How the rule is applied, see MatchingType documentation for details.+gpdverMatchingType :: Lens' GooglePrivacyDlpV2ExclusionRule (Maybe GooglePrivacyDlpV2ExclusionRuleMatchingType)+gpdverMatchingType+  = lens _gpdverMatchingType+      (\ s a -> s{_gpdverMatchingType = a})++instance FromJSON GooglePrivacyDlpV2ExclusionRule+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2ExclusionRule"+              (\ o ->+                 GooglePrivacyDlpV2ExclusionRule' <$>+                   (o .:? "regex") <*> (o .:? "excludeInfoTypes") <*>+                     (o .:? "dictionary")+                     <*> (o .:? "matchingType"))++instance ToJSON GooglePrivacyDlpV2ExclusionRule where+        toJSON GooglePrivacyDlpV2ExclusionRule'{..}+          = object+              (catMaybes+                 [("regex" .=) <$> _gpdverRegex,+                  ("excludeInfoTypes" .=) <$> _gpdverExcludeInfoTypes,+                  ("dictionary" .=) <$> _gpdverDictionary,+                  ("matchingType" .=) <$> _gpdverMatchingType])++-- | Request message for CreateDlpJobRequest. Used to initiate long running+-- jobs such as calculating risk metrics or inspecting Google Cloud+-- Storage.+--+-- /See:/ 'googlePrivacyDlpV2CreateDlpJobRequest' smart constructor.+data GooglePrivacyDlpV2CreateDlpJobRequest =+  GooglePrivacyDlpV2CreateDlpJobRequest'+    { _gpdvcdjrRiskJob    :: !(Maybe GooglePrivacyDlpV2RiskAnalysisJobConfig)+    , _gpdvcdjrJobId      :: !(Maybe Text)+    , _gpdvcdjrInspectJob :: !(Maybe GooglePrivacyDlpV2InspectJobConfig)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CreateDlpJobRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcdjrRiskJob'+--+-- * 'gpdvcdjrJobId'+--+-- * 'gpdvcdjrInspectJob'+googlePrivacyDlpV2CreateDlpJobRequest+    :: GooglePrivacyDlpV2CreateDlpJobRequest+googlePrivacyDlpV2CreateDlpJobRequest =+  GooglePrivacyDlpV2CreateDlpJobRequest'+    { _gpdvcdjrRiskJob = Nothing+    , _gpdvcdjrJobId = Nothing+    , _gpdvcdjrInspectJob = Nothing+    }+++gpdvcdjrRiskJob :: Lens' GooglePrivacyDlpV2CreateDlpJobRequest (Maybe GooglePrivacyDlpV2RiskAnalysisJobConfig)+gpdvcdjrRiskJob+  = lens _gpdvcdjrRiskJob+      (\ s a -> s{_gpdvcdjrRiskJob = a})++-- | The job id can contain uppercase and lowercase letters, numbers, and+-- hyphens; that is, it must match the regular expression:+-- \`[a-zA-Z\\\\d-_]+\`. The maximum length is 100 characters. Can be empty+-- to allow the system to generate one.+gpdvcdjrJobId :: Lens' GooglePrivacyDlpV2CreateDlpJobRequest (Maybe Text)+gpdvcdjrJobId+  = lens _gpdvcdjrJobId+      (\ s a -> s{_gpdvcdjrJobId = a})++gpdvcdjrInspectJob :: Lens' GooglePrivacyDlpV2CreateDlpJobRequest (Maybe GooglePrivacyDlpV2InspectJobConfig)+gpdvcdjrInspectJob+  = lens _gpdvcdjrInspectJob+      (\ s a -> s{_gpdvcdjrInspectJob = a})++instance FromJSON+           GooglePrivacyDlpV2CreateDlpJobRequest+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2CreateDlpJobRequest"+              (\ o ->+                 GooglePrivacyDlpV2CreateDlpJobRequest' <$>+                   (o .:? "riskJob") <*> (o .:? "jobId") <*>+                     (o .:? "inspectJob"))++instance ToJSON GooglePrivacyDlpV2CreateDlpJobRequest+         where+        toJSON GooglePrivacyDlpV2CreateDlpJobRequest'{..}+          = object+              (catMaybes+                 [("riskJob" .=) <$> _gpdvcdjrRiskJob,+                  ("jobId" .=) <$> _gpdvcdjrJobId,+                  ("inspectJob" .=) <$> _gpdvcdjrInspectJob])++-- | Message for a unique key indicating a record that contains a finding.+--+-- /See:/ 'googlePrivacyDlpV2RecordKey' smart constructor.+data GooglePrivacyDlpV2RecordKey =+  GooglePrivacyDlpV2RecordKey'+    { _gpdvrkIdValues     :: !(Maybe [Text])+    , _gpdvrkDatastoreKey :: !(Maybe GooglePrivacyDlpV2DatastoreKey)+    , _gpdvrkBigQueryKey  :: !(Maybe GooglePrivacyDlpV2BigQueryKey)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2RecordKey' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrkIdValues'+--+-- * 'gpdvrkDatastoreKey'+--+-- * 'gpdvrkBigQueryKey'+googlePrivacyDlpV2RecordKey+    :: GooglePrivacyDlpV2RecordKey+googlePrivacyDlpV2RecordKey =+  GooglePrivacyDlpV2RecordKey'+    { _gpdvrkIdValues = Nothing+    , _gpdvrkDatastoreKey = Nothing+    , _gpdvrkBigQueryKey = Nothing+    }+++-- | Values of identifying columns in the given row. Order of values matches+-- the order of field identifiers specified in the scanning request.+gpdvrkIdValues :: Lens' GooglePrivacyDlpV2RecordKey [Text]+gpdvrkIdValues+  = lens _gpdvrkIdValues+      (\ s a -> s{_gpdvrkIdValues = a})+      . _Default+      . _Coerce++gpdvrkDatastoreKey :: Lens' GooglePrivacyDlpV2RecordKey (Maybe GooglePrivacyDlpV2DatastoreKey)+gpdvrkDatastoreKey+  = lens _gpdvrkDatastoreKey+      (\ s a -> s{_gpdvrkDatastoreKey = a})++gpdvrkBigQueryKey :: Lens' GooglePrivacyDlpV2RecordKey (Maybe GooglePrivacyDlpV2BigQueryKey)+gpdvrkBigQueryKey+  = lens _gpdvrkBigQueryKey+      (\ s a -> s{_gpdvrkBigQueryKey = a})++instance FromJSON GooglePrivacyDlpV2RecordKey where+        parseJSON+          = withObject "GooglePrivacyDlpV2RecordKey"+              (\ o ->+                 GooglePrivacyDlpV2RecordKey' <$>+                   (o .:? "idValues" .!= mempty) <*>+                     (o .:? "datastoreKey")+                     <*> (o .:? "bigQueryKey"))++instance ToJSON GooglePrivacyDlpV2RecordKey where+        toJSON GooglePrivacyDlpV2RecordKey'{..}+          = object+              (catMaybes+                 [("idValues" .=) <$> _gpdvrkIdValues,+                  ("datastoreKey" .=) <$> _gpdvrkDatastoreKey,+                  ("bigQueryKey" .=) <$> _gpdvrkBigQueryKey])++-- | A KMapEstimationHistogramBucket message with the following values:+-- min_anonymity: 3 max_anonymity: 5 frequency: 42 means that there are 42+-- records whose quasi-identifier values correspond to 3, 4 or 5 people in+-- the overlying population. An important particular case is when+-- min_anonymity = max_anonymity = 1: the frequency field then corresponds+-- to the number of uniquely identifiable records.+--+-- /See:/ 'googlePrivacyDlpV2KMapEstimationHistogramBucket' smart constructor.+data GooglePrivacyDlpV2KMapEstimationHistogramBucket =+  GooglePrivacyDlpV2KMapEstimationHistogramBucket'+    { _gpdvkmehbMaxAnonymity     :: !(Maybe (Textual Int64))+    , _gpdvkmehbBucketValues     :: !(Maybe [GooglePrivacyDlpV2KMapEstimationQuasiIdValues])+    , _gpdvkmehbMinAnonymity     :: !(Maybe (Textual Int64))+    , _gpdvkmehbBucketSize       :: !(Maybe (Textual Int64))+    , _gpdvkmehbBucketValueCount :: !(Maybe (Textual Int64))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2KMapEstimationHistogramBucket' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvkmehbMaxAnonymity'+--+-- * 'gpdvkmehbBucketValues'+--+-- * 'gpdvkmehbMinAnonymity'+--+-- * 'gpdvkmehbBucketSize'+--+-- * 'gpdvkmehbBucketValueCount'+googlePrivacyDlpV2KMapEstimationHistogramBucket+    :: GooglePrivacyDlpV2KMapEstimationHistogramBucket+googlePrivacyDlpV2KMapEstimationHistogramBucket =+  GooglePrivacyDlpV2KMapEstimationHistogramBucket'+    { _gpdvkmehbMaxAnonymity = Nothing+    , _gpdvkmehbBucketValues = Nothing+    , _gpdvkmehbMinAnonymity = Nothing+    , _gpdvkmehbBucketSize = Nothing+    , _gpdvkmehbBucketValueCount = Nothing+    }+++-- | Always greater than or equal to min_anonymity.+gpdvkmehbMaxAnonymity :: Lens' GooglePrivacyDlpV2KMapEstimationHistogramBucket (Maybe Int64)+gpdvkmehbMaxAnonymity+  = lens _gpdvkmehbMaxAnonymity+      (\ s a -> s{_gpdvkmehbMaxAnonymity = a})+      . mapping _Coerce++-- | Sample of quasi-identifier tuple values in this bucket. The total number+-- of classes returned per bucket is capped at 20.+gpdvkmehbBucketValues :: Lens' GooglePrivacyDlpV2KMapEstimationHistogramBucket [GooglePrivacyDlpV2KMapEstimationQuasiIdValues]+gpdvkmehbBucketValues+  = lens _gpdvkmehbBucketValues+      (\ s a -> s{_gpdvkmehbBucketValues = a})+      . _Default+      . _Coerce++-- | Always positive.+gpdvkmehbMinAnonymity :: Lens' GooglePrivacyDlpV2KMapEstimationHistogramBucket (Maybe Int64)+gpdvkmehbMinAnonymity+  = lens _gpdvkmehbMinAnonymity+      (\ s a -> s{_gpdvkmehbMinAnonymity = a})+      . mapping _Coerce++-- | Number of records within these anonymity bounds.+gpdvkmehbBucketSize :: Lens' GooglePrivacyDlpV2KMapEstimationHistogramBucket (Maybe Int64)+gpdvkmehbBucketSize+  = lens _gpdvkmehbBucketSize+      (\ s a -> s{_gpdvkmehbBucketSize = a})+      . mapping _Coerce++-- | Total number of distinct quasi-identifier tuple values in this bucket.+gpdvkmehbBucketValueCount :: Lens' GooglePrivacyDlpV2KMapEstimationHistogramBucket (Maybe Int64)+gpdvkmehbBucketValueCount+  = lens _gpdvkmehbBucketValueCount+      (\ s a -> s{_gpdvkmehbBucketValueCount = a})+      . mapping _Coerce++instance FromJSON+           GooglePrivacyDlpV2KMapEstimationHistogramBucket+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2KMapEstimationHistogramBucket"+              (\ o ->+                 GooglePrivacyDlpV2KMapEstimationHistogramBucket' <$>+                   (o .:? "maxAnonymity") <*>+                     (o .:? "bucketValues" .!= mempty)+                     <*> (o .:? "minAnonymity")+                     <*> (o .:? "bucketSize")+                     <*> (o .:? "bucketValueCount"))++instance ToJSON+           GooglePrivacyDlpV2KMapEstimationHistogramBucket+         where+        toJSON+          GooglePrivacyDlpV2KMapEstimationHistogramBucket'{..}+          = object+              (catMaybes+                 [("maxAnonymity" .=) <$> _gpdvkmehbMaxAnonymity,+                  ("bucketValues" .=) <$> _gpdvkmehbBucketValues,+                  ("minAnonymity" .=) <$> _gpdvkmehbMinAnonymity,+                  ("bucketSize" .=) <$> _gpdvkmehbBucketSize,+                  ("bucketValueCount" .=) <$>+                    _gpdvkmehbBucketValueCount])++-- | Response message for ListDeidentifyTemplates.+--+-- /See:/ 'googlePrivacyDlpV2ListDeidentifyTemplatesResponse' smart constructor.+data GooglePrivacyDlpV2ListDeidentifyTemplatesResponse =+  GooglePrivacyDlpV2ListDeidentifyTemplatesResponse'+    { _gpdvldtrNextPageToken       :: !(Maybe Text)+    , _gpdvldtrDeidentifyTemplates :: !(Maybe [GooglePrivacyDlpV2DeidentifyTemplate])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ListDeidentifyTemplatesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvldtrNextPageToken'+--+-- * 'gpdvldtrDeidentifyTemplates'+googlePrivacyDlpV2ListDeidentifyTemplatesResponse+    :: GooglePrivacyDlpV2ListDeidentifyTemplatesResponse+googlePrivacyDlpV2ListDeidentifyTemplatesResponse =+  GooglePrivacyDlpV2ListDeidentifyTemplatesResponse'+    {_gpdvldtrNextPageToken = Nothing, _gpdvldtrDeidentifyTemplates = Nothing}+++-- | If the next page is available then the next page token to be used in+-- following ListDeidentifyTemplates request.+gpdvldtrNextPageToken :: Lens' GooglePrivacyDlpV2ListDeidentifyTemplatesResponse (Maybe Text)+gpdvldtrNextPageToken+  = lens _gpdvldtrNextPageToken+      (\ s a -> s{_gpdvldtrNextPageToken = a})++-- | List of deidentify templates, up to page_size in+-- ListDeidentifyTemplatesRequest.+gpdvldtrDeidentifyTemplates :: Lens' GooglePrivacyDlpV2ListDeidentifyTemplatesResponse [GooglePrivacyDlpV2DeidentifyTemplate]+gpdvldtrDeidentifyTemplates+  = lens _gpdvldtrDeidentifyTemplates+      (\ s a -> s{_gpdvldtrDeidentifyTemplates = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2ListDeidentifyTemplatesResponse+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2ListDeidentifyTemplatesResponse"+              (\ o ->+                 GooglePrivacyDlpV2ListDeidentifyTemplatesResponse'+                   <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "deidentifyTemplates" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2ListDeidentifyTemplatesResponse+         where+        toJSON+          GooglePrivacyDlpV2ListDeidentifyTemplatesResponse'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _gpdvldtrNextPageToken,+                  ("deidentifyTemplates" .=) <$>+                    _gpdvldtrDeidentifyTemplates])++-- | k-anonymity metric, used for analysis of reidentification risk.+--+-- /See:/ 'googlePrivacyDlpV2KAnonymityConfig' smart constructor.+data GooglePrivacyDlpV2KAnonymityConfig =+  GooglePrivacyDlpV2KAnonymityConfig'+    { _gpdvkacEntityId :: !(Maybe GooglePrivacyDlpV2EntityId)+    , _gpdvkacQuasiIds :: !(Maybe [GooglePrivacyDlpV2FieldId])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2KAnonymityConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvkacEntityId'+--+-- * 'gpdvkacQuasiIds'+googlePrivacyDlpV2KAnonymityConfig+    :: GooglePrivacyDlpV2KAnonymityConfig+googlePrivacyDlpV2KAnonymityConfig =+  GooglePrivacyDlpV2KAnonymityConfig'+    {_gpdvkacEntityId = Nothing, _gpdvkacQuasiIds = Nothing}+++-- | Optional message indicating that multiple rows might be associated to a+-- single individual. If the same entity_id is associated to multiple+-- quasi-identifier tuples over distinct rows, we consider the entire+-- collection of tuples as the composite quasi-identifier. This collection+-- is a multiset: the order in which the different tuples appear in the+-- dataset is ignored, but their frequency is taken into account. Important+-- note: a maximum of 1000 rows can be associated to a single entity ID. If+-- more rows are associated with the same entity ID, some might be ignored.+gpdvkacEntityId :: Lens' GooglePrivacyDlpV2KAnonymityConfig (Maybe GooglePrivacyDlpV2EntityId)+gpdvkacEntityId+  = lens _gpdvkacEntityId+      (\ s a -> s{_gpdvkacEntityId = a})++-- | Set of fields to compute k-anonymity over. When multiple fields are+-- specified, they are considered a single composite key. Structs and+-- repeated data types are not supported; however, nested fields are+-- supported so long as they are not structs themselves or nested within a+-- repeated field.+gpdvkacQuasiIds :: Lens' GooglePrivacyDlpV2KAnonymityConfig [GooglePrivacyDlpV2FieldId]+gpdvkacQuasiIds+  = lens _gpdvkacQuasiIds+      (\ s a -> s{_gpdvkacQuasiIds = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2KAnonymityConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2KAnonymityConfig"+              (\ o ->+                 GooglePrivacyDlpV2KAnonymityConfig' <$>+                   (o .:? "entityId") <*> (o .:? "quasiIds" .!= mempty))++instance ToJSON GooglePrivacyDlpV2KAnonymityConfig+         where+        toJSON GooglePrivacyDlpV2KAnonymityConfig'{..}+          = object+              (catMaybes+                 [("entityId" .=) <$> _gpdvkacEntityId,+                  ("quasiIds" .=) <$> _gpdvkacQuasiIds])++-- | Results of de-identifying a ContentItem.+--+-- /See:/ 'googlePrivacyDlpV2DeidentifyContentResponse' smart constructor.+data GooglePrivacyDlpV2DeidentifyContentResponse =+  GooglePrivacyDlpV2DeidentifyContentResponse'+    { _gOverview :: !(Maybe GooglePrivacyDlpV2TransformationOverview)+    , _gItem     :: !(Maybe GooglePrivacyDlpV2ContentItem)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DeidentifyContentResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gOverview'+--+-- * 'gItem'+googlePrivacyDlpV2DeidentifyContentResponse+    :: GooglePrivacyDlpV2DeidentifyContentResponse+googlePrivacyDlpV2DeidentifyContentResponse =+  GooglePrivacyDlpV2DeidentifyContentResponse'+    {_gOverview = Nothing, _gItem = Nothing}+++-- | An overview of the changes that were made on the \`item\`.+gOverview :: Lens' GooglePrivacyDlpV2DeidentifyContentResponse (Maybe GooglePrivacyDlpV2TransformationOverview)+gOverview+  = lens _gOverview (\ s a -> s{_gOverview = a})++-- | The de-identified item.+gItem :: Lens' GooglePrivacyDlpV2DeidentifyContentResponse (Maybe GooglePrivacyDlpV2ContentItem)+gItem = lens _gItem (\ s a -> s{_gItem = a})++instance FromJSON+           GooglePrivacyDlpV2DeidentifyContentResponse+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2DeidentifyContentResponse"+              (\ o ->+                 GooglePrivacyDlpV2DeidentifyContentResponse' <$>+                   (o .:? "overview") <*> (o .:? "item"))++instance ToJSON+           GooglePrivacyDlpV2DeidentifyContentResponse+         where+        toJSON+          GooglePrivacyDlpV2DeidentifyContentResponse'{..}+          = object+              (catMaybes+                 [("overview" .=) <$> _gOverview,+                  ("item" .=) <$> _gItem])++-- | Contains a configuration to make dlp api calls on a repeating basis. See+-- https:\/\/cloud.google.com\/dlp\/docs\/concepts-job-triggers to learn+-- more.+--+-- /See:/ 'googlePrivacyDlpV2JobTrigger' smart constructor.+data GooglePrivacyDlpV2JobTrigger =+  GooglePrivacyDlpV2JobTrigger'+    { _gpdvjtStatus      :: !(Maybe GooglePrivacyDlpV2JobTriggerStatus)+    , _gpdvjtTriggers    :: !(Maybe [GooglePrivacyDlpV2Trigger])+    , _gpdvjtLastRunTime :: !(Maybe DateTime')+    , _gpdvjtInspectJob  :: !(Maybe GooglePrivacyDlpV2InspectJobConfig)+    , _gpdvjtUpdateTime  :: !(Maybe DateTime')+    , _gpdvjtName        :: !(Maybe Text)+    , _gpdvjtDisplayName :: !(Maybe Text)+    , _gpdvjtErrors      :: !(Maybe [GooglePrivacyDlpV2Error])+    , _gpdvjtDescription :: !(Maybe Text)+    , _gpdvjtCreateTime  :: !(Maybe DateTime')+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2JobTrigger' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvjtStatus'+--+-- * 'gpdvjtTriggers'+--+-- * 'gpdvjtLastRunTime'+--+-- * 'gpdvjtInspectJob'+--+-- * 'gpdvjtUpdateTime'+--+-- * 'gpdvjtName'+--+-- * 'gpdvjtDisplayName'+--+-- * 'gpdvjtErrors'+--+-- * 'gpdvjtDescription'+--+-- * 'gpdvjtCreateTime'+googlePrivacyDlpV2JobTrigger+    :: GooglePrivacyDlpV2JobTrigger+googlePrivacyDlpV2JobTrigger =+  GooglePrivacyDlpV2JobTrigger'+    { _gpdvjtStatus = Nothing+    , _gpdvjtTriggers = Nothing+    , _gpdvjtLastRunTime = Nothing+    , _gpdvjtInspectJob = Nothing+    , _gpdvjtUpdateTime = Nothing+    , _gpdvjtName = Nothing+    , _gpdvjtDisplayName = Nothing+    , _gpdvjtErrors = Nothing+    , _gpdvjtDescription = Nothing+    , _gpdvjtCreateTime = Nothing+    }+++-- | A status for this trigger. [required]+gpdvjtStatus :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe GooglePrivacyDlpV2JobTriggerStatus)+gpdvjtStatus+  = lens _gpdvjtStatus (\ s a -> s{_gpdvjtStatus = a})++-- | A list of triggers which will be OR\'ed together. Only one in the list+-- needs to trigger for a job to be started. The list may contain only a+-- single Schedule trigger and must have at least one object.+gpdvjtTriggers :: Lens' GooglePrivacyDlpV2JobTrigger [GooglePrivacyDlpV2Trigger]+gpdvjtTriggers+  = lens _gpdvjtTriggers+      (\ s a -> s{_gpdvjtTriggers = a})+      . _Default+      . _Coerce++-- | The timestamp of the last time this trigger executed, output only field.+gpdvjtLastRunTime :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe UTCTime)+gpdvjtLastRunTime+  = lens _gpdvjtLastRunTime+      (\ s a -> s{_gpdvjtLastRunTime = a})+      . mapping _DateTime++gpdvjtInspectJob :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe GooglePrivacyDlpV2InspectJobConfig)+gpdvjtInspectJob+  = lens _gpdvjtInspectJob+      (\ s a -> s{_gpdvjtInspectJob = a})++-- | The last update timestamp of a triggeredJob, output only field.+gpdvjtUpdateTime :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe UTCTime)+gpdvjtUpdateTime+  = lens _gpdvjtUpdateTime+      (\ s a -> s{_gpdvjtUpdateTime = a})+      . mapping _DateTime++-- | Unique resource name for the triggeredJob, assigned by the service when+-- the triggeredJob is created, for example+-- \`projects\/dlp-test-project\/triggeredJobs\/53234423\`.+gpdvjtName :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe Text)+gpdvjtName+  = lens _gpdvjtName (\ s a -> s{_gpdvjtName = a})++-- | Display name (max 100 chars)+gpdvjtDisplayName :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe Text)+gpdvjtDisplayName+  = lens _gpdvjtDisplayName+      (\ s a -> s{_gpdvjtDisplayName = a})++-- | A stream of errors encountered when the trigger was activated. Repeated+-- errors may result in the JobTrigger automatically being paused. Will+-- return the last 100 errors. Whenever the JobTrigger is modified this+-- list will be cleared. Output only field.+gpdvjtErrors :: Lens' GooglePrivacyDlpV2JobTrigger [GooglePrivacyDlpV2Error]+gpdvjtErrors+  = lens _gpdvjtErrors (\ s a -> s{_gpdvjtErrors = a})+      . _Default+      . _Coerce++-- | User provided description (max 256 chars)+gpdvjtDescription :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe Text)+gpdvjtDescription+  = lens _gpdvjtDescription+      (\ s a -> s{_gpdvjtDescription = a})++-- | The creation timestamp of a triggeredJob, output only field.+gpdvjtCreateTime :: Lens' GooglePrivacyDlpV2JobTrigger (Maybe UTCTime)+gpdvjtCreateTime+  = lens _gpdvjtCreateTime+      (\ s a -> s{_gpdvjtCreateTime = a})+      . mapping _DateTime++instance FromJSON GooglePrivacyDlpV2JobTrigger where+        parseJSON+          = withObject "GooglePrivacyDlpV2JobTrigger"+              (\ o ->+                 GooglePrivacyDlpV2JobTrigger' <$>+                   (o .:? "status") <*> (o .:? "triggers" .!= mempty)+                     <*> (o .:? "lastRunTime")+                     <*> (o .:? "inspectJob")+                     <*> (o .:? "updateTime")+                     <*> (o .:? "name")+                     <*> (o .:? "displayName")+                     <*> (o .:? "errors" .!= mempty)+                     <*> (o .:? "description")+                     <*> (o .:? "createTime"))++instance ToJSON GooglePrivacyDlpV2JobTrigger where+        toJSON GooglePrivacyDlpV2JobTrigger'{..}+          = object+              (catMaybes+                 [("status" .=) <$> _gpdvjtStatus,+                  ("triggers" .=) <$> _gpdvjtTriggers,+                  ("lastRunTime" .=) <$> _gpdvjtLastRunTime,+                  ("inspectJob" .=) <$> _gpdvjtInspectJob,+                  ("updateTime" .=) <$> _gpdvjtUpdateTime,+                  ("name" .=) <$> _gpdvjtName,+                  ("displayName" .=) <$> _gpdvjtDisplayName,+                  ("errors" .=) <$> _gpdvjtErrors,+                  ("description" .=) <$> _gpdvjtDescription,+                  ("createTime" .=) <$> _gpdvjtCreateTime])++-- | Response message for ListStoredInfoTypes.+--+-- /See:/ 'googlePrivacyDlpV2ListStoredInfoTypesResponse' smart constructor.+data GooglePrivacyDlpV2ListStoredInfoTypesResponse =+  GooglePrivacyDlpV2ListStoredInfoTypesResponse'+    { _gpdvlsitrNextPageToken   :: !(Maybe Text)+    , _gpdvlsitrStoredInfoTypes :: !(Maybe [GooglePrivacyDlpV2StoredInfoType])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ListStoredInfoTypesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvlsitrNextPageToken'+--+-- * 'gpdvlsitrStoredInfoTypes'+googlePrivacyDlpV2ListStoredInfoTypesResponse+    :: GooglePrivacyDlpV2ListStoredInfoTypesResponse+googlePrivacyDlpV2ListStoredInfoTypesResponse =+  GooglePrivacyDlpV2ListStoredInfoTypesResponse'+    {_gpdvlsitrNextPageToken = Nothing, _gpdvlsitrStoredInfoTypes = Nothing}+++-- | If the next page is available then the next page token to be used in+-- following ListStoredInfoTypes request.+gpdvlsitrNextPageToken :: Lens' GooglePrivacyDlpV2ListStoredInfoTypesResponse (Maybe Text)+gpdvlsitrNextPageToken+  = lens _gpdvlsitrNextPageToken+      (\ s a -> s{_gpdvlsitrNextPageToken = a})++-- | List of storedInfoTypes, up to page_size in ListStoredInfoTypesRequest.+gpdvlsitrStoredInfoTypes :: Lens' GooglePrivacyDlpV2ListStoredInfoTypesResponse [GooglePrivacyDlpV2StoredInfoType]+gpdvlsitrStoredInfoTypes+  = lens _gpdvlsitrStoredInfoTypes+      (\ s a -> s{_gpdvlsitrStoredInfoTypes = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2ListStoredInfoTypesResponse+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2ListStoredInfoTypesResponse"+              (\ o ->+                 GooglePrivacyDlpV2ListStoredInfoTypesResponse' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "storedInfoTypes" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2ListStoredInfoTypesResponse+         where+        toJSON+          GooglePrivacyDlpV2ListStoredInfoTypesResponse'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _gpdvlsitrNextPageToken,+                  ("storedInfoTypes" .=) <$>+                    _gpdvlsitrStoredInfoTypes])++-- | The set of columns\' values that share the same ldiversity value.+--+-- /See:/ 'googlePrivacyDlpV2LDiversityEquivalenceClass' smart constructor.+data GooglePrivacyDlpV2LDiversityEquivalenceClass =+  GooglePrivacyDlpV2LDiversityEquivalenceClass'+    { _gpdvldecTopSensitiveValues         :: !(Maybe [GooglePrivacyDlpV2ValueFrequency])+    , _gpdvldecEquivalenceClassSize       :: !(Maybe (Textual Int64))+    , _gpdvldecNumDistinctSensitiveValues :: !(Maybe (Textual Int64))+    , _gpdvldecQuasiIdsValues             :: !(Maybe [GooglePrivacyDlpV2Value])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2LDiversityEquivalenceClass' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvldecTopSensitiveValues'+--+-- * 'gpdvldecEquivalenceClassSize'+--+-- * 'gpdvldecNumDistinctSensitiveValues'+--+-- * 'gpdvldecQuasiIdsValues'+googlePrivacyDlpV2LDiversityEquivalenceClass+    :: GooglePrivacyDlpV2LDiversityEquivalenceClass+googlePrivacyDlpV2LDiversityEquivalenceClass =+  GooglePrivacyDlpV2LDiversityEquivalenceClass'+    { _gpdvldecTopSensitiveValues = Nothing+    , _gpdvldecEquivalenceClassSize = Nothing+    , _gpdvldecNumDistinctSensitiveValues = Nothing+    , _gpdvldecQuasiIdsValues = Nothing+    }+++-- | Estimated frequencies of top sensitive values.+gpdvldecTopSensitiveValues :: Lens' GooglePrivacyDlpV2LDiversityEquivalenceClass [GooglePrivacyDlpV2ValueFrequency]+gpdvldecTopSensitiveValues+  = lens _gpdvldecTopSensitiveValues+      (\ s a -> s{_gpdvldecTopSensitiveValues = a})+      . _Default+      . _Coerce++-- | Size of the k-anonymity equivalence class.+gpdvldecEquivalenceClassSize :: Lens' GooglePrivacyDlpV2LDiversityEquivalenceClass (Maybe Int64)+gpdvldecEquivalenceClassSize+  = lens _gpdvldecEquivalenceClassSize+      (\ s a -> s{_gpdvldecEquivalenceClassSize = a})+      . mapping _Coerce++-- | Number of distinct sensitive values in this equivalence class.+gpdvldecNumDistinctSensitiveValues :: Lens' GooglePrivacyDlpV2LDiversityEquivalenceClass (Maybe Int64)+gpdvldecNumDistinctSensitiveValues+  = lens _gpdvldecNumDistinctSensitiveValues+      (\ s a -> s{_gpdvldecNumDistinctSensitiveValues = a})+      . mapping _Coerce++-- | Quasi-identifier values defining the k-anonymity equivalence class. The+-- order is always the same as the original request.+gpdvldecQuasiIdsValues :: Lens' GooglePrivacyDlpV2LDiversityEquivalenceClass [GooglePrivacyDlpV2Value]+gpdvldecQuasiIdsValues+  = lens _gpdvldecQuasiIdsValues+      (\ s a -> s{_gpdvldecQuasiIdsValues = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2LDiversityEquivalenceClass+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2LDiversityEquivalenceClass"+              (\ o ->+                 GooglePrivacyDlpV2LDiversityEquivalenceClass' <$>+                   (o .:? "topSensitiveValues" .!= mempty) <*>+                     (o .:? "equivalenceClassSize")+                     <*> (o .:? "numDistinctSensitiveValues")+                     <*> (o .:? "quasiIdsValues" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2LDiversityEquivalenceClass+         where+        toJSON+          GooglePrivacyDlpV2LDiversityEquivalenceClass'{..}+          = object+              (catMaybes+                 [("topSensitiveValues" .=) <$>+                    _gpdvldecTopSensitiveValues,+                  ("equivalenceClassSize" .=) <$>+                    _gpdvldecEquivalenceClassSize,+                  ("numDistinctSensitiveValues" .=) <$>+                    _gpdvldecNumDistinctSensitiveValues,+                  ("quasiIdsValues" .=) <$> _gpdvldecQuasiIdsValues])++-- | Request message for ActivateJobTrigger.+--+-- /See:/ 'googlePrivacyDlpV2ActivateJobTriggerRequest' smart constructor.+data GooglePrivacyDlpV2ActivateJobTriggerRequest =+  GooglePrivacyDlpV2ActivateJobTriggerRequest'+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ActivateJobTriggerRequest' with the minimum fields required to make a request.+--+googlePrivacyDlpV2ActivateJobTriggerRequest+    :: GooglePrivacyDlpV2ActivateJobTriggerRequest+googlePrivacyDlpV2ActivateJobTriggerRequest =+  GooglePrivacyDlpV2ActivateJobTriggerRequest'+++instance FromJSON+           GooglePrivacyDlpV2ActivateJobTriggerRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2ActivateJobTriggerRequest"+              (\ o ->+                 pure GooglePrivacyDlpV2ActivateJobTriggerRequest')++instance ToJSON+           GooglePrivacyDlpV2ActivateJobTriggerRequest+         where+        toJSON = const emptyObject++-- | The configuration that controls how the data will change.+--+-- /See:/ 'googlePrivacyDlpV2DeidentifyConfig' smart constructor.+data GooglePrivacyDlpV2DeidentifyConfig =+  GooglePrivacyDlpV2DeidentifyConfig'+    { _gpdvdcInfoTypeTransformations :: !(Maybe GooglePrivacyDlpV2InfoTypeTransformations)+    , _gpdvdcRecordTransformations   :: !(Maybe GooglePrivacyDlpV2RecordTransformations)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DeidentifyConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdcInfoTypeTransformations'+--+-- * 'gpdvdcRecordTransformations'+googlePrivacyDlpV2DeidentifyConfig+    :: GooglePrivacyDlpV2DeidentifyConfig+googlePrivacyDlpV2DeidentifyConfig =+  GooglePrivacyDlpV2DeidentifyConfig'+    { _gpdvdcInfoTypeTransformations = Nothing+    , _gpdvdcRecordTransformations = Nothing+    }+++-- | Treat the dataset as free-form text and apply the same free text+-- transformation everywhere.+gpdvdcInfoTypeTransformations :: Lens' GooglePrivacyDlpV2DeidentifyConfig (Maybe GooglePrivacyDlpV2InfoTypeTransformations)+gpdvdcInfoTypeTransformations+  = lens _gpdvdcInfoTypeTransformations+      (\ s a -> s{_gpdvdcInfoTypeTransformations = a})++-- | Treat the dataset as structured. Transformations can be applied to+-- specific locations within structured datasets, such as transforming a+-- column within a table.+gpdvdcRecordTransformations :: Lens' GooglePrivacyDlpV2DeidentifyConfig (Maybe GooglePrivacyDlpV2RecordTransformations)+gpdvdcRecordTransformations+  = lens _gpdvdcRecordTransformations+      (\ s a -> s{_gpdvdcRecordTransformations = a})++instance FromJSON GooglePrivacyDlpV2DeidentifyConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2DeidentifyConfig"+              (\ o ->+                 GooglePrivacyDlpV2DeidentifyConfig' <$>+                   (o .:? "infoTypeTransformations") <*>+                     (o .:? "recordTransformations"))++instance ToJSON GooglePrivacyDlpV2DeidentifyConfig+         where+        toJSON GooglePrivacyDlpV2DeidentifyConfig'{..}+          = object+              (catMaybes+                 [("infoTypeTransformations" .=) <$>+                    _gpdvdcInfoTypeTransformations,+                  ("recordTransformations" .=) <$>+                    _gpdvdcRecordTransformations])++-- | Partially mask a string by replacing a given number of characters with a+-- fixed character. Masking can start from the beginning or end of the+-- string. This can be used on data of any type (numbers, longs, and so on)+-- and when de-identifying structured data we\'ll attempt to preserve the+-- original data\'s type. (This allows you to take a long like 123 and+-- modify it to a string like **3.+--+-- /See:/ 'googlePrivacyDlpV2CharacterMaskConfig' smart constructor.+data GooglePrivacyDlpV2CharacterMaskConfig =+  GooglePrivacyDlpV2CharacterMaskConfig'+    { _gpdvcmcNumberToMask       :: !(Maybe (Textual Int32))+    , _gpdvcmcMaskingCharacter   :: !(Maybe Text)+    , _gpdvcmcReverseOrder       :: !(Maybe Bool)+    , _gpdvcmcCharactersToIgnore :: !(Maybe [GooglePrivacyDlpV2CharsToIgnore])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CharacterMaskConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcmcNumberToMask'+--+-- * 'gpdvcmcMaskingCharacter'+--+-- * 'gpdvcmcReverseOrder'+--+-- * 'gpdvcmcCharactersToIgnore'+googlePrivacyDlpV2CharacterMaskConfig+    :: GooglePrivacyDlpV2CharacterMaskConfig+googlePrivacyDlpV2CharacterMaskConfig =+  GooglePrivacyDlpV2CharacterMaskConfig'+    { _gpdvcmcNumberToMask = Nothing+    , _gpdvcmcMaskingCharacter = Nothing+    , _gpdvcmcReverseOrder = Nothing+    , _gpdvcmcCharactersToIgnore = Nothing+    }+++-- | Number of characters to mask. If not set, all matching chars will be+-- masked. Skipped characters do not count towards this tally.+gpdvcmcNumberToMask :: Lens' GooglePrivacyDlpV2CharacterMaskConfig (Maybe Int32)+gpdvcmcNumberToMask+  = lens _gpdvcmcNumberToMask+      (\ s a -> s{_gpdvcmcNumberToMask = a})+      . mapping _Coerce++-- | Character to mask the sensitive values—for example, \"*\" for an+-- alphabetic string such as name, or \"0\" for a numeric string such as+-- ZIP code or credit card number. String must have length 1. If not+-- supplied, we will default to \"*\" for strings, 0 for digits.+gpdvcmcMaskingCharacter :: Lens' GooglePrivacyDlpV2CharacterMaskConfig (Maybe Text)+gpdvcmcMaskingCharacter+  = lens _gpdvcmcMaskingCharacter+      (\ s a -> s{_gpdvcmcMaskingCharacter = a})++-- | Mask characters in reverse order. For example, if \`masking_character\`+-- is \'0\', number_to_mask is 14, and \`reverse_order\` is false, then+-- 1234-5678-9012-3456 -> 00000000000000-3456 If \`masking_character\` is+-- \'*\', \`number_to_mask\` is 3, and \`reverse_order\` is true, then+-- 12345 -> 12***+gpdvcmcReverseOrder :: Lens' GooglePrivacyDlpV2CharacterMaskConfig (Maybe Bool)+gpdvcmcReverseOrder+  = lens _gpdvcmcReverseOrder+      (\ s a -> s{_gpdvcmcReverseOrder = a})++-- | When masking a string, items in this list will be skipped when+-- replacing. For example, if your string is 555-555-5555 and you ask us to+-- skip \`-\` and mask 5 chars with * we would produce ***-*55-5555.+gpdvcmcCharactersToIgnore :: Lens' GooglePrivacyDlpV2CharacterMaskConfig [GooglePrivacyDlpV2CharsToIgnore]+gpdvcmcCharactersToIgnore+  = lens _gpdvcmcCharactersToIgnore+      (\ s a -> s{_gpdvcmcCharactersToIgnore = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2CharacterMaskConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2CharacterMaskConfig"+              (\ o ->+                 GooglePrivacyDlpV2CharacterMaskConfig' <$>+                   (o .:? "numberToMask") <*> (o .:? "maskingCharacter")+                     <*> (o .:? "reverseOrder")+                     <*> (o .:? "charactersToIgnore" .!= mempty))++instance ToJSON GooglePrivacyDlpV2CharacterMaskConfig+         where+        toJSON GooglePrivacyDlpV2CharacterMaskConfig'{..}+          = object+              (catMaybes+                 [("numberToMask" .=) <$> _gpdvcmcNumberToMask,+                  ("maskingCharacter" .=) <$> _gpdvcmcMaskingCharacter,+                  ("reverseOrder" .=) <$> _gpdvcmcReverseOrder,+                  ("charactersToIgnore" .=) <$>+                    _gpdvcmcCharactersToIgnore])++-- | Options defining a data set within Google Cloud Datastore.+--+-- /See:/ 'googlePrivacyDlpV2DatastoreOptions' smart constructor.+data GooglePrivacyDlpV2DatastoreOptions =+  GooglePrivacyDlpV2DatastoreOptions'+    { _gpdvdoPartitionId :: !(Maybe GooglePrivacyDlpV2PartitionId)+    , _gpdvdoKind        :: !(Maybe GooglePrivacyDlpV2KindExpression)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DatastoreOptions' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdoPartitionId'+--+-- * 'gpdvdoKind'+googlePrivacyDlpV2DatastoreOptions+    :: GooglePrivacyDlpV2DatastoreOptions+googlePrivacyDlpV2DatastoreOptions =+  GooglePrivacyDlpV2DatastoreOptions'+    {_gpdvdoPartitionId = Nothing, _gpdvdoKind = Nothing}+++-- | A partition ID identifies a grouping of entities. The grouping is always+-- by project and namespace, however the namespace ID may be empty.+gpdvdoPartitionId :: Lens' GooglePrivacyDlpV2DatastoreOptions (Maybe GooglePrivacyDlpV2PartitionId)+gpdvdoPartitionId+  = lens _gpdvdoPartitionId+      (\ s a -> s{_gpdvdoPartitionId = a})++-- | The kind to process.+gpdvdoKind :: Lens' GooglePrivacyDlpV2DatastoreOptions (Maybe GooglePrivacyDlpV2KindExpression)+gpdvdoKind+  = lens _gpdvdoKind (\ s a -> s{_gpdvdoKind = a})++instance FromJSON GooglePrivacyDlpV2DatastoreOptions+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2DatastoreOptions"+              (\ o ->+                 GooglePrivacyDlpV2DatastoreOptions' <$>+                   (o .:? "partitionId") <*> (o .:? "kind"))++instance ToJSON GooglePrivacyDlpV2DatastoreOptions+         where+        toJSON GooglePrivacyDlpV2DatastoreOptions'{..}+          = object+              (catMaybes+                 [("partitionId" .=) <$> _gpdvdoPartitionId,+                  ("kind" .=) <$> _gpdvdoKind])++-- | A value of a field, including its frequency.+--+-- /See:/ 'googlePrivacyDlpV2ValueFrequency' smart constructor.+data GooglePrivacyDlpV2ValueFrequency =+  GooglePrivacyDlpV2ValueFrequency'+    { _gpdvvfValue :: !(Maybe GooglePrivacyDlpV2Value)+    , _gpdvvfCount :: !(Maybe (Textual Int64))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ValueFrequency' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvvfValue'+--+-- * 'gpdvvfCount'+googlePrivacyDlpV2ValueFrequency+    :: GooglePrivacyDlpV2ValueFrequency+googlePrivacyDlpV2ValueFrequency =+  GooglePrivacyDlpV2ValueFrequency'+    {_gpdvvfValue = Nothing, _gpdvvfCount = Nothing}+++-- | A value contained in the field in question.+gpdvvfValue :: Lens' GooglePrivacyDlpV2ValueFrequency (Maybe GooglePrivacyDlpV2Value)+gpdvvfValue+  = lens _gpdvvfValue (\ s a -> s{_gpdvvfValue = a})++-- | How many times the value is contained in the field.+gpdvvfCount :: Lens' GooglePrivacyDlpV2ValueFrequency (Maybe Int64)+gpdvvfCount+  = lens _gpdvvfCount (\ s a -> s{_gpdvvfCount = a}) .+      mapping _Coerce++instance FromJSON GooglePrivacyDlpV2ValueFrequency+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2ValueFrequency"+              (\ o ->+                 GooglePrivacyDlpV2ValueFrequency' <$>+                   (o .:? "value") <*> (o .:? "count"))++instance ToJSON GooglePrivacyDlpV2ValueFrequency+         where+        toJSON GooglePrivacyDlpV2ValueFrequency'{..}+          = object+              (catMaybes+                 [("value" .=) <$> _gpdvvfValue,+                  ("count" .=) <$> _gpdvvfCount])++-- | Bounding box encompassing detected text within an image.+--+-- /See:/ 'googlePrivacyDlpV2BoundingBox' smart constructor.+data GooglePrivacyDlpV2BoundingBox =+  GooglePrivacyDlpV2BoundingBox'+    { _gpdvbbHeight :: !(Maybe (Textual Int32))+    , _gpdvbbLeft   :: !(Maybe (Textual Int32))+    , _gpdvbbWidth  :: !(Maybe (Textual Int32))+    , _gpdvbbTop    :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2BoundingBox' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvbbHeight'+--+-- * 'gpdvbbLeft'+--+-- * 'gpdvbbWidth'+--+-- * 'gpdvbbTop'+googlePrivacyDlpV2BoundingBox+    :: GooglePrivacyDlpV2BoundingBox+googlePrivacyDlpV2BoundingBox =+  GooglePrivacyDlpV2BoundingBox'+    { _gpdvbbHeight = Nothing+    , _gpdvbbLeft = Nothing+    , _gpdvbbWidth = Nothing+    , _gpdvbbTop = Nothing+    }+++-- | Height of the bounding box in pixels.+gpdvbbHeight :: Lens' GooglePrivacyDlpV2BoundingBox (Maybe Int32)+gpdvbbHeight+  = lens _gpdvbbHeight (\ s a -> s{_gpdvbbHeight = a})+      . mapping _Coerce++-- | Left coordinate of the bounding box. (0,0) is upper left.+gpdvbbLeft :: Lens' GooglePrivacyDlpV2BoundingBox (Maybe Int32)+gpdvbbLeft+  = lens _gpdvbbLeft (\ s a -> s{_gpdvbbLeft = a}) .+      mapping _Coerce++-- | Width of the bounding box in pixels.+gpdvbbWidth :: Lens' GooglePrivacyDlpV2BoundingBox (Maybe Int32)+gpdvbbWidth+  = lens _gpdvbbWidth (\ s a -> s{_gpdvbbWidth = a}) .+      mapping _Coerce++-- | Top coordinate of the bounding box. (0,0) is upper left.+gpdvbbTop :: Lens' GooglePrivacyDlpV2BoundingBox (Maybe Int32)+gpdvbbTop+  = lens _gpdvbbTop (\ s a -> s{_gpdvbbTop = a}) .+      mapping _Coerce++instance FromJSON GooglePrivacyDlpV2BoundingBox where+        parseJSON+          = withObject "GooglePrivacyDlpV2BoundingBox"+              (\ o ->+                 GooglePrivacyDlpV2BoundingBox' <$>+                   (o .:? "height") <*> (o .:? "left") <*>+                     (o .:? "width")+                     <*> (o .:? "top"))++instance ToJSON GooglePrivacyDlpV2BoundingBox where+        toJSON GooglePrivacyDlpV2BoundingBox'{..}+          = object+              (catMaybes+                 [("height" .=) <$> _gpdvbbHeight,+                  ("left" .=) <$> _gpdvbbLeft,+                  ("width" .=) <$> _gpdvbbWidth,+                  ("top" .=) <$> _gpdvbbTop])++-- | Datastore partition ID. A partition ID identifies a grouping of+-- entities. The grouping is always by project and namespace, however the+-- namespace ID may be empty. A partition ID contains several dimensions:+-- project ID and namespace ID.+--+-- /See:/ 'googlePrivacyDlpV2PartitionId' smart constructor.+data GooglePrivacyDlpV2PartitionId =+  GooglePrivacyDlpV2PartitionId'+    { _gpdvpiNamespaceId :: !(Maybe Text)+    , _gpdvpiProjectId   :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2PartitionId' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvpiNamespaceId'+--+-- * 'gpdvpiProjectId'+googlePrivacyDlpV2PartitionId+    :: GooglePrivacyDlpV2PartitionId+googlePrivacyDlpV2PartitionId =+  GooglePrivacyDlpV2PartitionId'+    {_gpdvpiNamespaceId = Nothing, _gpdvpiProjectId = Nothing}+++-- | If not empty, the ID of the namespace to which the entities belong.+gpdvpiNamespaceId :: Lens' GooglePrivacyDlpV2PartitionId (Maybe Text)+gpdvpiNamespaceId+  = lens _gpdvpiNamespaceId+      (\ s a -> s{_gpdvpiNamespaceId = a})++-- | The ID of the project to which the entities belong.+gpdvpiProjectId :: Lens' GooglePrivacyDlpV2PartitionId (Maybe Text)+gpdvpiProjectId+  = lens _gpdvpiProjectId+      (\ s a -> s{_gpdvpiProjectId = a})++instance FromJSON GooglePrivacyDlpV2PartitionId where+        parseJSON+          = withObject "GooglePrivacyDlpV2PartitionId"+              (\ o ->+                 GooglePrivacyDlpV2PartitionId' <$>+                   (o .:? "namespaceId") <*> (o .:? "projectId"))++instance ToJSON GooglePrivacyDlpV2PartitionId where+        toJSON GooglePrivacyDlpV2PartitionId'{..}+          = object+              (catMaybes+                 [("namespaceId" .=) <$> _gpdvpiNamespaceId,+                  ("projectId" .=) <$> _gpdvpiProjectId])++-- | If set, the detailed findings will be persisted to the specified+-- OutputStorageConfig. Only a single instance of this action can be+-- specified. Compatible with: Inspect, Risk+--+-- /See:/ 'googlePrivacyDlpV2SaveFindings' smart constructor.+newtype GooglePrivacyDlpV2SaveFindings =+  GooglePrivacyDlpV2SaveFindings'+    { _gpdvsfOutputConfig :: Maybe GooglePrivacyDlpV2OutputStorageConfig+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2SaveFindings' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvsfOutputConfig'+googlePrivacyDlpV2SaveFindings+    :: GooglePrivacyDlpV2SaveFindings+googlePrivacyDlpV2SaveFindings =+  GooglePrivacyDlpV2SaveFindings' {_gpdvsfOutputConfig = Nothing}+++gpdvsfOutputConfig :: Lens' GooglePrivacyDlpV2SaveFindings (Maybe GooglePrivacyDlpV2OutputStorageConfig)+gpdvsfOutputConfig+  = lens _gpdvsfOutputConfig+      (\ s a -> s{_gpdvsfOutputConfig = a})++instance FromJSON GooglePrivacyDlpV2SaveFindings+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2SaveFindings"+              (\ o ->+                 GooglePrivacyDlpV2SaveFindings' <$>+                   (o .:? "outputConfig"))++instance ToJSON GooglePrivacyDlpV2SaveFindings where+        toJSON GooglePrivacyDlpV2SaveFindings'{..}+          = object+              (catMaybes+                 [("outputConfig" .=) <$> _gpdvsfOutputConfig])++-- | Version of a StoredInfoType, including the configuration used to build+-- it, create timestamp, and current state.+--+-- /See:/ 'googlePrivacyDlpV2StoredInfoTypeVersion' smart constructor.+data GooglePrivacyDlpV2StoredInfoTypeVersion =+  GooglePrivacyDlpV2StoredInfoTypeVersion'+    { _gpdvsitvState      :: !(Maybe GooglePrivacyDlpV2StoredInfoTypeVersionState)+    , _gpdvsitvConfig     :: !(Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)+    , _gpdvsitvErrors     :: !(Maybe [GooglePrivacyDlpV2Error])+    , _gpdvsitvCreateTime :: !(Maybe DateTime')+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2StoredInfoTypeVersion' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvsitvState'+--+-- * 'gpdvsitvConfig'+--+-- * 'gpdvsitvErrors'+--+-- * 'gpdvsitvCreateTime'+googlePrivacyDlpV2StoredInfoTypeVersion+    :: GooglePrivacyDlpV2StoredInfoTypeVersion+googlePrivacyDlpV2StoredInfoTypeVersion =+  GooglePrivacyDlpV2StoredInfoTypeVersion'+    { _gpdvsitvState = Nothing+    , _gpdvsitvConfig = Nothing+    , _gpdvsitvErrors = Nothing+    , _gpdvsitvCreateTime = Nothing+    }+++-- | Stored info type version state. Read-only, updated by the system during+-- dictionary creation.+gpdvsitvState :: Lens' GooglePrivacyDlpV2StoredInfoTypeVersion (Maybe GooglePrivacyDlpV2StoredInfoTypeVersionState)+gpdvsitvState+  = lens _gpdvsitvState+      (\ s a -> s{_gpdvsitvState = a})++-- | StoredInfoType configuration.+gpdvsitvConfig :: Lens' GooglePrivacyDlpV2StoredInfoTypeVersion (Maybe GooglePrivacyDlpV2StoredInfoTypeConfig)+gpdvsitvConfig+  = lens _gpdvsitvConfig+      (\ s a -> s{_gpdvsitvConfig = a})++-- | Errors that occurred when creating this storedInfoType version, or+-- anomalies detected in the storedInfoType data that render it unusable.+-- Only the five most recent errors will be displayed, with the most recent+-- error appearing first.+--+-- For example, some of the data for stored custom dictionaries is put in+-- the user\'s Google Cloud Storage bucket, and if this data is modified or+-- deleted by the user or another system, the dictionary becomes invalid.+--+-- If any errors occur, fix the problem indicated by the error message and+-- use the UpdateStoredInfoType API method to create another version of the+-- storedInfoType to continue using it, reusing the same \`config\` if it+-- was not the source of the error.+gpdvsitvErrors :: Lens' GooglePrivacyDlpV2StoredInfoTypeVersion [GooglePrivacyDlpV2Error]+gpdvsitvErrors+  = lens _gpdvsitvErrors+      (\ s a -> s{_gpdvsitvErrors = a})+      . _Default+      . _Coerce++-- | Create timestamp of the version. Read-only, determined by the system+-- when the version is created.+gpdvsitvCreateTime :: Lens' GooglePrivacyDlpV2StoredInfoTypeVersion (Maybe UTCTime)+gpdvsitvCreateTime+  = lens _gpdvsitvCreateTime+      (\ s a -> s{_gpdvsitvCreateTime = a})+      . mapping _DateTime++instance FromJSON+           GooglePrivacyDlpV2StoredInfoTypeVersion+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2StoredInfoTypeVersion"+              (\ o ->+                 GooglePrivacyDlpV2StoredInfoTypeVersion' <$>+                   (o .:? "state") <*> (o .:? "config") <*>+                     (o .:? "errors" .!= mempty)+                     <*> (o .:? "createTime"))++instance ToJSON+           GooglePrivacyDlpV2StoredInfoTypeVersion+         where+        toJSON GooglePrivacyDlpV2StoredInfoTypeVersion'{..}+          = object+              (catMaybes+                 [("state" .=) <$> _gpdvsitvState,+                  ("config" .=) <$> _gpdvsitvConfig,+                  ("errors" .=) <$> _gpdvsitvErrors,+                  ("createTime" .=) <$> _gpdvsitvCreateTime])++-- | Response to the ListInfoTypes request.+--+-- /See:/ 'googlePrivacyDlpV2ListInfoTypesResponse' smart constructor.+newtype GooglePrivacyDlpV2ListInfoTypesResponse =+  GooglePrivacyDlpV2ListInfoTypesResponse'+    { _gpdvlitrInfoTypes :: Maybe [GooglePrivacyDlpV2InfoTypeDescription]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ListInfoTypesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvlitrInfoTypes'+googlePrivacyDlpV2ListInfoTypesResponse+    :: GooglePrivacyDlpV2ListInfoTypesResponse+googlePrivacyDlpV2ListInfoTypesResponse =+  GooglePrivacyDlpV2ListInfoTypesResponse' {_gpdvlitrInfoTypes = Nothing}+++-- | Set of sensitive infoTypes.+gpdvlitrInfoTypes :: Lens' GooglePrivacyDlpV2ListInfoTypesResponse [GooglePrivacyDlpV2InfoTypeDescription]+gpdvlitrInfoTypes+  = lens _gpdvlitrInfoTypes+      (\ s a -> s{_gpdvlitrInfoTypes = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2ListInfoTypesResponse+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2ListInfoTypesResponse"+              (\ o ->+                 GooglePrivacyDlpV2ListInfoTypesResponse' <$>+                   (o .:? "infoTypes" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2ListInfoTypesResponse+         where+        toJSON GooglePrivacyDlpV2ListInfoTypesResponse'{..}+          = object+              (catMaybes [("infoTypes" .=) <$> _gpdvlitrInfoTypes])++-- | Findings container location data.+--+-- /See:/ 'googlePrivacyDlpV2ContentLocation' smart constructor.+data GooglePrivacyDlpV2ContentLocation =+  GooglePrivacyDlpV2ContentLocation'+    { _gpdvclImageLocation      :: !(Maybe GooglePrivacyDlpV2ImageLocation)+    , _gpdvclContainerName      :: !(Maybe Text)+    , _gpdvclContainerTimestamp :: !(Maybe DateTime')+    , _gpdvclDocumentLocation   :: !(Maybe GooglePrivacyDlpV2DocumentLocation)+    , _gpdvclContainerVersion   :: !(Maybe Text)+    , _gpdvclRecordLocation     :: !(Maybe GooglePrivacyDlpV2RecordLocation)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ContentLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvclImageLocation'+--+-- * 'gpdvclContainerName'+--+-- * 'gpdvclContainerTimestamp'+--+-- * 'gpdvclDocumentLocation'+--+-- * 'gpdvclContainerVersion'+--+-- * 'gpdvclRecordLocation'+googlePrivacyDlpV2ContentLocation+    :: GooglePrivacyDlpV2ContentLocation+googlePrivacyDlpV2ContentLocation =+  GooglePrivacyDlpV2ContentLocation'+    { _gpdvclImageLocation = Nothing+    , _gpdvclContainerName = Nothing+    , _gpdvclContainerTimestamp = Nothing+    , _gpdvclDocumentLocation = Nothing+    , _gpdvclContainerVersion = Nothing+    , _gpdvclRecordLocation = Nothing+    }+++-- | Location within an image\'s pixels.+gpdvclImageLocation :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe GooglePrivacyDlpV2ImageLocation)+gpdvclImageLocation+  = lens _gpdvclImageLocation+      (\ s a -> s{_gpdvclImageLocation = a})++-- | Name of the container where the finding is located. The top level name+-- is the source file name or table name. Names of some common storage+-- containers are formatted as follows: * BigQuery tables: \`:.\` * Cloud+-- Storage files: \`gs:\/\/\/\` * Datastore namespace: Nested names could+-- be absent if the embedded object has no string identifier (for an+-- example an image contained within a document).+gpdvclContainerName :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe Text)+gpdvclContainerName+  = lens _gpdvclContainerName+      (\ s a -> s{_gpdvclContainerName = a})++-- | Findings container modification timestamp, if applicable. For Google+-- Cloud Storage contains last file modification timestamp. For BigQuery+-- table contains last_modified_time property. For Datastore - not+-- populated.+gpdvclContainerTimestamp :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe UTCTime)+gpdvclContainerTimestamp+  = lens _gpdvclContainerTimestamp+      (\ s a -> s{_gpdvclContainerTimestamp = a})+      . mapping _DateTime++-- | Location data for document files.+gpdvclDocumentLocation :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe GooglePrivacyDlpV2DocumentLocation)+gpdvclDocumentLocation+  = lens _gpdvclDocumentLocation+      (\ s a -> s{_gpdvclDocumentLocation = a})++-- | Findings container version, if available (\"generation\" for Google+-- Cloud Storage).+gpdvclContainerVersion :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe Text)+gpdvclContainerVersion+  = lens _gpdvclContainerVersion+      (\ s a -> s{_gpdvclContainerVersion = a})++-- | Location within a row or record of a database table.+gpdvclRecordLocation :: Lens' GooglePrivacyDlpV2ContentLocation (Maybe GooglePrivacyDlpV2RecordLocation)+gpdvclRecordLocation+  = lens _gpdvclRecordLocation+      (\ s a -> s{_gpdvclRecordLocation = a})++instance FromJSON GooglePrivacyDlpV2ContentLocation+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2ContentLocation"+              (\ o ->+                 GooglePrivacyDlpV2ContentLocation' <$>+                   (o .:? "imageLocation") <*> (o .:? "containerName")+                     <*> (o .:? "containerTimestamp")+                     <*> (o .:? "documentLocation")+                     <*> (o .:? "containerVersion")+                     <*> (o .:? "recordLocation"))++instance ToJSON GooglePrivacyDlpV2ContentLocation+         where+        toJSON GooglePrivacyDlpV2ContentLocation'{..}+          = object+              (catMaybes+                 [("imageLocation" .=) <$> _gpdvclImageLocation,+                  ("containerName" .=) <$> _gpdvclContainerName,+                  ("containerTimestamp" .=) <$>+                    _gpdvclContainerTimestamp,+                  ("documentLocation" .=) <$> _gpdvclDocumentLocation,+                  ("containerVersion" .=) <$> _gpdvclContainerVersion,+                  ("recordLocation" .=) <$> _gpdvclRecordLocation])++-- | An auxiliary table contains statistical information on the relative+-- frequency of different quasi-identifiers values. It has one or several+-- quasi-identifiers columns, and one column that indicates the relative+-- frequency of each quasi-identifier tuple. If a tuple is present in the+-- data but not in the auxiliary table, the corresponding relative+-- frequency is assumed to be zero (and thus, the tuple is highly+-- reidentifiable).+--+-- /See:/ 'googlePrivacyDlpV2AuxiliaryTable' smart constructor.+data GooglePrivacyDlpV2AuxiliaryTable =+  GooglePrivacyDlpV2AuxiliaryTable'+    { _gpdvatRelativeFrequency :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvatTable             :: !(Maybe GooglePrivacyDlpV2BigQueryTable)+    , _gpdvatQuasiIds          :: !(Maybe [GooglePrivacyDlpV2QuasiIdField])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2AuxiliaryTable' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvatRelativeFrequency'+--+-- * 'gpdvatTable'+--+-- * 'gpdvatQuasiIds'+googlePrivacyDlpV2AuxiliaryTable+    :: GooglePrivacyDlpV2AuxiliaryTable+googlePrivacyDlpV2AuxiliaryTable =+  GooglePrivacyDlpV2AuxiliaryTable'+    { _gpdvatRelativeFrequency = Nothing+    , _gpdvatTable = Nothing+    , _gpdvatQuasiIds = Nothing+    }+++-- | The relative frequency column must contain a floating-point number+-- between 0 and 1 (inclusive). Null values are assumed to be zero.+-- [required]+gpdvatRelativeFrequency :: Lens' GooglePrivacyDlpV2AuxiliaryTable (Maybe GooglePrivacyDlpV2FieldId)+gpdvatRelativeFrequency+  = lens _gpdvatRelativeFrequency+      (\ s a -> s{_gpdvatRelativeFrequency = a})++-- | Auxiliary table location. [required]+gpdvatTable :: Lens' GooglePrivacyDlpV2AuxiliaryTable (Maybe GooglePrivacyDlpV2BigQueryTable)+gpdvatTable+  = lens _gpdvatTable (\ s a -> s{_gpdvatTable = a})++-- | Quasi-identifier columns. [required]+gpdvatQuasiIds :: Lens' GooglePrivacyDlpV2AuxiliaryTable [GooglePrivacyDlpV2QuasiIdField]+gpdvatQuasiIds+  = lens _gpdvatQuasiIds+      (\ s a -> s{_gpdvatQuasiIds = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2AuxiliaryTable+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2AuxiliaryTable"+              (\ o ->+                 GooglePrivacyDlpV2AuxiliaryTable' <$>+                   (o .:? "relativeFrequency") <*> (o .:? "table") <*>+                     (o .:? "quasiIds" .!= mempty))++instance ToJSON GooglePrivacyDlpV2AuxiliaryTable+         where+        toJSON GooglePrivacyDlpV2AuxiliaryTable'{..}+          = object+              (catMaybes+                 [("relativeFrequency" .=) <$>+                    _gpdvatRelativeFrequency,+                  ("table" .=) <$> _gpdvatTable,+                  ("quasiIds" .=) <$> _gpdvatQuasiIds])++-- | A DeltaPresenceEstimationHistogramBucket message with the following+-- values: min_probability: 0.1 max_probability: 0.2 frequency: 42 means+-- that there are 42 records for which δ is in [0.1, 0.2). An important+-- particular case is when min_probability = max_probability = 1: then,+-- every individual who shares this quasi-identifier combination is in the+-- dataset.+--+-- /See:/ 'googlePrivacyDlpV2DeltaPresenceEstimationHistogramBucket' smart constructor.+data GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket =+  GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket'+    { _gpdvdpehbBucketValues     :: !(Maybe [GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues])+    , _gpdvdpehbMaxProbability   :: !(Maybe (Textual Double))+    , _gpdvdpehbMinProbability   :: !(Maybe (Textual Double))+    , _gpdvdpehbBucketSize       :: !(Maybe (Textual Int64))+    , _gpdvdpehbBucketValueCount :: !(Maybe (Textual Int64))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdpehbBucketValues'+--+-- * 'gpdvdpehbMaxProbability'+--+-- * 'gpdvdpehbMinProbability'+--+-- * 'gpdvdpehbBucketSize'+--+-- * 'gpdvdpehbBucketValueCount'+googlePrivacyDlpV2DeltaPresenceEstimationHistogramBucket+    :: GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket+googlePrivacyDlpV2DeltaPresenceEstimationHistogramBucket =+  GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket'+    { _gpdvdpehbBucketValues = Nothing+    , _gpdvdpehbMaxProbability = Nothing+    , _gpdvdpehbMinProbability = Nothing+    , _gpdvdpehbBucketSize = Nothing+    , _gpdvdpehbBucketValueCount = Nothing+    }+++-- | Sample of quasi-identifier tuple values in this bucket. The total number+-- of classes returned per bucket is capped at 20.+gpdvdpehbBucketValues :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket [GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues]+gpdvdpehbBucketValues+  = lens _gpdvdpehbBucketValues+      (\ s a -> s{_gpdvdpehbBucketValues = a})+      . _Default+      . _Coerce++-- | Always greater than or equal to min_probability.+gpdvdpehbMaxProbability :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket (Maybe Double)+gpdvdpehbMaxProbability+  = lens _gpdvdpehbMaxProbability+      (\ s a -> s{_gpdvdpehbMaxProbability = a})+      . mapping _Coerce++-- | Between 0 and 1.+gpdvdpehbMinProbability :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket (Maybe Double)+gpdvdpehbMinProbability+  = lens _gpdvdpehbMinProbability+      (\ s a -> s{_gpdvdpehbMinProbability = a})+      . mapping _Coerce++-- | Number of records within these probability bounds.+gpdvdpehbBucketSize :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket (Maybe Int64)+gpdvdpehbBucketSize+  = lens _gpdvdpehbBucketSize+      (\ s a -> s{_gpdvdpehbBucketSize = a})+      . mapping _Coerce++-- | Total number of distinct quasi-identifier tuple values in this bucket.+gpdvdpehbBucketValueCount :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket (Maybe Int64)+gpdvdpehbBucketValueCount+  = lens _gpdvdpehbBucketValueCount+      (\ s a -> s{_gpdvdpehbBucketValueCount = a})+      . mapping _Coerce++instance FromJSON+           GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket"+              (\ o ->+                 GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket'+                   <$>+                   (o .:? "bucketValues" .!= mempty) <*>+                     (o .:? "maxProbability")+                     <*> (o .:? "minProbability")+                     <*> (o .:? "bucketSize")+                     <*> (o .:? "bucketValueCount"))++instance ToJSON+           GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket+         where+        toJSON+          GooglePrivacyDlpV2DeltaPresenceEstimationHistogramBucket'{..}+          = object+              (catMaybes+                 [("bucketValues" .=) <$> _gpdvdpehbBucketValues,+                  ("maxProbability" .=) <$> _gpdvdpehbMaxProbability,+                  ("minProbability" .=) <$> _gpdvdpehbMinProbability,+                  ("bucketSize" .=) <$> _gpdvdpehbBucketSize,+                  ("bucketValueCount" .=) <$>+                    _gpdvdpehbBucketValueCount])++-- | Set of files to scan.+--+-- /See:/ 'googlePrivacyDlpV2FileSet' smart constructor.+data GooglePrivacyDlpV2FileSet =+  GooglePrivacyDlpV2FileSet'+    { _gpdvfsURL          :: !(Maybe Text)+    , _gpdvfsRegexFileSet :: !(Maybe GooglePrivacyDlpV2CloudStorageRegexFileSet)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2FileSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvfsURL'+--+-- * 'gpdvfsRegexFileSet'+googlePrivacyDlpV2FileSet+    :: GooglePrivacyDlpV2FileSet+googlePrivacyDlpV2FileSet =+  GooglePrivacyDlpV2FileSet'+    {_gpdvfsURL = Nothing, _gpdvfsRegexFileSet = Nothing}+++-- | The Cloud Storage url of the file(s) to scan, in the format+-- \`gs:\/\/\/\`. Trailing wildcard in the path is allowed. If the url ends+-- in a trailing slash, the bucket or directory represented by the url will+-- be scanned non-recursively (content in sub-directories will not be+-- scanned). This means that \`gs:\/\/mybucket\/\` is equivalent to+-- \`gs:\/\/mybucket\/*\`, and \`gs:\/\/mybucket\/directory\/\` is+-- equivalent to \`gs:\/\/mybucket\/directory\/*\`. Exactly one of \`url\`+-- or \`regex_file_set\` must be set.+gpdvfsURL :: Lens' GooglePrivacyDlpV2FileSet (Maybe Text)+gpdvfsURL+  = lens _gpdvfsURL (\ s a -> s{_gpdvfsURL = a})++-- | The regex-filtered set of files to scan. Exactly one of \`url\` or+-- \`regex_file_set\` must be set.+gpdvfsRegexFileSet :: Lens' GooglePrivacyDlpV2FileSet (Maybe GooglePrivacyDlpV2CloudStorageRegexFileSet)+gpdvfsRegexFileSet+  = lens _gpdvfsRegexFileSet+      (\ s a -> s{_gpdvfsRegexFileSet = a})++instance FromJSON GooglePrivacyDlpV2FileSet where+        parseJSON+          = withObject "GooglePrivacyDlpV2FileSet"+              (\ o ->+                 GooglePrivacyDlpV2FileSet' <$>+                   (o .:? "url") <*> (o .:? "regexFileSet"))++instance ToJSON GooglePrivacyDlpV2FileSet where+        toJSON GooglePrivacyDlpV2FileSet'{..}+          = object+              (catMaybes+                 [("url" .=) <$> _gpdvfsURL,+                  ("regexFileSet" .=) <$> _gpdvfsRegexFileSet])++-- | Response message for ListInspectTemplates.+--+-- /See:/ 'googlePrivacyDlpV2ListInspectTemplatesResponse' smart constructor.+data GooglePrivacyDlpV2ListInspectTemplatesResponse =+  GooglePrivacyDlpV2ListInspectTemplatesResponse'+    { _gpdvlitrNextPageToken    :: !(Maybe Text)+    , _gpdvlitrInspectTemplates :: !(Maybe [GooglePrivacyDlpV2InspectTemplate])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ListInspectTemplatesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvlitrNextPageToken'+--+-- * 'gpdvlitrInspectTemplates'+googlePrivacyDlpV2ListInspectTemplatesResponse+    :: GooglePrivacyDlpV2ListInspectTemplatesResponse+googlePrivacyDlpV2ListInspectTemplatesResponse =+  GooglePrivacyDlpV2ListInspectTemplatesResponse'+    {_gpdvlitrNextPageToken = Nothing, _gpdvlitrInspectTemplates = Nothing}+++-- | If the next page is available then the next page token to be used in+-- following ListInspectTemplates request.+gpdvlitrNextPageToken :: Lens' GooglePrivacyDlpV2ListInspectTemplatesResponse (Maybe Text)+gpdvlitrNextPageToken+  = lens _gpdvlitrNextPageToken+      (\ s a -> s{_gpdvlitrNextPageToken = a})++-- | List of inspectTemplates, up to page_size in+-- ListInspectTemplatesRequest.+gpdvlitrInspectTemplates :: Lens' GooglePrivacyDlpV2ListInspectTemplatesResponse [GooglePrivacyDlpV2InspectTemplate]+gpdvlitrInspectTemplates+  = lens _gpdvlitrInspectTemplates+      (\ s a -> s{_gpdvlitrInspectTemplates = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2ListInspectTemplatesResponse+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2ListInspectTemplatesResponse"+              (\ o ->+                 GooglePrivacyDlpV2ListInspectTemplatesResponse' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "inspectTemplates" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2ListInspectTemplatesResponse+         where+        toJSON+          GooglePrivacyDlpV2ListInspectTemplatesResponse'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _gpdvlitrNextPageToken,+                  ("inspectTemplates" .=) <$>+                    _gpdvlitrInspectTemplates])++-- | Result of the k-anonymity computation.+--+-- /See:/ 'googlePrivacyDlpV2KAnonymityResult' smart constructor.+newtype GooglePrivacyDlpV2KAnonymityResult =+  GooglePrivacyDlpV2KAnonymityResult'+    { _gpdvkarEquivalenceClassHistogramBuckets :: Maybe [GooglePrivacyDlpV2KAnonymityHistogramBucket]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2KAnonymityResult' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvkarEquivalenceClassHistogramBuckets'+googlePrivacyDlpV2KAnonymityResult+    :: GooglePrivacyDlpV2KAnonymityResult+googlePrivacyDlpV2KAnonymityResult =+  GooglePrivacyDlpV2KAnonymityResult'+    {_gpdvkarEquivalenceClassHistogramBuckets = Nothing}+++-- | Histogram of k-anonymity equivalence classes.+gpdvkarEquivalenceClassHistogramBuckets :: Lens' GooglePrivacyDlpV2KAnonymityResult [GooglePrivacyDlpV2KAnonymityHistogramBucket]+gpdvkarEquivalenceClassHistogramBuckets+  = lens _gpdvkarEquivalenceClassHistogramBuckets+      (\ s a ->+         s{_gpdvkarEquivalenceClassHistogramBuckets = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2KAnonymityResult+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2KAnonymityResult"+              (\ o ->+                 GooglePrivacyDlpV2KAnonymityResult' <$>+                   (o .:? "equivalenceClassHistogramBuckets" .!=+                      mempty))++instance ToJSON GooglePrivacyDlpV2KAnonymityResult+         where+        toJSON GooglePrivacyDlpV2KAnonymityResult'{..}+          = object+              (catMaybes+                 [("equivalenceClassHistogramBuckets" .=) <$>+                    _gpdvkarEquivalenceClassHistogramBuckets])++-- | Message defining a field of a BigQuery table.+--+-- /See:/ 'googlePrivacyDlpV2BigQueryField' smart constructor.+data GooglePrivacyDlpV2BigQueryField =+  GooglePrivacyDlpV2BigQueryField'+    { _gpdvbqfField :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvbqfTable :: !(Maybe GooglePrivacyDlpV2BigQueryTable)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2BigQueryField' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvbqfField'+--+-- * 'gpdvbqfTable'+googlePrivacyDlpV2BigQueryField+    :: GooglePrivacyDlpV2BigQueryField+googlePrivacyDlpV2BigQueryField =+  GooglePrivacyDlpV2BigQueryField'+    {_gpdvbqfField = Nothing, _gpdvbqfTable = Nothing}+++-- | Designated field in the BigQuery table.+gpdvbqfField :: Lens' GooglePrivacyDlpV2BigQueryField (Maybe GooglePrivacyDlpV2FieldId)+gpdvbqfField+  = lens _gpdvbqfField (\ s a -> s{_gpdvbqfField = a})++-- | Source table of the field.+gpdvbqfTable :: Lens' GooglePrivacyDlpV2BigQueryField (Maybe GooglePrivacyDlpV2BigQueryTable)+gpdvbqfTable+  = lens _gpdvbqfTable (\ s a -> s{_gpdvbqfTable = a})++instance FromJSON GooglePrivacyDlpV2BigQueryField+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2BigQueryField"+              (\ o ->+                 GooglePrivacyDlpV2BigQueryField' <$>+                   (o .:? "field") <*> (o .:? "table"))++instance ToJSON GooglePrivacyDlpV2BigQueryField where+        toJSON GooglePrivacyDlpV2BigQueryField'{..}+          = object+              (catMaybes+                 [("field" .=) <$> _gpdvbqfField,+                  ("table" .=) <$> _gpdvbqfTable])++-- | Cloud repository for storing output.+--+-- /See:/ 'googlePrivacyDlpV2OutputStorageConfig' smart constructor.+data GooglePrivacyDlpV2OutputStorageConfig =+  GooglePrivacyDlpV2OutputStorageConfig'+    { _gpdvoscOutputSchema :: !(Maybe GooglePrivacyDlpV2OutputStorageConfigOutputSchema)+    , _gpdvoscTable        :: !(Maybe GooglePrivacyDlpV2BigQueryTable)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2OutputStorageConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvoscOutputSchema'+--+-- * 'gpdvoscTable'+googlePrivacyDlpV2OutputStorageConfig+    :: GooglePrivacyDlpV2OutputStorageConfig+googlePrivacyDlpV2OutputStorageConfig =+  GooglePrivacyDlpV2OutputStorageConfig'+    {_gpdvoscOutputSchema = Nothing, _gpdvoscTable = Nothing}+++-- | Schema used for writing the findings for Inspect jobs. This field is+-- only used for Inspect and must be unspecified for Risk jobs. Columns are+-- derived from the \`Finding\` object. If appending to an existing table,+-- any columns from the predefined schema that are missing will be added.+-- No columns in the existing table will be deleted. If unspecified, then+-- all available columns will be used for a new table or an (existing)+-- table with no schema, and no changes will be made to an existing table+-- that has a schema.+gpdvoscOutputSchema :: Lens' GooglePrivacyDlpV2OutputStorageConfig (Maybe GooglePrivacyDlpV2OutputStorageConfigOutputSchema)+gpdvoscOutputSchema+  = lens _gpdvoscOutputSchema+      (\ s a -> s{_gpdvoscOutputSchema = a})++-- | Store findings in an existing table or a new table in an existing+-- dataset. If table_id is not set a new one will be generated for you with+-- the following format: dlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific+-- timezone will be used for generating the date details. For Inspect, each+-- column in an existing output table must have the same name, type, and+-- mode of a field in the \`Finding\` object. For Risk, an existing output+-- table should be the output of a previous Risk analysis job run on the+-- same source table, with the same privacy metric and quasi-identifiers.+-- Risk jobs that analyze the same table but compute a different privacy+-- metric, or use different sets of quasi-identifiers, cannot store their+-- results in the same table.+gpdvoscTable :: Lens' GooglePrivacyDlpV2OutputStorageConfig (Maybe GooglePrivacyDlpV2BigQueryTable)+gpdvoscTable+  = lens _gpdvoscTable (\ s a -> s{_gpdvoscTable = a})++instance FromJSON+           GooglePrivacyDlpV2OutputStorageConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2OutputStorageConfig"+              (\ o ->+                 GooglePrivacyDlpV2OutputStorageConfig' <$>+                   (o .:? "outputSchema") <*> (o .:? "table"))++instance ToJSON GooglePrivacyDlpV2OutputStorageConfig+         where+        toJSON GooglePrivacyDlpV2OutputStorageConfig'{..}+          = object+              (catMaybes+                 [("outputSchema" .=) <$> _gpdvoscOutputSchema,+                  ("table" .=) <$> _gpdvoscTable])++-- | Message representing a set of files in Cloud Storage.+--+-- /See:/ 'googlePrivacyDlpV2CloudStorageFileSet' smart constructor.+newtype GooglePrivacyDlpV2CloudStorageFileSet =+  GooglePrivacyDlpV2CloudStorageFileSet'+    { _gpdvcsfsURL :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CloudStorageFileSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcsfsURL'+googlePrivacyDlpV2CloudStorageFileSet+    :: GooglePrivacyDlpV2CloudStorageFileSet+googlePrivacyDlpV2CloudStorageFileSet =+  GooglePrivacyDlpV2CloudStorageFileSet' {_gpdvcsfsURL = Nothing}+++-- | The url, in the format \`gs:\/\/\/\`. Trailing wildcard in the path is+-- allowed.+gpdvcsfsURL :: Lens' GooglePrivacyDlpV2CloudStorageFileSet (Maybe Text)+gpdvcsfsURL+  = lens _gpdvcsfsURL (\ s a -> s{_gpdvcsfsURL = a})++instance FromJSON+           GooglePrivacyDlpV2CloudStorageFileSet+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2CloudStorageFileSet"+              (\ o ->+                 GooglePrivacyDlpV2CloudStorageFileSet' <$>+                   (o .:? "url"))++instance ToJSON GooglePrivacyDlpV2CloudStorageFileSet+         where+        toJSON GooglePrivacyDlpV2CloudStorageFileSet'{..}+          = object (catMaybes [("url" .=) <$> _gpdvcsfsURL])++-- | A type of transformation that will scan unstructured text and apply+-- various \`PrimitiveTransformation\`s to each finding, where the+-- transformation is applied to only values that were identified as a+-- specific info_type.+--+-- /See:/ 'googlePrivacyDlpV2InfoTypeTransformations' smart constructor.+newtype GooglePrivacyDlpV2InfoTypeTransformations =+  GooglePrivacyDlpV2InfoTypeTransformations'+    { _gpdvittTransformations :: Maybe [GooglePrivacyDlpV2InfoTypeTransformation]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InfoTypeTransformations' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvittTransformations'+googlePrivacyDlpV2InfoTypeTransformations+    :: GooglePrivacyDlpV2InfoTypeTransformations+googlePrivacyDlpV2InfoTypeTransformations =+  GooglePrivacyDlpV2InfoTypeTransformations' {_gpdvittTransformations = Nothing}+++-- | Transformation for each infoType. Cannot specify more than one for a+-- given infoType. [required]+gpdvittTransformations :: Lens' GooglePrivacyDlpV2InfoTypeTransformations [GooglePrivacyDlpV2InfoTypeTransformation]+gpdvittTransformations+  = lens _gpdvittTransformations+      (\ s a -> s{_gpdvittTransformations = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2InfoTypeTransformations+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2InfoTypeTransformations"+              (\ o ->+                 GooglePrivacyDlpV2InfoTypeTransformations' <$>+                   (o .:? "transformations" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2InfoTypeTransformations+         where+        toJSON GooglePrivacyDlpV2InfoTypeTransformations'{..}+          = object+              (catMaybes+                 [("transformations" .=) <$> _gpdvittTransformations])++-- | Include to use an existing data crypto key wrapped by KMS. The wrapped+-- key must be a 128\/192\/256 bit key. Authorization requires the+-- following IAM permissions when sending a request to perform a crypto+-- transformation using a kms-wrapped crypto key: dlp.kms.encrypt+--+-- /See:/ 'googlePrivacyDlpV2KmsWrAppedCryptoKey' smart constructor.+data GooglePrivacyDlpV2KmsWrAppedCryptoKey =+  GooglePrivacyDlpV2KmsWrAppedCryptoKey'+    { _gpdvkwackWrAppedKey    :: !(Maybe Bytes)+    , _gpdvkwackCryptoKeyName :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2KmsWrAppedCryptoKey' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvkwackWrAppedKey'+--+-- * 'gpdvkwackCryptoKeyName'+googlePrivacyDlpV2KmsWrAppedCryptoKey+    :: GooglePrivacyDlpV2KmsWrAppedCryptoKey+googlePrivacyDlpV2KmsWrAppedCryptoKey =+  GooglePrivacyDlpV2KmsWrAppedCryptoKey'+    {_gpdvkwackWrAppedKey = Nothing, _gpdvkwackCryptoKeyName = Nothing}+++-- | The wrapped data crypto key. [required]+gpdvkwackWrAppedKey :: Lens' GooglePrivacyDlpV2KmsWrAppedCryptoKey (Maybe ByteString)+gpdvkwackWrAppedKey+  = lens _gpdvkwackWrAppedKey+      (\ s a -> s{_gpdvkwackWrAppedKey = a})+      . mapping _Bytes++-- | The resource name of the KMS CryptoKey to use for unwrapping. [required]+gpdvkwackCryptoKeyName :: Lens' GooglePrivacyDlpV2KmsWrAppedCryptoKey (Maybe Text)+gpdvkwackCryptoKeyName+  = lens _gpdvkwackCryptoKeyName+      (\ s a -> s{_gpdvkwackCryptoKeyName = a})++instance FromJSON+           GooglePrivacyDlpV2KmsWrAppedCryptoKey+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2KmsWrAppedCryptoKey"+              (\ o ->+                 GooglePrivacyDlpV2KmsWrAppedCryptoKey' <$>+                   (o .:? "wrappedKey") <*> (o .:? "cryptoKeyName"))++instance ToJSON GooglePrivacyDlpV2KmsWrAppedCryptoKey+         where+        toJSON GooglePrivacyDlpV2KmsWrAppedCryptoKey'{..}+          = object+              (catMaybes+                 [("wrappedKey" .=) <$> _gpdvkwackWrAppedKey,+                  ("cryptoKeyName" .=) <$> _gpdvkwackCryptoKeyName])++-- | Results of inspecting an item.+--+-- /See:/ 'googlePrivacyDlpV2InspectContentResponse' smart constructor.+newtype GooglePrivacyDlpV2InspectContentResponse =+  GooglePrivacyDlpV2InspectContentResponse'+    { _gpdvicrResult :: Maybe GooglePrivacyDlpV2InspectResult+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InspectContentResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvicrResult'+googlePrivacyDlpV2InspectContentResponse+    :: GooglePrivacyDlpV2InspectContentResponse+googlePrivacyDlpV2InspectContentResponse =+  GooglePrivacyDlpV2InspectContentResponse' {_gpdvicrResult = Nothing}+++-- | The findings.+gpdvicrResult :: Lens' GooglePrivacyDlpV2InspectContentResponse (Maybe GooglePrivacyDlpV2InspectResult)+gpdvicrResult+  = lens _gpdvicrResult+      (\ s a -> s{_gpdvicrResult = a})++instance FromJSON+           GooglePrivacyDlpV2InspectContentResponse+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2InspectContentResponse"+              (\ o ->+                 GooglePrivacyDlpV2InspectContentResponse' <$>+                   (o .:? "result"))++instance ToJSON+           GooglePrivacyDlpV2InspectContentResponse+         where+        toJSON GooglePrivacyDlpV2InspectContentResponse'{..}+          = object+              (catMaybes [("result" .=) <$> _gpdvicrResult])++--+-- /See:/ 'googlePrivacyDlpV2LDiversityHistogramBucket' smart constructor.+data GooglePrivacyDlpV2LDiversityHistogramBucket =+  GooglePrivacyDlpV2LDiversityHistogramBucket'+    { _gpdvldhbBucketValues                      :: !(Maybe [GooglePrivacyDlpV2LDiversityEquivalenceClass])+    , _gpdvldhbSensitiveValueFrequencyLowerBound :: !(Maybe (Textual Int64))+    , _gpdvldhbSensitiveValueFrequencyUpperBound :: !(Maybe (Textual Int64))+    , _gpdvldhbBucketSize                        :: !(Maybe (Textual Int64))+    , _gpdvldhbBucketValueCount                  :: !(Maybe (Textual Int64))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2LDiversityHistogramBucket' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvldhbBucketValues'+--+-- * 'gpdvldhbSensitiveValueFrequencyLowerBound'+--+-- * 'gpdvldhbSensitiveValueFrequencyUpperBound'+--+-- * 'gpdvldhbBucketSize'+--+-- * 'gpdvldhbBucketValueCount'+googlePrivacyDlpV2LDiversityHistogramBucket+    :: GooglePrivacyDlpV2LDiversityHistogramBucket+googlePrivacyDlpV2LDiversityHistogramBucket =+  GooglePrivacyDlpV2LDiversityHistogramBucket'+    { _gpdvldhbBucketValues = Nothing+    , _gpdvldhbSensitiveValueFrequencyLowerBound = Nothing+    , _gpdvldhbSensitiveValueFrequencyUpperBound = Nothing+    , _gpdvldhbBucketSize = Nothing+    , _gpdvldhbBucketValueCount = Nothing+    }+++-- | Sample of equivalence classes in this bucket. The total number of+-- classes returned per bucket is capped at 20.+gpdvldhbBucketValues :: Lens' GooglePrivacyDlpV2LDiversityHistogramBucket [GooglePrivacyDlpV2LDiversityEquivalenceClass]+gpdvldhbBucketValues+  = lens _gpdvldhbBucketValues+      (\ s a -> s{_gpdvldhbBucketValues = a})+      . _Default+      . _Coerce++-- | Lower bound on the sensitive value frequencies of the equivalence+-- classes in this bucket.+gpdvldhbSensitiveValueFrequencyLowerBound :: Lens' GooglePrivacyDlpV2LDiversityHistogramBucket (Maybe Int64)+gpdvldhbSensitiveValueFrequencyLowerBound+  = lens _gpdvldhbSensitiveValueFrequencyLowerBound+      (\ s a ->+         s{_gpdvldhbSensitiveValueFrequencyLowerBound = a})+      . mapping _Coerce++-- | Upper bound on the sensitive value frequencies of the equivalence+-- classes in this bucket.+gpdvldhbSensitiveValueFrequencyUpperBound :: Lens' GooglePrivacyDlpV2LDiversityHistogramBucket (Maybe Int64)+gpdvldhbSensitiveValueFrequencyUpperBound+  = lens _gpdvldhbSensitiveValueFrequencyUpperBound+      (\ s a ->+         s{_gpdvldhbSensitiveValueFrequencyUpperBound = a})+      . mapping _Coerce++-- | Total number of equivalence classes in this bucket.+gpdvldhbBucketSize :: Lens' GooglePrivacyDlpV2LDiversityHistogramBucket (Maybe Int64)+gpdvldhbBucketSize+  = lens _gpdvldhbBucketSize+      (\ s a -> s{_gpdvldhbBucketSize = a})+      . mapping _Coerce++-- | Total number of distinct equivalence classes in this bucket.+gpdvldhbBucketValueCount :: Lens' GooglePrivacyDlpV2LDiversityHistogramBucket (Maybe Int64)+gpdvldhbBucketValueCount+  = lens _gpdvldhbBucketValueCount+      (\ s a -> s{_gpdvldhbBucketValueCount = a})+      . mapping _Coerce++instance FromJSON+           GooglePrivacyDlpV2LDiversityHistogramBucket+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2LDiversityHistogramBucket"+              (\ o ->+                 GooglePrivacyDlpV2LDiversityHistogramBucket' <$>+                   (o .:? "bucketValues" .!= mempty) <*>+                     (o .:? "sensitiveValueFrequencyLowerBound")+                     <*> (o .:? "sensitiveValueFrequencyUpperBound")+                     <*> (o .:? "bucketSize")+                     <*> (o .:? "bucketValueCount"))++instance ToJSON+           GooglePrivacyDlpV2LDiversityHistogramBucket+         where+        toJSON+          GooglePrivacyDlpV2LDiversityHistogramBucket'{..}+          = object+              (catMaybes+                 [("bucketValues" .=) <$> _gpdvldhbBucketValues,+                  ("sensitiveValueFrequencyLowerBound" .=) <$>+                    _gpdvldhbSensitiveValueFrequencyLowerBound,+                  ("sensitiveValueFrequencyUpperBound" .=) <$>+                    _gpdvldhbSensitiveValueFrequencyUpperBound,+                  ("bucketSize" .=) <$> _gpdvldhbBucketSize,+                  ("bucketValueCount" .=) <$>+                    _gpdvldhbBucketValueCount])++-- | Results of re-identifying a item.+--+-- /See:/ 'googlePrivacyDlpV2ReidentifyContentResponse' smart constructor.+data GooglePrivacyDlpV2ReidentifyContentResponse =+  GooglePrivacyDlpV2ReidentifyContentResponse'+    { _gpdvrcrOverview :: !(Maybe GooglePrivacyDlpV2TransformationOverview)+    , _gpdvrcrItem     :: !(Maybe GooglePrivacyDlpV2ContentItem)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ReidentifyContentResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrcrOverview'+--+-- * 'gpdvrcrItem'+googlePrivacyDlpV2ReidentifyContentResponse+    :: GooglePrivacyDlpV2ReidentifyContentResponse+googlePrivacyDlpV2ReidentifyContentResponse =+  GooglePrivacyDlpV2ReidentifyContentResponse'+    {_gpdvrcrOverview = Nothing, _gpdvrcrItem = Nothing}+++-- | An overview of the changes that were made to the \`item\`.+gpdvrcrOverview :: Lens' GooglePrivacyDlpV2ReidentifyContentResponse (Maybe GooglePrivacyDlpV2TransformationOverview)+gpdvrcrOverview+  = lens _gpdvrcrOverview+      (\ s a -> s{_gpdvrcrOverview = a})++-- | The re-identified item.+gpdvrcrItem :: Lens' GooglePrivacyDlpV2ReidentifyContentResponse (Maybe GooglePrivacyDlpV2ContentItem)+gpdvrcrItem+  = lens _gpdvrcrItem (\ s a -> s{_gpdvrcrItem = a})++instance FromJSON+           GooglePrivacyDlpV2ReidentifyContentResponse+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2ReidentifyContentResponse"+              (\ o ->+                 GooglePrivacyDlpV2ReidentifyContentResponse' <$>+                   (o .:? "overview") <*> (o .:? "item"))++instance ToJSON+           GooglePrivacyDlpV2ReidentifyContentResponse+         where+        toJSON+          GooglePrivacyDlpV2ReidentifyContentResponse'{..}+          = object+              (catMaybes+                 [("overview" .=) <$> _gpdvrcrOverview,+                  ("item" .=) <$> _gpdvrcrItem])++-- | An expression, consisting or an operator and conditions.+--+-- /See:/ 'googlePrivacyDlpV2Expressions' smart constructor.+data GooglePrivacyDlpV2Expressions =+  GooglePrivacyDlpV2Expressions'+    { _gpdveLogicalOperator :: !(Maybe GooglePrivacyDlpV2ExpressionsLogicalOperator)+    , _gpdveConditions      :: !(Maybe GooglePrivacyDlpV2Conditions)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Expressions' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdveLogicalOperator'+--+-- * 'gpdveConditions'+googlePrivacyDlpV2Expressions+    :: GooglePrivacyDlpV2Expressions+googlePrivacyDlpV2Expressions =+  GooglePrivacyDlpV2Expressions'+    {_gpdveLogicalOperator = Nothing, _gpdveConditions = Nothing}+++-- | The operator to apply to the result of conditions. Default and currently+-- only supported value is \`AND\`.+gpdveLogicalOperator :: Lens' GooglePrivacyDlpV2Expressions (Maybe GooglePrivacyDlpV2ExpressionsLogicalOperator)+gpdveLogicalOperator+  = lens _gpdveLogicalOperator+      (\ s a -> s{_gpdveLogicalOperator = a})++gpdveConditions :: Lens' GooglePrivacyDlpV2Expressions (Maybe GooglePrivacyDlpV2Conditions)+gpdveConditions+  = lens _gpdveConditions+      (\ s a -> s{_gpdveConditions = a})++instance FromJSON GooglePrivacyDlpV2Expressions where+        parseJSON+          = withObject "GooglePrivacyDlpV2Expressions"+              (\ o ->+                 GooglePrivacyDlpV2Expressions' <$>+                   (o .:? "logicalOperator") <*> (o .:? "conditions"))++instance ToJSON GooglePrivacyDlpV2Expressions where+        toJSON GooglePrivacyDlpV2Expressions'{..}+          = object+              (catMaybes+                 [("logicalOperator" .=) <$> _gpdveLogicalOperator,+                  ("conditions" .=) <$> _gpdveConditions])++-- | Message for a date time object. e.g. 2018-01-01, 5th August.+--+-- /See:/ 'googlePrivacyDlpV2DateTime' smart constructor.+data GooglePrivacyDlpV2DateTime =+  GooglePrivacyDlpV2DateTime'+    { _gpdvdtTime      :: !(Maybe GoogleTypeTimeOfDay)+    , _gpdvdtDate      :: !(Maybe GoogleTypeDate)+    , _gpdvdtTimeZone  :: !(Maybe GooglePrivacyDlpV2TimeZone)+    , _gpdvdtDayOfWeek :: !(Maybe GooglePrivacyDlpV2DateTimeDayOfWeek)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DateTime' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdtTime'+--+-- * 'gpdvdtDate'+--+-- * 'gpdvdtTimeZone'+--+-- * 'gpdvdtDayOfWeek'+googlePrivacyDlpV2DateTime+    :: GooglePrivacyDlpV2DateTime+googlePrivacyDlpV2DateTime =+  GooglePrivacyDlpV2DateTime'+    { _gpdvdtTime = Nothing+    , _gpdvdtDate = Nothing+    , _gpdvdtTimeZone = Nothing+    , _gpdvdtDayOfWeek = Nothing+    }+++gpdvdtTime :: Lens' GooglePrivacyDlpV2DateTime (Maybe GoogleTypeTimeOfDay)+gpdvdtTime+  = lens _gpdvdtTime (\ s a -> s{_gpdvdtTime = a})++-- | One or more of the following must be set. All fields are optional, but+-- when set must be valid date or time values.+gpdvdtDate :: Lens' GooglePrivacyDlpV2DateTime (Maybe GoogleTypeDate)+gpdvdtDate+  = lens _gpdvdtDate (\ s a -> s{_gpdvdtDate = a})++gpdvdtTimeZone :: Lens' GooglePrivacyDlpV2DateTime (Maybe GooglePrivacyDlpV2TimeZone)+gpdvdtTimeZone+  = lens _gpdvdtTimeZone+      (\ s a -> s{_gpdvdtTimeZone = a})++gpdvdtDayOfWeek :: Lens' GooglePrivacyDlpV2DateTime (Maybe GooglePrivacyDlpV2DateTimeDayOfWeek)+gpdvdtDayOfWeek+  = lens _gpdvdtDayOfWeek+      (\ s a -> s{_gpdvdtDayOfWeek = a})++instance FromJSON GooglePrivacyDlpV2DateTime where+        parseJSON+          = withObject "GooglePrivacyDlpV2DateTime"+              (\ o ->+                 GooglePrivacyDlpV2DateTime' <$>+                   (o .:? "time") <*> (o .:? "date") <*>+                     (o .:? "timeZone")+                     <*> (o .:? "dayOfWeek"))++instance ToJSON GooglePrivacyDlpV2DateTime where+        toJSON GooglePrivacyDlpV2DateTime'{..}+          = object+              (catMaybes+                 [("time" .=) <$> _gpdvdtTime,+                  ("date" .=) <$> _gpdvdtDate,+                  ("timeZone" .=) <$> _gpdvdtTimeZone,+                  ("dayOfWeek" .=) <$> _gpdvdtDayOfWeek])++-- | Message representing a set of files in a Cloud Storage bucket. Regular+-- expressions are used to allow fine-grained control over which files in+-- the bucket to include. Included files are those that match at least one+-- item in \`include_regex\` and do not match any items in+-- \`exclude_regex\`. Note that a file that matches items from both lists+-- will _not_ be included. For a match to occur, the entire file path+-- (i.e., everything in the url after the bucket name) must match the+-- regular expression. For example, given the input \`{bucket_name:+-- \"mybucket\", include_regex: [\"directory1\/.*\"], exclude_regex:+-- [\"directory1\/excluded.*\"]}\`: *+-- \`gs:\/\/mybucket\/directory1\/myfile\` will be included *+-- \`gs:\/\/mybucket\/directory1\/directory2\/myfile\` will be included+-- (\`.*\` matches across \`\/\`) *+-- \`gs:\/\/mybucket\/directory0\/directory1\/myfile\` will _not_ be+-- included (the full path doesn\'t match any items in \`include_regex\`) *+-- \`gs:\/\/mybucket\/directory1\/excludedfile\` will _not_ be included+-- (the path matches an item in \`exclude_regex\`) If \`include_regex\` is+-- left empty, it will match all files by default (this is equivalent to+-- setting \`include_regex: [\".*\"]\`). Some other common use cases: *+-- \`{bucket_name: \"mybucket\", exclude_regex: [\".*\\.pdf\"]}\` will+-- include all files in \`mybucket\` except for .pdf files *+-- \`{bucket_name: \"mybucket\", include_regex: [\"directory\/[^\/]+\"]}\`+-- will include all files directly under \`gs:\/\/mybucket\/directory\/\`,+-- without matching across \`\/\`+--+-- /See:/ 'googlePrivacyDlpV2CloudStorageRegexFileSet' smart constructor.+data GooglePrivacyDlpV2CloudStorageRegexFileSet =+  GooglePrivacyDlpV2CloudStorageRegexFileSet'+    { _gpdvcsrfsExcludeRegex :: !(Maybe [Text])+    , _gpdvcsrfsBucketName   :: !(Maybe Text)+    , _gpdvcsrfsIncludeRegex :: !(Maybe [Text])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CloudStorageRegexFileSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcsrfsExcludeRegex'+--+-- * 'gpdvcsrfsBucketName'+--+-- * 'gpdvcsrfsIncludeRegex'+googlePrivacyDlpV2CloudStorageRegexFileSet+    :: GooglePrivacyDlpV2CloudStorageRegexFileSet+googlePrivacyDlpV2CloudStorageRegexFileSet =+  GooglePrivacyDlpV2CloudStorageRegexFileSet'+    { _gpdvcsrfsExcludeRegex = Nothing+    , _gpdvcsrfsBucketName = Nothing+    , _gpdvcsrfsIncludeRegex = Nothing+    }+++-- | A list of regular expressions matching file paths to exclude. All files+-- in the bucket that match at least one of these regular expressions will+-- be excluded from the scan. Regular expressions use RE2+-- [syntax](https:\/\/github.com\/google\/re2\/wiki\/Syntax); a guide can+-- be found under the google\/re2 repository on GitHub.+gpdvcsrfsExcludeRegex :: Lens' GooglePrivacyDlpV2CloudStorageRegexFileSet [Text]+gpdvcsrfsExcludeRegex+  = lens _gpdvcsrfsExcludeRegex+      (\ s a -> s{_gpdvcsrfsExcludeRegex = a})+      . _Default+      . _Coerce++-- | The name of a Cloud Storage bucket. Required.+gpdvcsrfsBucketName :: Lens' GooglePrivacyDlpV2CloudStorageRegexFileSet (Maybe Text)+gpdvcsrfsBucketName+  = lens _gpdvcsrfsBucketName+      (\ s a -> s{_gpdvcsrfsBucketName = a})++-- | A list of regular expressions matching file paths to include. All files+-- in the bucket that match at least one of these regular expressions will+-- be included in the set of files, except for those that also match an+-- item in \`exclude_regex\`. Leaving this field empty will match all files+-- by default (this is equivalent to including \`.*\` in the list). Regular+-- expressions use RE2+-- [syntax](https:\/\/github.com\/google\/re2\/wiki\/Syntax); a guide can+-- be found under the google\/re2 repository on GitHub.+gpdvcsrfsIncludeRegex :: Lens' GooglePrivacyDlpV2CloudStorageRegexFileSet [Text]+gpdvcsrfsIncludeRegex+  = lens _gpdvcsrfsIncludeRegex+      (\ s a -> s{_gpdvcsrfsIncludeRegex = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2CloudStorageRegexFileSet+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2CloudStorageRegexFileSet"+              (\ o ->+                 GooglePrivacyDlpV2CloudStorageRegexFileSet' <$>+                   (o .:? "excludeRegex" .!= mempty) <*>+                     (o .:? "bucketName")+                     <*> (o .:? "includeRegex" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2CloudStorageRegexFileSet+         where+        toJSON+          GooglePrivacyDlpV2CloudStorageRegexFileSet'{..}+          = object+              (catMaybes+                 [("excludeRegex" .=) <$> _gpdvcsrfsExcludeRegex,+                  ("bucketName" .=) <$> _gpdvcsrfsBucketName,+                  ("includeRegex" .=) <$> _gpdvcsrfsIncludeRegex])++-- | Bucket is represented as a range, along with replacement values.+--+-- /See:/ 'googlePrivacyDlpV2Bucket' smart constructor.+data GooglePrivacyDlpV2Bucket =+  GooglePrivacyDlpV2Bucket'+    { _gpdvbMax              :: !(Maybe GooglePrivacyDlpV2Value)+    , _gpdvbReplacementValue :: !(Maybe GooglePrivacyDlpV2Value)+    , _gpdvbMin              :: !(Maybe GooglePrivacyDlpV2Value)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Bucket' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvbMax'+--+-- * 'gpdvbReplacementValue'+--+-- * 'gpdvbMin'+googlePrivacyDlpV2Bucket+    :: GooglePrivacyDlpV2Bucket+googlePrivacyDlpV2Bucket =+  GooglePrivacyDlpV2Bucket'+    {_gpdvbMax = Nothing, _gpdvbReplacementValue = Nothing, _gpdvbMin = Nothing}+++-- | Upper bound of the range, exclusive; type must match min.+gpdvbMax :: Lens' GooglePrivacyDlpV2Bucket (Maybe GooglePrivacyDlpV2Value)+gpdvbMax = lens _gpdvbMax (\ s a -> s{_gpdvbMax = a})++-- | Replacement value for this bucket. If not provided the default behavior+-- will be to hyphenate the min-max range.+gpdvbReplacementValue :: Lens' GooglePrivacyDlpV2Bucket (Maybe GooglePrivacyDlpV2Value)+gpdvbReplacementValue+  = lens _gpdvbReplacementValue+      (\ s a -> s{_gpdvbReplacementValue = a})++-- | Lower bound of the range, inclusive. Type should be the same as max if+-- used.+gpdvbMin :: Lens' GooglePrivacyDlpV2Bucket (Maybe GooglePrivacyDlpV2Value)+gpdvbMin = lens _gpdvbMin (\ s a -> s{_gpdvbMin = a})++instance FromJSON GooglePrivacyDlpV2Bucket where+        parseJSON+          = withObject "GooglePrivacyDlpV2Bucket"+              (\ o ->+                 GooglePrivacyDlpV2Bucket' <$>+                   (o .:? "max") <*> (o .:? "replacementValue") <*>+                     (o .:? "min"))++instance ToJSON GooglePrivacyDlpV2Bucket where+        toJSON GooglePrivacyDlpV2Bucket'{..}+          = object+              (catMaybes+                 [("max" .=) <$> _gpdvbMax,+                  ("replacementValue" .=) <$> _gpdvbReplacementValue,+                  ("min" .=) <$> _gpdvbMin])++-- | A task to execute on the completion of a job. See+-- https:\/\/cloud.google.com\/dlp\/docs\/concepts-actions to learn more.+--+-- /See:/ 'googlePrivacyDlpV2Action' smart constructor.+data GooglePrivacyDlpV2Action =+  GooglePrivacyDlpV2Action'+    { _gpdvaJobNotificationEmails :: !(Maybe GooglePrivacyDlpV2JobNotificationEmails)+    , _gpdvaPubSub                :: !(Maybe GooglePrivacyDlpV2PublishToPubSub)+    , _gpdvaSaveFindings          :: !(Maybe GooglePrivacyDlpV2SaveFindings)+    , _gpdvaPublishSummaryToCscc  :: !(Maybe GooglePrivacyDlpV2PublishSummaryToCscc)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Action' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvaJobNotificationEmails'+--+-- * 'gpdvaPubSub'+--+-- * 'gpdvaSaveFindings'+--+-- * 'gpdvaPublishSummaryToCscc'+googlePrivacyDlpV2Action+    :: GooglePrivacyDlpV2Action+googlePrivacyDlpV2Action =+  GooglePrivacyDlpV2Action'+    { _gpdvaJobNotificationEmails = Nothing+    , _gpdvaPubSub = Nothing+    , _gpdvaSaveFindings = Nothing+    , _gpdvaPublishSummaryToCscc = Nothing+    }+++-- | Enable email notification to project owners and editors on job\'s+-- completion\/failure.+gpdvaJobNotificationEmails :: Lens' GooglePrivacyDlpV2Action (Maybe GooglePrivacyDlpV2JobNotificationEmails)+gpdvaJobNotificationEmails+  = lens _gpdvaJobNotificationEmails+      (\ s a -> s{_gpdvaJobNotificationEmails = a})++-- | Publish a notification to a pubsub topic.+gpdvaPubSub :: Lens' GooglePrivacyDlpV2Action (Maybe GooglePrivacyDlpV2PublishToPubSub)+gpdvaPubSub+  = lens _gpdvaPubSub (\ s a -> s{_gpdvaPubSub = a})++-- | Save resulting findings in a provided location.+gpdvaSaveFindings :: Lens' GooglePrivacyDlpV2Action (Maybe GooglePrivacyDlpV2SaveFindings)+gpdvaSaveFindings+  = lens _gpdvaSaveFindings+      (\ s a -> s{_gpdvaSaveFindings = a})++-- | Publish summary to Cloud Security Command Center (Alpha).+gpdvaPublishSummaryToCscc :: Lens' GooglePrivacyDlpV2Action (Maybe GooglePrivacyDlpV2PublishSummaryToCscc)+gpdvaPublishSummaryToCscc+  = lens _gpdvaPublishSummaryToCscc+      (\ s a -> s{_gpdvaPublishSummaryToCscc = a})++instance FromJSON GooglePrivacyDlpV2Action where+        parseJSON+          = withObject "GooglePrivacyDlpV2Action"+              (\ o ->+                 GooglePrivacyDlpV2Action' <$>+                   (o .:? "jobNotificationEmails") <*> (o .:? "pubSub")+                     <*> (o .:? "saveFindings")+                     <*> (o .:? "publishSummaryToCscc"))++instance ToJSON GooglePrivacyDlpV2Action where+        toJSON GooglePrivacyDlpV2Action'{..}+          = object+              (catMaybes+                 [("jobNotificationEmails" .=) <$>+                    _gpdvaJobNotificationEmails,+                  ("pubSub" .=) <$> _gpdvaPubSub,+                  ("saveFindings" .=) <$> _gpdvaSaveFindings,+                  ("publishSummaryToCscc" .=) <$>+                    _gpdvaPublishSummaryToCscc])++-- | Represents a whole or partial calendar date, e.g. a birthday. The time+-- of day and time zone are either specified elsewhere or are not+-- significant. The date is relative to the Proleptic Gregorian Calendar.+-- This can represent: * A full date, with non-zero year, month and day+-- values * A month and day value, with a zero year, e.g. an anniversary *+-- A year on its own, with zero month and day values * A year and month+-- value, with a zero day, e.g. a credit card expiration date Related types+-- are google.type.TimeOfDay and \`google.protobuf.Timestamp\`.+--+-- /See:/ 'googleTypeDate' smart constructor.+data GoogleTypeDate =+  GoogleTypeDate'+    { _gtdDay   :: !(Maybe (Textual Int32))+    , _gtdYear  :: !(Maybe (Textual Int32))+    , _gtdMonth :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GoogleTypeDate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gtdDay'+--+-- * 'gtdYear'+--+-- * 'gtdMonth'+googleTypeDate+    :: GoogleTypeDate+googleTypeDate =+  GoogleTypeDate' {_gtdDay = Nothing, _gtdYear = Nothing, _gtdMonth = Nothing}+++-- | Day of month. Must be from 1 to 31 and valid for the year and month, or+-- 0 if specifying a year by itself or a year and month where the day is+-- not significant.+gtdDay :: Lens' GoogleTypeDate (Maybe Int32)+gtdDay+  = lens _gtdDay (\ s a -> s{_gtdDay = a}) .+      mapping _Coerce++-- | Year of date. Must be from 1 to 9999, or 0 if specifying a date without+-- a year.+gtdYear :: Lens' GoogleTypeDate (Maybe Int32)+gtdYear+  = lens _gtdYear (\ s a -> s{_gtdYear = a}) .+      mapping _Coerce++-- | Month of year. Must be from 1 to 12, or 0 if specifying a year without a+-- month and day.+gtdMonth :: Lens' GoogleTypeDate (Maybe Int32)+gtdMonth+  = lens _gtdMonth (\ s a -> s{_gtdMonth = a}) .+      mapping _Coerce++instance FromJSON GoogleTypeDate where+        parseJSON+          = withObject "GoogleTypeDate"+              (\ o ->+                 GoogleTypeDate' <$>+                   (o .:? "day") <*> (o .:? "year") <*> (o .:? "month"))++instance ToJSON GoogleTypeDate where+        toJSON GoogleTypeDate'{..}+          = object+              (catMaybes+                 [("day" .=) <$> _gtdDay, ("year" .=) <$> _gtdYear,+                  ("month" .=) <$> _gtdMonth])++-- | Message for detecting output from deidentification transformations such+-- as+-- [\`CryptoReplaceFfxFpeConfig\`](\/dlp\/docs\/reference\/rest\/v2\/organizations.deidentifyTemplates#cryptoreplaceffxfpeconfig).+-- These types of transformations are those that perform pseudonymization,+-- thereby producing a \"surrogate\" as output. This should be used in+-- conjunction with a field on the transformation such as+-- \`surrogate_info_type\`. This CustomInfoType does not support the use of+-- \`detection_rules\`.+--+-- /See:/ 'googlePrivacyDlpV2SurrogateType' smart constructor.+data GooglePrivacyDlpV2SurrogateType =+  GooglePrivacyDlpV2SurrogateType'+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2SurrogateType' with the minimum fields required to make a request.+--+googlePrivacyDlpV2SurrogateType+    :: GooglePrivacyDlpV2SurrogateType+googlePrivacyDlpV2SurrogateType = GooglePrivacyDlpV2SurrogateType'+++instance FromJSON GooglePrivacyDlpV2SurrogateType+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2SurrogateType"+              (\ o -> pure GooglePrivacyDlpV2SurrogateType')++instance ToJSON GooglePrivacyDlpV2SurrogateType where+        toJSON = const emptyObject++-- | Structured content to inspect. Up to 50,000 \`Value\`s per request+-- allowed. See+-- https:\/\/cloud.google.com\/dlp\/docs\/inspecting-text#inspecting_a_table+-- to learn more.+--+-- /See:/ 'googlePrivacyDlpV2Table' smart constructor.+data GooglePrivacyDlpV2Table =+  GooglePrivacyDlpV2Table'+    { _gpdvtRows    :: !(Maybe [GooglePrivacyDlpV2Row])+    , _gpdvtHeaders :: !(Maybe [GooglePrivacyDlpV2FieldId])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Table' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvtRows'+--+-- * 'gpdvtHeaders'+googlePrivacyDlpV2Table+    :: GooglePrivacyDlpV2Table+googlePrivacyDlpV2Table =+  GooglePrivacyDlpV2Table' {_gpdvtRows = Nothing, _gpdvtHeaders = Nothing}+++gpdvtRows :: Lens' GooglePrivacyDlpV2Table [GooglePrivacyDlpV2Row]+gpdvtRows+  = lens _gpdvtRows (\ s a -> s{_gpdvtRows = a}) .+      _Default+      . _Coerce++gpdvtHeaders :: Lens' GooglePrivacyDlpV2Table [GooglePrivacyDlpV2FieldId]+gpdvtHeaders+  = lens _gpdvtHeaders (\ s a -> s{_gpdvtHeaders = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2Table where+        parseJSON+          = withObject "GooglePrivacyDlpV2Table"+              (\ o ->+                 GooglePrivacyDlpV2Table' <$>+                   (o .:? "rows" .!= mempty) <*>+                     (o .:? "headers" .!= mempty))++instance ToJSON GooglePrivacyDlpV2Table where+        toJSON GooglePrivacyDlpV2Table'{..}+          = object+              (catMaybes+                 [("rows" .=) <$> _gpdvtRows,+                  ("headers" .=) <$> _gpdvtHeaders])++-- | Result of the l-diversity computation.+--+-- /See:/ 'googlePrivacyDlpV2LDiversityResult' smart constructor.+newtype GooglePrivacyDlpV2LDiversityResult =+  GooglePrivacyDlpV2LDiversityResult'+    { _gpdvldrSensitiveValueFrequencyHistogramBuckets :: Maybe [GooglePrivacyDlpV2LDiversityHistogramBucket]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2LDiversityResult' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvldrSensitiveValueFrequencyHistogramBuckets'+googlePrivacyDlpV2LDiversityResult+    :: GooglePrivacyDlpV2LDiversityResult+googlePrivacyDlpV2LDiversityResult =+  GooglePrivacyDlpV2LDiversityResult'+    {_gpdvldrSensitiveValueFrequencyHistogramBuckets = Nothing}+++-- | Histogram of l-diversity equivalence class sensitive value frequencies.+gpdvldrSensitiveValueFrequencyHistogramBuckets :: Lens' GooglePrivacyDlpV2LDiversityResult [GooglePrivacyDlpV2LDiversityHistogramBucket]+gpdvldrSensitiveValueFrequencyHistogramBuckets+  = lens+      _gpdvldrSensitiveValueFrequencyHistogramBuckets+      (\ s a ->+         s{_gpdvldrSensitiveValueFrequencyHistogramBuckets =+             a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2LDiversityResult+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2LDiversityResult"+              (\ o ->+                 GooglePrivacyDlpV2LDiversityResult' <$>+                   (o .:? "sensitiveValueFrequencyHistogramBuckets" .!=+                      mempty))++instance ToJSON GooglePrivacyDlpV2LDiversityResult+         where+        toJSON GooglePrivacyDlpV2LDiversityResult'{..}+          = object+              (catMaybes+                 [("sensitiveValueFrequencyHistogramBuckets" .=) <$>+                    _gpdvldrSensitiveValueFrequencyHistogramBuckets])++-- | Reidentifiability metric. This corresponds to a risk model similar to+-- what is called \"journalist risk\" in the literature, except the attack+-- dataset is statistically modeled instead of being perfectly known. This+-- can be done using publicly available data (like the US Census), or using+-- a custom statistical model (indicated as one or several BigQuery+-- tables), or by extrapolating from the distribution of values in the+-- input dataset. A column with a semantic tag attached.+--+-- /See:/ 'googlePrivacyDlpV2KMapEstimationConfig' smart constructor.+data GooglePrivacyDlpV2KMapEstimationConfig =+  GooglePrivacyDlpV2KMapEstimationConfig'+    { _gpdvkmecAuxiliaryTables :: !(Maybe [GooglePrivacyDlpV2AuxiliaryTable])+    , _gpdvkmecRegionCode      :: !(Maybe Text)+    , _gpdvkmecQuasiIds        :: !(Maybe [GooglePrivacyDlpV2TaggedField])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2KMapEstimationConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvkmecAuxiliaryTables'+--+-- * 'gpdvkmecRegionCode'+--+-- * 'gpdvkmecQuasiIds'+googlePrivacyDlpV2KMapEstimationConfig+    :: GooglePrivacyDlpV2KMapEstimationConfig+googlePrivacyDlpV2KMapEstimationConfig =+  GooglePrivacyDlpV2KMapEstimationConfig'+    { _gpdvkmecAuxiliaryTables = Nothing+    , _gpdvkmecRegionCode = Nothing+    , _gpdvkmecQuasiIds = Nothing+    }+++-- | Several auxiliary tables can be used in the analysis. Each custom_tag+-- used to tag a quasi-identifiers column must appear in exactly one column+-- of one auxiliary table.+gpdvkmecAuxiliaryTables :: Lens' GooglePrivacyDlpV2KMapEstimationConfig [GooglePrivacyDlpV2AuxiliaryTable]+gpdvkmecAuxiliaryTables+  = lens _gpdvkmecAuxiliaryTables+      (\ s a -> s{_gpdvkmecAuxiliaryTables = a})+      . _Default+      . _Coerce++-- | ISO 3166-1 alpha-2 region code to use in the statistical modeling.+-- Required if no column is tagged with a region-specific InfoType (like+-- US_ZIP_5) or a region code.+gpdvkmecRegionCode :: Lens' GooglePrivacyDlpV2KMapEstimationConfig (Maybe Text)+gpdvkmecRegionCode+  = lens _gpdvkmecRegionCode+      (\ s a -> s{_gpdvkmecRegionCode = a})++-- | Fields considered to be quasi-identifiers. No two columns can have the+-- same tag. [required]+gpdvkmecQuasiIds :: Lens' GooglePrivacyDlpV2KMapEstimationConfig [GooglePrivacyDlpV2TaggedField]+gpdvkmecQuasiIds+  = lens _gpdvkmecQuasiIds+      (\ s a -> s{_gpdvkmecQuasiIds = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2KMapEstimationConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2KMapEstimationConfig"+              (\ o ->+                 GooglePrivacyDlpV2KMapEstimationConfig' <$>+                   (o .:? "auxiliaryTables" .!= mempty) <*>+                     (o .:? "regionCode")+                     <*> (o .:? "quasiIds" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2KMapEstimationConfig+         where+        toJSON GooglePrivacyDlpV2KMapEstimationConfig'{..}+          = object+              (catMaybes+                 [("auxiliaryTables" .=) <$> _gpdvkmecAuxiliaryTables,+                  ("regionCode" .=) <$> _gpdvkmecRegionCode,+                  ("quasiIds" .=) <$> _gpdvkmecQuasiIds])++-- | Replaces an identifier with a surrogate using Format Preserving+-- Encryption (FPE) with the FFX mode of operation; however when used in+-- the \`ReidentifyContent\` API method, it serves the opposite function by+-- reversing the surrogate back into the original identifier. The+-- identifier must be encoded as ASCII. For a given crypto key and context,+-- the same identifier will be replaced with the same surrogate.+-- Identifiers must be at least two characters long. In the case that the+-- identifier is the empty string, it will be skipped. See+-- https:\/\/cloud.google.com\/dlp\/docs\/pseudonymization to learn more.+-- Note: We recommend using CryptoDeterministicConfig for all use cases+-- which do not require preserving the input alphabet space and size, plus+-- warrant referential integrity.+--+-- /See:/ 'googlePrivacyDlpV2CryptoReplaceFfxFpeConfig' smart constructor.+data GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig =+  GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig'+    { _gpdvcrffcContext           :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvcrffcCommonAlphabet    :: !(Maybe GooglePrivacyDlpV2CryptoReplaceFfxFpeConfigCommonAlphabet)+    , _gpdvcrffcSurrogateInfoType :: !(Maybe GooglePrivacyDlpV2InfoType)+    , _gpdvcrffcCustomAlphabet    :: !(Maybe Text)+    , _gpdvcrffcCryptoKey         :: !(Maybe GooglePrivacyDlpV2CryptoKey)+    , _gpdvcrffcRadix             :: !(Maybe (Textual Int32))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcrffcContext'+--+-- * 'gpdvcrffcCommonAlphabet'+--+-- * 'gpdvcrffcSurrogateInfoType'+--+-- * 'gpdvcrffcCustomAlphabet'+--+-- * 'gpdvcrffcCryptoKey'+--+-- * 'gpdvcrffcRadix'+googlePrivacyDlpV2CryptoReplaceFfxFpeConfig+    :: GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig+googlePrivacyDlpV2CryptoReplaceFfxFpeConfig =+  GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig'+    { _gpdvcrffcContext = Nothing+    , _gpdvcrffcCommonAlphabet = Nothing+    , _gpdvcrffcSurrogateInfoType = Nothing+    , _gpdvcrffcCustomAlphabet = Nothing+    , _gpdvcrffcCryptoKey = Nothing+    , _gpdvcrffcRadix = Nothing+    }+++-- | The \'tweak\', a context may be used for higher security since the same+-- identifier in two different contexts won\'t be given the same surrogate.+-- If the context is not set, a default tweak will be used. If the context+-- is set but: 1. there is no record present when transforming a given+-- value or 1. the field is not present when transforming a given value, a+-- default tweak will be used. Note that case (1) is expected when an+-- \`InfoTypeTransformation\` is applied to both structured and+-- non-structured \`ContentItem\`s. Currently, the referenced field may be+-- of value type integer or string. The tweak is constructed as a sequence+-- of bytes in big endian byte order such that: - a 64 bit integer is+-- encoded followed by a single byte of value 1 - a string is encoded in+-- UTF-8 format followed by a single byte of value 2+gpdvcrffcContext :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe GooglePrivacyDlpV2FieldId)+gpdvcrffcContext+  = lens _gpdvcrffcContext+      (\ s a -> s{_gpdvcrffcContext = a})++gpdvcrffcCommonAlphabet :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe GooglePrivacyDlpV2CryptoReplaceFfxFpeConfigCommonAlphabet)+gpdvcrffcCommonAlphabet+  = lens _gpdvcrffcCommonAlphabet+      (\ s a -> s{_gpdvcrffcCommonAlphabet = a})++-- | The custom infoType to annotate the surrogate with. This annotation will+-- be applied to the surrogate by prefixing it with the name of the custom+-- infoType followed by the number of characters comprising the surrogate.+-- The following scheme defines the format:+-- info_type_name(surrogate_character_count):surrogate For example, if the+-- name of custom infoType is \'MY_TOKEN_INFO_TYPE\' and the surrogate is+-- \'abc\', the full replacement value will be:+-- \'MY_TOKEN_INFO_TYPE(3):abc\' This annotation identifies the surrogate+-- when inspecting content using the custom infoType+-- [\`SurrogateType\`](\/dlp\/docs\/reference\/rest\/v2\/InspectConfig#surrogatetype).+-- This facilitates reversal of the surrogate when it occurs in free text.+-- In order for inspection to work properly, the name of this infoType must+-- not occur naturally anywhere in your data; otherwise, inspection may+-- find a surrogate that does not correspond to an actual identifier.+-- Therefore, choose your custom infoType name carefully after considering+-- what your data looks like. One way to select a name that has a high+-- chance of yielding reliable detection is to include one or more unicode+-- characters that are highly improbable to exist in your data. For+-- example, assuming your data is entered from a regular ASCII keyboard,+-- the symbol with the hex code point 29DD might be used like so:+-- ⧝MY_TOKEN_TYPE+gpdvcrffcSurrogateInfoType :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe GooglePrivacyDlpV2InfoType)+gpdvcrffcSurrogateInfoType+  = lens _gpdvcrffcSurrogateInfoType+      (\ s a -> s{_gpdvcrffcSurrogateInfoType = a})++-- | This is supported by mapping these to the alphanumeric characters that+-- the FFX mode natively supports. This happens before\/after+-- encryption\/decryption. Each character listed must appear only once.+-- Number of characters must be in the range [2, 62]. This must be encoded+-- as ASCII. The order of characters does not matter.+gpdvcrffcCustomAlphabet :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe Text)+gpdvcrffcCustomAlphabet+  = lens _gpdvcrffcCustomAlphabet+      (\ s a -> s{_gpdvcrffcCustomAlphabet = a})++-- | The key used by the encryption algorithm. [required]+gpdvcrffcCryptoKey :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe GooglePrivacyDlpV2CryptoKey)+gpdvcrffcCryptoKey+  = lens _gpdvcrffcCryptoKey+      (\ s a -> s{_gpdvcrffcCryptoKey = a})++-- | The native way to select the alphabet. Must be in the range [2, 62].+gpdvcrffcRadix :: Lens' GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig (Maybe Int32)+gpdvcrffcRadix+  = lens _gpdvcrffcRadix+      (\ s a -> s{_gpdvcrffcRadix = a})+      . mapping _Coerce++instance FromJSON+           GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig"+              (\ o ->+                 GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig' <$>+                   (o .:? "context") <*> (o .:? "commonAlphabet") <*>+                     (o .:? "surrogateInfoType")+                     <*> (o .:? "customAlphabet")+                     <*> (o .:? "cryptoKey")+                     <*> (o .:? "radix"))++instance ToJSON+           GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig+         where+        toJSON+          GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig'{..}+          = object+              (catMaybes+                 [("context" .=) <$> _gpdvcrffcContext,+                  ("commonAlphabet" .=) <$> _gpdvcrffcCommonAlphabet,+                  ("surrogateInfoType" .=) <$>+                    _gpdvcrffcSurrogateInfoType,+                  ("customAlphabet" .=) <$> _gpdvcrffcCustomAlphabet,+                  ("cryptoKey" .=) <$> _gpdvcrffcCryptoKey,+                  ("radix" .=) <$> _gpdvcrffcRadix])++-- | A quasi-identifier column has a custom_tag, used to know which column in+-- the data corresponds to which column in the statistical model.+--+-- /See:/ 'googlePrivacyDlpV2QuasiIdentifierField' smart constructor.+data GooglePrivacyDlpV2QuasiIdentifierField =+  GooglePrivacyDlpV2QuasiIdentifierField'+    { _gField     :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gCustomTag :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2QuasiIdentifierField' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gField'+--+-- * 'gCustomTag'+googlePrivacyDlpV2QuasiIdentifierField+    :: GooglePrivacyDlpV2QuasiIdentifierField+googlePrivacyDlpV2QuasiIdentifierField =+  GooglePrivacyDlpV2QuasiIdentifierField'+    {_gField = Nothing, _gCustomTag = Nothing}+++gField :: Lens' GooglePrivacyDlpV2QuasiIdentifierField (Maybe GooglePrivacyDlpV2FieldId)+gField = lens _gField (\ s a -> s{_gField = a})++gCustomTag :: Lens' GooglePrivacyDlpV2QuasiIdentifierField (Maybe Text)+gCustomTag+  = lens _gCustomTag (\ s a -> s{_gCustomTag = a})++instance FromJSON+           GooglePrivacyDlpV2QuasiIdentifierField+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2QuasiIdentifierField"+              (\ o ->+                 GooglePrivacyDlpV2QuasiIdentifierField' <$>+                   (o .:? "field") <*> (o .:? "customTag"))++instance ToJSON+           GooglePrivacyDlpV2QuasiIdentifierField+         where+        toJSON GooglePrivacyDlpV2QuasiIdentifierField'{..}+          = object+              (catMaybes+                 [("field" .=) <$> _gField,+                  ("customTag" .=) <$> _gCustomTag])++-- | Type of information detected by the API.+--+-- /See:/ 'googlePrivacyDlpV2InfoType' smart constructor.+newtype GooglePrivacyDlpV2InfoType =+  GooglePrivacyDlpV2InfoType'+    { _gpdvitName :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InfoType' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvitName'+googlePrivacyDlpV2InfoType+    :: GooglePrivacyDlpV2InfoType+googlePrivacyDlpV2InfoType = GooglePrivacyDlpV2InfoType' {_gpdvitName = Nothing}+++-- | Name of the information type. Either a name of your choosing when+-- creating a CustomInfoType, or one of the names listed at+-- https:\/\/cloud.google.com\/dlp\/docs\/infotypes-reference when+-- specifying a built-in type. InfoType names should conform to the pattern+-- [a-zA-Z0-9_]{1,64}.+gpdvitName :: Lens' GooglePrivacyDlpV2InfoType (Maybe Text)+gpdvitName+  = lens _gpdvitName (\ s a -> s{_gpdvitName = a})++instance FromJSON GooglePrivacyDlpV2InfoType where+        parseJSON+          = withObject "GooglePrivacyDlpV2InfoType"+              (\ o ->+                 GooglePrivacyDlpV2InfoType' <$> (o .:? "name"))++instance ToJSON GooglePrivacyDlpV2InfoType where+        toJSON GooglePrivacyDlpV2InfoType'{..}+          = object (catMaybes [("name" .=) <$> _gpdvitName])++-- | The inspectTemplate contains a configuration (set of types of sensitive+-- data to be detected) to be used anywhere you otherwise would normally+-- specify InspectConfig. See+-- https:\/\/cloud.google.com\/dlp\/docs\/concepts-templates to learn more.+--+-- /See:/ 'googlePrivacyDlpV2InspectTemplate' smart constructor.+data GooglePrivacyDlpV2InspectTemplate =+  GooglePrivacyDlpV2InspectTemplate'+    { _gInspectConfig :: !(Maybe GooglePrivacyDlpV2InspectConfig)+    , _gUpdateTime    :: !(Maybe DateTime')+    , _gName          :: !(Maybe Text)+    , _gDisplayName   :: !(Maybe Text)+    , _gDescription   :: !(Maybe Text)+    , _gCreateTime    :: !(Maybe DateTime')+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InspectTemplate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gInspectConfig'+--+-- * 'gUpdateTime'+--+-- * 'gName'+--+-- * 'gDisplayName'+--+-- * 'gDescription'+--+-- * 'gCreateTime'+googlePrivacyDlpV2InspectTemplate+    :: GooglePrivacyDlpV2InspectTemplate+googlePrivacyDlpV2InspectTemplate =+  GooglePrivacyDlpV2InspectTemplate'+    { _gInspectConfig = Nothing+    , _gUpdateTime = Nothing+    , _gName = Nothing+    , _gDisplayName = Nothing+    , _gDescription = Nothing+    , _gCreateTime = Nothing+    }+++-- | The core content of the template. Configuration of the scanning process.+gInspectConfig :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe GooglePrivacyDlpV2InspectConfig)+gInspectConfig+  = lens _gInspectConfig+      (\ s a -> s{_gInspectConfig = a})++-- | The last update timestamp of a inspectTemplate, output only field.+gUpdateTime :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe UTCTime)+gUpdateTime+  = lens _gUpdateTime (\ s a -> s{_gUpdateTime = a}) .+      mapping _DateTime++-- | The template name. Output only. The template will have one of the+-- following formats:+-- \`projects\/PROJECT_ID\/inspectTemplates\/TEMPLATE_ID\` OR+-- \`organizations\/ORGANIZATION_ID\/inspectTemplates\/TEMPLATE_ID\`+gName :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe Text)+gName = lens _gName (\ s a -> s{_gName = a})++-- | Display name (max 256 chars).+gDisplayName :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe Text)+gDisplayName+  = lens _gDisplayName (\ s a -> s{_gDisplayName = a})++-- | Short description (max 256 chars).+gDescription :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe Text)+gDescription+  = lens _gDescription (\ s a -> s{_gDescription = a})++-- | The creation timestamp of a inspectTemplate, output only field.+gCreateTime :: Lens' GooglePrivacyDlpV2InspectTemplate (Maybe UTCTime)+gCreateTime+  = lens _gCreateTime (\ s a -> s{_gCreateTime = a}) .+      mapping _DateTime++instance FromJSON GooglePrivacyDlpV2InspectTemplate+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2InspectTemplate"+              (\ o ->+                 GooglePrivacyDlpV2InspectTemplate' <$>+                   (o .:? "inspectConfig") <*> (o .:? "updateTime") <*>+                     (o .:? "name")+                     <*> (o .:? "displayName")+                     <*> (o .:? "description")+                     <*> (o .:? "createTime"))++instance ToJSON GooglePrivacyDlpV2InspectTemplate+         where+        toJSON GooglePrivacyDlpV2InspectTemplate'{..}+          = object+              (catMaybes+                 [("inspectConfig" .=) <$> _gInspectConfig,+                  ("updateTime" .=) <$> _gUpdateTime,+                  ("name" .=) <$> _gName,+                  ("displayName" .=) <$> _gDisplayName,+                  ("description" .=) <$> _gDescription,+                  ("createTime" .=) <$> _gCreateTime])++--+-- /See:/ 'googlePrivacyDlpV2KAnonymityHistogramBucket' smart constructor.+data GooglePrivacyDlpV2KAnonymityHistogramBucket =+  GooglePrivacyDlpV2KAnonymityHistogramBucket'+    { _gpdvkahbEquivalenceClassSizeLowerBound :: !(Maybe (Textual Int64))+    , _gpdvkahbEquivalenceClassSizeUpperBound :: !(Maybe (Textual Int64))+    , _gpdvkahbBucketValues                   :: !(Maybe [GooglePrivacyDlpV2KAnonymityEquivalenceClass])+    , _gpdvkahbBucketSize                     :: !(Maybe (Textual Int64))+    , _gpdvkahbBucketValueCount               :: !(Maybe (Textual Int64))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2KAnonymityHistogramBucket' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvkahbEquivalenceClassSizeLowerBound'+--+-- * 'gpdvkahbEquivalenceClassSizeUpperBound'+--+-- * 'gpdvkahbBucketValues'+--+-- * 'gpdvkahbBucketSize'+--+-- * 'gpdvkahbBucketValueCount'+googlePrivacyDlpV2KAnonymityHistogramBucket+    :: GooglePrivacyDlpV2KAnonymityHistogramBucket+googlePrivacyDlpV2KAnonymityHistogramBucket =+  GooglePrivacyDlpV2KAnonymityHistogramBucket'+    { _gpdvkahbEquivalenceClassSizeLowerBound = Nothing+    , _gpdvkahbEquivalenceClassSizeUpperBound = Nothing+    , _gpdvkahbBucketValues = Nothing+    , _gpdvkahbBucketSize = Nothing+    , _gpdvkahbBucketValueCount = Nothing+    }+++-- | Lower bound on the size of the equivalence classes in this bucket.+gpdvkahbEquivalenceClassSizeLowerBound :: Lens' GooglePrivacyDlpV2KAnonymityHistogramBucket (Maybe Int64)+gpdvkahbEquivalenceClassSizeLowerBound+  = lens _gpdvkahbEquivalenceClassSizeLowerBound+      (\ s a ->+         s{_gpdvkahbEquivalenceClassSizeLowerBound = a})+      . mapping _Coerce++-- | Upper bound on the size of the equivalence classes in this bucket.+gpdvkahbEquivalenceClassSizeUpperBound :: Lens' GooglePrivacyDlpV2KAnonymityHistogramBucket (Maybe Int64)+gpdvkahbEquivalenceClassSizeUpperBound+  = lens _gpdvkahbEquivalenceClassSizeUpperBound+      (\ s a ->+         s{_gpdvkahbEquivalenceClassSizeUpperBound = a})+      . mapping _Coerce++-- | Sample of equivalence classes in this bucket. The total number of+-- classes returned per bucket is capped at 20.+gpdvkahbBucketValues :: Lens' GooglePrivacyDlpV2KAnonymityHistogramBucket [GooglePrivacyDlpV2KAnonymityEquivalenceClass]+gpdvkahbBucketValues+  = lens _gpdvkahbBucketValues+      (\ s a -> s{_gpdvkahbBucketValues = a})+      . _Default+      . _Coerce++-- | Total number of equivalence classes in this bucket.+gpdvkahbBucketSize :: Lens' GooglePrivacyDlpV2KAnonymityHistogramBucket (Maybe Int64)+gpdvkahbBucketSize+  = lens _gpdvkahbBucketSize+      (\ s a -> s{_gpdvkahbBucketSize = a})+      . mapping _Coerce++-- | Total number of distinct equivalence classes in this bucket.+gpdvkahbBucketValueCount :: Lens' GooglePrivacyDlpV2KAnonymityHistogramBucket (Maybe Int64)+gpdvkahbBucketValueCount+  = lens _gpdvkahbBucketValueCount+      (\ s a -> s{_gpdvkahbBucketValueCount = a})+      . mapping _Coerce++instance FromJSON+           GooglePrivacyDlpV2KAnonymityHistogramBucket+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2KAnonymityHistogramBucket"+              (\ o ->+                 GooglePrivacyDlpV2KAnonymityHistogramBucket' <$>+                   (o .:? "equivalenceClassSizeLowerBound") <*>+                     (o .:? "equivalenceClassSizeUpperBound")+                     <*> (o .:? "bucketValues" .!= mempty)+                     <*> (o .:? "bucketSize")+                     <*> (o .:? "bucketValueCount"))++instance ToJSON+           GooglePrivacyDlpV2KAnonymityHistogramBucket+         where+        toJSON+          GooglePrivacyDlpV2KAnonymityHistogramBucket'{..}+          = object+              (catMaybes+                 [("equivalenceClassSizeLowerBound" .=) <$>+                    _gpdvkahbEquivalenceClassSizeLowerBound,+                  ("equivalenceClassSizeUpperBound" .=) <$>+                    _gpdvkahbEquivalenceClassSizeUpperBound,+                  ("bucketValues" .=) <$> _gpdvkahbBucketValues,+                  ("bucketSize" .=) <$> _gpdvkahbBucketSize,+                  ("bucketValueCount" .=) <$>+                    _gpdvkahbBucketValueCount])++-- | Request to re-identify an item.+--+-- /See:/ 'googlePrivacyDlpV2ReidentifyContentRequest' smart constructor.+data GooglePrivacyDlpV2ReidentifyContentRequest =+  GooglePrivacyDlpV2ReidentifyContentRequest'+    { _gooInspectConfig          :: !(Maybe GooglePrivacyDlpV2InspectConfig)+    , _gooReidentifyTemplateName :: !(Maybe Text)+    , _gooItem                   :: !(Maybe GooglePrivacyDlpV2ContentItem)+    , _gooInspectTemplateName    :: !(Maybe Text)+    , _gooReidentifyConfig       :: !(Maybe GooglePrivacyDlpV2DeidentifyConfig)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ReidentifyContentRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gooInspectConfig'+--+-- * 'gooReidentifyTemplateName'+--+-- * 'gooItem'+--+-- * 'gooInspectTemplateName'+--+-- * 'gooReidentifyConfig'+googlePrivacyDlpV2ReidentifyContentRequest+    :: GooglePrivacyDlpV2ReidentifyContentRequest+googlePrivacyDlpV2ReidentifyContentRequest =+  GooglePrivacyDlpV2ReidentifyContentRequest'+    { _gooInspectConfig = Nothing+    , _gooReidentifyTemplateName = Nothing+    , _gooItem = Nothing+    , _gooInspectTemplateName = Nothing+    , _gooReidentifyConfig = Nothing+    }+++-- | Configuration for the inspector.+gooInspectConfig :: Lens' GooglePrivacyDlpV2ReidentifyContentRequest (Maybe GooglePrivacyDlpV2InspectConfig)+gooInspectConfig+  = lens _gooInspectConfig+      (\ s a -> s{_gooInspectConfig = a})++-- | Optional template to use. References an instance of+-- \`DeidentifyTemplate\`. Any configuration directly specified in+-- \`reidentify_config\` or \`inspect_config\` will override those set in+-- the template. Singular fields that are set in this request will replace+-- their corresponding fields in the template. Repeated fields are+-- appended. Singular sub-messages and groups are recursively merged.+gooReidentifyTemplateName :: Lens' GooglePrivacyDlpV2ReidentifyContentRequest (Maybe Text)+gooReidentifyTemplateName+  = lens _gooReidentifyTemplateName+      (\ s a -> s{_gooReidentifyTemplateName = a})++-- | The item to re-identify. Will be treated as text.+gooItem :: Lens' GooglePrivacyDlpV2ReidentifyContentRequest (Maybe GooglePrivacyDlpV2ContentItem)+gooItem = lens _gooItem (\ s a -> s{_gooItem = a})++-- | Optional template to use. Any configuration directly specified in+-- \`inspect_config\` will override those set in the template. Singular+-- fields that are set in this request will replace their corresponding+-- fields in the template. Repeated fields are appended. Singular+-- sub-messages and groups are recursively merged.+gooInspectTemplateName :: Lens' GooglePrivacyDlpV2ReidentifyContentRequest (Maybe Text)+gooInspectTemplateName+  = lens _gooInspectTemplateName+      (\ s a -> s{_gooInspectTemplateName = a})++-- | Configuration for the re-identification of the content item. This field+-- shares the same proto message type that is used for de-identification,+-- however its usage here is for the reversal of the previous+-- de-identification. Re-identification is performed by examining the+-- transformations used to de-identify the items and executing the reverse.+-- This requires that only reversible transformations be provided here. The+-- reversible transformations are: - \`CryptoReplaceFfxFpeConfig\`+gooReidentifyConfig :: Lens' GooglePrivacyDlpV2ReidentifyContentRequest (Maybe GooglePrivacyDlpV2DeidentifyConfig)+gooReidentifyConfig+  = lens _gooReidentifyConfig+      (\ s a -> s{_gooReidentifyConfig = a})++instance FromJSON+           GooglePrivacyDlpV2ReidentifyContentRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2ReidentifyContentRequest"+              (\ o ->+                 GooglePrivacyDlpV2ReidentifyContentRequest' <$>+                   (o .:? "inspectConfig") <*>+                     (o .:? "reidentifyTemplateName")+                     <*> (o .:? "item")+                     <*> (o .:? "inspectTemplateName")+                     <*> (o .:? "reidentifyConfig"))++instance ToJSON+           GooglePrivacyDlpV2ReidentifyContentRequest+         where+        toJSON+          GooglePrivacyDlpV2ReidentifyContentRequest'{..}+          = object+              (catMaybes+                 [("inspectConfig" .=) <$> _gooInspectConfig,+                  ("reidentifyTemplateName" .=) <$>+                    _gooReidentifyTemplateName,+                  ("item" .=) <$> _gooItem,+                  ("inspectTemplateName" .=) <$>+                    _gooInspectTemplateName,+                  ("reidentifyConfig" .=) <$> _gooReidentifyConfig])++-- | Pseudonymization method that generates surrogates via cryptographic+-- hashing. Uses SHA-256. The key size must be either 32 or 64 bytes.+-- Outputs a base64 encoded representation of the hashed output (for+-- example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=). Currently, only+-- string and integer values can be hashed. See+-- https:\/\/cloud.google.com\/dlp\/docs\/pseudonymization to learn more.+--+-- /See:/ 'googlePrivacyDlpV2CryptoHashConfig' smart constructor.+newtype GooglePrivacyDlpV2CryptoHashConfig =+  GooglePrivacyDlpV2CryptoHashConfig'+    { _gpdvchcCryptoKey :: Maybe GooglePrivacyDlpV2CryptoKey+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CryptoHashConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvchcCryptoKey'+googlePrivacyDlpV2CryptoHashConfig+    :: GooglePrivacyDlpV2CryptoHashConfig+googlePrivacyDlpV2CryptoHashConfig =+  GooglePrivacyDlpV2CryptoHashConfig' {_gpdvchcCryptoKey = Nothing}+++-- | The key used by the hash function.+gpdvchcCryptoKey :: Lens' GooglePrivacyDlpV2CryptoHashConfig (Maybe GooglePrivacyDlpV2CryptoKey)+gpdvchcCryptoKey+  = lens _gpdvchcCryptoKey+      (\ s a -> s{_gpdvchcCryptoKey = a})++instance FromJSON GooglePrivacyDlpV2CryptoHashConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2CryptoHashConfig"+              (\ o ->+                 GooglePrivacyDlpV2CryptoHashConfig' <$>+                   (o .:? "cryptoKey"))++instance ToJSON GooglePrivacyDlpV2CryptoHashConfig+         where+        toJSON GooglePrivacyDlpV2CryptoHashConfig'{..}+          = object+              (catMaybes [("cryptoKey" .=) <$> _gpdvchcCryptoKey])++-- | Max findings configuration per infoType, per content item or long+-- running DlpJob.+--+-- /See:/ 'googlePrivacyDlpV2InfoTypeLimit' smart constructor.+data GooglePrivacyDlpV2InfoTypeLimit =+  GooglePrivacyDlpV2InfoTypeLimit'+    { _gpdvitlMaxFindings :: !(Maybe (Textual Int32))+    , _gpdvitlInfoType    :: !(Maybe GooglePrivacyDlpV2InfoType)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InfoTypeLimit' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvitlMaxFindings'+--+-- * 'gpdvitlInfoType'+googlePrivacyDlpV2InfoTypeLimit+    :: GooglePrivacyDlpV2InfoTypeLimit+googlePrivacyDlpV2InfoTypeLimit =+  GooglePrivacyDlpV2InfoTypeLimit'+    {_gpdvitlMaxFindings = Nothing, _gpdvitlInfoType = Nothing}+++-- | Max findings limit for the given infoType.+gpdvitlMaxFindings :: Lens' GooglePrivacyDlpV2InfoTypeLimit (Maybe Int32)+gpdvitlMaxFindings+  = lens _gpdvitlMaxFindings+      (\ s a -> s{_gpdvitlMaxFindings = a})+      . mapping _Coerce++-- | Type of information the findings limit applies to. Only one limit per+-- info_type should be provided. If InfoTypeLimit does not have an+-- info_type, the DLP API applies the limit against all info_types that are+-- found but not specified in another InfoTypeLimit.+gpdvitlInfoType :: Lens' GooglePrivacyDlpV2InfoTypeLimit (Maybe GooglePrivacyDlpV2InfoType)+gpdvitlInfoType+  = lens _gpdvitlInfoType+      (\ s a -> s{_gpdvitlInfoType = a})++instance FromJSON GooglePrivacyDlpV2InfoTypeLimit+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2InfoTypeLimit"+              (\ o ->+                 GooglePrivacyDlpV2InfoTypeLimit' <$>+                   (o .:? "maxFindings") <*> (o .:? "infoType"))++instance ToJSON GooglePrivacyDlpV2InfoTypeLimit where+        toJSON GooglePrivacyDlpV2InfoTypeLimit'{..}+          = object+              (catMaybes+                 [("maxFindings" .=) <$> _gpdvitlMaxFindings,+                  ("infoType" .=) <$> _gpdvitlInfoType])++-- | Location of a finding within a table.+--+-- /See:/ 'googlePrivacyDlpV2TableLocation' smart constructor.+newtype GooglePrivacyDlpV2TableLocation =+  GooglePrivacyDlpV2TableLocation'+    { _gpdvtlRowIndex :: Maybe (Textual Int64)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2TableLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvtlRowIndex'+googlePrivacyDlpV2TableLocation+    :: GooglePrivacyDlpV2TableLocation+googlePrivacyDlpV2TableLocation =+  GooglePrivacyDlpV2TableLocation' {_gpdvtlRowIndex = Nothing}+++-- | The zero-based index of the row where the finding is located.+gpdvtlRowIndex :: Lens' GooglePrivacyDlpV2TableLocation (Maybe Int64)+gpdvtlRowIndex+  = lens _gpdvtlRowIndex+      (\ s a -> s{_gpdvtlRowIndex = a})+      . mapping _Coerce++instance FromJSON GooglePrivacyDlpV2TableLocation+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2TableLocation"+              (\ o ->+                 GooglePrivacyDlpV2TableLocation' <$>+                   (o .:? "rowIndex"))++instance ToJSON GooglePrivacyDlpV2TableLocation where+        toJSON GooglePrivacyDlpV2TableLocation'{..}+          = object+              (catMaybes [("rowIndex" .=) <$> _gpdvtlRowIndex])++--+-- /See:/ 'googlePrivacyDlpV2TimeZone' smart constructor.+newtype GooglePrivacyDlpV2TimeZone =+  GooglePrivacyDlpV2TimeZone'+    { _gpdvtzOffSetMinutes :: Maybe (Textual Int32)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2TimeZone' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvtzOffSetMinutes'+googlePrivacyDlpV2TimeZone+    :: GooglePrivacyDlpV2TimeZone+googlePrivacyDlpV2TimeZone =+  GooglePrivacyDlpV2TimeZone' {_gpdvtzOffSetMinutes = Nothing}+++-- | Set only if the offset can be determined. Positive for time ahead of+-- UTC. E.g. For \"UTC-9\", this value is -540.+gpdvtzOffSetMinutes :: Lens' GooglePrivacyDlpV2TimeZone (Maybe Int32)+gpdvtzOffSetMinutes+  = lens _gpdvtzOffSetMinutes+      (\ s a -> s{_gpdvtzOffSetMinutes = a})+      . mapping _Coerce++instance FromJSON GooglePrivacyDlpV2TimeZone where+        parseJSON+          = withObject "GooglePrivacyDlpV2TimeZone"+              (\ o ->+                 GooglePrivacyDlpV2TimeZone' <$>+                   (o .:? "offsetMinutes"))++instance ToJSON GooglePrivacyDlpV2TimeZone where+        toJSON GooglePrivacyDlpV2TimeZone'{..}+          = object+              (catMaybes+                 [("offsetMinutes" .=) <$> _gpdvtzOffSetMinutes])++-- | Shared message indicating Cloud storage type.+--+-- /See:/ 'googlePrivacyDlpV2StorageConfig' smart constructor.+data GooglePrivacyDlpV2StorageConfig =+  GooglePrivacyDlpV2StorageConfig'+    { _gpdvscTimespanConfig      :: !(Maybe GooglePrivacyDlpV2TimespanConfig)+    , _gpdvscBigQueryOptions     :: !(Maybe GooglePrivacyDlpV2BigQueryOptions)+    , _gpdvscDatastoreOptions    :: !(Maybe GooglePrivacyDlpV2DatastoreOptions)+    , _gpdvscCloudStorageOptions :: !(Maybe GooglePrivacyDlpV2CloudStorageOptions)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2StorageConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvscTimespanConfig'+--+-- * 'gpdvscBigQueryOptions'+--+-- * 'gpdvscDatastoreOptions'+--+-- * 'gpdvscCloudStorageOptions'+googlePrivacyDlpV2StorageConfig+    :: GooglePrivacyDlpV2StorageConfig+googlePrivacyDlpV2StorageConfig =+  GooglePrivacyDlpV2StorageConfig'+    { _gpdvscTimespanConfig = Nothing+    , _gpdvscBigQueryOptions = Nothing+    , _gpdvscDatastoreOptions = Nothing+    , _gpdvscCloudStorageOptions = Nothing+    }+++gpdvscTimespanConfig :: Lens' GooglePrivacyDlpV2StorageConfig (Maybe GooglePrivacyDlpV2TimespanConfig)+gpdvscTimespanConfig+  = lens _gpdvscTimespanConfig+      (\ s a -> s{_gpdvscTimespanConfig = a})++-- | BigQuery options specification.+gpdvscBigQueryOptions :: Lens' GooglePrivacyDlpV2StorageConfig (Maybe GooglePrivacyDlpV2BigQueryOptions)+gpdvscBigQueryOptions+  = lens _gpdvscBigQueryOptions+      (\ s a -> s{_gpdvscBigQueryOptions = a})++-- | Google Cloud Datastore options specification.+gpdvscDatastoreOptions :: Lens' GooglePrivacyDlpV2StorageConfig (Maybe GooglePrivacyDlpV2DatastoreOptions)+gpdvscDatastoreOptions+  = lens _gpdvscDatastoreOptions+      (\ s a -> s{_gpdvscDatastoreOptions = a})++-- | Google Cloud Storage options specification.+gpdvscCloudStorageOptions :: Lens' GooglePrivacyDlpV2StorageConfig (Maybe GooglePrivacyDlpV2CloudStorageOptions)+gpdvscCloudStorageOptions+  = lens _gpdvscCloudStorageOptions+      (\ s a -> s{_gpdvscCloudStorageOptions = a})++instance FromJSON GooglePrivacyDlpV2StorageConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2StorageConfig"+              (\ o ->+                 GooglePrivacyDlpV2StorageConfig' <$>+                   (o .:? "timespanConfig") <*>+                     (o .:? "bigQueryOptions")+                     <*> (o .:? "datastoreOptions")+                     <*> (o .:? "cloudStorageOptions"))++instance ToJSON GooglePrivacyDlpV2StorageConfig where+        toJSON GooglePrivacyDlpV2StorageConfig'{..}+          = object+              (catMaybes+                 [("timespanConfig" .=) <$> _gpdvscTimespanConfig,+                  ("bigQueryOptions" .=) <$> _gpdvscBigQueryOptions,+                  ("datastoreOptions" .=) <$> _gpdvscDatastoreOptions,+                  ("cloudStorageOptions" .=) <$>+                    _gpdvscCloudStorageOptions])++-- | Set of primitive values supported by the system. Note that for the+-- purposes of inspection or transformation, the number of bytes considered+-- to comprise a \'Value\' is based on its representation as a UTF-8+-- encoded string. For example, if \'integer_value\' is set to 123456789,+-- the number of bytes would be counted as 9, even though an int64 only+-- holds up to 8 bytes of data.+--+-- /See:/ 'googlePrivacyDlpV2Value' smart constructor.+data GooglePrivacyDlpV2Value =+  GooglePrivacyDlpV2Value'+    { _gpdvvDayOfWeekValue :: !(Maybe GooglePrivacyDlpV2ValueDayOfWeekValue)+    , _gpdvvIntegerValue   :: !(Maybe (Textual Int64))+    , _gpdvvTimestampValue :: !(Maybe DateTime')+    , _gpdvvTimeValue      :: !(Maybe GoogleTypeTimeOfDay)+    , _gpdvvStringValue    :: !(Maybe Text)+    , _gpdvvDateValue      :: !(Maybe GoogleTypeDate)+    , _gpdvvBooleanValue   :: !(Maybe Bool)+    , _gpdvvFloatValue     :: !(Maybe (Textual Double))+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Value' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvvDayOfWeekValue'+--+-- * 'gpdvvIntegerValue'+--+-- * 'gpdvvTimestampValue'+--+-- * 'gpdvvTimeValue'+--+-- * 'gpdvvStringValue'+--+-- * 'gpdvvDateValue'+--+-- * 'gpdvvBooleanValue'+--+-- * 'gpdvvFloatValue'+googlePrivacyDlpV2Value+    :: GooglePrivacyDlpV2Value+googlePrivacyDlpV2Value =+  GooglePrivacyDlpV2Value'+    { _gpdvvDayOfWeekValue = Nothing+    , _gpdvvIntegerValue = Nothing+    , _gpdvvTimestampValue = Nothing+    , _gpdvvTimeValue = Nothing+    , _gpdvvStringValue = Nothing+    , _gpdvvDateValue = Nothing+    , _gpdvvBooleanValue = Nothing+    , _gpdvvFloatValue = Nothing+    }+++gpdvvDayOfWeekValue :: Lens' GooglePrivacyDlpV2Value (Maybe GooglePrivacyDlpV2ValueDayOfWeekValue)+gpdvvDayOfWeekValue+  = lens _gpdvvDayOfWeekValue+      (\ s a -> s{_gpdvvDayOfWeekValue = a})++gpdvvIntegerValue :: Lens' GooglePrivacyDlpV2Value (Maybe Int64)+gpdvvIntegerValue+  = lens _gpdvvIntegerValue+      (\ s a -> s{_gpdvvIntegerValue = a})+      . mapping _Coerce++gpdvvTimestampValue :: Lens' GooglePrivacyDlpV2Value (Maybe UTCTime)+gpdvvTimestampValue+  = lens _gpdvvTimestampValue+      (\ s a -> s{_gpdvvTimestampValue = a})+      . mapping _DateTime++gpdvvTimeValue :: Lens' GooglePrivacyDlpV2Value (Maybe GoogleTypeTimeOfDay)+gpdvvTimeValue+  = lens _gpdvvTimeValue+      (\ s a -> s{_gpdvvTimeValue = a})++gpdvvStringValue :: Lens' GooglePrivacyDlpV2Value (Maybe Text)+gpdvvStringValue+  = lens _gpdvvStringValue+      (\ s a -> s{_gpdvvStringValue = a})++gpdvvDateValue :: Lens' GooglePrivacyDlpV2Value (Maybe GoogleTypeDate)+gpdvvDateValue+  = lens _gpdvvDateValue+      (\ s a -> s{_gpdvvDateValue = a})++gpdvvBooleanValue :: Lens' GooglePrivacyDlpV2Value (Maybe Bool)+gpdvvBooleanValue+  = lens _gpdvvBooleanValue+      (\ s a -> s{_gpdvvBooleanValue = a})++gpdvvFloatValue :: Lens' GooglePrivacyDlpV2Value (Maybe Double)+gpdvvFloatValue+  = lens _gpdvvFloatValue+      (\ s a -> s{_gpdvvFloatValue = a})+      . mapping _Coerce++instance FromJSON GooglePrivacyDlpV2Value where+        parseJSON+          = withObject "GooglePrivacyDlpV2Value"+              (\ o ->+                 GooglePrivacyDlpV2Value' <$>+                   (o .:? "dayOfWeekValue") <*> (o .:? "integerValue")+                     <*> (o .:? "timestampValue")+                     <*> (o .:? "timeValue")+                     <*> (o .:? "stringValue")+                     <*> (o .:? "dateValue")+                     <*> (o .:? "booleanValue")+                     <*> (o .:? "floatValue"))++instance ToJSON GooglePrivacyDlpV2Value where+        toJSON GooglePrivacyDlpV2Value'{..}+          = object+              (catMaybes+                 [("dayOfWeekValue" .=) <$> _gpdvvDayOfWeekValue,+                  ("integerValue" .=) <$> _gpdvvIntegerValue,+                  ("timestampValue" .=) <$> _gpdvvTimestampValue,+                  ("timeValue" .=) <$> _gpdvvTimeValue,+                  ("stringValue" .=) <$> _gpdvvStringValue,+                  ("dateValue" .=) <$> _gpdvvDateValue,+                  ("booleanValue" .=) <$> _gpdvvBooleanValue,+                  ("floatValue" .=) <$> _gpdvvFloatValue])++-- | Custom information type based on a dictionary of words or phrases. This+-- can be used to match sensitive information specific to the data, such as+-- a list of employee IDs or job titles. Dictionary words are+-- case-insensitive and all characters other than letters and digits in the+-- unicode [Basic Multilingual+-- Plane](https:\/\/en.wikipedia.org\/wiki\/Plane_%28Unicode%29#Basic_Multilingual_Plane)+-- will be replaced with whitespace when scanning for matches, so the+-- dictionary phrase \"Sam Johnson\" will match all three phrases \"sam+-- johnson\", \"Sam, Johnson\", and \"Sam (Johnson)\". Additionally, the+-- characters surrounding any match must be of a different type than the+-- adjacent characters within the word, so letters must be next to+-- non-letters and digits next to non-digits. For example, the dictionary+-- word \"jen\" will match the first three letters of the text \"jen123\"+-- but will return no matches for \"jennifer\". Dictionary words containing+-- a large number of characters that are not letters or digits may result+-- in unexpected findings because such characters are treated as+-- whitespace. The [limits](https:\/\/cloud.google.com\/dlp\/limits) page+-- contains details about the size limits of dictionaries. For dictionaries+-- that do not fit within these constraints, consider using+-- \`LargeCustomDictionaryConfig\` in the \`StoredInfoType\` API.+--+-- /See:/ 'googlePrivacyDlpV2Dictionary' smart constructor.+data GooglePrivacyDlpV2Dictionary =+  GooglePrivacyDlpV2Dictionary'+    { _gpdvdWordList         :: !(Maybe GooglePrivacyDlpV2WordList)+    , _gpdvdCloudStoragePath :: !(Maybe GooglePrivacyDlpV2CloudStoragePath)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Dictionary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdWordList'+--+-- * 'gpdvdCloudStoragePath'+googlePrivacyDlpV2Dictionary+    :: GooglePrivacyDlpV2Dictionary+googlePrivacyDlpV2Dictionary =+  GooglePrivacyDlpV2Dictionary'+    {_gpdvdWordList = Nothing, _gpdvdCloudStoragePath = Nothing}+++-- | List of words or phrases to search for.+gpdvdWordList :: Lens' GooglePrivacyDlpV2Dictionary (Maybe GooglePrivacyDlpV2WordList)+gpdvdWordList+  = lens _gpdvdWordList+      (\ s a -> s{_gpdvdWordList = a})++-- | Newline-delimited file of words in Cloud Storage. Only a single file is+-- accepted.+gpdvdCloudStoragePath :: Lens' GooglePrivacyDlpV2Dictionary (Maybe GooglePrivacyDlpV2CloudStoragePath)+gpdvdCloudStoragePath+  = lens _gpdvdCloudStoragePath+      (\ s a -> s{_gpdvdCloudStoragePath = a})++instance FromJSON GooglePrivacyDlpV2Dictionary where+        parseJSON+          = withObject "GooglePrivacyDlpV2Dictionary"+              (\ o ->+                 GooglePrivacyDlpV2Dictionary' <$>+                   (o .:? "wordList") <*> (o .:? "cloudStoragePath"))++instance ToJSON GooglePrivacyDlpV2Dictionary where+        toJSON GooglePrivacyDlpV2Dictionary'{..}+          = object+              (catMaybes+                 [("wordList" .=) <$> _gpdvdWordList,+                  ("cloudStoragePath" .=) <$> _gpdvdCloudStoragePath])++-- | Result of a risk analysis operation request.+--+-- /See:/ 'googlePrivacyDlpV2AnalyzeDataSourceRiskDetails' smart constructor.+data GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails =+  GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails'+    { _gpdvadsrdRequestedPrivacyMetric        :: !(Maybe GooglePrivacyDlpV2PrivacyMetric)+    , _gpdvadsrdRequestedSourceTable          :: !(Maybe GooglePrivacyDlpV2BigQueryTable)+    , _gpdvadsrdLDiversityResult              :: !(Maybe GooglePrivacyDlpV2LDiversityResult)+    , _gpdvadsrdKAnonymityResult              :: !(Maybe GooglePrivacyDlpV2KAnonymityResult)+    , _gpdvadsrdKMapEstimationResult          :: !(Maybe GooglePrivacyDlpV2KMapEstimationResult)+    , _gpdvadsrdDeltaPresenceEstimationResult :: !(Maybe GooglePrivacyDlpV2DeltaPresenceEstimationResult)+    , _gpdvadsrdNumericalStatsResult          :: !(Maybe GooglePrivacyDlpV2NumericalStatsResult)+    , _gpdvadsrdCategoricalStatsResult        :: !(Maybe GooglePrivacyDlpV2CategoricalStatsResult)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvadsrdRequestedPrivacyMetric'+--+-- * 'gpdvadsrdRequestedSourceTable'+--+-- * 'gpdvadsrdLDiversityResult'+--+-- * 'gpdvadsrdKAnonymityResult'+--+-- * 'gpdvadsrdKMapEstimationResult'+--+-- * 'gpdvadsrdDeltaPresenceEstimationResult'+--+-- * 'gpdvadsrdNumericalStatsResult'+--+-- * 'gpdvadsrdCategoricalStatsResult'+googlePrivacyDlpV2AnalyzeDataSourceRiskDetails+    :: GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails+googlePrivacyDlpV2AnalyzeDataSourceRiskDetails =+  GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails'+    { _gpdvadsrdRequestedPrivacyMetric = Nothing+    , _gpdvadsrdRequestedSourceTable = Nothing+    , _gpdvadsrdLDiversityResult = Nothing+    , _gpdvadsrdKAnonymityResult = Nothing+    , _gpdvadsrdKMapEstimationResult = Nothing+    , _gpdvadsrdDeltaPresenceEstimationResult = Nothing+    , _gpdvadsrdNumericalStatsResult = Nothing+    , _gpdvadsrdCategoricalStatsResult = Nothing+    }+++-- | Privacy metric to compute.+gpdvadsrdRequestedPrivacyMetric :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2PrivacyMetric)+gpdvadsrdRequestedPrivacyMetric+  = lens _gpdvadsrdRequestedPrivacyMetric+      (\ s a -> s{_gpdvadsrdRequestedPrivacyMetric = a})++-- | Input dataset to compute metrics over.+gpdvadsrdRequestedSourceTable :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2BigQueryTable)+gpdvadsrdRequestedSourceTable+  = lens _gpdvadsrdRequestedSourceTable+      (\ s a -> s{_gpdvadsrdRequestedSourceTable = a})++gpdvadsrdLDiversityResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2LDiversityResult)+gpdvadsrdLDiversityResult+  = lens _gpdvadsrdLDiversityResult+      (\ s a -> s{_gpdvadsrdLDiversityResult = a})++gpdvadsrdKAnonymityResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2KAnonymityResult)+gpdvadsrdKAnonymityResult+  = lens _gpdvadsrdKAnonymityResult+      (\ s a -> s{_gpdvadsrdKAnonymityResult = a})++gpdvadsrdKMapEstimationResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2KMapEstimationResult)+gpdvadsrdKMapEstimationResult+  = lens _gpdvadsrdKMapEstimationResult+      (\ s a -> s{_gpdvadsrdKMapEstimationResult = a})++gpdvadsrdDeltaPresenceEstimationResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2DeltaPresenceEstimationResult)+gpdvadsrdDeltaPresenceEstimationResult+  = lens _gpdvadsrdDeltaPresenceEstimationResult+      (\ s a ->+         s{_gpdvadsrdDeltaPresenceEstimationResult = a})++gpdvadsrdNumericalStatsResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2NumericalStatsResult)+gpdvadsrdNumericalStatsResult+  = lens _gpdvadsrdNumericalStatsResult+      (\ s a -> s{_gpdvadsrdNumericalStatsResult = a})++gpdvadsrdCategoricalStatsResult :: Lens' GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails (Maybe GooglePrivacyDlpV2CategoricalStatsResult)+gpdvadsrdCategoricalStatsResult+  = lens _gpdvadsrdCategoricalStatsResult+      (\ s a -> s{_gpdvadsrdCategoricalStatsResult = a})++instance FromJSON+           GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails"+              (\ o ->+                 GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails' <$>+                   (o .:? "requestedPrivacyMetric") <*>+                     (o .:? "requestedSourceTable")+                     <*> (o .:? "lDiversityResult")+                     <*> (o .:? "kAnonymityResult")+                     <*> (o .:? "kMapEstimationResult")+                     <*> (o .:? "deltaPresenceEstimationResult")+                     <*> (o .:? "numericalStatsResult")+                     <*> (o .:? "categoricalStatsResult"))++instance ToJSON+           GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails+         where+        toJSON+          GooglePrivacyDlpV2AnalyzeDataSourceRiskDetails'{..}+          = object+              (catMaybes+                 [("requestedPrivacyMetric" .=) <$>+                    _gpdvadsrdRequestedPrivacyMetric,+                  ("requestedSourceTable" .=) <$>+                    _gpdvadsrdRequestedSourceTable,+                  ("lDiversityResult" .=) <$>+                    _gpdvadsrdLDiversityResult,+                  ("kAnonymityResult" .=) <$>+                    _gpdvadsrdKAnonymityResult,+                  ("kMapEstimationResult" .=) <$>+                    _gpdvadsrdKMapEstimationResult,+                  ("deltaPresenceEstimationResult" .=) <$>+                    _gpdvadsrdDeltaPresenceEstimationResult,+                  ("numericalStatsResult" .=) <$>+                    _gpdvadsrdNumericalStatsResult,+                  ("categoricalStatsResult" .=) <$>+                    _gpdvadsrdCategoricalStatsResult])++-- | A collection of conditions.+--+-- /See:/ 'googlePrivacyDlpV2Conditions' smart constructor.+newtype GooglePrivacyDlpV2Conditions =+  GooglePrivacyDlpV2Conditions'+    { _gpdvcConditions :: Maybe [GooglePrivacyDlpV2Condition]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Conditions' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcConditions'+googlePrivacyDlpV2Conditions+    :: GooglePrivacyDlpV2Conditions+googlePrivacyDlpV2Conditions =+  GooglePrivacyDlpV2Conditions' {_gpdvcConditions = Nothing}+++gpdvcConditions :: Lens' GooglePrivacyDlpV2Conditions [GooglePrivacyDlpV2Condition]+gpdvcConditions+  = lens _gpdvcConditions+      (\ s a -> s{_gpdvcConditions = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2Conditions where+        parseJSON+          = withObject "GooglePrivacyDlpV2Conditions"+              (\ o ->+                 GooglePrivacyDlpV2Conditions' <$>+                   (o .:? "conditions" .!= mempty))++instance ToJSON GooglePrivacyDlpV2Conditions where+        toJSON GooglePrivacyDlpV2Conditions'{..}+          = object+              (catMaybes [("conditions" .=) <$> _gpdvcConditions])++-- | Record key for a finding in Cloud Datastore.+--+-- /See:/ 'googlePrivacyDlpV2DatastoreKey' smart constructor.+newtype GooglePrivacyDlpV2DatastoreKey =+  GooglePrivacyDlpV2DatastoreKey'+    { _gpdvdkEntityKey :: Maybe GooglePrivacyDlpV2Key+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DatastoreKey' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdkEntityKey'+googlePrivacyDlpV2DatastoreKey+    :: GooglePrivacyDlpV2DatastoreKey+googlePrivacyDlpV2DatastoreKey =+  GooglePrivacyDlpV2DatastoreKey' {_gpdvdkEntityKey = Nothing}+++-- | Datastore entity key.+gpdvdkEntityKey :: Lens' GooglePrivacyDlpV2DatastoreKey (Maybe GooglePrivacyDlpV2Key)+gpdvdkEntityKey+  = lens _gpdvdkEntityKey+      (\ s a -> s{_gpdvdkEntityKey = a})++instance FromJSON GooglePrivacyDlpV2DatastoreKey+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2DatastoreKey"+              (\ o ->+                 GooglePrivacyDlpV2DatastoreKey' <$>+                   (o .:? "entityKey"))++instance ToJSON GooglePrivacyDlpV2DatastoreKey where+        toJSON GooglePrivacyDlpV2DatastoreKey'{..}+          = object+              (catMaybes [("entityKey" .=) <$> _gpdvdkEntityKey])++-- | A tuple of values for the quasi-identifier columns.+--+-- /See:/ 'googlePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues' smart constructor.+data GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues =+  GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues'+    { _gpdvdpeqivEstimatedProbability :: !(Maybe (Textual Double))+    , _gpdvdpeqivQuasiIdsValues       :: !(Maybe [GooglePrivacyDlpV2Value])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdpeqivEstimatedProbability'+--+-- * 'gpdvdpeqivQuasiIdsValues'+googlePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues+    :: GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues+googlePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues =+  GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues'+    { _gpdvdpeqivEstimatedProbability = Nothing+    , _gpdvdpeqivQuasiIdsValues = Nothing+    }+++-- | The estimated probability that a given individual sharing these+-- quasi-identifier values is in the dataset. This value, typically called+-- δ, is the ratio between the number of records in the dataset with these+-- quasi-identifier values, and the total number of individuals (inside+-- *and* outside the dataset) with these quasi-identifier values. For+-- example, if there are 15 individuals in the dataset who share the same+-- quasi-identifier values, and an estimated 100 people in the entire+-- population with these values, then δ is 0.15.+gpdvdpeqivEstimatedProbability :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues (Maybe Double)+gpdvdpeqivEstimatedProbability+  = lens _gpdvdpeqivEstimatedProbability+      (\ s a -> s{_gpdvdpeqivEstimatedProbability = a})+      . mapping _Coerce++-- | The quasi-identifier values.+gpdvdpeqivQuasiIdsValues :: Lens' GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues [GooglePrivacyDlpV2Value]+gpdvdpeqivQuasiIdsValues+  = lens _gpdvdpeqivQuasiIdsValues+      (\ s a -> s{_gpdvdpeqivQuasiIdsValues = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues"+              (\ o ->+                 GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues'+                   <$>+                   (o .:? "estimatedProbability") <*>+                     (o .:? "quasiIdsValues" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues+         where+        toJSON+          GooglePrivacyDlpV2DeltaPresenceEstimationQuasiIdValues'{..}+          = object+              (catMaybes+                 [("estimatedProbability" .=) <$>+                    _gpdvdpeqivEstimatedProbability,+                  ("quasiIdsValues" .=) <$> _gpdvdpeqivQuasiIdsValues])++-- | Characters to skip when doing deidentification of a value. These will be+-- left alone and skipped.+--+-- /See:/ 'googlePrivacyDlpV2CharsToIgnore' smart constructor.+data GooglePrivacyDlpV2CharsToIgnore =+  GooglePrivacyDlpV2CharsToIgnore'+    { _gpdvctiCommonCharactersToIgnore :: !(Maybe GooglePrivacyDlpV2CharsToIgnoreCommonCharactersToIgnore)+    , _gpdvctiCharactersToSkip         :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CharsToIgnore' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvctiCommonCharactersToIgnore'+--+-- * 'gpdvctiCharactersToSkip'+googlePrivacyDlpV2CharsToIgnore+    :: GooglePrivacyDlpV2CharsToIgnore+googlePrivacyDlpV2CharsToIgnore =+  GooglePrivacyDlpV2CharsToIgnore'+    { _gpdvctiCommonCharactersToIgnore = Nothing+    , _gpdvctiCharactersToSkip = Nothing+    }+++gpdvctiCommonCharactersToIgnore :: Lens' GooglePrivacyDlpV2CharsToIgnore (Maybe GooglePrivacyDlpV2CharsToIgnoreCommonCharactersToIgnore)+gpdvctiCommonCharactersToIgnore+  = lens _gpdvctiCommonCharactersToIgnore+      (\ s a -> s{_gpdvctiCommonCharactersToIgnore = a})++gpdvctiCharactersToSkip :: Lens' GooglePrivacyDlpV2CharsToIgnore (Maybe Text)+gpdvctiCharactersToSkip+  = lens _gpdvctiCharactersToSkip+      (\ s a -> s{_gpdvctiCharactersToSkip = a})++instance FromJSON GooglePrivacyDlpV2CharsToIgnore+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2CharsToIgnore"+              (\ o ->+                 GooglePrivacyDlpV2CharsToIgnore' <$>+                   (o .:? "commonCharactersToIgnore") <*>+                     (o .:? "charactersToSkip"))++instance ToJSON GooglePrivacyDlpV2CharsToIgnore where+        toJSON GooglePrivacyDlpV2CharsToIgnore'{..}+          = object+              (catMaybes+                 [("commonCharactersToIgnore" .=) <$>+                    _gpdvctiCommonCharactersToIgnore,+                  ("charactersToSkip" .=) <$>+                    _gpdvctiCharactersToSkip])++-- | Message defining the location of a BigQuery table. A table is uniquely+-- identified by its project_id, dataset_id, and table_name. Within a query+-- a table is often referenced with a string in the format of: \`:.\` or+-- \`..\`.+--+-- /See:/ 'googlePrivacyDlpV2BigQueryTable' smart constructor.+data GooglePrivacyDlpV2BigQueryTable =+  GooglePrivacyDlpV2BigQueryTable'+    { _gpdvbqtDataSetId :: !(Maybe Text)+    , _gpdvbqtProjectId :: !(Maybe Text)+    , _gpdvbqtTableId   :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2BigQueryTable' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvbqtDataSetId'+--+-- * 'gpdvbqtProjectId'+--+-- * 'gpdvbqtTableId'+googlePrivacyDlpV2BigQueryTable+    :: GooglePrivacyDlpV2BigQueryTable+googlePrivacyDlpV2BigQueryTable =+  GooglePrivacyDlpV2BigQueryTable'+    { _gpdvbqtDataSetId = Nothing+    , _gpdvbqtProjectId = Nothing+    , _gpdvbqtTableId = Nothing+    }+++-- | Dataset ID of the table.+gpdvbqtDataSetId :: Lens' GooglePrivacyDlpV2BigQueryTable (Maybe Text)+gpdvbqtDataSetId+  = lens _gpdvbqtDataSetId+      (\ s a -> s{_gpdvbqtDataSetId = a})++-- | The Google Cloud Platform project ID of the project containing the+-- table. If omitted, project ID is inferred from the API call.+gpdvbqtProjectId :: Lens' GooglePrivacyDlpV2BigQueryTable (Maybe Text)+gpdvbqtProjectId+  = lens _gpdvbqtProjectId+      (\ s a -> s{_gpdvbqtProjectId = a})++-- | Name of the table.+gpdvbqtTableId :: Lens' GooglePrivacyDlpV2BigQueryTable (Maybe Text)+gpdvbqtTableId+  = lens _gpdvbqtTableId+      (\ s a -> s{_gpdvbqtTableId = a})++instance FromJSON GooglePrivacyDlpV2BigQueryTable+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2BigQueryTable"+              (\ o ->+                 GooglePrivacyDlpV2BigQueryTable' <$>+                   (o .:? "datasetId") <*> (o .:? "projectId") <*>+                     (o .:? "tableId"))++instance ToJSON GooglePrivacyDlpV2BigQueryTable where+        toJSON GooglePrivacyDlpV2BigQueryTable'{..}+          = object+              (catMaybes+                 [("datasetId" .=) <$> _gpdvbqtDataSetId,+                  ("projectId" .=) <$> _gpdvbqtProjectId,+                  ("tableId" .=) <$> _gpdvbqtTableId])++--+-- /See:/ 'googlePrivacyDlpV2RequestedOptions' smart constructor.+data GooglePrivacyDlpV2RequestedOptions =+  GooglePrivacyDlpV2RequestedOptions'+    { _gpdvroSnapshotInspectTemplate :: !(Maybe GooglePrivacyDlpV2InspectTemplate)+    , _gpdvroJobConfig               :: !(Maybe GooglePrivacyDlpV2InspectJobConfig)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2RequestedOptions' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvroSnapshotInspectTemplate'+--+-- * 'gpdvroJobConfig'+googlePrivacyDlpV2RequestedOptions+    :: GooglePrivacyDlpV2RequestedOptions+googlePrivacyDlpV2RequestedOptions =+  GooglePrivacyDlpV2RequestedOptions'+    {_gpdvroSnapshotInspectTemplate = Nothing, _gpdvroJobConfig = Nothing}+++-- | If run with an InspectTemplate, a snapshot of its state at the time of+-- this run.+gpdvroSnapshotInspectTemplate :: Lens' GooglePrivacyDlpV2RequestedOptions (Maybe GooglePrivacyDlpV2InspectTemplate)+gpdvroSnapshotInspectTemplate+  = lens _gpdvroSnapshotInspectTemplate+      (\ s a -> s{_gpdvroSnapshotInspectTemplate = a})++gpdvroJobConfig :: Lens' GooglePrivacyDlpV2RequestedOptions (Maybe GooglePrivacyDlpV2InspectJobConfig)+gpdvroJobConfig+  = lens _gpdvroJobConfig+      (\ s a -> s{_gpdvroJobConfig = a})++instance FromJSON GooglePrivacyDlpV2RequestedOptions+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2RequestedOptions"+              (\ o ->+                 GooglePrivacyDlpV2RequestedOptions' <$>+                   (o .:? "snapshotInspectTemplate") <*>+                     (o .:? "jobConfig"))++instance ToJSON GooglePrivacyDlpV2RequestedOptions+         where+        toJSON GooglePrivacyDlpV2RequestedOptions'{..}+          = object+              (catMaybes+                 [("snapshotInspectTemplate" .=) <$>+                    _gpdvroSnapshotInspectTemplate,+                  ("jobConfig" .=) <$> _gpdvroJobConfig])++-- | A rule for transforming a value.+--+-- /See:/ 'googlePrivacyDlpV2PrimitiveTransformation' smart constructor.+data GooglePrivacyDlpV2PrimitiveTransformation =+  GooglePrivacyDlpV2PrimitiveTransformation'+    { _gpdvptFixedSizeBucketingConfig  :: !(Maybe GooglePrivacyDlpV2FixedSizeBucketingConfig)+    , _gpdvptRedactConfig              :: !(Maybe GooglePrivacyDlpV2RedactConfig)+    , _gpdvptCharacterMaskConfig       :: !(Maybe GooglePrivacyDlpV2CharacterMaskConfig)+    , _gpdvptTimePartConfig            :: !(Maybe GooglePrivacyDlpV2TimePartConfig)+    , _gpdvptDateShiftConfig           :: !(Maybe GooglePrivacyDlpV2DateShiftConfig)+    , _gpdvptBucketingConfig           :: !(Maybe GooglePrivacyDlpV2BucketingConfig)+    , _gpdvptReplaceWithInfoTypeConfig :: !(Maybe GooglePrivacyDlpV2ReplaceWithInfoTypeConfig)+    , _gpdvptCryptoDeterministicConfig :: !(Maybe GooglePrivacyDlpV2CryptoDeterministicConfig)+    , _gpdvptCryptoHashConfig          :: !(Maybe GooglePrivacyDlpV2CryptoHashConfig)+    , _gpdvptReplaceConfig             :: !(Maybe GooglePrivacyDlpV2ReplaceValueConfig)+    , _gpdvptCryptoReplaceFfxFpeConfig :: !(Maybe GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2PrimitiveTransformation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvptFixedSizeBucketingConfig'+--+-- * 'gpdvptRedactConfig'+--+-- * 'gpdvptCharacterMaskConfig'+--+-- * 'gpdvptTimePartConfig'+--+-- * 'gpdvptDateShiftConfig'+--+-- * 'gpdvptBucketingConfig'+--+-- * 'gpdvptReplaceWithInfoTypeConfig'+--+-- * 'gpdvptCryptoDeterministicConfig'+--+-- * 'gpdvptCryptoHashConfig'+--+-- * 'gpdvptReplaceConfig'+--+-- * 'gpdvptCryptoReplaceFfxFpeConfig'+googlePrivacyDlpV2PrimitiveTransformation+    :: GooglePrivacyDlpV2PrimitiveTransformation+googlePrivacyDlpV2PrimitiveTransformation =+  GooglePrivacyDlpV2PrimitiveTransformation'+    { _gpdvptFixedSizeBucketingConfig = Nothing+    , _gpdvptRedactConfig = Nothing+    , _gpdvptCharacterMaskConfig = Nothing+    , _gpdvptTimePartConfig = Nothing+    , _gpdvptDateShiftConfig = Nothing+    , _gpdvptBucketingConfig = Nothing+    , _gpdvptReplaceWithInfoTypeConfig = Nothing+    , _gpdvptCryptoDeterministicConfig = Nothing+    , _gpdvptCryptoHashConfig = Nothing+    , _gpdvptReplaceConfig = Nothing+    , _gpdvptCryptoReplaceFfxFpeConfig = Nothing+    }+++gpdvptFixedSizeBucketingConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2FixedSizeBucketingConfig)+gpdvptFixedSizeBucketingConfig+  = lens _gpdvptFixedSizeBucketingConfig+      (\ s a -> s{_gpdvptFixedSizeBucketingConfig = a})++gpdvptRedactConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2RedactConfig)+gpdvptRedactConfig+  = lens _gpdvptRedactConfig+      (\ s a -> s{_gpdvptRedactConfig = a})++gpdvptCharacterMaskConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2CharacterMaskConfig)+gpdvptCharacterMaskConfig+  = lens _gpdvptCharacterMaskConfig+      (\ s a -> s{_gpdvptCharacterMaskConfig = a})++gpdvptTimePartConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2TimePartConfig)+gpdvptTimePartConfig+  = lens _gpdvptTimePartConfig+      (\ s a -> s{_gpdvptTimePartConfig = a})++gpdvptDateShiftConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2DateShiftConfig)+gpdvptDateShiftConfig+  = lens _gpdvptDateShiftConfig+      (\ s a -> s{_gpdvptDateShiftConfig = a})++gpdvptBucketingConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2BucketingConfig)+gpdvptBucketingConfig+  = lens _gpdvptBucketingConfig+      (\ s a -> s{_gpdvptBucketingConfig = a})++gpdvptReplaceWithInfoTypeConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2ReplaceWithInfoTypeConfig)+gpdvptReplaceWithInfoTypeConfig+  = lens _gpdvptReplaceWithInfoTypeConfig+      (\ s a -> s{_gpdvptReplaceWithInfoTypeConfig = a})++gpdvptCryptoDeterministicConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2CryptoDeterministicConfig)+gpdvptCryptoDeterministicConfig+  = lens _gpdvptCryptoDeterministicConfig+      (\ s a -> s{_gpdvptCryptoDeterministicConfig = a})++gpdvptCryptoHashConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2CryptoHashConfig)+gpdvptCryptoHashConfig+  = lens _gpdvptCryptoHashConfig+      (\ s a -> s{_gpdvptCryptoHashConfig = a})++gpdvptReplaceConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2ReplaceValueConfig)+gpdvptReplaceConfig+  = lens _gpdvptReplaceConfig+      (\ s a -> s{_gpdvptReplaceConfig = a})++gpdvptCryptoReplaceFfxFpeConfig :: Lens' GooglePrivacyDlpV2PrimitiveTransformation (Maybe GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig)+gpdvptCryptoReplaceFfxFpeConfig+  = lens _gpdvptCryptoReplaceFfxFpeConfig+      (\ s a -> s{_gpdvptCryptoReplaceFfxFpeConfig = a})++instance FromJSON+           GooglePrivacyDlpV2PrimitiveTransformation+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2PrimitiveTransformation"+              (\ o ->+                 GooglePrivacyDlpV2PrimitiveTransformation' <$>+                   (o .:? "fixedSizeBucketingConfig") <*>+                     (o .:? "redactConfig")+                     <*> (o .:? "characterMaskConfig")+                     <*> (o .:? "timePartConfig")+                     <*> (o .:? "dateShiftConfig")+                     <*> (o .:? "bucketingConfig")+                     <*> (o .:? "replaceWithInfoTypeConfig")+                     <*> (o .:? "cryptoDeterministicConfig")+                     <*> (o .:? "cryptoHashConfig")+                     <*> (o .:? "replaceConfig")+                     <*> (o .:? "cryptoReplaceFfxFpeConfig"))++instance ToJSON+           GooglePrivacyDlpV2PrimitiveTransformation+         where+        toJSON GooglePrivacyDlpV2PrimitiveTransformation'{..}+          = object+              (catMaybes+                 [("fixedSizeBucketingConfig" .=) <$>+                    _gpdvptFixedSizeBucketingConfig,+                  ("redactConfig" .=) <$> _gpdvptRedactConfig,+                  ("characterMaskConfig" .=) <$>+                    _gpdvptCharacterMaskConfig,+                  ("timePartConfig" .=) <$> _gpdvptTimePartConfig,+                  ("dateShiftConfig" .=) <$> _gpdvptDateShiftConfig,+                  ("bucketingConfig" .=) <$> _gpdvptBucketingConfig,+                  ("replaceWithInfoTypeConfig" .=) <$>+                    _gpdvptReplaceWithInfoTypeConfig,+                  ("cryptoDeterministicConfig" .=) <$>+                    _gpdvptCryptoDeterministicConfig,+                  ("cryptoHashConfig" .=) <$> _gpdvptCryptoHashConfig,+                  ("replaceConfig" .=) <$> _gpdvptReplaceConfig,+                  ("cryptoReplaceFfxFpeConfig" .=) <$>+                    _gpdvptCryptoReplaceFfxFpeConfig])++-- | The request message for canceling a DLP job.+--+-- /See:/ 'googlePrivacyDlpV2CancelDlpJobRequest' smart constructor.+data GooglePrivacyDlpV2CancelDlpJobRequest =+  GooglePrivacyDlpV2CancelDlpJobRequest'+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CancelDlpJobRequest' with the minimum fields required to make a request.+--+googlePrivacyDlpV2CancelDlpJobRequest+    :: GooglePrivacyDlpV2CancelDlpJobRequest+googlePrivacyDlpV2CancelDlpJobRequest = GooglePrivacyDlpV2CancelDlpJobRequest'+++instance FromJSON+           GooglePrivacyDlpV2CancelDlpJobRequest+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2CancelDlpJobRequest"+              (\ o -> pure GooglePrivacyDlpV2CancelDlpJobRequest')++instance ToJSON GooglePrivacyDlpV2CancelDlpJobRequest+         where+        toJSON = const emptyObject++-- | Location of a finding within a row or record.+--+-- /See:/ 'googlePrivacyDlpV2RecordLocation' smart constructor.+data GooglePrivacyDlpV2RecordLocation =+  GooglePrivacyDlpV2RecordLocation'+    { _gpdvrlTableLocation :: !(Maybe GooglePrivacyDlpV2TableLocation)+    , _gpdvrlFieldId       :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvrlRecordKey     :: !(Maybe GooglePrivacyDlpV2RecordKey)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2RecordLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrlTableLocation'+--+-- * 'gpdvrlFieldId'+--+-- * 'gpdvrlRecordKey'+googlePrivacyDlpV2RecordLocation+    :: GooglePrivacyDlpV2RecordLocation+googlePrivacyDlpV2RecordLocation =+  GooglePrivacyDlpV2RecordLocation'+    { _gpdvrlTableLocation = Nothing+    , _gpdvrlFieldId = Nothing+    , _gpdvrlRecordKey = Nothing+    }+++-- | Location within a \`ContentItem.Table\`.+gpdvrlTableLocation :: Lens' GooglePrivacyDlpV2RecordLocation (Maybe GooglePrivacyDlpV2TableLocation)+gpdvrlTableLocation+  = lens _gpdvrlTableLocation+      (\ s a -> s{_gpdvrlTableLocation = a})++-- | Field id of the field containing the finding.+gpdvrlFieldId :: Lens' GooglePrivacyDlpV2RecordLocation (Maybe GooglePrivacyDlpV2FieldId)+gpdvrlFieldId+  = lens _gpdvrlFieldId+      (\ s a -> s{_gpdvrlFieldId = a})++-- | Key of the finding.+gpdvrlRecordKey :: Lens' GooglePrivacyDlpV2RecordLocation (Maybe GooglePrivacyDlpV2RecordKey)+gpdvrlRecordKey+  = lens _gpdvrlRecordKey+      (\ s a -> s{_gpdvrlRecordKey = a})++instance FromJSON GooglePrivacyDlpV2RecordLocation+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2RecordLocation"+              (\ o ->+                 GooglePrivacyDlpV2RecordLocation' <$>+                   (o .:? "tableLocation") <*> (o .:? "fieldId") <*>+                     (o .:? "recordKey"))++instance ToJSON GooglePrivacyDlpV2RecordLocation+         where+        toJSON GooglePrivacyDlpV2RecordLocation'{..}+          = object+              (catMaybes+                 [("tableLocation" .=) <$> _gpdvrlTableLocation,+                  ("fieldId" .=) <$> _gpdvrlFieldId,+                  ("recordKey" .=) <$> _gpdvrlRecordKey])++-- | Details information about an error encountered during job execution or+-- the results of an unsuccessful activation of the JobTrigger. Output only+-- field.+--+-- /See:/ 'googlePrivacyDlpV2Error' smart constructor.+data GooglePrivacyDlpV2Error =+  GooglePrivacyDlpV2Error'+    { _gpdveDetails    :: !(Maybe GoogleRpcStatus)+    , _gpdveTimestamps :: !(Maybe [DateTime'])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Error' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdveDetails'+--+-- * 'gpdveTimestamps'+googlePrivacyDlpV2Error+    :: GooglePrivacyDlpV2Error+googlePrivacyDlpV2Error =+  GooglePrivacyDlpV2Error' {_gpdveDetails = Nothing, _gpdveTimestamps = Nothing}+++gpdveDetails :: Lens' GooglePrivacyDlpV2Error (Maybe GoogleRpcStatus)+gpdveDetails+  = lens _gpdveDetails (\ s a -> s{_gpdveDetails = a})++-- | The times the error occurred.+gpdveTimestamps :: Lens' GooglePrivacyDlpV2Error [UTCTime]+gpdveTimestamps+  = lens _gpdveTimestamps+      (\ s a -> s{_gpdveTimestamps = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2Error where+        parseJSON+          = withObject "GooglePrivacyDlpV2Error"+              (\ o ->+                 GooglePrivacyDlpV2Error' <$>+                   (o .:? "details") <*>+                     (o .:? "timestamps" .!= mempty))++instance ToJSON GooglePrivacyDlpV2Error where+        toJSON GooglePrivacyDlpV2Error'{..}+          = object+              (catMaybes+                 [("details" .=) <$> _gpdveDetails,+                  ("timestamps" .=) <$> _gpdveTimestamps])++-- | StoredInfoType resource message that contains information about the+-- current version and any pending updates.+--+-- /See:/ 'googlePrivacyDlpV2StoredInfoType' smart constructor.+data GooglePrivacyDlpV2StoredInfoType =+  GooglePrivacyDlpV2StoredInfoType'+    { _gpdvsitCurrentVersion  :: !(Maybe GooglePrivacyDlpV2StoredInfoTypeVersion)+    , _gpdvsitName            :: !(Maybe Text)+    , _gpdvsitPendingVersions :: !(Maybe [GooglePrivacyDlpV2StoredInfoTypeVersion])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2StoredInfoType' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvsitCurrentVersion'+--+-- * 'gpdvsitName'+--+-- * 'gpdvsitPendingVersions'+googlePrivacyDlpV2StoredInfoType+    :: GooglePrivacyDlpV2StoredInfoType+googlePrivacyDlpV2StoredInfoType =+  GooglePrivacyDlpV2StoredInfoType'+    { _gpdvsitCurrentVersion = Nothing+    , _gpdvsitName = Nothing+    , _gpdvsitPendingVersions = Nothing+    }+++-- | Current version of the stored info type.+gpdvsitCurrentVersion :: Lens' GooglePrivacyDlpV2StoredInfoType (Maybe GooglePrivacyDlpV2StoredInfoTypeVersion)+gpdvsitCurrentVersion+  = lens _gpdvsitCurrentVersion+      (\ s a -> s{_gpdvsitCurrentVersion = a})++-- | Resource name.+gpdvsitName :: Lens' GooglePrivacyDlpV2StoredInfoType (Maybe Text)+gpdvsitName+  = lens _gpdvsitName (\ s a -> s{_gpdvsitName = a})++-- | Pending versions of the stored info type. Empty if no versions are+-- pending.+gpdvsitPendingVersions :: Lens' GooglePrivacyDlpV2StoredInfoType [GooglePrivacyDlpV2StoredInfoTypeVersion]+gpdvsitPendingVersions+  = lens _gpdvsitPendingVersions+      (\ s a -> s{_gpdvsitPendingVersions = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2StoredInfoType+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2StoredInfoType"+              (\ o ->+                 GooglePrivacyDlpV2StoredInfoType' <$>+                   (o .:? "currentVersion") <*> (o .:? "name") <*>+                     (o .:? "pendingVersions" .!= mempty))++instance ToJSON GooglePrivacyDlpV2StoredInfoType+         where+        toJSON GooglePrivacyDlpV2StoredInfoType'{..}+          = object+              (catMaybes+                 [("currentVersion" .=) <$> _gpdvsitCurrentVersion,+                  ("name" .=) <$> _gpdvsitName,+                  ("pendingVersions" .=) <$> _gpdvsitPendingVersions])++-- | Pseudonymization method that generates deterministic encryption for the+-- given input. Outputs a base64 encoded representation of the encrypted+-- output. Uses AES-SIV based on the RFC+-- https:\/\/tools.ietf.org\/html\/rfc5297.+--+-- /See:/ 'googlePrivacyDlpV2CryptoDeterministicConfig' smart constructor.+data GooglePrivacyDlpV2CryptoDeterministicConfig =+  GooglePrivacyDlpV2CryptoDeterministicConfig'+    { _gpdvcdcContext           :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvcdcSurrogateInfoType :: !(Maybe GooglePrivacyDlpV2InfoType)+    , _gpdvcdcCryptoKey         :: !(Maybe GooglePrivacyDlpV2CryptoKey)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CryptoDeterministicConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcdcContext'+--+-- * 'gpdvcdcSurrogateInfoType'+--+-- * 'gpdvcdcCryptoKey'+googlePrivacyDlpV2CryptoDeterministicConfig+    :: GooglePrivacyDlpV2CryptoDeterministicConfig+googlePrivacyDlpV2CryptoDeterministicConfig =+  GooglePrivacyDlpV2CryptoDeterministicConfig'+    { _gpdvcdcContext = Nothing+    , _gpdvcdcSurrogateInfoType = Nothing+    , _gpdvcdcCryptoKey = Nothing+    }+++-- | Optional. A context may be used for higher security and maintaining+-- referential integrity such that the same identifier in two different+-- contexts will be given a distinct surrogate. The context is appended to+-- plaintext value being encrypted. On decryption the provided context is+-- validated against the value used during encryption. If a context was+-- provided during encryption, same context must be provided during+-- decryption as well. If the context is not set, plaintext would be used+-- as is for encryption. If the context is set but: 1. there is no record+-- present when transforming a given value or 2. the field is not present+-- when transforming a given value, plaintext would be used as is for+-- encryption. Note that case (1) is expected when an+-- \`InfoTypeTransformation\` is applied to both structured and+-- non-structured \`ContentItem\`s.+gpdvcdcContext :: Lens' GooglePrivacyDlpV2CryptoDeterministicConfig (Maybe GooglePrivacyDlpV2FieldId)+gpdvcdcContext+  = lens _gpdvcdcContext+      (\ s a -> s{_gpdvcdcContext = a})++-- | The custom info type to annotate the surrogate with. This annotation+-- will be applied to the surrogate by prefixing it with the name of the+-- custom info type followed by the number of characters comprising the+-- surrogate. The following scheme defines the format: (): For example, if+-- the name of custom info type is \'MY_TOKEN_INFO_TYPE\' and the surrogate+-- is \'abc\', the full replacement value will be:+-- \'MY_TOKEN_INFO_TYPE(3):abc\' This annotation identifies the surrogate+-- when inspecting content using the custom info type \'Surrogate\'. This+-- facilitates reversal of the surrogate when it occurs in free text. In+-- order for inspection to work properly, the name of this info type must+-- not occur naturally anywhere in your data; otherwise, inspection may+-- either - reverse a surrogate that does not correspond to an actual+-- identifier - be unable to parse the surrogate and result in an error+-- Therefore, choose your custom info type name carefully after considering+-- what your data looks like. One way to select a name that has a high+-- chance of yielding reliable detection is to include one or more unicode+-- characters that are highly improbable to exist in your data. For+-- example, assuming your data is entered from a regular ASCII keyboard,+-- the symbol with the hex code point 29DD might be used like so:+-- ⧝MY_TOKEN_TYPE+gpdvcdcSurrogateInfoType :: Lens' GooglePrivacyDlpV2CryptoDeterministicConfig (Maybe GooglePrivacyDlpV2InfoType)+gpdvcdcSurrogateInfoType+  = lens _gpdvcdcSurrogateInfoType+      (\ s a -> s{_gpdvcdcSurrogateInfoType = a})++-- | The key used by the encryption function.+gpdvcdcCryptoKey :: Lens' GooglePrivacyDlpV2CryptoDeterministicConfig (Maybe GooglePrivacyDlpV2CryptoKey)+gpdvcdcCryptoKey+  = lens _gpdvcdcCryptoKey+      (\ s a -> s{_gpdvcdcCryptoKey = a})++instance FromJSON+           GooglePrivacyDlpV2CryptoDeterministicConfig+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2CryptoDeterministicConfig"+              (\ o ->+                 GooglePrivacyDlpV2CryptoDeterministicConfig' <$>+                   (o .:? "context") <*> (o .:? "surrogateInfoType") <*>+                     (o .:? "cryptoKey"))++instance ToJSON+           GooglePrivacyDlpV2CryptoDeterministicConfig+         where+        toJSON+          GooglePrivacyDlpV2CryptoDeterministicConfig'{..}+          = object+              (catMaybes+                 [("context" .=) <$> _gpdvcdcContext,+                  ("surrogateInfoType" .=) <$>+                    _gpdvcdcSurrogateInfoType,+                  ("cryptoKey" .=) <$> _gpdvcdcCryptoKey])++-- | An auxiliary table containing statistical information on the relative+-- frequency of different quasi-identifiers values. It has one or several+-- quasi-identifiers columns, and one column that indicates the relative+-- frequency of each quasi-identifier tuple. If a tuple is present in the+-- data but not in the auxiliary table, the corresponding relative+-- frequency is assumed to be zero (and thus, the tuple is highly+-- reidentifiable).+--+-- /See:/ 'googlePrivacyDlpV2StatisticalTable' smart constructor.+data GooglePrivacyDlpV2StatisticalTable =+  GooglePrivacyDlpV2StatisticalTable'+    { _gpdvstRelativeFrequency :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvstTable             :: !(Maybe GooglePrivacyDlpV2BigQueryTable)+    , _gpdvstQuasiIds          :: !(Maybe [GooglePrivacyDlpV2QuasiIdentifierField])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2StatisticalTable' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvstRelativeFrequency'+--+-- * 'gpdvstTable'+--+-- * 'gpdvstQuasiIds'+googlePrivacyDlpV2StatisticalTable+    :: GooglePrivacyDlpV2StatisticalTable+googlePrivacyDlpV2StatisticalTable =+  GooglePrivacyDlpV2StatisticalTable'+    { _gpdvstRelativeFrequency = Nothing+    , _gpdvstTable = Nothing+    , _gpdvstQuasiIds = Nothing+    }+++-- | The relative frequency column must contain a floating-point number+-- between 0 and 1 (inclusive). Null values are assumed to be zero.+-- [required]+gpdvstRelativeFrequency :: Lens' GooglePrivacyDlpV2StatisticalTable (Maybe GooglePrivacyDlpV2FieldId)+gpdvstRelativeFrequency+  = lens _gpdvstRelativeFrequency+      (\ s a -> s{_gpdvstRelativeFrequency = a})++-- | Auxiliary table location. [required]+gpdvstTable :: Lens' GooglePrivacyDlpV2StatisticalTable (Maybe GooglePrivacyDlpV2BigQueryTable)+gpdvstTable+  = lens _gpdvstTable (\ s a -> s{_gpdvstTable = a})++-- | Quasi-identifier columns. [required]+gpdvstQuasiIds :: Lens' GooglePrivacyDlpV2StatisticalTable [GooglePrivacyDlpV2QuasiIdentifierField]+gpdvstQuasiIds+  = lens _gpdvstQuasiIds+      (\ s a -> s{_gpdvstQuasiIds = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2StatisticalTable+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2StatisticalTable"+              (\ o ->+                 GooglePrivacyDlpV2StatisticalTable' <$>+                   (o .:? "relativeFrequency") <*> (o .:? "table") <*>+                     (o .:? "quasiIds" .!= mempty))++instance ToJSON GooglePrivacyDlpV2StatisticalTable+         where+        toJSON GooglePrivacyDlpV2StatisticalTable'{..}+          = object+              (catMaybes+                 [("relativeFrequency" .=) <$>+                    _gpdvstRelativeFrequency,+                  ("table" .=) <$> _gpdvstTable,+                  ("quasiIds" .=) <$> _gpdvstQuasiIds])++-- | The DeidentifyTemplates contains instructions on how to deidentify+-- content. See https:\/\/cloud.google.com\/dlp\/docs\/concepts-templates+-- to learn more.+--+-- /See:/ 'googlePrivacyDlpV2DeidentifyTemplate' smart constructor.+data GooglePrivacyDlpV2DeidentifyTemplate =+  GooglePrivacyDlpV2DeidentifyTemplate'+    { _gpdvdtUpdateTime       :: !(Maybe DateTime')+    , _gpdvdtName             :: !(Maybe Text)+    , _gpdvdtDeidentifyConfig :: !(Maybe GooglePrivacyDlpV2DeidentifyConfig)+    , _gpdvdtDisplayName      :: !(Maybe Text)+    , _gpdvdtDescription      :: !(Maybe Text)+    , _gpdvdtCreateTime       :: !(Maybe DateTime')+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DeidentifyTemplate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdtUpdateTime'+--+-- * 'gpdvdtName'+--+-- * 'gpdvdtDeidentifyConfig'+--+-- * 'gpdvdtDisplayName'+--+-- * 'gpdvdtDescription'+--+-- * 'gpdvdtCreateTime'+googlePrivacyDlpV2DeidentifyTemplate+    :: GooglePrivacyDlpV2DeidentifyTemplate+googlePrivacyDlpV2DeidentifyTemplate =+  GooglePrivacyDlpV2DeidentifyTemplate'+    { _gpdvdtUpdateTime = Nothing+    , _gpdvdtName = Nothing+    , _gpdvdtDeidentifyConfig = Nothing+    , _gpdvdtDisplayName = Nothing+    , _gpdvdtDescription = Nothing+    , _gpdvdtCreateTime = Nothing+    }+++-- | The last update timestamp of a inspectTemplate, output only field.+gpdvdtUpdateTime :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe UTCTime)+gpdvdtUpdateTime+  = lens _gpdvdtUpdateTime+      (\ s a -> s{_gpdvdtUpdateTime = a})+      . mapping _DateTime++-- | The template name. Output only. The template will have one of the+-- following formats:+-- \`projects\/PROJECT_ID\/deidentifyTemplates\/TEMPLATE_ID\` OR+-- \`organizations\/ORGANIZATION_ID\/deidentifyTemplates\/TEMPLATE_ID\`+gpdvdtName :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe Text)+gpdvdtName+  = lens _gpdvdtName (\ s a -> s{_gpdvdtName = a})++-- | \/\/\/\/\/\/\/\/\/\/\/\/\/ \/\/ The core content of the template \/\/+-- \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/+gpdvdtDeidentifyConfig :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe GooglePrivacyDlpV2DeidentifyConfig)+gpdvdtDeidentifyConfig+  = lens _gpdvdtDeidentifyConfig+      (\ s a -> s{_gpdvdtDeidentifyConfig = a})++-- | Display name (max 256 chars).+gpdvdtDisplayName :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe Text)+gpdvdtDisplayName+  = lens _gpdvdtDisplayName+      (\ s a -> s{_gpdvdtDisplayName = a})++-- | Short description (max 256 chars).+gpdvdtDescription :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe Text)+gpdvdtDescription+  = lens _gpdvdtDescription+      (\ s a -> s{_gpdvdtDescription = a})++-- | The creation timestamp of a inspectTemplate, output only field.+gpdvdtCreateTime :: Lens' GooglePrivacyDlpV2DeidentifyTemplate (Maybe UTCTime)+gpdvdtCreateTime+  = lens _gpdvdtCreateTime+      (\ s a -> s{_gpdvdtCreateTime = a})+      . mapping _DateTime++instance FromJSON+           GooglePrivacyDlpV2DeidentifyTemplate+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2DeidentifyTemplate"+              (\ o ->+                 GooglePrivacyDlpV2DeidentifyTemplate' <$>+                   (o .:? "updateTime") <*> (o .:? "name") <*>+                     (o .:? "deidentifyConfig")+                     <*> (o .:? "displayName")+                     <*> (o .:? "description")+                     <*> (o .:? "createTime"))++instance ToJSON GooglePrivacyDlpV2DeidentifyTemplate+         where+        toJSON GooglePrivacyDlpV2DeidentifyTemplate'{..}+          = object+              (catMaybes+                 [("updateTime" .=) <$> _gpdvdtUpdateTime,+                  ("name" .=) <$> _gpdvdtName,+                  ("deidentifyConfig" .=) <$> _gpdvdtDeidentifyConfig,+                  ("displayName" .=) <$> _gpdvdtDisplayName,+                  ("description" .=) <$> _gpdvdtDescription,+                  ("createTime" .=) <$> _gpdvdtCreateTime])++-- | Replace each input value with a given \`Value\`.+--+-- /See:/ 'googlePrivacyDlpV2ReplaceValueConfig' smart constructor.+newtype GooglePrivacyDlpV2ReplaceValueConfig =+  GooglePrivacyDlpV2ReplaceValueConfig'+    { _gpdvrvcNewValue :: Maybe GooglePrivacyDlpV2Value+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ReplaceValueConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvrvcNewValue'+googlePrivacyDlpV2ReplaceValueConfig+    :: GooglePrivacyDlpV2ReplaceValueConfig+googlePrivacyDlpV2ReplaceValueConfig =+  GooglePrivacyDlpV2ReplaceValueConfig' {_gpdvrvcNewValue = Nothing}+++-- | Value to replace it with.+gpdvrvcNewValue :: Lens' GooglePrivacyDlpV2ReplaceValueConfig (Maybe GooglePrivacyDlpV2Value)+gpdvrvcNewValue+  = lens _gpdvrvcNewValue+      (\ s a -> s{_gpdvrvcNewValue = a})++instance FromJSON+           GooglePrivacyDlpV2ReplaceValueConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2ReplaceValueConfig"+              (\ o ->+                 GooglePrivacyDlpV2ReplaceValueConfig' <$>+                   (o .:? "newValue"))++instance ToJSON GooglePrivacyDlpV2ReplaceValueConfig+         where+        toJSON GooglePrivacyDlpV2ReplaceValueConfig'{..}+          = object+              (catMaybes [("newValue" .=) <$> _gpdvrvcNewValue])++-- | Compute numerical stats over an individual column, including number of+-- distinct values and value count distribution.+--+-- /See:/ 'googlePrivacyDlpV2CategoricalStatsConfig' smart constructor.+newtype GooglePrivacyDlpV2CategoricalStatsConfig =+  GooglePrivacyDlpV2CategoricalStatsConfig'+    { _gpdvcscField :: Maybe GooglePrivacyDlpV2FieldId+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CategoricalStatsConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcscField'+googlePrivacyDlpV2CategoricalStatsConfig+    :: GooglePrivacyDlpV2CategoricalStatsConfig+googlePrivacyDlpV2CategoricalStatsConfig =+  GooglePrivacyDlpV2CategoricalStatsConfig' {_gpdvcscField = Nothing}+++-- | Field to compute categorical stats on. All column types are supported+-- except for arrays and structs. However, it may be more informative to+-- use NumericalStats when the field type is supported, depending on the+-- data.+gpdvcscField :: Lens' GooglePrivacyDlpV2CategoricalStatsConfig (Maybe GooglePrivacyDlpV2FieldId)+gpdvcscField+  = lens _gpdvcscField (\ s a -> s{_gpdvcscField = a})++instance FromJSON+           GooglePrivacyDlpV2CategoricalStatsConfig+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2CategoricalStatsConfig"+              (\ o ->+                 GooglePrivacyDlpV2CategoricalStatsConfig' <$>+                   (o .:? "field"))++instance ToJSON+           GooglePrivacyDlpV2CategoricalStatsConfig+         where+        toJSON GooglePrivacyDlpV2CategoricalStatsConfig'{..}+          = object (catMaybes [("field" .=) <$> _gpdvcscField])++-- | Compute numerical stats over an individual column, including min, max,+-- and quantiles.+--+-- /See:/ 'googlePrivacyDlpV2NumericalStatsConfig' smart constructor.+newtype GooglePrivacyDlpV2NumericalStatsConfig =+  GooglePrivacyDlpV2NumericalStatsConfig'+    { _gpdvnscField :: Maybe GooglePrivacyDlpV2FieldId+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2NumericalStatsConfig' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvnscField'+googlePrivacyDlpV2NumericalStatsConfig+    :: GooglePrivacyDlpV2NumericalStatsConfig+googlePrivacyDlpV2NumericalStatsConfig =+  GooglePrivacyDlpV2NumericalStatsConfig' {_gpdvnscField = Nothing}+++-- | Field to compute numerical stats on. Supported types are integer, float,+-- date, datetime, timestamp, time.+gpdvnscField :: Lens' GooglePrivacyDlpV2NumericalStatsConfig (Maybe GooglePrivacyDlpV2FieldId)+gpdvnscField+  = lens _gpdvnscField (\ s a -> s{_gpdvnscField = a})++instance FromJSON+           GooglePrivacyDlpV2NumericalStatsConfig+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2NumericalStatsConfig"+              (\ o ->+                 GooglePrivacyDlpV2NumericalStatsConfig' <$>+                   (o .:? "field"))++instance ToJSON+           GooglePrivacyDlpV2NumericalStatsConfig+         where+        toJSON GooglePrivacyDlpV2NumericalStatsConfig'{..}+          = object (catMaybes [("field" .=) <$> _gpdvnscField])++-- | Response message for ListJobTriggers.+--+-- /See:/ 'googlePrivacyDlpV2ListJobTriggersResponse' smart constructor.+data GooglePrivacyDlpV2ListJobTriggersResponse =+  GooglePrivacyDlpV2ListJobTriggersResponse'+    { _gpdvljtrNextPageToken :: !(Maybe Text)+    , _gpdvljtrJobTriggers   :: !(Maybe [GooglePrivacyDlpV2JobTrigger])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ListJobTriggersResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvljtrNextPageToken'+--+-- * 'gpdvljtrJobTriggers'+googlePrivacyDlpV2ListJobTriggersResponse+    :: GooglePrivacyDlpV2ListJobTriggersResponse+googlePrivacyDlpV2ListJobTriggersResponse =+  GooglePrivacyDlpV2ListJobTriggersResponse'+    {_gpdvljtrNextPageToken = Nothing, _gpdvljtrJobTriggers = Nothing}+++-- | If the next page is available then the next page token to be used in+-- following ListJobTriggers request.+gpdvljtrNextPageToken :: Lens' GooglePrivacyDlpV2ListJobTriggersResponse (Maybe Text)+gpdvljtrNextPageToken+  = lens _gpdvljtrNextPageToken+      (\ s a -> s{_gpdvljtrNextPageToken = a})++-- | List of triggeredJobs, up to page_size in ListJobTriggersRequest.+gpdvljtrJobTriggers :: Lens' GooglePrivacyDlpV2ListJobTriggersResponse [GooglePrivacyDlpV2JobTrigger]+gpdvljtrJobTriggers+  = lens _gpdvljtrJobTriggers+      (\ s a -> s{_gpdvljtrJobTriggers = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2ListJobTriggersResponse+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2ListJobTriggersResponse"+              (\ o ->+                 GooglePrivacyDlpV2ListJobTriggersResponse' <$>+                   (o .:? "nextPageToken") <*>+                     (o .:? "jobTriggers" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2ListJobTriggersResponse+         where+        toJSON GooglePrivacyDlpV2ListJobTriggersResponse'{..}+          = object+              (catMaybes+                 [("nextPageToken" .=) <$> _gpdvljtrNextPageToken,+                  ("jobTriggers" .=) <$> _gpdvljtrJobTriggers])++-- | Message representing a single file or path in Cloud Storage.+--+-- /See:/ 'googlePrivacyDlpV2CloudStoragePath' smart constructor.+newtype GooglePrivacyDlpV2CloudStoragePath =+  GooglePrivacyDlpV2CloudStoragePath'+    { _gpdvcspPath :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CloudStoragePath' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcspPath'+googlePrivacyDlpV2CloudStoragePath+    :: GooglePrivacyDlpV2CloudStoragePath+googlePrivacyDlpV2CloudStoragePath =+  GooglePrivacyDlpV2CloudStoragePath' {_gpdvcspPath = Nothing}+++-- | A url representing a file or path (no wildcards) in Cloud Storage.+-- Example: gs:\/\/[BUCKET_NAME]\/dictionary.txt+gpdvcspPath :: Lens' GooglePrivacyDlpV2CloudStoragePath (Maybe Text)+gpdvcspPath+  = lens _gpdvcspPath (\ s a -> s{_gpdvcspPath = a})++instance FromJSON GooglePrivacyDlpV2CloudStoragePath+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2CloudStoragePath"+              (\ o ->+                 GooglePrivacyDlpV2CloudStoragePath' <$>+                   (o .:? "path"))++instance ToJSON GooglePrivacyDlpV2CloudStoragePath+         where+        toJSON GooglePrivacyDlpV2CloudStoragePath'{..}+          = object (catMaybes [("path" .=) <$> _gpdvcspPath])++-- | Specifies the location of the finding.+--+-- /See:/ 'googlePrivacyDlpV2Location' smart constructor.+data GooglePrivacyDlpV2Location =+  GooglePrivacyDlpV2Location'+    { _gpdvlCodepointRange   :: !(Maybe GooglePrivacyDlpV2Range)+    , _gpdvlContentLocations :: !(Maybe [GooglePrivacyDlpV2ContentLocation])+    , _gpdvlByteRange        :: !(Maybe GooglePrivacyDlpV2Range)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Location' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvlCodepointRange'+--+-- * 'gpdvlContentLocations'+--+-- * 'gpdvlByteRange'+googlePrivacyDlpV2Location+    :: GooglePrivacyDlpV2Location+googlePrivacyDlpV2Location =+  GooglePrivacyDlpV2Location'+    { _gpdvlCodepointRange = Nothing+    , _gpdvlContentLocations = Nothing+    , _gpdvlByteRange = Nothing+    }+++-- | Unicode character offsets delimiting the finding. These are relative to+-- the finding\'s containing element. Provided when the content is text.+gpdvlCodepointRange :: Lens' GooglePrivacyDlpV2Location (Maybe GooglePrivacyDlpV2Range)+gpdvlCodepointRange+  = lens _gpdvlCodepointRange+      (\ s a -> s{_gpdvlCodepointRange = a})++-- | List of nested objects pointing to the precise location of the finding+-- within the file or record.+gpdvlContentLocations :: Lens' GooglePrivacyDlpV2Location [GooglePrivacyDlpV2ContentLocation]+gpdvlContentLocations+  = lens _gpdvlContentLocations+      (\ s a -> s{_gpdvlContentLocations = a})+      . _Default+      . _Coerce++-- | Zero-based byte offsets delimiting the finding. These are relative to+-- the finding\'s containing element. Note that when the content is not+-- textual, this references the UTF-8 encoded textual representation of the+-- content. Omitted if content is an image.+gpdvlByteRange :: Lens' GooglePrivacyDlpV2Location (Maybe GooglePrivacyDlpV2Range)+gpdvlByteRange+  = lens _gpdvlByteRange+      (\ s a -> s{_gpdvlByteRange = a})++instance FromJSON GooglePrivacyDlpV2Location where+        parseJSON+          = withObject "GooglePrivacyDlpV2Location"+              (\ o ->+                 GooglePrivacyDlpV2Location' <$>+                   (o .:? "codepointRange") <*>+                     (o .:? "contentLocations" .!= mempty)+                     <*> (o .:? "byteRange"))++instance ToJSON GooglePrivacyDlpV2Location where+        toJSON GooglePrivacyDlpV2Location'{..}+          = object+              (catMaybes+                 [("codepointRange" .=) <$> _gpdvlCodepointRange,+                  ("contentLocations" .=) <$> _gpdvlContentLocations,+                  ("byteRange" .=) <$> _gpdvlByteRange])++-- | Schedule for triggeredJobs.+--+-- /See:/ 'googlePrivacyDlpV2Schedule' smart constructor.+newtype GooglePrivacyDlpV2Schedule =+  GooglePrivacyDlpV2Schedule'+    { _gpdvsRecurrencePeriodDuration :: Maybe GDuration+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2Schedule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvsRecurrencePeriodDuration'+googlePrivacyDlpV2Schedule+    :: GooglePrivacyDlpV2Schedule+googlePrivacyDlpV2Schedule =+  GooglePrivacyDlpV2Schedule' {_gpdvsRecurrencePeriodDuration = Nothing}+++-- | With this option a job is started a regular periodic basis. For example:+-- every day (86400 seconds). A scheduled start time will be skipped if the+-- previous execution has not ended when its scheduled time occurs. This+-- value must be set to a time duration greater than or equal to 1 day and+-- can be no longer than 60 days.+gpdvsRecurrencePeriodDuration :: Lens' GooglePrivacyDlpV2Schedule (Maybe Scientific)+gpdvsRecurrencePeriodDuration+  = lens _gpdvsRecurrencePeriodDuration+      (\ s a -> s{_gpdvsRecurrencePeriodDuration = a})+      . mapping _GDuration++instance FromJSON GooglePrivacyDlpV2Schedule where+        parseJSON+          = withObject "GooglePrivacyDlpV2Schedule"+              (\ o ->+                 GooglePrivacyDlpV2Schedule' <$>+                   (o .:? "recurrencePeriodDuration"))++instance ToJSON GooglePrivacyDlpV2Schedule where+        toJSON GooglePrivacyDlpV2Schedule'{..}+          = object+              (catMaybes+                 [("recurrencePeriodDuration" .=) <$>+                    _gpdvsRecurrencePeriodDuration])++-- | Request message for CreateJobTrigger.+--+-- /See:/ 'googlePrivacyDlpV2CreateJobTriggerRequest' smart constructor.+data GooglePrivacyDlpV2CreateJobTriggerRequest =+  GooglePrivacyDlpV2CreateJobTriggerRequest'+    { _gpdvcjtrTriggerId  :: !(Maybe Text)+    , _gpdvcjtrJobTrigger :: !(Maybe GooglePrivacyDlpV2JobTrigger)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2CreateJobTriggerRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvcjtrTriggerId'+--+-- * 'gpdvcjtrJobTrigger'+googlePrivacyDlpV2CreateJobTriggerRequest+    :: GooglePrivacyDlpV2CreateJobTriggerRequest+googlePrivacyDlpV2CreateJobTriggerRequest =+  GooglePrivacyDlpV2CreateJobTriggerRequest'+    {_gpdvcjtrTriggerId = Nothing, _gpdvcjtrJobTrigger = Nothing}+++-- | The trigger id can contain uppercase and lowercase letters, numbers, and+-- hyphens; that is, it must match the regular expression:+-- \`[a-zA-Z\\\\d-_]+\`. The maximum length is 100 characters. Can be empty+-- to allow the system to generate one.+gpdvcjtrTriggerId :: Lens' GooglePrivacyDlpV2CreateJobTriggerRequest (Maybe Text)+gpdvcjtrTriggerId+  = lens _gpdvcjtrTriggerId+      (\ s a -> s{_gpdvcjtrTriggerId = a})++-- | The JobTrigger to create.+gpdvcjtrJobTrigger :: Lens' GooglePrivacyDlpV2CreateJobTriggerRequest (Maybe GooglePrivacyDlpV2JobTrigger)+gpdvcjtrJobTrigger+  = lens _gpdvcjtrJobTrigger+      (\ s a -> s{_gpdvcjtrJobTrigger = a})++instance FromJSON+           GooglePrivacyDlpV2CreateJobTriggerRequest+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2CreateJobTriggerRequest"+              (\ o ->+                 GooglePrivacyDlpV2CreateJobTriggerRequest' <$>+                   (o .:? "triggerId") <*> (o .:? "jobTrigger"))++instance ToJSON+           GooglePrivacyDlpV2CreateJobTriggerRequest+         where+        toJSON GooglePrivacyDlpV2CreateJobTriggerRequest'{..}+          = object+              (catMaybes+                 [("triggerId" .=) <$> _gpdvcjtrTriggerId,+                  ("jobTrigger" .=) <$> _gpdvcjtrJobTrigger])++-- | Overview of the modifications that occurred.+--+-- /See:/ 'googlePrivacyDlpV2TransformationOverview' smart constructor.+data GooglePrivacyDlpV2TransformationOverview =+  GooglePrivacyDlpV2TransformationOverview'+    { _gpdvtoTransformedBytes        :: !(Maybe (Textual Int64))+    , _gpdvtoTransformationSummaries :: !(Maybe [GooglePrivacyDlpV2TransformationSummary])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2TransformationOverview' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvtoTransformedBytes'+--+-- * 'gpdvtoTransformationSummaries'+googlePrivacyDlpV2TransformationOverview+    :: GooglePrivacyDlpV2TransformationOverview+googlePrivacyDlpV2TransformationOverview =+  GooglePrivacyDlpV2TransformationOverview'+    { _gpdvtoTransformedBytes = Nothing+    , _gpdvtoTransformationSummaries = Nothing+    }+++-- | Total size in bytes that were transformed in some way.+gpdvtoTransformedBytes :: Lens' GooglePrivacyDlpV2TransformationOverview (Maybe Int64)+gpdvtoTransformedBytes+  = lens _gpdvtoTransformedBytes+      (\ s a -> s{_gpdvtoTransformedBytes = a})+      . mapping _Coerce++-- | Transformations applied to the dataset.+gpdvtoTransformationSummaries :: Lens' GooglePrivacyDlpV2TransformationOverview [GooglePrivacyDlpV2TransformationSummary]+gpdvtoTransformationSummaries+  = lens _gpdvtoTransformationSummaries+      (\ s a -> s{_gpdvtoTransformationSummaries = a})+      . _Default+      . _Coerce++instance FromJSON+           GooglePrivacyDlpV2TransformationOverview+         where+        parseJSON+          = withObject+              "GooglePrivacyDlpV2TransformationOverview"+              (\ o ->+                 GooglePrivacyDlpV2TransformationOverview' <$>+                   (o .:? "transformedBytes") <*>+                     (o .:? "transformationSummaries" .!= mempty))++instance ToJSON+           GooglePrivacyDlpV2TransformationOverview+         where+        toJSON GooglePrivacyDlpV2TransformationOverview'{..}+          = object+              (catMaybes+                 [("transformedBytes" .=) <$> _gpdvtoTransformedBytes,+                  ("transformationSummaries" .=) <$>+                    _gpdvtoTransformationSummaries])++-- | Location of the finding within an image.+--+-- /See:/ 'googlePrivacyDlpV2ImageLocation' smart constructor.+newtype GooglePrivacyDlpV2ImageLocation =+  GooglePrivacyDlpV2ImageLocation'+    { _gpdvilBoundingBoxes :: Maybe [GooglePrivacyDlpV2BoundingBox]+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2ImageLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvilBoundingBoxes'+googlePrivacyDlpV2ImageLocation+    :: GooglePrivacyDlpV2ImageLocation+googlePrivacyDlpV2ImageLocation =+  GooglePrivacyDlpV2ImageLocation' {_gpdvilBoundingBoxes = Nothing}+++-- | Bounding boxes locating the pixels within the image containing the+-- finding.+gpdvilBoundingBoxes :: Lens' GooglePrivacyDlpV2ImageLocation [GooglePrivacyDlpV2BoundingBox]+gpdvilBoundingBoxes+  = lens _gpdvilBoundingBoxes+      (\ s a -> s{_gpdvilBoundingBoxes = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2ImageLocation+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2ImageLocation"+              (\ o ->+                 GooglePrivacyDlpV2ImageLocation' <$>+                   (o .:? "boundingBoxes" .!= mempty))++instance ToJSON GooglePrivacyDlpV2ImageLocation where+        toJSON GooglePrivacyDlpV2ImageLocation'{..}+          = object+              (catMaybes+                 [("boundingBoxes" .=) <$> _gpdvilBoundingBoxes])++-- | A representation of a Datastore kind.+--+-- /See:/ 'googlePrivacyDlpV2KindExpression' smart constructor.+newtype GooglePrivacyDlpV2KindExpression =+  GooglePrivacyDlpV2KindExpression'+    { _gpdvkeName :: Maybe Text+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2KindExpression' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvkeName'+googlePrivacyDlpV2KindExpression+    :: GooglePrivacyDlpV2KindExpression+googlePrivacyDlpV2KindExpression =+  GooglePrivacyDlpV2KindExpression' {_gpdvkeName = Nothing}+++-- | The name of the kind.+gpdvkeName :: Lens' GooglePrivacyDlpV2KindExpression (Maybe Text)+gpdvkeName+  = lens _gpdvkeName (\ s a -> s{_gpdvkeName = a})++instance FromJSON GooglePrivacyDlpV2KindExpression+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2KindExpression"+              (\ o ->+                 GooglePrivacyDlpV2KindExpression' <$> (o .:? "name"))++instance ToJSON GooglePrivacyDlpV2KindExpression+         where+        toJSON GooglePrivacyDlpV2KindExpression'{..}+          = object (catMaybes [("name" .=) <$> _gpdvkeName])++-- | Privacy metric to compute for reidentification risk analysis.+--+-- /See:/ 'googlePrivacyDlpV2PrivacyMetric' smart constructor.+data GooglePrivacyDlpV2PrivacyMetric =+  GooglePrivacyDlpV2PrivacyMetric'+    { _gpdvpmNumericalStatsConfig          :: !(Maybe GooglePrivacyDlpV2NumericalStatsConfig)+    , _gpdvpmCategoricalStatsConfig        :: !(Maybe GooglePrivacyDlpV2CategoricalStatsConfig)+    , _gpdvpmKMapEstimationConfig          :: !(Maybe GooglePrivacyDlpV2KMapEstimationConfig)+    , _gpdvpmKAnonymityConfig              :: !(Maybe GooglePrivacyDlpV2KAnonymityConfig)+    , _gpdvpmLDiversityConfig              :: !(Maybe GooglePrivacyDlpV2LDiversityConfig)+    , _gpdvpmDeltaPresenceEstimationConfig :: !(Maybe GooglePrivacyDlpV2DeltaPresenceEstimationConfig)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2PrivacyMetric' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvpmNumericalStatsConfig'+--+-- * 'gpdvpmCategoricalStatsConfig'+--+-- * 'gpdvpmKMapEstimationConfig'+--+-- * 'gpdvpmKAnonymityConfig'+--+-- * 'gpdvpmLDiversityConfig'+--+-- * 'gpdvpmDeltaPresenceEstimationConfig'+googlePrivacyDlpV2PrivacyMetric+    :: GooglePrivacyDlpV2PrivacyMetric+googlePrivacyDlpV2PrivacyMetric =+  GooglePrivacyDlpV2PrivacyMetric'+    { _gpdvpmNumericalStatsConfig = Nothing+    , _gpdvpmCategoricalStatsConfig = Nothing+    , _gpdvpmKMapEstimationConfig = Nothing+    , _gpdvpmKAnonymityConfig = Nothing+    , _gpdvpmLDiversityConfig = Nothing+    , _gpdvpmDeltaPresenceEstimationConfig = Nothing+    }+++gpdvpmNumericalStatsConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2NumericalStatsConfig)+gpdvpmNumericalStatsConfig+  = lens _gpdvpmNumericalStatsConfig+      (\ s a -> s{_gpdvpmNumericalStatsConfig = a})++gpdvpmCategoricalStatsConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2CategoricalStatsConfig)+gpdvpmCategoricalStatsConfig+  = lens _gpdvpmCategoricalStatsConfig+      (\ s a -> s{_gpdvpmCategoricalStatsConfig = a})++gpdvpmKMapEstimationConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2KMapEstimationConfig)+gpdvpmKMapEstimationConfig+  = lens _gpdvpmKMapEstimationConfig+      (\ s a -> s{_gpdvpmKMapEstimationConfig = a})++gpdvpmKAnonymityConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2KAnonymityConfig)+gpdvpmKAnonymityConfig+  = lens _gpdvpmKAnonymityConfig+      (\ s a -> s{_gpdvpmKAnonymityConfig = a})++gpdvpmLDiversityConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2LDiversityConfig)+gpdvpmLDiversityConfig+  = lens _gpdvpmLDiversityConfig+      (\ s a -> s{_gpdvpmLDiversityConfig = a})++gpdvpmDeltaPresenceEstimationConfig :: Lens' GooglePrivacyDlpV2PrivacyMetric (Maybe GooglePrivacyDlpV2DeltaPresenceEstimationConfig)+gpdvpmDeltaPresenceEstimationConfig+  = lens _gpdvpmDeltaPresenceEstimationConfig+      (\ s a ->+         s{_gpdvpmDeltaPresenceEstimationConfig = a})++instance FromJSON GooglePrivacyDlpV2PrivacyMetric+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2PrivacyMetric"+              (\ o ->+                 GooglePrivacyDlpV2PrivacyMetric' <$>+                   (o .:? "numericalStatsConfig") <*>+                     (o .:? "categoricalStatsConfig")+                     <*> (o .:? "kMapEstimationConfig")+                     <*> (o .:? "kAnonymityConfig")+                     <*> (o .:? "lDiversityConfig")+                     <*> (o .:? "deltaPresenceEstimationConfig"))++instance ToJSON GooglePrivacyDlpV2PrivacyMetric where+        toJSON GooglePrivacyDlpV2PrivacyMetric'{..}+          = object+              (catMaybes+                 [("numericalStatsConfig" .=) <$>+                    _gpdvpmNumericalStatsConfig,+                  ("categoricalStatsConfig" .=) <$>+                    _gpdvpmCategoricalStatsConfig,+                  ("kMapEstimationConfig" .=) <$>+                    _gpdvpmKMapEstimationConfig,+                  ("kAnonymityConfig" .=) <$> _gpdvpmKAnonymityConfig,+                  ("lDiversityConfig" .=) <$> _gpdvpmLDiversityConfig,+                  ("deltaPresenceEstimationConfig" .=) <$>+                    _gpdvpmDeltaPresenceEstimationConfig])++-- | Using raw keys is prone to security risks due to accidentally leaking+-- the key. Choose another type of key if possible.+--+-- /See:/ 'googlePrivacyDlpV2UnwrAppedCryptoKey' smart constructor.+newtype GooglePrivacyDlpV2UnwrAppedCryptoKey =+  GooglePrivacyDlpV2UnwrAppedCryptoKey'+    { _gpdvuackKey :: Maybe Bytes+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2UnwrAppedCryptoKey' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvuackKey'+googlePrivacyDlpV2UnwrAppedCryptoKey+    :: GooglePrivacyDlpV2UnwrAppedCryptoKey+googlePrivacyDlpV2UnwrAppedCryptoKey =+  GooglePrivacyDlpV2UnwrAppedCryptoKey' {_gpdvuackKey = Nothing}+++-- | A 128\/192\/256 bit key. [required]+gpdvuackKey :: Lens' GooglePrivacyDlpV2UnwrAppedCryptoKey (Maybe ByteString)+gpdvuackKey+  = lens _gpdvuackKey (\ s a -> s{_gpdvuackKey = a}) .+      mapping _Bytes++instance FromJSON+           GooglePrivacyDlpV2UnwrAppedCryptoKey+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2UnwrAppedCryptoKey"+              (\ o ->+                 GooglePrivacyDlpV2UnwrAppedCryptoKey' <$>+                   (o .:? "key"))++instance ToJSON GooglePrivacyDlpV2UnwrAppedCryptoKey+         where+        toJSON GooglePrivacyDlpV2UnwrAppedCryptoKey'{..}+          = object (catMaybes [("key" .=) <$> _gpdvuackKey])++-- | Rule set for modifying a set of infoTypes to alter behavior under+-- certain circumstances, depending on the specific details of the rules+-- within the set.+--+-- /See:/ 'googlePrivacyDlpV2InspectionRuleSet' smart constructor.+data GooglePrivacyDlpV2InspectionRuleSet =+  GooglePrivacyDlpV2InspectionRuleSet'+    { _gpdvirsRules     :: !(Maybe [GooglePrivacyDlpV2InspectionRule])+    , _gpdvirsInfoTypes :: !(Maybe [GooglePrivacyDlpV2InfoType])+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2InspectionRuleSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvirsRules'+--+-- * 'gpdvirsInfoTypes'+googlePrivacyDlpV2InspectionRuleSet+    :: GooglePrivacyDlpV2InspectionRuleSet+googlePrivacyDlpV2InspectionRuleSet =+  GooglePrivacyDlpV2InspectionRuleSet'+    {_gpdvirsRules = Nothing, _gpdvirsInfoTypes = Nothing}+++-- | Set of rules to be applied to infoTypes. The rules are applied in order.+gpdvirsRules :: Lens' GooglePrivacyDlpV2InspectionRuleSet [GooglePrivacyDlpV2InspectionRule]+gpdvirsRules+  = lens _gpdvirsRules (\ s a -> s{_gpdvirsRules = a})+      . _Default+      . _Coerce++-- | List of infoTypes this rule set is applied to.+gpdvirsInfoTypes :: Lens' GooglePrivacyDlpV2InspectionRuleSet [GooglePrivacyDlpV2InfoType]+gpdvirsInfoTypes+  = lens _gpdvirsInfoTypes+      (\ s a -> s{_gpdvirsInfoTypes = a})+      . _Default+      . _Coerce++instance FromJSON GooglePrivacyDlpV2InspectionRuleSet+         where+        parseJSON+          = withObject "GooglePrivacyDlpV2InspectionRuleSet"+              (\ o ->+                 GooglePrivacyDlpV2InspectionRuleSet' <$>+                   (o .:? "rules" .!= mempty) <*>+                     (o .:? "infoTypes" .!= mempty))++instance ToJSON GooglePrivacyDlpV2InspectionRuleSet+         where+        toJSON GooglePrivacyDlpV2InspectionRuleSet'{..}+          = object+              (catMaybes+                 [("rules" .=) <$> _gpdvirsRules,+                  ("infoTypes" .=) <$> _gpdvirsInfoTypes])++-- | A column with a semantic tag attached.+--+-- /See:/ 'googlePrivacyDlpV2QuasiId' smart constructor.+data GooglePrivacyDlpV2QuasiId =+  GooglePrivacyDlpV2QuasiId'+    { _gpdvqiField     :: !(Maybe GooglePrivacyDlpV2FieldId)+    , _gpdvqiInfoType  :: !(Maybe GooglePrivacyDlpV2InfoType)+    , _gpdvqiInferred  :: !(Maybe GoogleProtobufEmpty)+    , _gpdvqiCustomTag :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2QuasiId' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvqiField'+--+-- * 'gpdvqiInfoType'+--+-- * 'gpdvqiInferred'+--+-- * 'gpdvqiCustomTag'+googlePrivacyDlpV2QuasiId+    :: GooglePrivacyDlpV2QuasiId+googlePrivacyDlpV2QuasiId =+  GooglePrivacyDlpV2QuasiId'+    { _gpdvqiField = Nothing+    , _gpdvqiInfoType = Nothing+    , _gpdvqiInferred = Nothing+    , _gpdvqiCustomTag = Nothing+    }+++-- | Identifies the column. [required]+gpdvqiField :: Lens' GooglePrivacyDlpV2QuasiId (Maybe GooglePrivacyDlpV2FieldId)+gpdvqiField+  = lens _gpdvqiField (\ s a -> s{_gpdvqiField = a})++-- | A column can be tagged with a InfoType to use the relevant public+-- dataset as a statistical model of population, if available. We currently+-- support US ZIP codes, region codes, ages and genders. To+-- programmatically obtain the list of supported InfoTypes, use+-- ListInfoTypes with the supported_by=RISK_ANALYSIS filter.+gpdvqiInfoType :: Lens' GooglePrivacyDlpV2QuasiId (Maybe GooglePrivacyDlpV2InfoType)+gpdvqiInfoType+  = lens _gpdvqiInfoType+      (\ s a -> s{_gpdvqiInfoType = a})++-- | If no semantic tag is indicated, we infer the statistical model from the+-- distribution of values in the input data+gpdvqiInferred :: Lens' GooglePrivacyDlpV2QuasiId (Maybe GoogleProtobufEmpty)+gpdvqiInferred+  = lens _gpdvqiInferred+      (\ s a -> s{_gpdvqiInferred = a})++-- | A column can be tagged with a custom tag. In this case, the user must+-- indicate an auxiliary table that contains statistical information on the+-- possible values of this column (below).+gpdvqiCustomTag :: Lens' GooglePrivacyDlpV2QuasiId (Maybe Text)+gpdvqiCustomTag+  = lens _gpdvqiCustomTag+      (\ s a -> s{_gpdvqiCustomTag = a})++instance FromJSON GooglePrivacyDlpV2QuasiId where+        parseJSON+          = withObject "GooglePrivacyDlpV2QuasiId"+              (\ o ->+                 GooglePrivacyDlpV2QuasiId' <$>+                   (o .:? "field") <*> (o .:? "infoType") <*>+                     (o .:? "inferred")+                     <*> (o .:? "customTag"))++instance ToJSON GooglePrivacyDlpV2QuasiId where+        toJSON GooglePrivacyDlpV2QuasiId'{..}+          = object+              (catMaybes+                 [("field" .=) <$> _gpdvqiField,+                  ("infoType" .=) <$> _gpdvqiInfoType,+                  ("inferred" .=) <$> _gpdvqiInferred,+                  ("customTag" .=) <$> _gpdvqiCustomTag])++-- | Location of a finding within a document.+--+-- /See:/ 'googlePrivacyDlpV2DocumentLocation' smart constructor.+newtype GooglePrivacyDlpV2DocumentLocation =+  GooglePrivacyDlpV2DocumentLocation'+    { _gpdvdlFileOffSet :: Maybe (Textual Int64)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GooglePrivacyDlpV2DocumentLocation' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gpdvdlFileOffSet'+googlePrivacyDlpV2DocumentLocation+    :: GooglePrivacyDlpV2DocumentLocation+googlePrivacyDlpV2DocumentLocation =+  GooglePrivacyDlpV2DocumentLocation' {_gpdvdlFileOffSet = Nothing}+  -- | Offset of the line, from the beginning of the file, where the finding is -- located.
gen/Network/Google/DLP/Types/Sum.hs view
@@ -250,10 +250,10 @@       -- ^ @RELATIONAL_OPERATOR_UNSPECIFIED@     | EqualTo       -- ^ @EQUAL_TO@-      -- Equal.+      -- Equal. Attempts to match even with incompatible types.     | NotEqualTo       -- ^ @NOT_EQUAL_TO@-      -- Not equal to.+      -- Not equal to. Attempts to match even with incompatible types.     | GreaterThan       -- ^ @GREATER_THAN@       -- Greater than.
gen/Network/Google/Resource/DLP/InfoTypes/List.hs view
@@ -67,7 +67,8 @@ -- to learn more. -- -- /See:/ 'infoTypesList' smart constructor.-data InfoTypesList = InfoTypesList'+data InfoTypesList =+  InfoTypesList'     { _itlXgafv          :: !(Maybe Xgafv)     , _itlLanguageCode   :: !(Maybe Text)     , _itlUploadProtocol :: !(Maybe Text)@@ -75,8 +76,10 @@     , _itlUploadType     :: !(Maybe Text)     , _itlFilter         :: !(Maybe Text)     , _itlCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'InfoTypesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -97,7 +100,7 @@ infoTypesList     :: InfoTypesList infoTypesList =-    InfoTypesList'+  InfoTypesList'     { _itlXgafv = Nothing     , _itlLanguageCode = Nothing     , _itlUploadProtocol = Nothing@@ -106,6 +109,7 @@     , _itlFilter = Nothing     , _itlCallback = Nothing     }+  -- | V1 error format. itlXgafv :: Lens' InfoTypesList (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Create.hs view
@@ -70,7 +70,8 @@ -- more. -- -- /See:/ 'organizationsDeidentifyTemplatesCreate' smart constructor.-data OrganizationsDeidentifyTemplatesCreate = OrganizationsDeidentifyTemplatesCreate'+data OrganizationsDeidentifyTemplatesCreate =+  OrganizationsDeidentifyTemplatesCreate'     { _odtcParent         :: !Text     , _odtcXgafv          :: !(Maybe Xgafv)     , _odtcUploadProtocol :: !(Maybe Text)@@ -78,8 +79,10 @@     , _odtcUploadType     :: !(Maybe Text)     , _odtcPayload        :: !GooglePrivacyDlpV2CreateDeidentifyTemplateRequest     , _odtcCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsDeidentifyTemplatesCreate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -102,7 +105,7 @@     -> GooglePrivacyDlpV2CreateDeidentifyTemplateRequest -- ^ 'odtcPayload'     -> OrganizationsDeidentifyTemplatesCreate organizationsDeidentifyTemplatesCreate pOdtcParent_ pOdtcPayload_ =-    OrganizationsDeidentifyTemplatesCreate'+  OrganizationsDeidentifyTemplatesCreate'     { _odtcParent = pOdtcParent_     , _odtcXgafv = Nothing     , _odtcUploadProtocol = Nothing@@ -112,6 +115,7 @@     , _odtcCallback = Nothing     } + -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id. odtcParent :: Lens' OrganizationsDeidentifyTemplatesCreate Text@@ -152,7 +156,8 @@   = lens _odtcCallback (\ s a -> s{_odtcCallback = a})  instance GoogleRequest-         OrganizationsDeidentifyTemplatesCreate where+           OrganizationsDeidentifyTemplatesCreate+         where         type Rs OrganizationsDeidentifyTemplatesCreate =              GooglePrivacyDlpV2DeidentifyTemplate         type Scopes OrganizationsDeidentifyTemplatesCreate =
gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Delete.hs view
@@ -64,15 +64,18 @@ -- more. -- -- /See:/ 'organizationsDeidentifyTemplatesDelete' smart constructor.-data OrganizationsDeidentifyTemplatesDelete = OrganizationsDeidentifyTemplatesDelete'+data OrganizationsDeidentifyTemplatesDelete =+  OrganizationsDeidentifyTemplatesDelete'     { _odtdXgafv          :: !(Maybe Xgafv)     , _odtdUploadProtocol :: !(Maybe Text)     , _odtdAccessToken    :: !(Maybe Text)     , _odtdUploadType     :: !(Maybe Text)     , _odtdName           :: !Text     , _odtdCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsDeidentifyTemplatesDelete' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -92,7 +95,7 @@     :: Text -- ^ 'odtdName'     -> OrganizationsDeidentifyTemplatesDelete organizationsDeidentifyTemplatesDelete pOdtdName_ =-    OrganizationsDeidentifyTemplatesDelete'+  OrganizationsDeidentifyTemplatesDelete'     { _odtdXgafv = Nothing     , _odtdUploadProtocol = Nothing     , _odtdAccessToken = Nothing@@ -101,6 +104,7 @@     , _odtdCallback = Nothing     } + -- | V1 error format. odtdXgafv :: Lens' OrganizationsDeidentifyTemplatesDelete (Maybe Xgafv) odtdXgafv@@ -136,7 +140,8 @@   = lens _odtdCallback (\ s a -> s{_odtdCallback = a})  instance GoogleRequest-         OrganizationsDeidentifyTemplatesDelete where+           OrganizationsDeidentifyTemplatesDelete+         where         type Rs OrganizationsDeidentifyTemplatesDelete =              GoogleProtobufEmpty         type Scopes OrganizationsDeidentifyTemplatesDelete =
gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Get.hs view
@@ -64,15 +64,18 @@ -- more. -- -- /See:/ 'organizationsDeidentifyTemplatesGet' smart constructor.-data OrganizationsDeidentifyTemplatesGet = OrganizationsDeidentifyTemplatesGet'+data OrganizationsDeidentifyTemplatesGet =+  OrganizationsDeidentifyTemplatesGet'     { _odtgXgafv          :: !(Maybe Xgafv)     , _odtgUploadProtocol :: !(Maybe Text)     , _odtgAccessToken    :: !(Maybe Text)     , _odtgUploadType     :: !(Maybe Text)     , _odtgName           :: !Text     , _odtgCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsDeidentifyTemplatesGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -92,7 +95,7 @@     :: Text -- ^ 'odtgName'     -> OrganizationsDeidentifyTemplatesGet organizationsDeidentifyTemplatesGet pOdtgName_ =-    OrganizationsDeidentifyTemplatesGet'+  OrganizationsDeidentifyTemplatesGet'     { _odtgXgafv = Nothing     , _odtgUploadProtocol = Nothing     , _odtgAccessToken = Nothing@@ -101,6 +104,7 @@     , _odtgCallback = Nothing     } + -- | V1 error format. odtgXgafv :: Lens' OrganizationsDeidentifyTemplatesGet (Maybe Xgafv) odtgXgafv@@ -136,7 +140,8 @@   = lens _odtgCallback (\ s a -> s{_odtgCallback = a})  instance GoogleRequest-         OrganizationsDeidentifyTemplatesGet where+           OrganizationsDeidentifyTemplatesGet+         where         type Rs OrganizationsDeidentifyTemplatesGet =              GooglePrivacyDlpV2DeidentifyTemplate         type Scopes OrganizationsDeidentifyTemplatesGet =
gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/List.hs view
@@ -72,7 +72,8 @@ -- more. -- -- /See:/ 'organizationsDeidentifyTemplatesList' smart constructor.-data OrganizationsDeidentifyTemplatesList = OrganizationsDeidentifyTemplatesList'+data OrganizationsDeidentifyTemplatesList =+  OrganizationsDeidentifyTemplatesList'     { _odtlParent         :: !Text     , _odtlXgafv          :: !(Maybe Xgafv)     , _odtlUploadProtocol :: !(Maybe Text)@@ -82,8 +83,10 @@     , _odtlPageToken      :: !(Maybe Text)     , _odtlPageSize       :: !(Maybe (Textual Int32))     , _odtlCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsDeidentifyTemplatesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -109,7 +112,7 @@     :: Text -- ^ 'odtlParent'     -> OrganizationsDeidentifyTemplatesList organizationsDeidentifyTemplatesList pOdtlParent_ =-    OrganizationsDeidentifyTemplatesList'+  OrganizationsDeidentifyTemplatesList'     { _odtlParent = pOdtlParent_     , _odtlXgafv = Nothing     , _odtlUploadProtocol = Nothing@@ -121,6 +124,7 @@     , _odtlCallback = Nothing     } + -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id. odtlParent :: Lens' OrganizationsDeidentifyTemplatesList Text@@ -182,7 +186,8 @@   = lens _odtlCallback (\ s a -> s{_odtlCallback = a})  instance GoogleRequest-         OrganizationsDeidentifyTemplatesList where+           OrganizationsDeidentifyTemplatesList+         where         type Rs OrganizationsDeidentifyTemplatesList =              GooglePrivacyDlpV2ListDeidentifyTemplatesResponse         type Scopes OrganizationsDeidentifyTemplatesList =
gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Patch.hs view
@@ -67,7 +67,8 @@ -- more. -- -- /See:/ 'organizationsDeidentifyTemplatesPatch' smart constructor.-data OrganizationsDeidentifyTemplatesPatch = OrganizationsDeidentifyTemplatesPatch'+data OrganizationsDeidentifyTemplatesPatch =+  OrganizationsDeidentifyTemplatesPatch'     { _odtpXgafv          :: !(Maybe Xgafv)     , _odtpUploadProtocol :: !(Maybe Text)     , _odtpAccessToken    :: !(Maybe Text)@@ -75,8 +76,10 @@     , _odtpPayload        :: !GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest     , _odtpName           :: !Text     , _odtpCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsDeidentifyTemplatesPatch' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -99,7 +102,7 @@     -> Text -- ^ 'odtpName'     -> OrganizationsDeidentifyTemplatesPatch organizationsDeidentifyTemplatesPatch pOdtpPayload_ pOdtpName_ =-    OrganizationsDeidentifyTemplatesPatch'+  OrganizationsDeidentifyTemplatesPatch'     { _odtpXgafv = Nothing     , _odtpUploadProtocol = Nothing     , _odtpAccessToken = Nothing@@ -109,6 +112,7 @@     , _odtpCallback = Nothing     } + -- | V1 error format. odtpXgafv :: Lens' OrganizationsDeidentifyTemplatesPatch (Maybe Xgafv) odtpXgafv@@ -149,7 +153,8 @@   = lens _odtpCallback (\ s a -> s{_odtpCallback = a})  instance GoogleRequest-         OrganizationsDeidentifyTemplatesPatch where+           OrganizationsDeidentifyTemplatesPatch+         where         type Rs OrganizationsDeidentifyTemplatesPatch =              GooglePrivacyDlpV2DeidentifyTemplate         type Scopes OrganizationsDeidentifyTemplatesPatch =
gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Create.hs view
@@ -68,7 +68,8 @@ -- https:\/\/cloud.google.com\/dlp\/docs\/creating-templates to learn more. -- -- /See:/ 'organizationsInspectTemplatesCreate' smart constructor.-data OrganizationsInspectTemplatesCreate = OrganizationsInspectTemplatesCreate'+data OrganizationsInspectTemplatesCreate =+  OrganizationsInspectTemplatesCreate'     { _oitcParent         :: !Text     , _oitcXgafv          :: !(Maybe Xgafv)     , _oitcUploadProtocol :: !(Maybe Text)@@ -76,8 +77,10 @@     , _oitcUploadType     :: !(Maybe Text)     , _oitcPayload        :: !GooglePrivacyDlpV2CreateInspectTemplateRequest     , _oitcCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsInspectTemplatesCreate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -100,7 +103,7 @@     -> GooglePrivacyDlpV2CreateInspectTemplateRequest -- ^ 'oitcPayload'     -> OrganizationsInspectTemplatesCreate organizationsInspectTemplatesCreate pOitcParent_ pOitcPayload_ =-    OrganizationsInspectTemplatesCreate'+  OrganizationsInspectTemplatesCreate'     { _oitcParent = pOitcParent_     , _oitcXgafv = Nothing     , _oitcUploadProtocol = Nothing@@ -110,6 +113,7 @@     , _oitcCallback = Nothing     } + -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id. oitcParent :: Lens' OrganizationsInspectTemplatesCreate Text@@ -150,7 +154,8 @@   = lens _oitcCallback (\ s a -> s{_oitcCallback = a})  instance GoogleRequest-         OrganizationsInspectTemplatesCreate where+           OrganizationsInspectTemplatesCreate+         where         type Rs OrganizationsInspectTemplatesCreate =              GooglePrivacyDlpV2InspectTemplate         type Scopes OrganizationsInspectTemplatesCreate =
gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Delete.hs view
@@ -62,15 +62,18 @@ -- https:\/\/cloud.google.com\/dlp\/docs\/creating-templates to learn more. -- -- /See:/ 'organizationsInspectTemplatesDelete' smart constructor.-data OrganizationsInspectTemplatesDelete = OrganizationsInspectTemplatesDelete'+data OrganizationsInspectTemplatesDelete =+  OrganizationsInspectTemplatesDelete'     { _oitdXgafv          :: !(Maybe Xgafv)     , _oitdUploadProtocol :: !(Maybe Text)     , _oitdAccessToken    :: !(Maybe Text)     , _oitdUploadType     :: !(Maybe Text)     , _oitdName           :: !Text     , _oitdCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsInspectTemplatesDelete' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -90,7 +93,7 @@     :: Text -- ^ 'oitdName'     -> OrganizationsInspectTemplatesDelete organizationsInspectTemplatesDelete pOitdName_ =-    OrganizationsInspectTemplatesDelete'+  OrganizationsInspectTemplatesDelete'     { _oitdXgafv = Nothing     , _oitdUploadProtocol = Nothing     , _oitdAccessToken = Nothing@@ -99,6 +102,7 @@     , _oitdCallback = Nothing     } + -- | V1 error format. oitdXgafv :: Lens' OrganizationsInspectTemplatesDelete (Maybe Xgafv) oitdXgafv@@ -134,7 +138,8 @@   = lens _oitdCallback (\ s a -> s{_oitdCallback = a})  instance GoogleRequest-         OrganizationsInspectTemplatesDelete where+           OrganizationsInspectTemplatesDelete+         where         type Rs OrganizationsInspectTemplatesDelete =              GoogleProtobufEmpty         type Scopes OrganizationsInspectTemplatesDelete =
gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Get.hs view
@@ -62,15 +62,18 @@ -- https:\/\/cloud.google.com\/dlp\/docs\/creating-templates to learn more. -- -- /See:/ 'organizationsInspectTemplatesGet' smart constructor.-data OrganizationsInspectTemplatesGet = OrganizationsInspectTemplatesGet'+data OrganizationsInspectTemplatesGet =+  OrganizationsInspectTemplatesGet'     { _oitgXgafv          :: !(Maybe Xgafv)     , _oitgUploadProtocol :: !(Maybe Text)     , _oitgAccessToken    :: !(Maybe Text)     , _oitgUploadType     :: !(Maybe Text)     , _oitgName           :: !Text     , _oitgCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsInspectTemplatesGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -90,7 +93,7 @@     :: Text -- ^ 'oitgName'     -> OrganizationsInspectTemplatesGet organizationsInspectTemplatesGet pOitgName_ =-    OrganizationsInspectTemplatesGet'+  OrganizationsInspectTemplatesGet'     { _oitgXgafv = Nothing     , _oitgUploadProtocol = Nothing     , _oitgAccessToken = Nothing@@ -99,6 +102,7 @@     , _oitgCallback = Nothing     } + -- | V1 error format. oitgXgafv :: Lens' OrganizationsInspectTemplatesGet (Maybe Xgafv) oitgXgafv@@ -134,7 +138,8 @@   = lens _oitgCallback (\ s a -> s{_oitgCallback = a})  instance GoogleRequest-         OrganizationsInspectTemplatesGet where+           OrganizationsInspectTemplatesGet+         where         type Rs OrganizationsInspectTemplatesGet =              GooglePrivacyDlpV2InspectTemplate         type Scopes OrganizationsInspectTemplatesGet =
gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/List.hs view
@@ -70,7 +70,8 @@ -- https:\/\/cloud.google.com\/dlp\/docs\/creating-templates to learn more. -- -- /See:/ 'organizationsInspectTemplatesList' smart constructor.-data OrganizationsInspectTemplatesList = OrganizationsInspectTemplatesList'+data OrganizationsInspectTemplatesList =+  OrganizationsInspectTemplatesList'     { _oitlParent         :: !Text     , _oitlXgafv          :: !(Maybe Xgafv)     , _oitlUploadProtocol :: !(Maybe Text)@@ -80,8 +81,10 @@     , _oitlPageToken      :: !(Maybe Text)     , _oitlPageSize       :: !(Maybe (Textual Int32))     , _oitlCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsInspectTemplatesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -107,7 +110,7 @@     :: Text -- ^ 'oitlParent'     -> OrganizationsInspectTemplatesList organizationsInspectTemplatesList pOitlParent_ =-    OrganizationsInspectTemplatesList'+  OrganizationsInspectTemplatesList'     { _oitlParent = pOitlParent_     , _oitlXgafv = Nothing     , _oitlUploadProtocol = Nothing@@ -119,6 +122,7 @@     , _oitlCallback = Nothing     } + -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id. oitlParent :: Lens' OrganizationsInspectTemplatesList Text@@ -180,7 +184,8 @@   = lens _oitlCallback (\ s a -> s{_oitlCallback = a})  instance GoogleRequest-         OrganizationsInspectTemplatesList where+           OrganizationsInspectTemplatesList+         where         type Rs OrganizationsInspectTemplatesList =              GooglePrivacyDlpV2ListInspectTemplatesResponse         type Scopes OrganizationsInspectTemplatesList =
gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Patch.hs view
@@ -65,7 +65,8 @@ -- https:\/\/cloud.google.com\/dlp\/docs\/creating-templates to learn more. -- -- /See:/ 'organizationsInspectTemplatesPatch' smart constructor.-data OrganizationsInspectTemplatesPatch = OrganizationsInspectTemplatesPatch'+data OrganizationsInspectTemplatesPatch =+  OrganizationsInspectTemplatesPatch'     { _oitpXgafv          :: !(Maybe Xgafv)     , _oitpUploadProtocol :: !(Maybe Text)     , _oitpAccessToken    :: !(Maybe Text)@@ -73,8 +74,10 @@     , _oitpPayload        :: !GooglePrivacyDlpV2UpdateInspectTemplateRequest     , _oitpName           :: !Text     , _oitpCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsInspectTemplatesPatch' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -97,7 +100,7 @@     -> Text -- ^ 'oitpName'     -> OrganizationsInspectTemplatesPatch organizationsInspectTemplatesPatch pOitpPayload_ pOitpName_ =-    OrganizationsInspectTemplatesPatch'+  OrganizationsInspectTemplatesPatch'     { _oitpXgafv = Nothing     , _oitpUploadProtocol = Nothing     , _oitpAccessToken = Nothing@@ -107,6 +110,7 @@     , _oitpCallback = Nothing     } + -- | V1 error format. oitpXgafv :: Lens' OrganizationsInspectTemplatesPatch (Maybe Xgafv) oitpXgafv@@ -147,7 +151,8 @@   = lens _oitpCallback (\ s a -> s{_oitpCallback = a})  instance GoogleRequest-         OrganizationsInspectTemplatesPatch where+           OrganizationsInspectTemplatesPatch+         where         type Rs OrganizationsInspectTemplatesPatch =              GooglePrivacyDlpV2InspectTemplate         type Scopes OrganizationsInspectTemplatesPatch =
gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Create.hs view
@@ -68,7 +68,8 @@ -- learn more. -- -- /See:/ 'organizationsStoredInfoTypesCreate' smart constructor.-data OrganizationsStoredInfoTypesCreate = OrganizationsStoredInfoTypesCreate'+data OrganizationsStoredInfoTypesCreate =+  OrganizationsStoredInfoTypesCreate'     { _ositcParent         :: !Text     , _ositcXgafv          :: !(Maybe Xgafv)     , _ositcUploadProtocol :: !(Maybe Text)@@ -76,8 +77,10 @@     , _ositcUploadType     :: !(Maybe Text)     , _ositcPayload        :: !GooglePrivacyDlpV2CreateStoredInfoTypeRequest     , _ositcCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsStoredInfoTypesCreate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -100,7 +103,7 @@     -> GooglePrivacyDlpV2CreateStoredInfoTypeRequest -- ^ 'ositcPayload'     -> OrganizationsStoredInfoTypesCreate organizationsStoredInfoTypesCreate pOsitcParent_ pOsitcPayload_ =-    OrganizationsStoredInfoTypesCreate'+  OrganizationsStoredInfoTypesCreate'     { _ositcParent = pOsitcParent_     , _ositcXgafv = Nothing     , _ositcUploadProtocol = Nothing@@ -110,6 +113,7 @@     , _ositcCallback = Nothing     } + -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id. ositcParent :: Lens' OrganizationsStoredInfoTypesCreate Text@@ -151,7 +155,8 @@       (\ s a -> s{_ositcCallback = a})  instance GoogleRequest-         OrganizationsStoredInfoTypesCreate where+           OrganizationsStoredInfoTypesCreate+         where         type Rs OrganizationsStoredInfoTypesCreate =              GooglePrivacyDlpV2StoredInfoType         type Scopes OrganizationsStoredInfoTypesCreate =
gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Delete.hs view
@@ -64,15 +64,18 @@ -- learn more. -- -- /See:/ 'organizationsStoredInfoTypesDelete' smart constructor.-data OrganizationsStoredInfoTypesDelete = OrganizationsStoredInfoTypesDelete'+data OrganizationsStoredInfoTypesDelete =+  OrganizationsStoredInfoTypesDelete'     { _ositdXgafv          :: !(Maybe Xgafv)     , _ositdUploadProtocol :: !(Maybe Text)     , _ositdAccessToken    :: !(Maybe Text)     , _ositdUploadType     :: !(Maybe Text)     , _ositdName           :: !Text     , _ositdCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsStoredInfoTypesDelete' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -92,7 +95,7 @@     :: Text -- ^ 'ositdName'     -> OrganizationsStoredInfoTypesDelete organizationsStoredInfoTypesDelete pOsitdName_ =-    OrganizationsStoredInfoTypesDelete'+  OrganizationsStoredInfoTypesDelete'     { _ositdXgafv = Nothing     , _ositdUploadProtocol = Nothing     , _ositdAccessToken = Nothing@@ -101,6 +104,7 @@     , _ositdCallback = Nothing     } + -- | V1 error format. ositdXgafv :: Lens' OrganizationsStoredInfoTypesDelete (Maybe Xgafv) ositdXgafv@@ -138,7 +142,8 @@       (\ s a -> s{_ositdCallback = a})  instance GoogleRequest-         OrganizationsStoredInfoTypesDelete where+           OrganizationsStoredInfoTypesDelete+         where         type Rs OrganizationsStoredInfoTypesDelete =              GoogleProtobufEmpty         type Scopes OrganizationsStoredInfoTypesDelete =
gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Get.hs view
@@ -64,15 +64,18 @@ -- learn more. -- -- /See:/ 'organizationsStoredInfoTypesGet' smart constructor.-data OrganizationsStoredInfoTypesGet = OrganizationsStoredInfoTypesGet'+data OrganizationsStoredInfoTypesGet =+  OrganizationsStoredInfoTypesGet'     { _ositgXgafv          :: !(Maybe Xgafv)     , _ositgUploadProtocol :: !(Maybe Text)     , _ositgAccessToken    :: !(Maybe Text)     , _ositgUploadType     :: !(Maybe Text)     , _ositgName           :: !Text     , _ositgCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsStoredInfoTypesGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -92,7 +95,7 @@     :: Text -- ^ 'ositgName'     -> OrganizationsStoredInfoTypesGet organizationsStoredInfoTypesGet pOsitgName_ =-    OrganizationsStoredInfoTypesGet'+  OrganizationsStoredInfoTypesGet'     { _ositgXgafv = Nothing     , _ositgUploadProtocol = Nothing     , _ositgAccessToken = Nothing@@ -101,6 +104,7 @@     , _ositgCallback = Nothing     } + -- | V1 error format. ositgXgafv :: Lens' OrganizationsStoredInfoTypesGet (Maybe Xgafv) ositgXgafv@@ -138,7 +142,8 @@       (\ s a -> s{_ositgCallback = a})  instance GoogleRequest-         OrganizationsStoredInfoTypesGet where+           OrganizationsStoredInfoTypesGet+         where         type Rs OrganizationsStoredInfoTypesGet =              GooglePrivacyDlpV2StoredInfoType         type Scopes OrganizationsStoredInfoTypesGet =
gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/List.hs view
@@ -72,7 +72,8 @@ -- learn more. -- -- /See:/ 'organizationsStoredInfoTypesList' smart constructor.-data OrganizationsStoredInfoTypesList = OrganizationsStoredInfoTypesList'+data OrganizationsStoredInfoTypesList =+  OrganizationsStoredInfoTypesList'     { _ositlParent         :: !Text     , _ositlXgafv          :: !(Maybe Xgafv)     , _ositlUploadProtocol :: !(Maybe Text)@@ -82,8 +83,10 @@     , _ositlPageToken      :: !(Maybe Text)     , _ositlPageSize       :: !(Maybe (Textual Int32))     , _ositlCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsStoredInfoTypesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -109,7 +112,7 @@     :: Text -- ^ 'ositlParent'     -> OrganizationsStoredInfoTypesList organizationsStoredInfoTypesList pOsitlParent_ =-    OrganizationsStoredInfoTypesList'+  OrganizationsStoredInfoTypesList'     { _ositlParent = pOsitlParent_     , _ositlXgafv = Nothing     , _ositlUploadProtocol = Nothing@@ -121,6 +124,7 @@     , _ositlCallback = Nothing     } + -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id. ositlParent :: Lens' OrganizationsStoredInfoTypesList Text@@ -184,7 +188,8 @@       (\ s a -> s{_ositlCallback = a})  instance GoogleRequest-         OrganizationsStoredInfoTypesList where+           OrganizationsStoredInfoTypesList+         where         type Rs OrganizationsStoredInfoTypesList =              GooglePrivacyDlpV2ListStoredInfoTypesResponse         type Scopes OrganizationsStoredInfoTypesList =
gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Patch.hs view
@@ -69,7 +69,8 @@ -- learn more. -- -- /See:/ 'organizationsStoredInfoTypesPatch' smart constructor.-data OrganizationsStoredInfoTypesPatch = OrganizationsStoredInfoTypesPatch'+data OrganizationsStoredInfoTypesPatch =+  OrganizationsStoredInfoTypesPatch'     { _ositpXgafv          :: !(Maybe Xgafv)     , _ositpUploadProtocol :: !(Maybe Text)     , _ositpAccessToken    :: !(Maybe Text)@@ -77,8 +78,10 @@     , _ositpPayload        :: !GooglePrivacyDlpV2UpdateStoredInfoTypeRequest     , _ositpName           :: !Text     , _ositpCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'OrganizationsStoredInfoTypesPatch' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -101,7 +104,7 @@     -> Text -- ^ 'ositpName'     -> OrganizationsStoredInfoTypesPatch organizationsStoredInfoTypesPatch pOsitpPayload_ pOsitpName_ =-    OrganizationsStoredInfoTypesPatch'+  OrganizationsStoredInfoTypesPatch'     { _ositpXgafv = Nothing     , _ositpUploadProtocol = Nothing     , _ositpAccessToken = Nothing@@ -111,6 +114,7 @@     , _ositpCallback = Nothing     } + -- | V1 error format. ositpXgafv :: Lens' OrganizationsStoredInfoTypesPatch (Maybe Xgafv) ositpXgafv@@ -153,7 +157,8 @@       (\ s a -> s{_ositpCallback = a})  instance GoogleRequest-         OrganizationsStoredInfoTypesPatch where+           OrganizationsStoredInfoTypesPatch+         where         type Rs OrganizationsStoredInfoTypesPatch =              GooglePrivacyDlpV2StoredInfoType         type Scopes OrganizationsStoredInfoTypesPatch =
gen/Network/Google/Resource/DLP/Projects/Content/Deidentify.hs view
@@ -78,7 +78,8 @@ -- updated. -- -- /See:/ 'projectsContentDeidentify' smart constructor.-data ProjectsContentDeidentify = ProjectsContentDeidentify'+data ProjectsContentDeidentify =+  ProjectsContentDeidentify'     { _pcdParent         :: !Text     , _pcdXgafv          :: !(Maybe Xgafv)     , _pcdUploadProtocol :: !(Maybe Text)@@ -86,8 +87,10 @@     , _pcdUploadType     :: !(Maybe Text)     , _pcdPayload        :: !GooglePrivacyDlpV2DeidentifyContentRequest     , _pcdCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsContentDeidentify' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -110,7 +113,7 @@     -> GooglePrivacyDlpV2DeidentifyContentRequest -- ^ 'pcdPayload'     -> ProjectsContentDeidentify projectsContentDeidentify pPcdParent_ pPcdPayload_ =-    ProjectsContentDeidentify'+  ProjectsContentDeidentify'     { _pcdParent = pPcdParent_     , _pcdXgafv = Nothing     , _pcdUploadProtocol = Nothing@@ -119,6 +122,7 @@     , _pcdPayload = pPcdPayload_     , _pcdCallback = Nothing     }+  -- | The parent resource name, for example projects\/my-project-id. pcdParent :: Lens' ProjectsContentDeidentify Text
gen/Network/Google/Resource/DLP/Projects/Content/Inspect.hs view
@@ -77,7 +77,8 @@ -- https:\/\/cloud.google.com\/dlp\/docs\/inspecting-text, -- -- /See:/ 'projectsContentInspect' smart constructor.-data ProjectsContentInspect = ProjectsContentInspect'+data ProjectsContentInspect =+  ProjectsContentInspect'     { _pciParent         :: !Text     , _pciXgafv          :: !(Maybe Xgafv)     , _pciUploadProtocol :: !(Maybe Text)@@ -85,8 +86,10 @@     , _pciUploadType     :: !(Maybe Text)     , _pciPayload        :: !GooglePrivacyDlpV2InspectContentRequest     , _pciCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsContentInspect' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -109,7 +112,7 @@     -> GooglePrivacyDlpV2InspectContentRequest -- ^ 'pciPayload'     -> ProjectsContentInspect projectsContentInspect pPciParent_ pPciPayload_ =-    ProjectsContentInspect'+  ProjectsContentInspect'     { _pciParent = pPciParent_     , _pciXgafv = Nothing     , _pciUploadProtocol = Nothing@@ -118,6 +121,7 @@     , _pciPayload = pPciPayload_     , _pciCallback = Nothing     }+  -- | The parent resource name, for example projects\/my-project-id. pciParent :: Lens' ProjectsContentInspect Text
gen/Network/Google/Resource/DLP/Projects/Content/Reidentify.hs view
@@ -70,7 +70,8 @@ -- to learn more. -- -- /See:/ 'projectsContentReidentify' smart constructor.-data ProjectsContentReidentify = ProjectsContentReidentify'+data ProjectsContentReidentify =+  ProjectsContentReidentify'     { _pcrParent         :: !Text     , _pcrXgafv          :: !(Maybe Xgafv)     , _pcrUploadProtocol :: !(Maybe Text)@@ -78,8 +79,10 @@     , _pcrUploadType     :: !(Maybe Text)     , _pcrPayload        :: !GooglePrivacyDlpV2ReidentifyContentRequest     , _pcrCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsContentReidentify' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -102,7 +105,7 @@     -> GooglePrivacyDlpV2ReidentifyContentRequest -- ^ 'pcrPayload'     -> ProjectsContentReidentify projectsContentReidentify pPcrParent_ pPcrPayload_ =-    ProjectsContentReidentify'+  ProjectsContentReidentify'     { _pcrParent = pPcrParent_     , _pcrXgafv = Nothing     , _pcrUploadProtocol = Nothing@@ -111,6 +114,7 @@     , _pcrPayload = pPcrPayload_     , _pcrCallback = Nothing     }+  -- | The parent resource name. pcrParent :: Lens' ProjectsContentReidentify Text
gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Create.hs view
@@ -70,7 +70,8 @@ -- more. -- -- /See:/ 'projectsDeidentifyTemplatesCreate' smart constructor.-data ProjectsDeidentifyTemplatesCreate = ProjectsDeidentifyTemplatesCreate'+data ProjectsDeidentifyTemplatesCreate =+  ProjectsDeidentifyTemplatesCreate'     { _pdtcParent         :: !Text     , _pdtcXgafv          :: !(Maybe Xgafv)     , _pdtcUploadProtocol :: !(Maybe Text)@@ -78,8 +79,10 @@     , _pdtcUploadType     :: !(Maybe Text)     , _pdtcPayload        :: !GooglePrivacyDlpV2CreateDeidentifyTemplateRequest     , _pdtcCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsDeidentifyTemplatesCreate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -102,7 +105,7 @@     -> GooglePrivacyDlpV2CreateDeidentifyTemplateRequest -- ^ 'pdtcPayload'     -> ProjectsDeidentifyTemplatesCreate projectsDeidentifyTemplatesCreate pPdtcParent_ pPdtcPayload_ =-    ProjectsDeidentifyTemplatesCreate'+  ProjectsDeidentifyTemplatesCreate'     { _pdtcParent = pPdtcParent_     , _pdtcXgafv = Nothing     , _pdtcUploadProtocol = Nothing@@ -112,6 +115,7 @@     , _pdtcCallback = Nothing     } + -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id. pdtcParent :: Lens' ProjectsDeidentifyTemplatesCreate Text@@ -152,7 +156,8 @@   = lens _pdtcCallback (\ s a -> s{_pdtcCallback = a})  instance GoogleRequest-         ProjectsDeidentifyTemplatesCreate where+           ProjectsDeidentifyTemplatesCreate+         where         type Rs ProjectsDeidentifyTemplatesCreate =              GooglePrivacyDlpV2DeidentifyTemplate         type Scopes ProjectsDeidentifyTemplatesCreate =
gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Delete.hs view
@@ -64,15 +64,18 @@ -- more. -- -- /See:/ 'projectsDeidentifyTemplatesDelete' smart constructor.-data ProjectsDeidentifyTemplatesDelete = ProjectsDeidentifyTemplatesDelete'+data ProjectsDeidentifyTemplatesDelete =+  ProjectsDeidentifyTemplatesDelete'     { _pdtdXgafv          :: !(Maybe Xgafv)     , _pdtdUploadProtocol :: !(Maybe Text)     , _pdtdAccessToken    :: !(Maybe Text)     , _pdtdUploadType     :: !(Maybe Text)     , _pdtdName           :: !Text     , _pdtdCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsDeidentifyTemplatesDelete' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -92,7 +95,7 @@     :: Text -- ^ 'pdtdName'     -> ProjectsDeidentifyTemplatesDelete projectsDeidentifyTemplatesDelete pPdtdName_ =-    ProjectsDeidentifyTemplatesDelete'+  ProjectsDeidentifyTemplatesDelete'     { _pdtdXgafv = Nothing     , _pdtdUploadProtocol = Nothing     , _pdtdAccessToken = Nothing@@ -101,6 +104,7 @@     , _pdtdCallback = Nothing     } + -- | V1 error format. pdtdXgafv :: Lens' ProjectsDeidentifyTemplatesDelete (Maybe Xgafv) pdtdXgafv@@ -136,7 +140,8 @@   = lens _pdtdCallback (\ s a -> s{_pdtdCallback = a})  instance GoogleRequest-         ProjectsDeidentifyTemplatesDelete where+           ProjectsDeidentifyTemplatesDelete+         where         type Rs ProjectsDeidentifyTemplatesDelete =              GoogleProtobufEmpty         type Scopes ProjectsDeidentifyTemplatesDelete =
gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Get.hs view
@@ -64,15 +64,18 @@ -- more. -- -- /See:/ 'projectsDeidentifyTemplatesGet' smart constructor.-data ProjectsDeidentifyTemplatesGet = ProjectsDeidentifyTemplatesGet'+data ProjectsDeidentifyTemplatesGet =+  ProjectsDeidentifyTemplatesGet'     { _pdtgXgafv          :: !(Maybe Xgafv)     , _pdtgUploadProtocol :: !(Maybe Text)     , _pdtgAccessToken    :: !(Maybe Text)     , _pdtgUploadType     :: !(Maybe Text)     , _pdtgName           :: !Text     , _pdtgCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsDeidentifyTemplatesGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -92,7 +95,7 @@     :: Text -- ^ 'pdtgName'     -> ProjectsDeidentifyTemplatesGet projectsDeidentifyTemplatesGet pPdtgName_ =-    ProjectsDeidentifyTemplatesGet'+  ProjectsDeidentifyTemplatesGet'     { _pdtgXgafv = Nothing     , _pdtgUploadProtocol = Nothing     , _pdtgAccessToken = Nothing@@ -100,6 +103,7 @@     , _pdtgName = pPdtgName_     , _pdtgCallback = Nothing     }+  -- | V1 error format. pdtgXgafv :: Lens' ProjectsDeidentifyTemplatesGet (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/List.hs view
@@ -72,7 +72,8 @@ -- more. -- -- /See:/ 'projectsDeidentifyTemplatesList' smart constructor.-data ProjectsDeidentifyTemplatesList = ProjectsDeidentifyTemplatesList'+data ProjectsDeidentifyTemplatesList =+  ProjectsDeidentifyTemplatesList'     { _pdtlParent         :: !Text     , _pdtlXgafv          :: !(Maybe Xgafv)     , _pdtlUploadProtocol :: !(Maybe Text)@@ -82,8 +83,10 @@     , _pdtlPageToken      :: !(Maybe Text)     , _pdtlPageSize       :: !(Maybe (Textual Int32))     , _pdtlCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsDeidentifyTemplatesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -109,7 +112,7 @@     :: Text -- ^ 'pdtlParent'     -> ProjectsDeidentifyTemplatesList projectsDeidentifyTemplatesList pPdtlParent_ =-    ProjectsDeidentifyTemplatesList'+  ProjectsDeidentifyTemplatesList'     { _pdtlParent = pPdtlParent_     , _pdtlXgafv = Nothing     , _pdtlUploadProtocol = Nothing@@ -121,6 +124,7 @@     , _pdtlCallback = Nothing     } + -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id. pdtlParent :: Lens' ProjectsDeidentifyTemplatesList Text@@ -182,7 +186,8 @@   = lens _pdtlCallback (\ s a -> s{_pdtlCallback = a})  instance GoogleRequest-         ProjectsDeidentifyTemplatesList where+           ProjectsDeidentifyTemplatesList+         where         type Rs ProjectsDeidentifyTemplatesList =              GooglePrivacyDlpV2ListDeidentifyTemplatesResponse         type Scopes ProjectsDeidentifyTemplatesList =
gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Patch.hs view
@@ -67,7 +67,8 @@ -- more. -- -- /See:/ 'projectsDeidentifyTemplatesPatch' smart constructor.-data ProjectsDeidentifyTemplatesPatch = ProjectsDeidentifyTemplatesPatch'+data ProjectsDeidentifyTemplatesPatch =+  ProjectsDeidentifyTemplatesPatch'     { _pdtpXgafv          :: !(Maybe Xgafv)     , _pdtpUploadProtocol :: !(Maybe Text)     , _pdtpAccessToken    :: !(Maybe Text)@@ -75,8 +76,10 @@     , _pdtpPayload        :: !GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest     , _pdtpName           :: !Text     , _pdtpCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsDeidentifyTemplatesPatch' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -99,7 +102,7 @@     -> Text -- ^ 'pdtpName'     -> ProjectsDeidentifyTemplatesPatch projectsDeidentifyTemplatesPatch pPdtpPayload_ pPdtpName_ =-    ProjectsDeidentifyTemplatesPatch'+  ProjectsDeidentifyTemplatesPatch'     { _pdtpXgafv = Nothing     , _pdtpUploadProtocol = Nothing     , _pdtpAccessToken = Nothing@@ -109,6 +112,7 @@     , _pdtpCallback = Nothing     } + -- | V1 error format. pdtpXgafv :: Lens' ProjectsDeidentifyTemplatesPatch (Maybe Xgafv) pdtpXgafv@@ -149,7 +153,8 @@   = lens _pdtpCallback (\ s a -> s{_pdtpCallback = a})  instance GoogleRequest-         ProjectsDeidentifyTemplatesPatch where+           ProjectsDeidentifyTemplatesPatch+         where         type Rs ProjectsDeidentifyTemplatesPatch =              GooglePrivacyDlpV2DeidentifyTemplate         type Scopes ProjectsDeidentifyTemplatesPatch =
gen/Network/Google/Resource/DLP/Projects/DlpJobs/Cancel.hs view
@@ -70,7 +70,8 @@ -- more. -- -- /See:/ 'projectsDlpJobsCancel' smart constructor.-data ProjectsDlpJobsCancel = ProjectsDlpJobsCancel'+data ProjectsDlpJobsCancel =+  ProjectsDlpJobsCancel'     { _pdjcXgafv          :: !(Maybe Xgafv)     , _pdjcUploadProtocol :: !(Maybe Text)     , _pdjcAccessToken    :: !(Maybe Text)@@ -78,8 +79,10 @@     , _pdjcPayload        :: !GooglePrivacyDlpV2CancelDlpJobRequest     , _pdjcName           :: !Text     , _pdjcCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsDlpJobsCancel' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -102,7 +105,7 @@     -> Text -- ^ 'pdjcName'     -> ProjectsDlpJobsCancel projectsDlpJobsCancel pPdjcPayload_ pPdjcName_ =-    ProjectsDlpJobsCancel'+  ProjectsDlpJobsCancel'     { _pdjcXgafv = Nothing     , _pdjcUploadProtocol = Nothing     , _pdjcAccessToken = Nothing@@ -111,6 +114,7 @@     , _pdjcName = pPdjcName_     , _pdjcCallback = Nothing     }+  -- | V1 error format. pdjcXgafv :: Lens' ProjectsDlpJobsCancel (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Projects/DlpJobs/Create.hs view
@@ -75,7 +75,8 @@ -- updated. -- -- /See:/ 'projectsDlpJobsCreate' smart constructor.-data ProjectsDlpJobsCreate = ProjectsDlpJobsCreate'+data ProjectsDlpJobsCreate =+  ProjectsDlpJobsCreate'     { _pParent         :: !Text     , _pXgafv          :: !(Maybe Xgafv)     , _pUploadProtocol :: !(Maybe Text)@@ -83,8 +84,10 @@     , _pUploadType     :: !(Maybe Text)     , _pPayload        :: !GooglePrivacyDlpV2CreateDlpJobRequest     , _pCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsDlpJobsCreate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -107,7 +110,7 @@     -> GooglePrivacyDlpV2CreateDlpJobRequest -- ^ 'pPayload'     -> ProjectsDlpJobsCreate projectsDlpJobsCreate pPParent_ pPPayload_ =-    ProjectsDlpJobsCreate'+  ProjectsDlpJobsCreate'     { _pParent = pPParent_     , _pXgafv = Nothing     , _pUploadProtocol = Nothing@@ -116,6 +119,7 @@     , _pPayload = pPPayload_     , _pCallback = Nothing     }+  -- | The parent resource name, for example projects\/my-project-id. pParent :: Lens' ProjectsDlpJobsCreate Text
gen/Network/Google/Resource/DLP/Projects/DlpJobs/Delete.hs view
@@ -68,15 +68,18 @@ -- learn more. -- -- /See:/ 'projectsDlpJobsDelete' smart constructor.-data ProjectsDlpJobsDelete = ProjectsDlpJobsDelete'+data ProjectsDlpJobsDelete =+  ProjectsDlpJobsDelete'     { _pdjdXgafv          :: !(Maybe Xgafv)     , _pdjdUploadProtocol :: !(Maybe Text)     , _pdjdAccessToken    :: !(Maybe Text)     , _pdjdUploadType     :: !(Maybe Text)     , _pdjdName           :: !Text     , _pdjdCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsDlpJobsDelete' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -96,7 +99,7 @@     :: Text -- ^ 'pdjdName'     -> ProjectsDlpJobsDelete projectsDlpJobsDelete pPdjdName_ =-    ProjectsDlpJobsDelete'+  ProjectsDlpJobsDelete'     { _pdjdXgafv = Nothing     , _pdjdUploadProtocol = Nothing     , _pdjdAccessToken = Nothing@@ -104,6 +107,7 @@     , _pdjdName = pPdjdName_     , _pdjdCallback = Nothing     }+  -- | V1 error format. pdjdXgafv :: Lens' ProjectsDlpJobsDelete (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Projects/DlpJobs/Get.hs view
@@ -66,15 +66,18 @@ -- more. -- -- /See:/ 'projectsDlpJobsGet' smart constructor.-data ProjectsDlpJobsGet = ProjectsDlpJobsGet'+data ProjectsDlpJobsGet =+  ProjectsDlpJobsGet'     { _pdjgXgafv          :: !(Maybe Xgafv)     , _pdjgUploadProtocol :: !(Maybe Text)     , _pdjgAccessToken    :: !(Maybe Text)     , _pdjgUploadType     :: !(Maybe Text)     , _pdjgName           :: !Text     , _pdjgCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsDlpJobsGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -94,7 +97,7 @@     :: Text -- ^ 'pdjgName'     -> ProjectsDlpJobsGet projectsDlpJobsGet pPdjgName_ =-    ProjectsDlpJobsGet'+  ProjectsDlpJobsGet'     { _pdjgXgafv = Nothing     , _pdjgUploadProtocol = Nothing     , _pdjgAccessToken = Nothing@@ -102,6 +105,7 @@     , _pdjgName = pPdjgName_     , _pdjgCallback = Nothing     }+  -- | V1 error format. pdjgXgafv :: Lens' ProjectsDlpJobsGet (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Projects/DlpJobs/List.hs view
@@ -78,7 +78,8 @@ -- more. -- -- /See:/ 'projectsDlpJobsList' smart constructor.-data ProjectsDlpJobsList = ProjectsDlpJobsList'+data ProjectsDlpJobsList =+  ProjectsDlpJobsList'     { _pdjlParent         :: !Text     , _pdjlXgafv          :: !(Maybe Xgafv)     , _pdjlUploadProtocol :: !(Maybe Text)@@ -90,8 +91,10 @@     , _pdjlType           :: !(Maybe Text)     , _pdjlPageSize       :: !(Maybe (Textual Int32))     , _pdjlCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsDlpJobsList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -121,7 +124,7 @@     :: Text -- ^ 'pdjlParent'     -> ProjectsDlpJobsList projectsDlpJobsList pPdjlParent_ =-    ProjectsDlpJobsList'+  ProjectsDlpJobsList'     { _pdjlParent = pPdjlParent_     , _pdjlXgafv = Nothing     , _pdjlUploadProtocol = Nothing@@ -134,6 +137,7 @@     , _pdjlPageSize = Nothing     , _pdjlCallback = Nothing     }+  -- | The parent resource name, for example projects\/my-project-id. pdjlParent :: Lens' ProjectsDlpJobsList Text
gen/Network/Google/Resource/DLP/Projects/Image/Redact.hs view
@@ -75,7 +75,8 @@ -- detectors are updated. -- -- /See:/ 'projectsImageRedact' smart constructor.-data ProjectsImageRedact = ProjectsImageRedact'+data ProjectsImageRedact =+  ProjectsImageRedact'     { _pirParent         :: !Text     , _pirXgafv          :: !(Maybe Xgafv)     , _pirUploadProtocol :: !(Maybe Text)@@ -83,8 +84,10 @@     , _pirUploadType     :: !(Maybe Text)     , _pirPayload        :: !GooglePrivacyDlpV2RedactImageRequest     , _pirCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsImageRedact' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -107,7 +110,7 @@     -> GooglePrivacyDlpV2RedactImageRequest -- ^ 'pirPayload'     -> ProjectsImageRedact projectsImageRedact pPirParent_ pPirPayload_ =-    ProjectsImageRedact'+  ProjectsImageRedact'     { _pirParent = pPirParent_     , _pirXgafv = Nothing     , _pirUploadProtocol = Nothing@@ -116,6 +119,7 @@     , _pirPayload = pPirPayload_     , _pirCallback = Nothing     }+  -- | The parent resource name, for example projects\/my-project-id. pirParent :: Lens' ProjectsImageRedact Text
gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Create.hs view
@@ -68,7 +68,8 @@ -- https:\/\/cloud.google.com\/dlp\/docs\/creating-templates to learn more. -- -- /See:/ 'projectsInspectTemplatesCreate' smart constructor.-data ProjectsInspectTemplatesCreate = ProjectsInspectTemplatesCreate'+data ProjectsInspectTemplatesCreate =+  ProjectsInspectTemplatesCreate'     { _pitcParent         :: !Text     , _pitcXgafv          :: !(Maybe Xgafv)     , _pitcUploadProtocol :: !(Maybe Text)@@ -76,8 +77,10 @@     , _pitcUploadType     :: !(Maybe Text)     , _pitcPayload        :: !GooglePrivacyDlpV2CreateInspectTemplateRequest     , _pitcCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsInspectTemplatesCreate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -100,7 +103,7 @@     -> GooglePrivacyDlpV2CreateInspectTemplateRequest -- ^ 'pitcPayload'     -> ProjectsInspectTemplatesCreate projectsInspectTemplatesCreate pPitcParent_ pPitcPayload_ =-    ProjectsInspectTemplatesCreate'+  ProjectsInspectTemplatesCreate'     { _pitcParent = pPitcParent_     , _pitcXgafv = Nothing     , _pitcUploadProtocol = Nothing@@ -109,6 +112,7 @@     , _pitcPayload = pPitcPayload_     , _pitcCallback = Nothing     }+  -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id.
gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Delete.hs view
@@ -62,15 +62,18 @@ -- https:\/\/cloud.google.com\/dlp\/docs\/creating-templates to learn more. -- -- /See:/ 'projectsInspectTemplatesDelete' smart constructor.-data ProjectsInspectTemplatesDelete = ProjectsInspectTemplatesDelete'+data ProjectsInspectTemplatesDelete =+  ProjectsInspectTemplatesDelete'     { _pitdXgafv          :: !(Maybe Xgafv)     , _pitdUploadProtocol :: !(Maybe Text)     , _pitdAccessToken    :: !(Maybe Text)     , _pitdUploadType     :: !(Maybe Text)     , _pitdName           :: !Text     , _pitdCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsInspectTemplatesDelete' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -90,7 +93,7 @@     :: Text -- ^ 'pitdName'     -> ProjectsInspectTemplatesDelete projectsInspectTemplatesDelete pPitdName_ =-    ProjectsInspectTemplatesDelete'+  ProjectsInspectTemplatesDelete'     { _pitdXgafv = Nothing     , _pitdUploadProtocol = Nothing     , _pitdAccessToken = Nothing@@ -98,6 +101,7 @@     , _pitdName = pPitdName_     , _pitdCallback = Nothing     }+  -- | V1 error format. pitdXgafv :: Lens' ProjectsInspectTemplatesDelete (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Get.hs view
@@ -62,15 +62,18 @@ -- https:\/\/cloud.google.com\/dlp\/docs\/creating-templates to learn more. -- -- /See:/ 'projectsInspectTemplatesGet' smart constructor.-data ProjectsInspectTemplatesGet = ProjectsInspectTemplatesGet'+data ProjectsInspectTemplatesGet =+  ProjectsInspectTemplatesGet'     { _pitgXgafv          :: !(Maybe Xgafv)     , _pitgUploadProtocol :: !(Maybe Text)     , _pitgAccessToken    :: !(Maybe Text)     , _pitgUploadType     :: !(Maybe Text)     , _pitgName           :: !Text     , _pitgCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsInspectTemplatesGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -90,7 +93,7 @@     :: Text -- ^ 'pitgName'     -> ProjectsInspectTemplatesGet projectsInspectTemplatesGet pPitgName_ =-    ProjectsInspectTemplatesGet'+  ProjectsInspectTemplatesGet'     { _pitgXgafv = Nothing     , _pitgUploadProtocol = Nothing     , _pitgAccessToken = Nothing@@ -98,6 +101,7 @@     , _pitgName = pPitgName_     , _pitgCallback = Nothing     }+  -- | V1 error format. pitgXgafv :: Lens' ProjectsInspectTemplatesGet (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Projects/InspectTemplates/List.hs view
@@ -70,7 +70,8 @@ -- https:\/\/cloud.google.com\/dlp\/docs\/creating-templates to learn more. -- -- /See:/ 'projectsInspectTemplatesList' smart constructor.-data ProjectsInspectTemplatesList = ProjectsInspectTemplatesList'+data ProjectsInspectTemplatesList =+  ProjectsInspectTemplatesList'     { _pitlParent         :: !Text     , _pitlXgafv          :: !(Maybe Xgafv)     , _pitlUploadProtocol :: !(Maybe Text)@@ -80,8 +81,10 @@     , _pitlPageToken      :: !(Maybe Text)     , _pitlPageSize       :: !(Maybe (Textual Int32))     , _pitlCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsInspectTemplatesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -107,7 +110,7 @@     :: Text -- ^ 'pitlParent'     -> ProjectsInspectTemplatesList projectsInspectTemplatesList pPitlParent_ =-    ProjectsInspectTemplatesList'+  ProjectsInspectTemplatesList'     { _pitlParent = pPitlParent_     , _pitlXgafv = Nothing     , _pitlUploadProtocol = Nothing@@ -118,6 +121,7 @@     , _pitlPageSize = Nothing     , _pitlCallback = Nothing     }+  -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id.
gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Patch.hs view
@@ -65,7 +65,8 @@ -- https:\/\/cloud.google.com\/dlp\/docs\/creating-templates to learn more. -- -- /See:/ 'projectsInspectTemplatesPatch' smart constructor.-data ProjectsInspectTemplatesPatch = ProjectsInspectTemplatesPatch'+data ProjectsInspectTemplatesPatch =+  ProjectsInspectTemplatesPatch'     { _pitpXgafv          :: !(Maybe Xgafv)     , _pitpUploadProtocol :: !(Maybe Text)     , _pitpAccessToken    :: !(Maybe Text)@@ -73,8 +74,10 @@     , _pitpPayload        :: !GooglePrivacyDlpV2UpdateInspectTemplateRequest     , _pitpName           :: !Text     , _pitpCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsInspectTemplatesPatch' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -97,7 +100,7 @@     -> Text -- ^ 'pitpName'     -> ProjectsInspectTemplatesPatch projectsInspectTemplatesPatch pPitpPayload_ pPitpName_ =-    ProjectsInspectTemplatesPatch'+  ProjectsInspectTemplatesPatch'     { _pitpXgafv = Nothing     , _pitpUploadProtocol = Nothing     , _pitpAccessToken = Nothing@@ -106,6 +109,7 @@     , _pitpName = pPitpName_     , _pitpCallback = Nothing     }+  -- | V1 error format. pitpXgafv :: Lens' ProjectsInspectTemplatesPatch (Maybe Xgafv)
+ gen/Network/Google/Resource/DLP/Projects/JobTriggers/Activate.hs view
@@ -0,0 +1,169 @@+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric      #-}+{-# LANGUAGE FlexibleInstances  #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE OverloadedStrings  #-}+{-# LANGUAGE RecordWildCards    #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}++-- |+-- Module      : Network.Google.Resource.DLP.Projects.JobTriggers.Activate+-- Copyright   : (c) 2015-2016 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Activate a job trigger. Causes the immediate execute of a trigger+-- instead of waiting on the trigger event to occur.+--+-- /See:/ <https://cloud.google.com/dlp/docs/ Cloud Data Loss Prevention (DLP) API Reference> for @dlp.projects.jobTriggers.activate@.+module Network.Google.Resource.DLP.Projects.JobTriggers.Activate+    (+    -- * REST Resource+      ProjectsJobTriggersActivateResource++    -- * Creating a Request+    , projectsJobTriggersActivate+    , ProjectsJobTriggersActivate++    -- * Request Lenses+    , pjtaXgafv+    , pjtaUploadProtocol+    , pjtaAccessToken+    , pjtaUploadType+    , pjtaPayload+    , pjtaName+    , pjtaCallback+    ) where++import           Network.Google.DLP.Types+import           Network.Google.Prelude++-- | A resource alias for @dlp.projects.jobTriggers.activate@ method which the+-- 'ProjectsJobTriggersActivate' request conforms to.+type ProjectsJobTriggersActivateResource =+     "v2" :>+       CaptureMode "name" "activate" Text :>+         QueryParam "$.xgafv" Xgafv :>+           QueryParam "upload_protocol" Text :>+             QueryParam "access_token" Text :>+               QueryParam "uploadType" Text :>+                 QueryParam "callback" Text :>+                   QueryParam "alt" AltJSON :>+                     ReqBody '[JSON]+                       GooglePrivacyDlpV2ActivateJobTriggerRequest+                       :> Post '[JSON] GooglePrivacyDlpV2DlpJob++-- | Activate a job trigger. Causes the immediate execute of a trigger+-- instead of waiting on the trigger event to occur.+--+-- /See:/ 'projectsJobTriggersActivate' smart constructor.+data ProjectsJobTriggersActivate =+  ProjectsJobTriggersActivate'+    { _pjtaXgafv          :: !(Maybe Xgafv)+    , _pjtaUploadProtocol :: !(Maybe Text)+    , _pjtaAccessToken    :: !(Maybe Text)+    , _pjtaUploadType     :: !(Maybe Text)+    , _pjtaPayload        :: !GooglePrivacyDlpV2ActivateJobTriggerRequest+    , _pjtaName           :: !Text+    , _pjtaCallback       :: !(Maybe Text)+    }+  deriving (Eq, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ProjectsJobTriggersActivate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pjtaXgafv'+--+-- * 'pjtaUploadProtocol'+--+-- * 'pjtaAccessToken'+--+-- * 'pjtaUploadType'+--+-- * 'pjtaPayload'+--+-- * 'pjtaName'+--+-- * 'pjtaCallback'+projectsJobTriggersActivate+    :: GooglePrivacyDlpV2ActivateJobTriggerRequest -- ^ 'pjtaPayload'+    -> Text -- ^ 'pjtaName'+    -> ProjectsJobTriggersActivate+projectsJobTriggersActivate pPjtaPayload_ pPjtaName_ =+  ProjectsJobTriggersActivate'+    { _pjtaXgafv = Nothing+    , _pjtaUploadProtocol = Nothing+    , _pjtaAccessToken = Nothing+    , _pjtaUploadType = Nothing+    , _pjtaPayload = pPjtaPayload_+    , _pjtaName = pPjtaName_+    , _pjtaCallback = Nothing+    }+++-- | V1 error format.+pjtaXgafv :: Lens' ProjectsJobTriggersActivate (Maybe Xgafv)+pjtaXgafv+  = lens _pjtaXgafv (\ s a -> s{_pjtaXgafv = a})++-- | Upload protocol for media (e.g. \"raw\", \"multipart\").+pjtaUploadProtocol :: Lens' ProjectsJobTriggersActivate (Maybe Text)+pjtaUploadProtocol+  = lens _pjtaUploadProtocol+      (\ s a -> s{_pjtaUploadProtocol = a})++-- | OAuth access token.+pjtaAccessToken :: Lens' ProjectsJobTriggersActivate (Maybe Text)+pjtaAccessToken+  = lens _pjtaAccessToken+      (\ s a -> s{_pjtaAccessToken = a})++-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").+pjtaUploadType :: Lens' ProjectsJobTriggersActivate (Maybe Text)+pjtaUploadType+  = lens _pjtaUploadType+      (\ s a -> s{_pjtaUploadType = a})++-- | Multipart request metadata.+pjtaPayload :: Lens' ProjectsJobTriggersActivate GooglePrivacyDlpV2ActivateJobTriggerRequest+pjtaPayload+  = lens _pjtaPayload (\ s a -> s{_pjtaPayload = a})++-- | Resource name of the trigger to activate, for example+-- \`projects\/dlp-test-project\/jobTriggers\/53234423\`.+pjtaName :: Lens' ProjectsJobTriggersActivate Text+pjtaName = lens _pjtaName (\ s a -> s{_pjtaName = a})++-- | JSONP+pjtaCallback :: Lens' ProjectsJobTriggersActivate (Maybe Text)+pjtaCallback+  = lens _pjtaCallback (\ s a -> s{_pjtaCallback = a})++instance GoogleRequest ProjectsJobTriggersActivate+         where+        type Rs ProjectsJobTriggersActivate =+             GooglePrivacyDlpV2DlpJob+        type Scopes ProjectsJobTriggersActivate =+             '["https://www.googleapis.com/auth/cloud-platform"]+        requestClient ProjectsJobTriggersActivate'{..}+          = go _pjtaName _pjtaXgafv _pjtaUploadProtocol+              _pjtaAccessToken+              _pjtaUploadType+              _pjtaCallback+              (Just AltJSON)+              _pjtaPayload+              dLPService+          where go+                  = buildClient+                      (Proxy :: Proxy ProjectsJobTriggersActivateResource)+                      mempty
gen/Network/Google/Resource/DLP/Projects/JobTriggers/Create.hs view
@@ -70,7 +70,8 @@ -- more. -- -- /See:/ 'projectsJobTriggersCreate' smart constructor.-data ProjectsJobTriggersCreate = ProjectsJobTriggersCreate'+data ProjectsJobTriggersCreate =+  ProjectsJobTriggersCreate'     { _pjtcParent         :: !Text     , _pjtcXgafv          :: !(Maybe Xgafv)     , _pjtcUploadProtocol :: !(Maybe Text)@@ -78,8 +79,10 @@     , _pjtcUploadType     :: !(Maybe Text)     , _pjtcPayload        :: !GooglePrivacyDlpV2CreateJobTriggerRequest     , _pjtcCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsJobTriggersCreate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -102,7 +105,7 @@     -> GooglePrivacyDlpV2CreateJobTriggerRequest -- ^ 'pjtcPayload'     -> ProjectsJobTriggersCreate projectsJobTriggersCreate pPjtcParent_ pPjtcPayload_ =-    ProjectsJobTriggersCreate'+  ProjectsJobTriggersCreate'     { _pjtcParent = pPjtcParent_     , _pjtcXgafv = Nothing     , _pjtcUploadProtocol = Nothing@@ -111,6 +114,7 @@     , _pjtcPayload = pPjtcPayload_     , _pjtcCallback = Nothing     }+  -- | The parent resource name, for example projects\/my-project-id. pjtcParent :: Lens' ProjectsJobTriggersCreate Text
gen/Network/Google/Resource/DLP/Projects/JobTriggers/Delete.hs view
@@ -64,15 +64,18 @@ -- more. -- -- /See:/ 'projectsJobTriggersDelete' smart constructor.-data ProjectsJobTriggersDelete = ProjectsJobTriggersDelete'+data ProjectsJobTriggersDelete =+  ProjectsJobTriggersDelete'     { _pjtdXgafv          :: !(Maybe Xgafv)     , _pjtdUploadProtocol :: !(Maybe Text)     , _pjtdAccessToken    :: !(Maybe Text)     , _pjtdUploadType     :: !(Maybe Text)     , _pjtdName           :: !Text     , _pjtdCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsJobTriggersDelete' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -92,7 +95,7 @@     :: Text -- ^ 'pjtdName'     -> ProjectsJobTriggersDelete projectsJobTriggersDelete pPjtdName_ =-    ProjectsJobTriggersDelete'+  ProjectsJobTriggersDelete'     { _pjtdXgafv = Nothing     , _pjtdUploadProtocol = Nothing     , _pjtdAccessToken = Nothing@@ -100,6 +103,7 @@     , _pjtdName = pPjtdName_     , _pjtdCallback = Nothing     }+  -- | V1 error format. pjtdXgafv :: Lens' ProjectsJobTriggersDelete (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Projects/JobTriggers/Get.hs view
@@ -64,15 +64,18 @@ -- more. -- -- /See:/ 'projectsJobTriggersGet' smart constructor.-data ProjectsJobTriggersGet = ProjectsJobTriggersGet'+data ProjectsJobTriggersGet =+  ProjectsJobTriggersGet'     { _pjtgXgafv          :: !(Maybe Xgafv)     , _pjtgUploadProtocol :: !(Maybe Text)     , _pjtgAccessToken    :: !(Maybe Text)     , _pjtgUploadType     :: !(Maybe Text)     , _pjtgName           :: !Text     , _pjtgCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsJobTriggersGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -92,7 +95,7 @@     :: Text -- ^ 'pjtgName'     -> ProjectsJobTriggersGet projectsJobTriggersGet pPjtgName_ =-    ProjectsJobTriggersGet'+  ProjectsJobTriggersGet'     { _pjtgXgafv = Nothing     , _pjtgUploadProtocol = Nothing     , _pjtgAccessToken = Nothing@@ -100,6 +103,7 @@     , _pjtgName = pPjtgName_     , _pjtgCallback = Nothing     }+  -- | V1 error format. pjtgXgafv :: Lens' ProjectsJobTriggersGet (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Projects/JobTriggers/List.hs view
@@ -41,6 +41,7 @@     , pjtlOrderBy     , pjtlAccessToken     , pjtlUploadType+    , pjtlFilter     , pjtlPageToken     , pjtlPageSize     , pjtlCallback@@ -60,30 +61,35 @@                QueryParam "orderBy" Text :>                  QueryParam "access_token" Text :>                    QueryParam "uploadType" Text :>-                     QueryParam "pageToken" Text :>-                       QueryParam "pageSize" (Textual Int32) :>-                         QueryParam "callback" Text :>-                           QueryParam "alt" AltJSON :>-                             Get '[JSON]-                               GooglePrivacyDlpV2ListJobTriggersResponse+                     QueryParam "filter" Text :>+                       QueryParam "pageToken" Text :>+                         QueryParam "pageSize" (Textual Int32) :>+                           QueryParam "callback" Text :>+                             QueryParam "alt" AltJSON :>+                               Get '[JSON]+                                 GooglePrivacyDlpV2ListJobTriggersResponse  -- | Lists job triggers. See -- https:\/\/cloud.google.com\/dlp\/docs\/creating-job-triggers to learn -- more. -- -- /See:/ 'projectsJobTriggersList' smart constructor.-data ProjectsJobTriggersList = ProjectsJobTriggersList'+data ProjectsJobTriggersList =+  ProjectsJobTriggersList'     { _pjtlParent         :: !Text     , _pjtlXgafv          :: !(Maybe Xgafv)     , _pjtlUploadProtocol :: !(Maybe Text)     , _pjtlOrderBy        :: !(Maybe Text)     , _pjtlAccessToken    :: !(Maybe Text)     , _pjtlUploadType     :: !(Maybe Text)+    , _pjtlFilter         :: !(Maybe Text)     , _pjtlPageToken      :: !(Maybe Text)     , _pjtlPageSize       :: !(Maybe (Textual Int32))     , _pjtlCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsJobTriggersList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -100,6 +106,8 @@ -- -- * 'pjtlUploadType' --+-- * 'pjtlFilter'+-- -- * 'pjtlPageToken' -- -- * 'pjtlPageSize'@@ -109,18 +117,20 @@     :: Text -- ^ 'pjtlParent'     -> ProjectsJobTriggersList projectsJobTriggersList pPjtlParent_ =-    ProjectsJobTriggersList'+  ProjectsJobTriggersList'     { _pjtlParent = pPjtlParent_     , _pjtlXgafv = Nothing     , _pjtlUploadProtocol = Nothing     , _pjtlOrderBy = Nothing     , _pjtlAccessToken = Nothing     , _pjtlUploadType = Nothing+    , _pjtlFilter = Nothing     , _pjtlPageToken = Nothing     , _pjtlPageSize = Nothing     , _pjtlCallback = Nothing     } + -- | The parent resource name, for example \`projects\/my-project-id\`. pjtlParent :: Lens' ProjectsJobTriggersList Text pjtlParent@@ -143,7 +153,8 @@ -- insignificant. Example: \`name asc,update_time, create_time desc\` -- Supported fields are: - \`create_time\`: corresponds to time the -- JobTrigger was created. - \`update_time\`: corresponds to time the--- JobTrigger was last updated. - \`name\`: corresponds to JobTrigger\'s+-- JobTrigger was last updated. - \`last_run_time\`: corresponds to the+-- last time the JobTrigger ran. - \`name\`: corresponds to JobTrigger\'s -- name. - \`display_name\`: corresponds to JobTrigger\'s display name. - -- \`status\`: corresponds to JobTrigger\'s status. pjtlOrderBy :: Lens' ProjectsJobTriggersList (Maybe Text)@@ -162,6 +173,26 @@   = lens _pjtlUploadType       (\ s a -> s{_pjtlUploadType = a}) +-- | Optional. Allows filtering. Supported syntax: * Filter expressions are+-- made up of one or more restrictions. * Restrictions can be combined by+-- \`AND\` or \`OR\` logical operators. A sequence of restrictions+-- implicitly uses \`AND\`. * A restriction has the form of \` \`. *+-- Supported fields\/values for inspect jobs: - \`status\` -+-- HEALTHY|PAUSED|CANCELLED - \`inspected_storage\` -+-- DATASTORE|CLOUD_STORAGE|BIGQUERY - \'last_run_time\` - RFC 3339+-- formatted timestamp, surrounded by quotation marks. Nanoseconds are+-- ignored. - \'error_count\' - Number of errors that have occurred while+-- running. * The operator must be \`=\` or \`!=\` for status and+-- inspected_storage. Examples: * inspected_storage = cloud_storage AND+-- status = HEALTHY * inspected_storage = cloud_storage OR+-- inspected_storage = bigquery * inspected_storage = cloud_storage AND+-- (state = PAUSED OR state = HEALTHY) * last_run_time >+-- \\\"2017-12-12T00:00:00+00:00\\\" The length of this field should be no+-- more than 500 characters.+pjtlFilter :: Lens' ProjectsJobTriggersList (Maybe Text)+pjtlFilter+  = lens _pjtlFilter (\ s a -> s{_pjtlFilter = a})+ -- | Optional page token to continue retrieval. Comes from previous call to -- ListJobTriggers. \`order_by\` field must not change for subsequent -- calls.@@ -191,6 +222,7 @@               _pjtlOrderBy               _pjtlAccessToken               _pjtlUploadType+              _pjtlFilter               _pjtlPageToken               _pjtlPageSize               _pjtlCallback
gen/Network/Google/Resource/DLP/Projects/JobTriggers/Patch.hs view
@@ -67,7 +67,8 @@ -- more. -- -- /See:/ 'projectsJobTriggersPatch' smart constructor.-data ProjectsJobTriggersPatch = ProjectsJobTriggersPatch'+data ProjectsJobTriggersPatch =+  ProjectsJobTriggersPatch'     { _pjtpXgafv          :: !(Maybe Xgafv)     , _pjtpUploadProtocol :: !(Maybe Text)     , _pjtpAccessToken    :: !(Maybe Text)@@ -75,8 +76,10 @@     , _pjtpPayload        :: !GooglePrivacyDlpV2UpdateJobTriggerRequest     , _pjtpName           :: !Text     , _pjtpCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsJobTriggersPatch' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -99,7 +102,7 @@     -> Text -- ^ 'pjtpName'     -> ProjectsJobTriggersPatch projectsJobTriggersPatch pPjtpPayload_ pPjtpName_ =-    ProjectsJobTriggersPatch'+  ProjectsJobTriggersPatch'     { _pjtpXgafv = Nothing     , _pjtpUploadProtocol = Nothing     , _pjtpAccessToken = Nothing@@ -108,6 +111,7 @@     , _pjtpName = pPjtpName_     , _pjtpCallback = Nothing     }+  -- | V1 error format. pjtpXgafv :: Lens' ProjectsJobTriggersPatch (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Create.hs view
@@ -68,7 +68,8 @@ -- learn more. -- -- /See:/ 'projectsStoredInfoTypesCreate' smart constructor.-data ProjectsStoredInfoTypesCreate = ProjectsStoredInfoTypesCreate'+data ProjectsStoredInfoTypesCreate =+  ProjectsStoredInfoTypesCreate'     { _psitcParent         :: !Text     , _psitcXgafv          :: !(Maybe Xgafv)     , _psitcUploadProtocol :: !(Maybe Text)@@ -76,8 +77,10 @@     , _psitcUploadType     :: !(Maybe Text)     , _psitcPayload        :: !GooglePrivacyDlpV2CreateStoredInfoTypeRequest     , _psitcCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsStoredInfoTypesCreate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -100,7 +103,7 @@     -> GooglePrivacyDlpV2CreateStoredInfoTypeRequest -- ^ 'psitcPayload'     -> ProjectsStoredInfoTypesCreate projectsStoredInfoTypesCreate pPsitcParent_ pPsitcPayload_ =-    ProjectsStoredInfoTypesCreate'+  ProjectsStoredInfoTypesCreate'     { _psitcParent = pPsitcParent_     , _psitcXgafv = Nothing     , _psitcUploadProtocol = Nothing@@ -109,6 +112,7 @@     , _psitcPayload = pPsitcPayload_     , _psitcCallback = Nothing     }+  -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id.
gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Delete.hs view
@@ -64,15 +64,18 @@ -- learn more. -- -- /See:/ 'projectsStoredInfoTypesDelete' smart constructor.-data ProjectsStoredInfoTypesDelete = ProjectsStoredInfoTypesDelete'+data ProjectsStoredInfoTypesDelete =+  ProjectsStoredInfoTypesDelete'     { _psitdXgafv          :: !(Maybe Xgafv)     , _psitdUploadProtocol :: !(Maybe Text)     , _psitdAccessToken    :: !(Maybe Text)     , _psitdUploadType     :: !(Maybe Text)     , _psitdName           :: !Text     , _psitdCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsStoredInfoTypesDelete' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -92,7 +95,7 @@     :: Text -- ^ 'psitdName'     -> ProjectsStoredInfoTypesDelete projectsStoredInfoTypesDelete pPsitdName_ =-    ProjectsStoredInfoTypesDelete'+  ProjectsStoredInfoTypesDelete'     { _psitdXgafv = Nothing     , _psitdUploadProtocol = Nothing     , _psitdAccessToken = Nothing@@ -100,6 +103,7 @@     , _psitdName = pPsitdName_     , _psitdCallback = Nothing     }+  -- | V1 error format. psitdXgafv :: Lens' ProjectsStoredInfoTypesDelete (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Get.hs view
@@ -64,15 +64,18 @@ -- learn more. -- -- /See:/ 'projectsStoredInfoTypesGet' smart constructor.-data ProjectsStoredInfoTypesGet = ProjectsStoredInfoTypesGet'+data ProjectsStoredInfoTypesGet =+  ProjectsStoredInfoTypesGet'     { _psitgXgafv          :: !(Maybe Xgafv)     , _psitgUploadProtocol :: !(Maybe Text)     , _psitgAccessToken    :: !(Maybe Text)     , _psitgUploadType     :: !(Maybe Text)     , _psitgName           :: !Text     , _psitgCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsStoredInfoTypesGet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -92,7 +95,7 @@     :: Text -- ^ 'psitgName'     -> ProjectsStoredInfoTypesGet projectsStoredInfoTypesGet pPsitgName_ =-    ProjectsStoredInfoTypesGet'+  ProjectsStoredInfoTypesGet'     { _psitgXgafv = Nothing     , _psitgUploadProtocol = Nothing     , _psitgAccessToken = Nothing@@ -100,6 +103,7 @@     , _psitgName = pPsitgName_     , _psitgCallback = Nothing     }+  -- | V1 error format. psitgXgafv :: Lens' ProjectsStoredInfoTypesGet (Maybe Xgafv)
gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/List.hs view
@@ -72,7 +72,8 @@ -- learn more. -- -- /See:/ 'projectsStoredInfoTypesList' smart constructor.-data ProjectsStoredInfoTypesList = ProjectsStoredInfoTypesList'+data ProjectsStoredInfoTypesList =+  ProjectsStoredInfoTypesList'     { _psitlParent         :: !Text     , _psitlXgafv          :: !(Maybe Xgafv)     , _psitlUploadProtocol :: !(Maybe Text)@@ -82,8 +83,10 @@     , _psitlPageToken      :: !(Maybe Text)     , _psitlPageSize       :: !(Maybe (Textual Int32))     , _psitlCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsStoredInfoTypesList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -109,7 +112,7 @@     :: Text -- ^ 'psitlParent'     -> ProjectsStoredInfoTypesList projectsStoredInfoTypesList pPsitlParent_ =-    ProjectsStoredInfoTypesList'+  ProjectsStoredInfoTypesList'     { _psitlParent = pPsitlParent_     , _psitlXgafv = Nothing     , _psitlUploadProtocol = Nothing@@ -120,6 +123,7 @@     , _psitlPageSize = Nothing     , _psitlCallback = Nothing     }+  -- | The parent resource name, for example projects\/my-project-id or -- organizations\/my-org-id.
gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Patch.hs view
@@ -69,7 +69,8 @@ -- learn more. -- -- /See:/ 'projectsStoredInfoTypesPatch' smart constructor.-data ProjectsStoredInfoTypesPatch = ProjectsStoredInfoTypesPatch'+data ProjectsStoredInfoTypesPatch =+  ProjectsStoredInfoTypesPatch'     { _psitpXgafv          :: !(Maybe Xgafv)     , _psitpUploadProtocol :: !(Maybe Text)     , _psitpAccessToken    :: !(Maybe Text)@@ -77,8 +78,10 @@     , _psitpPayload        :: !GooglePrivacyDlpV2UpdateStoredInfoTypeRequest     , _psitpName           :: !Text     , _psitpCallback       :: !(Maybe Text)-    } deriving (Eq,Show,Data,Typeable,Generic)+    }+  deriving (Eq, Show, Data, Typeable, Generic) + -- | Creates a value of 'ProjectsStoredInfoTypesPatch' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired:@@ -101,7 +104,7 @@     -> Text -- ^ 'psitpName'     -> ProjectsStoredInfoTypesPatch projectsStoredInfoTypesPatch pPsitpPayload_ pPsitpName_ =-    ProjectsStoredInfoTypesPatch'+  ProjectsStoredInfoTypesPatch'     { _psitpXgafv = Nothing     , _psitpUploadProtocol = Nothing     , _psitpAccessToken = Nothing@@ -110,6 +113,7 @@     , _psitpName = pPsitpName_     , _psitpCallback = Nothing     }+  -- | V1 error format. psitpXgafv :: Lens' ProjectsStoredInfoTypesPatch (Maybe Xgafv)
gogol-dlp.cabal view
@@ -1,5 +1,5 @@ name:                  gogol-dlp-version:               0.4.0+version:               0.5.0 synopsis:              Google Cloud Data Loss Prevention (DLP) SDK. homepage:              https://github.com/brendanhay/gogol bug-reports:           https://github.com/brendanhay/gogol/issues@@ -72,6 +72,7 @@         , Network.Google.Resource.DLP.Projects.InspectTemplates.Get         , Network.Google.Resource.DLP.Projects.InspectTemplates.List         , Network.Google.Resource.DLP.Projects.InspectTemplates.Patch+        , Network.Google.Resource.DLP.Projects.JobTriggers.Activate         , Network.Google.Resource.DLP.Projects.JobTriggers.Create         , Network.Google.Resource.DLP.Projects.JobTriggers.Delete         , Network.Google.Resource.DLP.Projects.JobTriggers.Get@@ -88,5 +89,5 @@         , Network.Google.DLP.Types.Sum      build-depends:-          gogol-core == 0.4.0.*+          gogol-core == 0.5.0.*         , base       >= 4.7 && < 5