diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.3.0`
+`0.5.0`
 
 
 ## Description
diff --git a/gen/Network/Google/DLP.hs b/gen/Network/Google/DLP.hs
--- a/gen/Network/Google/DLP.hs
+++ b/gen/Network/Google/DLP.hs
@@ -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
diff --git a/gen/Network/Google/DLP/Types.hs b/gen/Network/Google/DLP/Types.hs
--- a/gen/Network/Google/DLP/Types.hs
+++ b/gen/Network/Google/DLP/Types.hs
@@ -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
diff --git a/gen/Network/Google/DLP/Types/Product.hs b/gen/Network/Google/DLP/Types/Product.hs
--- a/gen/Network/Google/DLP/Types/Product.hs
+++ b/gen/Network/Google/DLP/Types/Product.hs
@@ -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.
diff --git a/gen/Network/Google/DLP/Types/Sum.hs b/gen/Network/Google/DLP/Types/Sum.hs
--- a/gen/Network/Google/DLP/Types/Sum.hs
+++ b/gen/Network/Google/DLP/Types/Sum.hs
@@ -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.
diff --git a/gen/Network/Google/Resource/DLP/InfoTypes/List.hs b/gen/Network/Google/Resource/DLP/InfoTypes/List.hs
--- a/gen/Network/Google/Resource/DLP/InfoTypes/List.hs
+++ b/gen/Network/Google/Resource/DLP/InfoTypes/List.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Create.hs b/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Create.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Create.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Create.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Delete.hs b/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Delete.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Delete.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Delete.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Get.hs b/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Get.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Get.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Get.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/List.hs b/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/List.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/List.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/List.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Patch.hs b/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Patch.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Patch.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/DeidentifyTemplates/Patch.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Create.hs b/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Create.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Create.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Create.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Delete.hs b/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Delete.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Delete.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Delete.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Get.hs b/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Get.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Get.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Get.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/List.hs b/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/List.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/List.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/List.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Patch.hs b/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Patch.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Patch.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/InspectTemplates/Patch.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Create.hs b/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Create.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Create.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Create.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Delete.hs b/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Delete.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Delete.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Delete.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Get.hs b/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Get.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Get.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Get.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/List.hs b/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/List.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/List.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/List.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Patch.hs b/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Patch.hs
--- a/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Patch.hs
+++ b/gen/Network/Google/Resource/DLP/Organizations/StoredInfoTypes/Patch.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Projects/Content/Deidentify.hs b/gen/Network/Google/Resource/DLP/Projects/Content/Deidentify.hs
--- a/gen/Network/Google/Resource/DLP/Projects/Content/Deidentify.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/Content/Deidentify.hs
@@ -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
diff --git a/gen/Network/Google/Resource/DLP/Projects/Content/Inspect.hs b/gen/Network/Google/Resource/DLP/Projects/Content/Inspect.hs
--- a/gen/Network/Google/Resource/DLP/Projects/Content/Inspect.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/Content/Inspect.hs
@@ -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
diff --git a/gen/Network/Google/Resource/DLP/Projects/Content/Reidentify.hs b/gen/Network/Google/Resource/DLP/Projects/Content/Reidentify.hs
--- a/gen/Network/Google/Resource/DLP/Projects/Content/Reidentify.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/Content/Reidentify.hs
@@ -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
diff --git a/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Create.hs b/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Create.hs
--- a/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Create.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Create.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Delete.hs b/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Delete.hs
--- a/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Delete.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Delete.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Get.hs b/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Get.hs
--- a/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Get.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Get.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/List.hs b/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/List.hs
--- a/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/List.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/List.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Patch.hs b/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Patch.hs
--- a/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Patch.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/DeidentifyTemplates/Patch.hs
@@ -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 =
diff --git a/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Cancel.hs b/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Cancel.hs
--- a/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Cancel.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Cancel.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Create.hs b/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Create.hs
--- a/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Create.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Create.hs
@@ -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
diff --git a/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Delete.hs b/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Delete.hs
--- a/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Delete.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Delete.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Get.hs b/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Get.hs
--- a/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Get.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/DlpJobs/Get.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/DlpJobs/List.hs b/gen/Network/Google/Resource/DLP/Projects/DlpJobs/List.hs
--- a/gen/Network/Google/Resource/DLP/Projects/DlpJobs/List.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/DlpJobs/List.hs
@@ -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
diff --git a/gen/Network/Google/Resource/DLP/Projects/Image/Redact.hs b/gen/Network/Google/Resource/DLP/Projects/Image/Redact.hs
--- a/gen/Network/Google/Resource/DLP/Projects/Image/Redact.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/Image/Redact.hs
@@ -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
diff --git a/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Create.hs b/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Create.hs
--- a/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Create.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Create.hs
@@ -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.
diff --git a/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Delete.hs b/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Delete.hs
--- a/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Delete.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Delete.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Get.hs b/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Get.hs
--- a/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Get.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Get.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/List.hs b/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/List.hs
--- a/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/List.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/List.hs
@@ -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.
diff --git a/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Patch.hs b/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Patch.hs
--- a/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Patch.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/InspectTemplates/Patch.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Activate.hs b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Activate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Activate.hs
@@ -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
diff --git a/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Create.hs b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Create.hs
--- a/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Create.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Create.hs
@@ -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
diff --git a/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Delete.hs b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Delete.hs
--- a/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Delete.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Delete.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Get.hs b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Get.hs
--- a/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Get.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Get.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/JobTriggers/List.hs b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/List.hs
--- a/gen/Network/Google/Resource/DLP/Projects/JobTriggers/List.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/List.hs
@@ -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
diff --git a/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Patch.hs b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Patch.hs
--- a/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Patch.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/JobTriggers/Patch.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Create.hs b/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Create.hs
--- a/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Create.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Create.hs
@@ -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.
diff --git a/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Delete.hs b/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Delete.hs
--- a/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Delete.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Delete.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Get.hs b/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Get.hs
--- a/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Get.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Get.hs
@@ -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)
diff --git a/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/List.hs b/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/List.hs
--- a/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/List.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/List.hs
@@ -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.
diff --git a/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Patch.hs b/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Patch.hs
--- a/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Patch.hs
+++ b/gen/Network/Google/Resource/DLP/Projects/StoredInfoTypes/Patch.hs
@@ -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)
diff --git a/gogol-dlp.cabal b/gogol-dlp.cabal
--- a/gogol-dlp.cabal
+++ b/gogol-dlp.cabal
@@ -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
