blob: 8470d93c36b9cff9b177890dd1380a4b03732e6b [file] [log] [blame]
Bu Sun Kim65020912020-05-20 12:08:20 -07001<html><body>
2<style>
3
4body, h1, h2, h3, div, span, p, pre, a {
5 margin: 0;
6 padding: 0;
7 border: 0;
8 font-weight: inherit;
9 font-style: inherit;
10 font-size: 100%;
11 font-family: inherit;
12 vertical-align: baseline;
13}
14
15body {
16 font-size: 13px;
17 padding: 1em;
18}
19
20h1 {
21 font-size: 26px;
22 margin-bottom: 1em;
23}
24
25h2 {
26 font-size: 24px;
27 margin-bottom: 1em;
28}
29
30h3 {
31 font-size: 20px;
32 margin-bottom: 1em;
33 margin-top: 1em;
34}
35
36pre, code {
37 line-height: 1.5;
38 font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
39}
40
41pre {
42 margin-top: 0.5em;
43}
44
45h1, h2, h3, p {
46 font-family: Arial, sans serif;
47}
48
49h1, h2, h3 {
50 border-bottom: solid #CCC 1px;
51}
52
53.toc_element {
54 margin-top: 0.5em;
55}
56
57.firstline {
58 margin-left: 2 em;
59}
60
61.method {
62 margin-top: 1em;
63 border: solid 1px #CCC;
64 padding: 1em;
65 background: #EEE;
66}
67
68.details {
69 font-weight: bold;
70 font-size: 14px;
71}
72
73</style>
74
75<h1><a href="dlp_v2.html">Cloud Data Loss Prevention (DLP) API</a> . <a href="dlp_v2.projects.html">projects</a> . <a href="dlp_v2.projects.locations.html">locations</a> . <a href="dlp_v2.projects.locations.deidentifyTemplates.html">deidentifyTemplates</a></h1>
76<h2>Instance Methods</h2>
77<p class="toc_element">
78 <code><a href="#create">create(parent, locationId, body=None, x__xgafv=None)</a></code></p>
79<p class="firstline">Creates a DeidentifyTemplate for re-using frequently used configuration</p>
80<p class="toc_element">
81 <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
82<p class="firstline">Deletes a DeidentifyTemplate.</p>
83<p class="toc_element">
84 <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
85<p class="firstline">Gets a DeidentifyTemplate.</p>
86<p class="toc_element">
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070087 <code><a href="#list">list(parent, locationId, pageSize=None, orderBy=None, pageToken=None, x__xgafv=None)</a></code></p>
Bu Sun Kim65020912020-05-20 12:08:20 -070088<p class="firstline">Lists DeidentifyTemplates.</p>
89<p class="toc_element">
90 <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
91<p class="firstline">Retrieves the next page of results.</p>
92<p class="toc_element">
93 <code><a href="#patch">patch(name, body=None, x__xgafv=None)</a></code></p>
94<p class="firstline">Updates the DeidentifyTemplate.</p>
95<h3>Method Details</h3>
96<div class="method">
97 <code class="details" id="create">create(parent, locationId, body=None, x__xgafv=None)</code>
98 <pre>Creates a DeidentifyTemplate for re-using frequently used configuration
99for de-identifying content, images, and storage.
100See https://cloud.google.com/dlp/docs/creating-templates-deid to learn
101more.
102
103Args:
104 parent: string, Required. The parent resource name, for example projects/my-project-id or
105organizations/my-org-id. (required)
106 locationId: string, The geographic location to store the deidentification template. Reserved
107for future extensions. (required)
108 body: object, The request body.
109 The object takes the form of:
110
111{ # Request message for CreateDeidentifyTemplate.
112 &quot;templateId&quot;: &quot;A String&quot;, # The template id can contain uppercase and lowercase letters,
113 # numbers, and hyphens; that is, it must match the regular
114 # expression: `[a-zA-Z\\d-_]+`. The maximum length is 100
115 # characters. Can be empty to allow the system to generate one.
116 &quot;deidentifyTemplate&quot;: { # DeidentifyTemplates contains instructions on how to de-identify content. # Required. The DeidentifyTemplate to create.
117 # See https://cloud.google.com/dlp/docs/concepts-templates to learn more.
118 &quot;name&quot;: &quot;A String&quot;, # Output only. The template name.
119 #
120 # The template will have one of the following formats:
121 # `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR
122 # `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`
123 &quot;description&quot;: &quot;A String&quot;, # Short description (max 256 chars).
124 &quot;displayName&quot;: &quot;A String&quot;, # Display name (max 256 chars).
125 &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of an inspectTemplate.
126 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of an inspectTemplate.
127 &quot;deidentifyConfig&quot;: { # The configuration that controls how the data will change. # ///////////// // The core content of the template // ///////////////
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -0700128 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the dataset as free-form text and apply the same free text
129 # transformation everywhere.
130 # apply various `PrimitiveTransformation`s to each finding, where the
131 # transformation is applied to only values that were identified as a specific
132 # info_type.
133 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
134 # for a given infoType.
135 { # A transformation to apply to text that is identified as a specific
136 # info_type.
137 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
138 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
139 # portion of the value.
140 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
141 },
142 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
143 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
144 # to learn more.
145 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
146 # If set, must also set cryptoKey. If set, shift will be consistent for the
147 # given context.
148 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
149 },
150 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
151 # range (inclusive ends). Negative means shift to earlier in time. Must not
152 # be more than 365250 days (1000 years) each direction.
153 #
154 # For example, 3 means shift date to at most 3 days into the future.
155 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
156 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
157 # results in the same shift for the same context and crypto_key. If
158 # set, must also set context. Can only be applied to table items.
159 # a key encryption key (KEK) stored by KMS).
160 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
161 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
162 # unwrap the data crypto key.
163 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
164 # leaking the key. Choose another type of key if possible.
165 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
166 },
167 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
168 # It will be discarded after the request finishes.
169 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
170 # This is an arbitrary string used to differentiate different keys.
171 # A unique key is generated per name: two separate `TransientCryptoKey`
172 # protos share the same generated key if their names are the same.
173 # When the data crypto key is generated, this name is not used in any way
174 # (repeating the api call will result in a different key being generated).
175 },
176 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
177 # The wrapped key must be a 128/192/256 bit key.
178 # Authorization requires the following IAM permissions when sending a request
179 # to perform a crypto transformation using a kms-wrapped crypto key:
180 # dlp.kms.encrypt
181 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
182 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
183 },
184 },
185 },
186 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
187 },
188 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
189 # Uses SHA-256.
190 # The key size must be either 32 or 64 bytes.
191 # Outputs a base64 encoded representation of the hashed output
192 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
193 # Currently, only string and integer values can be hashed.
194 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
195 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
196 # a key encryption key (KEK) stored by KMS).
197 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
198 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
199 # unwrap the data crypto key.
200 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
201 # leaking the key. Choose another type of key if possible.
202 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
203 },
204 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
205 # It will be discarded after the request finishes.
206 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
207 # This is an arbitrary string used to differentiate different keys.
208 # A unique key is generated per name: two separate `TransientCryptoKey`
209 # protos share the same generated key if their names are the same.
210 # When the data crypto key is generated, this name is not used in any way
211 # (repeating the api call will result in a different key being generated).
212 },
213 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
214 # The wrapped key must be a 128/192/256 bit key.
215 # Authorization requires the following IAM permissions when sending a request
216 # to perform a crypto transformation using a kms-wrapped crypto key:
217 # dlp.kms.encrypt
218 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
219 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
220 },
221 },
222 },
223 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
224 # (FPE) with the FFX mode of operation; however when used in the
225 # `ReidentifyContent` API method, it serves the opposite function by reversing
226 # the surrogate back into the original identifier. The identifier must be
227 # encoded as ASCII. For a given crypto key and context, the same identifier
228 # will be replaced with the same surrogate. Identifiers must be at least two
229 # characters long. In the case that the identifier is the empty string, it will
230 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
231 # more.
232 #
233 # Note: We recommend using CryptoDeterministicConfig for all use cases which
234 # do not require preserving the input alphabet space and size, plus warrant
235 # referential integrity.
236 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
237 # This annotation will be applied to the surrogate by prefixing it with
238 # the name of the custom infoType followed by the number of
239 # characters comprising the surrogate. The following scheme defines the
240 # format: info_type_name(surrogate_character_count):surrogate
241 #
242 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
243 # the surrogate is &#x27;abc&#x27;, the full replacement value
244 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
245 #
246 # This annotation identifies the surrogate when inspecting content using the
247 # custom infoType
248 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
249 # This facilitates reversal of the surrogate when it occurs in free text.
250 #
251 # In order for inspection to work properly, the name of this infoType must
252 # not occur naturally anywhere in your data; otherwise, inspection may
253 # find a surrogate that does not correspond to an actual identifier.
254 # Therefore, choose your custom infoType name carefully after considering
255 # what your data looks like. One way to select a name that has a high chance
256 # of yielding reliable detection is to include one or more unicode characters
257 # that are highly improbable to exist in your data.
258 # For example, assuming your data is entered from a regular ASCII keyboard,
259 # the symbol with the hex code point 29DD might be used like so:
260 # ⧝MY_TOKEN_TYPE
261 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
262 # creating a CustomInfoType, or one of the names listed
263 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
264 # a built-in type. InfoType names should conform to the pattern
265 # `[a-zA-Z0-9_]{1,64}`.
266 },
267 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
268 # identifier in two different contexts won&#x27;t be given the same surrogate. If
269 # the context is not set, a default tweak will be used.
270 #
271 # If the context is set but:
272 #
273 # 1. there is no record present when transforming a given value or
274 # 1. the field is not present when transforming a given value,
275 #
276 # a default tweak will be used.
277 #
278 # Note that case (1) is expected when an `InfoTypeTransformation` is
279 # applied to both structured and non-structured `ContentItem`s.
280 # Currently, the referenced field may be of value type integer or string.
281 #
282 # The tweak is constructed as a sequence of bytes in big endian byte order
283 # such that:
284 #
285 # - a 64 bit integer is encoded followed by a single byte of value 1
286 # - a string is encoded in UTF-8 format followed by a single byte of value 2
287 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
288 },
289 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
290 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
291 # a key encryption key (KEK) stored by KMS).
292 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
293 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
294 # unwrap the data crypto key.
295 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
296 # leaking the key. Choose another type of key if possible.
297 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
298 },
299 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
300 # It will be discarded after the request finishes.
301 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
302 # This is an arbitrary string used to differentiate different keys.
303 # A unique key is generated per name: two separate `TransientCryptoKey`
304 # protos share the same generated key if their names are the same.
305 # When the data crypto key is generated, this name is not used in any way
306 # (repeating the api call will result in a different key being generated).
307 },
308 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
309 # The wrapped key must be a 128/192/256 bit key.
310 # Authorization requires the following IAM permissions when sending a request
311 # to perform a crypto transformation using a kms-wrapped crypto key:
312 # dlp.kms.encrypt
313 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
314 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
315 },
316 },
317 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
318 # that the FFX mode natively supports. This happens before/after
319 # encryption/decryption.
320 # Each character listed must appear only once.
321 # Number of characters must be in the range [2, 95].
322 # This must be encoded as ASCII.
323 # The order of characters does not matter.
324 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
325 },
326 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
327 # input. Outputs a base64 encoded representation of the encrypted output.
328 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
329 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
330 # This annotation will be applied to the surrogate by prefixing it with
331 # the name of the custom info type followed by the number of
332 # characters comprising the surrogate. The following scheme defines the
333 # format: {info type name}({surrogate character count}):{surrogate}
334 #
335 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
336 # the surrogate is &#x27;abc&#x27;, the full replacement value
337 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
338 #
339 # This annotation identifies the surrogate when inspecting content using the
340 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
341 # surrogate when it occurs in free text.
342 #
343 # Note: For record transformations where the entire cell in a table is being
344 # transformed, surrogates are not mandatory. Surrogates are used to denote
345 # the location of the token and are necessary for re-identification in free
346 # form text.
347 #
348 # In order for inspection to work properly, the name of this info type must
349 # not occur naturally anywhere in your data; otherwise, inspection may either
350 #
351 # - reverse a surrogate that does not correspond to an actual identifier
352 # - be unable to parse the surrogate and result in an error
353 #
354 # Therefore, choose your custom info type name carefully after considering
355 # what your data looks like. One way to select a name that has a high chance
356 # of yielding reliable detection is to include one or more unicode characters
357 # that are highly improbable to exist in your data.
358 # For example, assuming your data is entered from a regular ASCII keyboard,
359 # the symbol with the hex code point 29DD might be used like so:
360 # ⧝MY_TOKEN_TYPE.
361 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
362 # creating a CustomInfoType, or one of the names listed
363 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
364 # a built-in type. InfoType names should conform to the pattern
365 # `[a-zA-Z0-9_]{1,64}`.
366 },
367 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
368 # referential integrity such that the same identifier in two different
369 # contexts will be given a distinct surrogate. The context is appended to
370 # plaintext value being encrypted. On decryption the provided context is
371 # validated against the value used during encryption. If a context was
372 # provided during encryption, same context must be provided during decryption
373 # as well.
374 #
375 # If the context is not set, plaintext would be used as is for encryption.
376 # If the context is set but:
377 #
378 # 1. there is no record present when transforming a given value or
379 # 2. the field is not present when transforming a given value,
380 #
381 # plaintext would be used as is for encryption.
382 #
383 # Note that case (1) is expected when an `InfoTypeTransformation` is
384 # applied to both structured and non-structured `ContentItem`s.
385 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
386 },
387 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
388 # a key encryption key (KEK) stored by KMS).
389 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
390 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
391 # unwrap the data crypto key.
392 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
393 # leaking the key. Choose another type of key if possible.
394 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
395 },
396 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
397 # It will be discarded after the request finishes.
398 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
399 # This is an arbitrary string used to differentiate different keys.
400 # A unique key is generated per name: two separate `TransientCryptoKey`
401 # protos share the same generated key if their names are the same.
402 # When the data crypto key is generated, this name is not used in any way
403 # (repeating the api call will result in a different key being generated).
404 },
405 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
406 # The wrapped key must be a 128/192/256 bit key.
407 # Authorization requires the following IAM permissions when sending a request
408 # to perform a crypto transformation using a kms-wrapped crypto key:
409 # dlp.kms.encrypt
410 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
411 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
412 },
413 },
414 },
415 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
416 # replacement values are dynamically provided by the user for custom behavior,
417 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
418 # This can be used on
419 # data of type: number, long, string, timestamp.
420 # If the bound `Value` type differs from the type of data being transformed, we
421 # will first attempt converting the type of the data to be transformed to match
422 # the type of the bound before comparing.
423 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
424 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
425 { # Bucket is represented as a range, along with replacement values.
426 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
427 # the default behavior will be to hyphenate the min-max range.
428 # Note that for the purposes of inspection or transformation, the number
429 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
430 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
431 # 123456789, the number of bytes would be counted as 9, even though an
432 # int64 only holds up to 8 bytes of data.
433 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
434 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
435 # and time zone are either specified elsewhere or are not significant. The date
436 # is relative to the Proleptic Gregorian Calendar. This can represent:
437 #
438 # * A full date, with non-zero year, month and day values
439 # * A month and day value, with a zero year, e.g. an anniversary
440 # * A year on its own, with zero month and day values
441 # * A year and month value, with a zero day, e.g. a credit card expiration date
442 #
443 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
444 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
445 # a year.
446 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
447 # month and day.
448 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
449 # if specifying a year by itself or a year and month where the day is not
450 # significant.
451 },
452 &quot;stringValue&quot;: &quot;A String&quot;, # string
453 &quot;integerValue&quot;: &quot;A String&quot;, # integer
454 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
455 # or are specified elsewhere. An API may choose to allow leap seconds. Related
456 # types are google.type.Date and `google.protobuf.Timestamp`.
457 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
458 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
459 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
460 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
461 # allow the value 60 if it allows leap-seconds.
462 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
463 },
464 &quot;booleanValue&quot;: True or False, # boolean
465 &quot;floatValue&quot;: 3.14, # float
466 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
467 },
468 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
469 # used.
470 # Note that for the purposes of inspection or transformation, the number
471 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
472 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
473 # 123456789, the number of bytes would be counted as 9, even though an
474 # int64 only holds up to 8 bytes of data.
475 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
476 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
477 # and time zone are either specified elsewhere or are not significant. The date
478 # is relative to the Proleptic Gregorian Calendar. This can represent:
479 #
480 # * A full date, with non-zero year, month and day values
481 # * A month and day value, with a zero year, e.g. an anniversary
482 # * A year on its own, with zero month and day values
483 # * A year and month value, with a zero day, e.g. a credit card expiration date
484 #
485 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
486 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
487 # a year.
488 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
489 # month and day.
490 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
491 # if specifying a year by itself or a year and month where the day is not
492 # significant.
493 },
494 &quot;stringValue&quot;: &quot;A String&quot;, # string
495 &quot;integerValue&quot;: &quot;A String&quot;, # integer
496 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
497 # or are specified elsewhere. An API may choose to allow leap seconds. Related
498 # types are google.type.Date and `google.protobuf.Timestamp`.
499 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
500 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
501 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
502 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
503 # allow the value 60 if it allows leap-seconds.
504 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
505 },
506 &quot;booleanValue&quot;: True or False, # boolean
507 &quot;floatValue&quot;: 3.14, # float
508 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
509 },
510 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
511 # Note that for the purposes of inspection or transformation, the number
512 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
513 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
514 # 123456789, the number of bytes would be counted as 9, even though an
515 # int64 only holds up to 8 bytes of data.
516 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
517 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
518 # and time zone are either specified elsewhere or are not significant. The date
519 # is relative to the Proleptic Gregorian Calendar. This can represent:
520 #
521 # * A full date, with non-zero year, month and day values
522 # * A month and day value, with a zero year, e.g. an anniversary
523 # * A year on its own, with zero month and day values
524 # * A year and month value, with a zero day, e.g. a credit card expiration date
525 #
526 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
527 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
528 # a year.
529 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
530 # month and day.
531 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
532 # if specifying a year by itself or a year and month where the day is not
533 # significant.
534 },
535 &quot;stringValue&quot;: &quot;A String&quot;, # string
536 &quot;integerValue&quot;: &quot;A String&quot;, # integer
537 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
538 # or are specified elsewhere. An API may choose to allow leap seconds. Related
539 # types are google.type.Date and `google.protobuf.Timestamp`.
540 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
541 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
542 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
543 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
544 # allow the value 60 if it allows leap-seconds.
545 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
546 },
547 &quot;booleanValue&quot;: True or False, # boolean
548 &quot;floatValue&quot;: 3.14, # float
549 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
550 },
551 },
552 ],
553 },
554 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
555 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
556 # output would be &#x27;My phone number is &#x27;.
557 },
558 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
559 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
560 # Note that for the purposes of inspection or transformation, the number
561 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
562 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
563 # 123456789, the number of bytes would be counted as 9, even though an
564 # int64 only holds up to 8 bytes of data.
565 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
566 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
567 # and time zone are either specified elsewhere or are not significant. The date
568 # is relative to the Proleptic Gregorian Calendar. This can represent:
569 #
570 # * A full date, with non-zero year, month and day values
571 # * A month and day value, with a zero year, e.g. an anniversary
572 # * A year on its own, with zero month and day values
573 # * A year and month value, with a zero day, e.g. a credit card expiration date
574 #
575 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
576 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
577 # a year.
578 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
579 # month and day.
580 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
581 # if specifying a year by itself or a year and month where the day is not
582 # significant.
583 },
584 &quot;stringValue&quot;: &quot;A String&quot;, # string
585 &quot;integerValue&quot;: &quot;A String&quot;, # integer
586 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
587 # or are specified elsewhere. An API may choose to allow leap seconds. Related
588 # types are google.type.Date and `google.protobuf.Timestamp`.
589 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
590 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
591 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
592 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
593 # allow the value 60 if it allows leap-seconds.
594 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
595 },
596 &quot;booleanValue&quot;: True or False, # boolean
597 &quot;floatValue&quot;: 3.14, # float
598 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
599 },
600 },
601 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
602 # Bucketing transformation can provide all of this functionality,
603 # but requires more configuration. This message is provided as a convenience to
604 # the user for simple bucketing strategies.
605 #
606 # The transformed value will be a hyphenated string of
607 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
608 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
609 #
610 # This can be used on data of type: double, long.
611 #
612 # If the bound Value type differs from the type of data
613 # being transformed, we will first attempt converting the type of the data to
614 # be transformed to match the type of the bound before comparing.
615 #
616 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
617 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
618 # grouped together into a single bucket; for example if `upper_bound` = 89,
619 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
620 # Note that for the purposes of inspection or transformation, the number
621 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
622 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
623 # 123456789, the number of bytes would be counted as 9, even though an
624 # int64 only holds up to 8 bytes of data.
625 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
626 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
627 # and time zone are either specified elsewhere or are not significant. The date
628 # is relative to the Proleptic Gregorian Calendar. This can represent:
629 #
630 # * A full date, with non-zero year, month and day values
631 # * A month and day value, with a zero year, e.g. an anniversary
632 # * A year on its own, with zero month and day values
633 # * A year and month value, with a zero day, e.g. a credit card expiration date
634 #
635 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
636 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
637 # a year.
638 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
639 # month and day.
640 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
641 # if specifying a year by itself or a year and month where the day is not
642 # significant.
643 },
644 &quot;stringValue&quot;: &quot;A String&quot;, # string
645 &quot;integerValue&quot;: &quot;A String&quot;, # integer
646 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
647 # or are specified elsewhere. An API may choose to allow leap seconds. Related
648 # types are google.type.Date and `google.protobuf.Timestamp`.
649 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
650 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
651 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
652 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
653 # allow the value 60 if it allows leap-seconds.
654 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
655 },
656 &quot;booleanValue&quot;: True or False, # boolean
657 &quot;floatValue&quot;: 3.14, # float
658 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
659 },
660 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
661 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
662 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
663 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
664 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
665 # grouped together into a single bucket; for example if `lower_bound` = 10,
666 # then all values less than 10 are replaced with the value &quot;-10&quot;.
667 # Note that for the purposes of inspection or transformation, the number
668 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
669 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
670 # 123456789, the number of bytes would be counted as 9, even though an
671 # int64 only holds up to 8 bytes of data.
672 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
673 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
674 # and time zone are either specified elsewhere or are not significant. The date
675 # is relative to the Proleptic Gregorian Calendar. This can represent:
676 #
677 # * A full date, with non-zero year, month and day values
678 # * A month and day value, with a zero year, e.g. an anniversary
679 # * A year on its own, with zero month and day values
680 # * A year and month value, with a zero day, e.g. a credit card expiration date
681 #
682 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
683 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
684 # a year.
685 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
686 # month and day.
687 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
688 # if specifying a year by itself or a year and month where the day is not
689 # significant.
690 },
691 &quot;stringValue&quot;: &quot;A String&quot;, # string
692 &quot;integerValue&quot;: &quot;A String&quot;, # integer
693 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
694 # or are specified elsewhere. An API may choose to allow leap seconds. Related
695 # types are google.type.Date and `google.protobuf.Timestamp`.
696 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
697 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
698 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
699 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
700 # allow the value 60 if it allows leap-seconds.
701 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
702 },
703 &quot;booleanValue&quot;: True or False, # boolean
704 &quot;floatValue&quot;: 3.14, # float
705 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
706 },
707 },
708 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
709 # fixed character. Masking can start from the beginning or end of the string.
710 # This can be used on data of any type (numbers, longs, and so on) and when
711 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
712 # type. (This allows you to take a long like 123 and modify it to a string like
713 # **3.
714 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
715 # characters. For example, if the input string is `555-555-5555` and you
716 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
717 # returns `***-**5-5555`.
718 { # Characters to skip when doing deidentification of a value. These will be left
719 # alone and skipped.
720 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
721 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
722 # punctuation.
723 },
724 ],
725 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
726 # masked. Skipped characters do not count towards this tally.
727 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
728 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
729 # code or credit card number. This string must have a length of 1. If not
730 # supplied, this value defaults to `*` for strings, and `0` for digits.
731 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
732 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
733 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
734 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
735 # is `true`, then the string `12345` is masked as `12***`.
736 },
737 },
738 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
739 # this transformation to apply to all findings that correspond to
740 # infoTypes that were requested in `InspectConfig`.
741 { # Type of information detected by the API.
742 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
743 # creating a CustomInfoType, or one of the names listed
744 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
745 # a built-in type. InfoType names should conform to the pattern
746 # `[a-zA-Z0-9_]{1,64}`.
747 },
748 ],
749 },
750 ],
751 },
Bu Sun Kim65020912020-05-20 12:08:20 -0700752 &quot;transformationErrorHandling&quot;: { # How to handle transformation errors during de-identification. A # Mode for handling transformation errors. If left unspecified, the default
753 # mode is `TransformationErrorHandling.ThrowError`.
754 # transformation error occurs when the requested transformation is incompatible
755 # with the data. For example, trying to de-identify an IP address using a
756 # `DateShift` transformation would result in a transformation error, since date
757 # info cannot be extracted from an IP address.
758 # Information about any incompatible transformations, and how they were
759 # handled, is returned in the response as part of the
760 # `TransformationOverviews`.
761 &quot;throwError&quot;: { # Throw an error and fail the request when a transformation error occurs. # Throw an error
762 },
763 &quot;leaveUntransformed&quot;: { # Skips the data without modifying it if the requested transformation would # Ignore errors
764 # cause an error. For example, if a `DateShift` transformation were applied
765 # an an IP address, this mode would leave the IP address unchanged in the
766 # response.
767 },
768 },
769 &quot;recordTransformations&quot;: { # A type of transformation that is applied over structured data such as a # Treat the dataset as structured. Transformations can be applied to
770 # specific locations within structured datasets, such as transforming
771 # a column within a table.
772 # table.
Bu Sun Kim65020912020-05-20 12:08:20 -0700773 &quot;fieldTransformations&quot;: [ # Transform the record by applying various field transformations.
774 { # The transformation to apply to the field.
775 &quot;fields&quot;: [ # Required. Input field(s) to apply the transformation to.
776 { # General identifier of a data field in a storage service.
777 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
778 },
779 ],
780 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the contents of the field as free text, and selectively
781 # transform content that matches an `InfoType`.
782 # apply various `PrimitiveTransformation`s to each finding, where the
783 # transformation is applied to only values that were identified as a specific
784 # info_type.
785 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
786 # for a given infoType.
787 { # A transformation to apply to text that is identified as a specific
788 # info_type.
Bu Sun Kim65020912020-05-20 12:08:20 -0700789 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
790 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
791 # portion of the value.
792 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
793 },
794 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
795 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
796 # to learn more.
797 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
798 # If set, must also set cryptoKey. If set, shift will be consistent for the
799 # given context.
800 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
801 },
802 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
803 # range (inclusive ends). Negative means shift to earlier in time. Must not
804 # be more than 365250 days (1000 years) each direction.
805 #
806 # For example, 3 means shift date to at most 3 days into the future.
807 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
808 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
809 # results in the same shift for the same context and crypto_key. If
810 # set, must also set context. Can only be applied to table items.
811 # a key encryption key (KEK) stored by KMS).
812 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
813 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
814 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -0700815 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
816 # leaking the key. Choose another type of key if possible.
817 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
818 },
819 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
820 # It will be discarded after the request finishes.
821 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
822 # This is an arbitrary string used to differentiate different keys.
823 # A unique key is generated per name: two separate `TransientCryptoKey`
824 # protos share the same generated key if their names are the same.
825 # When the data crypto key is generated, this name is not used in any way
826 # (repeating the api call will result in a different key being generated).
827 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -0700828 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
829 # The wrapped key must be a 128/192/256 bit key.
830 # Authorization requires the following IAM permissions when sending a request
831 # to perform a crypto transformation using a kms-wrapped crypto key:
832 # dlp.kms.encrypt
833 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
834 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
835 },
Bu Sun Kim65020912020-05-20 12:08:20 -0700836 },
837 },
838 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
839 },
840 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
841 # Uses SHA-256.
842 # The key size must be either 32 or 64 bytes.
843 # Outputs a base64 encoded representation of the hashed output
844 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
845 # Currently, only string and integer values can be hashed.
846 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
847 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
848 # a key encryption key (KEK) stored by KMS).
849 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
850 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
851 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -0700852 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
853 # leaking the key. Choose another type of key if possible.
854 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
855 },
856 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
857 # It will be discarded after the request finishes.
858 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
859 # This is an arbitrary string used to differentiate different keys.
860 # A unique key is generated per name: two separate `TransientCryptoKey`
861 # protos share the same generated key if their names are the same.
862 # When the data crypto key is generated, this name is not used in any way
863 # (repeating the api call will result in a different key being generated).
864 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -0700865 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
866 # The wrapped key must be a 128/192/256 bit key.
867 # Authorization requires the following IAM permissions when sending a request
868 # to perform a crypto transformation using a kms-wrapped crypto key:
869 # dlp.kms.encrypt
870 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
871 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
872 },
Bu Sun Kim65020912020-05-20 12:08:20 -0700873 },
874 },
875 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
876 # (FPE) with the FFX mode of operation; however when used in the
877 # `ReidentifyContent` API method, it serves the opposite function by reversing
878 # the surrogate back into the original identifier. The identifier must be
879 # encoded as ASCII. For a given crypto key and context, the same identifier
880 # will be replaced with the same surrogate. Identifiers must be at least two
881 # characters long. In the case that the identifier is the empty string, it will
882 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
883 # more.
884 #
885 # Note: We recommend using CryptoDeterministicConfig for all use cases which
886 # do not require preserving the input alphabet space and size, plus warrant
887 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -0700888 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
889 # This annotation will be applied to the surrogate by prefixing it with
890 # the name of the custom infoType followed by the number of
891 # characters comprising the surrogate. The following scheme defines the
892 # format: info_type_name(surrogate_character_count):surrogate
893 #
894 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
895 # the surrogate is &#x27;abc&#x27;, the full replacement value
896 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
897 #
898 # This annotation identifies the surrogate when inspecting content using the
899 # custom infoType
900 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
901 # This facilitates reversal of the surrogate when it occurs in free text.
902 #
903 # In order for inspection to work properly, the name of this infoType must
904 # not occur naturally anywhere in your data; otherwise, inspection may
905 # find a surrogate that does not correspond to an actual identifier.
906 # Therefore, choose your custom infoType name carefully after considering
907 # what your data looks like. One way to select a name that has a high chance
908 # of yielding reliable detection is to include one or more unicode characters
909 # that are highly improbable to exist in your data.
910 # For example, assuming your data is entered from a regular ASCII keyboard,
911 # the symbol with the hex code point 29DD might be used like so:
912 # ⧝MY_TOKEN_TYPE
913 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
914 # creating a CustomInfoType, or one of the names listed
915 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
916 # a built-in type. InfoType names should conform to the pattern
917 # `[a-zA-Z0-9_]{1,64}`.
918 },
919 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
920 # identifier in two different contexts won&#x27;t be given the same surrogate. If
921 # the context is not set, a default tweak will be used.
922 #
923 # If the context is set but:
924 #
925 # 1. there is no record present when transforming a given value or
926 # 1. the field is not present when transforming a given value,
927 #
928 # a default tweak will be used.
929 #
930 # Note that case (1) is expected when an `InfoTypeTransformation` is
931 # applied to both structured and non-structured `ContentItem`s.
932 # Currently, the referenced field may be of value type integer or string.
933 #
934 # The tweak is constructed as a sequence of bytes in big endian byte order
935 # such that:
936 #
937 # - a 64 bit integer is encoded followed by a single byte of value 1
938 # - a string is encoded in UTF-8 format followed by a single byte of value 2
939 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
940 },
941 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
942 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
943 # a key encryption key (KEK) stored by KMS).
944 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
945 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
946 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -0700947 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
948 # leaking the key. Choose another type of key if possible.
949 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
950 },
951 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
952 # It will be discarded after the request finishes.
953 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
954 # This is an arbitrary string used to differentiate different keys.
955 # A unique key is generated per name: two separate `TransientCryptoKey`
956 # protos share the same generated key if their names are the same.
957 # When the data crypto key is generated, this name is not used in any way
958 # (repeating the api call will result in a different key being generated).
959 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -0700960 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
961 # The wrapped key must be a 128/192/256 bit key.
962 # Authorization requires the following IAM permissions when sending a request
963 # to perform a crypto transformation using a kms-wrapped crypto key:
964 # dlp.kms.encrypt
965 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
966 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
967 },
Bu Sun Kim65020912020-05-20 12:08:20 -0700968 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -0700969 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
970 # that the FFX mode natively supports. This happens before/after
971 # encryption/decryption.
972 # Each character listed must appear only once.
973 # Number of characters must be in the range [2, 95].
974 # This must be encoded as ASCII.
975 # The order of characters does not matter.
976 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -0700977 },
978 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
979 # input. Outputs a base64 encoded representation of the encrypted output.
980 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
981 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
982 # This annotation will be applied to the surrogate by prefixing it with
983 # the name of the custom info type followed by the number of
984 # characters comprising the surrogate. The following scheme defines the
985 # format: {info type name}({surrogate character count}):{surrogate}
986 #
987 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
988 # the surrogate is &#x27;abc&#x27;, the full replacement value
989 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
990 #
991 # This annotation identifies the surrogate when inspecting content using the
992 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
993 # surrogate when it occurs in free text.
994 #
995 # Note: For record transformations where the entire cell in a table is being
996 # transformed, surrogates are not mandatory. Surrogates are used to denote
997 # the location of the token and are necessary for re-identification in free
998 # form text.
999 #
1000 # In order for inspection to work properly, the name of this info type must
1001 # not occur naturally anywhere in your data; otherwise, inspection may either
1002 #
1003 # - reverse a surrogate that does not correspond to an actual identifier
1004 # - be unable to parse the surrogate and result in an error
1005 #
1006 # Therefore, choose your custom info type name carefully after considering
1007 # what your data looks like. One way to select a name that has a high chance
1008 # of yielding reliable detection is to include one or more unicode characters
1009 # that are highly improbable to exist in your data.
1010 # For example, assuming your data is entered from a regular ASCII keyboard,
1011 # the symbol with the hex code point 29DD might be used like so:
1012 # ⧝MY_TOKEN_TYPE.
1013 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
1014 # creating a CustomInfoType, or one of the names listed
1015 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
1016 # a built-in type. InfoType names should conform to the pattern
1017 # `[a-zA-Z0-9_]{1,64}`.
1018 },
1019 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
1020 # referential integrity such that the same identifier in two different
1021 # contexts will be given a distinct surrogate. The context is appended to
1022 # plaintext value being encrypted. On decryption the provided context is
1023 # validated against the value used during encryption. If a context was
1024 # provided during encryption, same context must be provided during decryption
1025 # as well.
1026 #
1027 # If the context is not set, plaintext would be used as is for encryption.
1028 # If the context is set but:
1029 #
1030 # 1. there is no record present when transforming a given value or
1031 # 2. the field is not present when transforming a given value,
1032 #
1033 # plaintext would be used as is for encryption.
1034 #
1035 # Note that case (1) is expected when an `InfoTypeTransformation` is
1036 # applied to both structured and non-structured `ContentItem`s.
1037 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
1038 },
1039 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
1040 # a key encryption key (KEK) stored by KMS).
1041 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
1042 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
1043 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07001044 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
1045 # leaking the key. Choose another type of key if possible.
1046 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
1047 },
1048 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
1049 # It will be discarded after the request finishes.
1050 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
1051 # This is an arbitrary string used to differentiate different keys.
1052 # A unique key is generated per name: two separate `TransientCryptoKey`
1053 # protos share the same generated key if their names are the same.
1054 # When the data crypto key is generated, this name is not used in any way
1055 # (repeating the api call will result in a different key being generated).
1056 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001057 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
1058 # The wrapped key must be a 128/192/256 bit key.
1059 # Authorization requires the following IAM permissions when sending a request
1060 # to perform a crypto transformation using a kms-wrapped crypto key:
1061 # dlp.kms.encrypt
1062 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
1063 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
1064 },
Bu Sun Kim65020912020-05-20 12:08:20 -07001065 },
1066 },
Bu Sun Kim65020912020-05-20 12:08:20 -07001067 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
1068 # replacement values are dynamically provided by the user for custom behavior,
1069 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
1070 # This can be used on
1071 # data of type: number, long, string, timestamp.
1072 # If the bound `Value` type differs from the type of data being transformed, we
1073 # will first attempt converting the type of the data to be transformed to match
1074 # the type of the bound before comparing.
1075 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
1076 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
1077 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -07001078 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
1079 # the default behavior will be to hyphenate the min-max range.
1080 # Note that for the purposes of inspection or transformation, the number
1081 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1082 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1083 # 123456789, the number of bytes would be counted as 9, even though an
1084 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07001085 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1086 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1087 # and time zone are either specified elsewhere or are not significant. The date
1088 # is relative to the Proleptic Gregorian Calendar. This can represent:
1089 #
1090 # * A full date, with non-zero year, month and day values
1091 # * A month and day value, with a zero year, e.g. an anniversary
1092 # * A year on its own, with zero month and day values
1093 # * A year and month value, with a zero day, e.g. a credit card expiration date
1094 #
1095 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1096 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1097 # a year.
1098 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1099 # month and day.
1100 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1101 # if specifying a year by itself or a year and month where the day is not
1102 # significant.
1103 },
1104 &quot;stringValue&quot;: &quot;A String&quot;, # string
1105 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1106 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1107 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1108 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07001109 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1110 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1111 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001112 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1113 # allow the value 60 if it allows leap-seconds.
1114 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07001115 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001116 &quot;booleanValue&quot;: True or False, # boolean
1117 &quot;floatValue&quot;: 3.14, # float
1118 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
1119 },
1120 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
1121 # used.
1122 # Note that for the purposes of inspection or transformation, the number
1123 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1124 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1125 # 123456789, the number of bytes would be counted as 9, even though an
1126 # int64 only holds up to 8 bytes of data.
1127 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1128 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1129 # and time zone are either specified elsewhere or are not significant. The date
1130 # is relative to the Proleptic Gregorian Calendar. This can represent:
1131 #
1132 # * A full date, with non-zero year, month and day values
1133 # * A month and day value, with a zero year, e.g. an anniversary
1134 # * A year on its own, with zero month and day values
1135 # * A year and month value, with a zero day, e.g. a credit card expiration date
1136 #
1137 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1138 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1139 # a year.
1140 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1141 # month and day.
1142 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1143 # if specifying a year by itself or a year and month where the day is not
1144 # significant.
1145 },
1146 &quot;stringValue&quot;: &quot;A String&quot;, # string
1147 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1148 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1149 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1150 # types are google.type.Date and `google.protobuf.Timestamp`.
1151 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1152 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1153 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
1154 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1155 # allow the value 60 if it allows leap-seconds.
1156 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
1157 },
1158 &quot;booleanValue&quot;: True or False, # boolean
1159 &quot;floatValue&quot;: 3.14, # float
1160 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
1161 },
1162 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
1163 # Note that for the purposes of inspection or transformation, the number
1164 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1165 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1166 # 123456789, the number of bytes would be counted as 9, even though an
1167 # int64 only holds up to 8 bytes of data.
1168 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1169 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1170 # and time zone are either specified elsewhere or are not significant. The date
1171 # is relative to the Proleptic Gregorian Calendar. This can represent:
1172 #
1173 # * A full date, with non-zero year, month and day values
1174 # * A month and day value, with a zero year, e.g. an anniversary
1175 # * A year on its own, with zero month and day values
1176 # * A year and month value, with a zero day, e.g. a credit card expiration date
1177 #
1178 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1179 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1180 # a year.
1181 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1182 # month and day.
1183 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1184 # if specifying a year by itself or a year and month where the day is not
1185 # significant.
1186 },
1187 &quot;stringValue&quot;: &quot;A String&quot;, # string
1188 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1189 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1190 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1191 # types are google.type.Date and `google.protobuf.Timestamp`.
1192 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1193 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1194 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
1195 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1196 # allow the value 60 if it allows leap-seconds.
1197 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
1198 },
1199 &quot;booleanValue&quot;: True or False, # boolean
1200 &quot;floatValue&quot;: 3.14, # float
1201 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07001202 },
1203 },
1204 ],
1205 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001206 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
1207 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
1208 # output would be &#x27;My phone number is &#x27;.
1209 },
Bu Sun Kim65020912020-05-20 12:08:20 -07001210 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
1211 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
1212 # Note that for the purposes of inspection or transformation, the number
1213 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1214 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1215 # 123456789, the number of bytes would be counted as 9, even though an
1216 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07001217 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1218 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1219 # and time zone are either specified elsewhere or are not significant. The date
1220 # is relative to the Proleptic Gregorian Calendar. This can represent:
1221 #
1222 # * A full date, with non-zero year, month and day values
1223 # * A month and day value, with a zero year, e.g. an anniversary
1224 # * A year on its own, with zero month and day values
1225 # * A year and month value, with a zero day, e.g. a credit card expiration date
1226 #
1227 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1228 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1229 # a year.
1230 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1231 # month and day.
1232 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1233 # if specifying a year by itself or a year and month where the day is not
1234 # significant.
1235 },
1236 &quot;stringValue&quot;: &quot;A String&quot;, # string
1237 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1238 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1239 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1240 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07001241 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1242 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1243 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001244 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1245 # allow the value 60 if it allows leap-seconds.
1246 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07001247 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001248 &quot;booleanValue&quot;: True or False, # boolean
1249 &quot;floatValue&quot;: 3.14, # float
1250 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07001251 },
1252 },
Bu Sun Kim65020912020-05-20 12:08:20 -07001253 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
1254 # Bucketing transformation can provide all of this functionality,
1255 # but requires more configuration. This message is provided as a convenience to
1256 # the user for simple bucketing strategies.
1257 #
1258 # The transformed value will be a hyphenated string of
1259 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
1260 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
1261 #
1262 # This can be used on data of type: double, long.
1263 #
1264 # If the bound Value type differs from the type of data
1265 # being transformed, we will first attempt converting the type of the data to
1266 # be transformed to match the type of the bound before comparing.
1267 #
1268 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -07001269 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
1270 # grouped together into a single bucket; for example if `upper_bound` = 89,
1271 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
1272 # Note that for the purposes of inspection or transformation, the number
1273 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1274 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1275 # 123456789, the number of bytes would be counted as 9, even though an
1276 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07001277 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1278 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1279 # and time zone are either specified elsewhere or are not significant. The date
1280 # is relative to the Proleptic Gregorian Calendar. This can represent:
1281 #
1282 # * A full date, with non-zero year, month and day values
1283 # * A month and day value, with a zero year, e.g. an anniversary
1284 # * A year on its own, with zero month and day values
1285 # * A year and month value, with a zero day, e.g. a credit card expiration date
1286 #
1287 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1288 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1289 # a year.
1290 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1291 # month and day.
1292 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1293 # if specifying a year by itself or a year and month where the day is not
1294 # significant.
1295 },
1296 &quot;stringValue&quot;: &quot;A String&quot;, # string
1297 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1298 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1299 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1300 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07001301 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1302 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1303 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001304 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1305 # allow the value 60 if it allows leap-seconds.
1306 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07001307 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001308 &quot;booleanValue&quot;: True or False, # boolean
1309 &quot;floatValue&quot;: 3.14, # float
1310 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07001311 },
1312 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
1313 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
1314 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
1315 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001316 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
1317 # grouped together into a single bucket; for example if `lower_bound` = 10,
1318 # then all values less than 10 are replaced with the value &quot;-10&quot;.
1319 # Note that for the purposes of inspection or transformation, the number
1320 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1321 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1322 # 123456789, the number of bytes would be counted as 9, even though an
1323 # int64 only holds up to 8 bytes of data.
1324 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1325 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1326 # and time zone are either specified elsewhere or are not significant. The date
1327 # is relative to the Proleptic Gregorian Calendar. This can represent:
1328 #
1329 # * A full date, with non-zero year, month and day values
1330 # * A month and day value, with a zero year, e.g. an anniversary
1331 # * A year on its own, with zero month and day values
1332 # * A year and month value, with a zero day, e.g. a credit card expiration date
1333 #
1334 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1335 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1336 # a year.
1337 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1338 # month and day.
1339 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1340 # if specifying a year by itself or a year and month where the day is not
1341 # significant.
1342 },
1343 &quot;stringValue&quot;: &quot;A String&quot;, # string
1344 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1345 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1346 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1347 # types are google.type.Date and `google.protobuf.Timestamp`.
1348 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1349 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1350 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
1351 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1352 # allow the value 60 if it allows leap-seconds.
1353 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
1354 },
1355 &quot;booleanValue&quot;: True or False, # boolean
1356 &quot;floatValue&quot;: 3.14, # float
1357 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
1358 },
1359 },
1360 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
1361 # fixed character. Masking can start from the beginning or end of the string.
1362 # This can be used on data of any type (numbers, longs, and so on) and when
1363 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
1364 # type. (This allows you to take a long like 123 and modify it to a string like
1365 # **3.
1366 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
1367 # characters. For example, if the input string is `555-555-5555` and you
1368 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
1369 # returns `***-**5-5555`.
1370 { # Characters to skip when doing deidentification of a value. These will be left
1371 # alone and skipped.
1372 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
1373 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
1374 # punctuation.
1375 },
1376 ],
1377 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
1378 # masked. Skipped characters do not count towards this tally.
1379 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
1380 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
1381 # code or credit card number. This string must have a length of 1. If not
1382 # supplied, this value defaults to `*` for strings, and `0` for digits.
1383 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
1384 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
1385 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
1386 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
1387 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -07001388 },
1389 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001390 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
1391 # this transformation to apply to all findings that correspond to
1392 # infoTypes that were requested in `InspectConfig`.
1393 { # Type of information detected by the API.
1394 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
1395 # creating a CustomInfoType, or one of the names listed
1396 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
1397 # a built-in type. InfoType names should conform to the pattern
1398 # `[a-zA-Z0-9_]{1,64}`.
1399 },
1400 ],
Bu Sun Kim65020912020-05-20 12:08:20 -07001401 },
1402 ],
1403 },
1404 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Apply the transformation to the entire field.
1405 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
1406 # portion of the value.
1407 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
1408 },
1409 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
1410 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
1411 # to learn more.
1412 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
1413 # If set, must also set cryptoKey. If set, shift will be consistent for the
1414 # given context.
1415 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
1416 },
1417 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
1418 # range (inclusive ends). Negative means shift to earlier in time. Must not
1419 # be more than 365250 days (1000 years) each direction.
1420 #
1421 # For example, 3 means shift date to at most 3 days into the future.
1422 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
1423 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
1424 # results in the same shift for the same context and crypto_key. If
1425 # set, must also set context. Can only be applied to table items.
1426 # a key encryption key (KEK) stored by KMS).
1427 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
1428 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
1429 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07001430 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
1431 # leaking the key. Choose another type of key if possible.
1432 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
1433 },
1434 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
1435 # It will be discarded after the request finishes.
1436 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
1437 # This is an arbitrary string used to differentiate different keys.
1438 # A unique key is generated per name: two separate `TransientCryptoKey`
1439 # protos share the same generated key if their names are the same.
1440 # When the data crypto key is generated, this name is not used in any way
1441 # (repeating the api call will result in a different key being generated).
1442 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001443 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
1444 # The wrapped key must be a 128/192/256 bit key.
1445 # Authorization requires the following IAM permissions when sending a request
1446 # to perform a crypto transformation using a kms-wrapped crypto key:
1447 # dlp.kms.encrypt
1448 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
1449 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
1450 },
Bu Sun Kim65020912020-05-20 12:08:20 -07001451 },
1452 },
1453 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
1454 },
1455 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
1456 # Uses SHA-256.
1457 # The key size must be either 32 or 64 bytes.
1458 # Outputs a base64 encoded representation of the hashed output
1459 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
1460 # Currently, only string and integer values can be hashed.
1461 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
1462 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
1463 # a key encryption key (KEK) stored by KMS).
1464 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
1465 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
1466 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07001467 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
1468 # leaking the key. Choose another type of key if possible.
1469 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
1470 },
1471 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
1472 # It will be discarded after the request finishes.
1473 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
1474 # This is an arbitrary string used to differentiate different keys.
1475 # A unique key is generated per name: two separate `TransientCryptoKey`
1476 # protos share the same generated key if their names are the same.
1477 # When the data crypto key is generated, this name is not used in any way
1478 # (repeating the api call will result in a different key being generated).
1479 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001480 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
1481 # The wrapped key must be a 128/192/256 bit key.
1482 # Authorization requires the following IAM permissions when sending a request
1483 # to perform a crypto transformation using a kms-wrapped crypto key:
1484 # dlp.kms.encrypt
1485 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
1486 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
1487 },
Bu Sun Kim65020912020-05-20 12:08:20 -07001488 },
1489 },
1490 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
1491 # (FPE) with the FFX mode of operation; however when used in the
1492 # `ReidentifyContent` API method, it serves the opposite function by reversing
1493 # the surrogate back into the original identifier. The identifier must be
1494 # encoded as ASCII. For a given crypto key and context, the same identifier
1495 # will be replaced with the same surrogate. Identifiers must be at least two
1496 # characters long. In the case that the identifier is the empty string, it will
1497 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
1498 # more.
1499 #
1500 # Note: We recommend using CryptoDeterministicConfig for all use cases which
1501 # do not require preserving the input alphabet space and size, plus warrant
1502 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -07001503 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
1504 # This annotation will be applied to the surrogate by prefixing it with
1505 # the name of the custom infoType followed by the number of
1506 # characters comprising the surrogate. The following scheme defines the
1507 # format: info_type_name(surrogate_character_count):surrogate
1508 #
1509 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
1510 # the surrogate is &#x27;abc&#x27;, the full replacement value
1511 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
1512 #
1513 # This annotation identifies the surrogate when inspecting content using the
1514 # custom infoType
1515 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
1516 # This facilitates reversal of the surrogate when it occurs in free text.
1517 #
1518 # In order for inspection to work properly, the name of this infoType must
1519 # not occur naturally anywhere in your data; otherwise, inspection may
1520 # find a surrogate that does not correspond to an actual identifier.
1521 # Therefore, choose your custom infoType name carefully after considering
1522 # what your data looks like. One way to select a name that has a high chance
1523 # of yielding reliable detection is to include one or more unicode characters
1524 # that are highly improbable to exist in your data.
1525 # For example, assuming your data is entered from a regular ASCII keyboard,
1526 # the symbol with the hex code point 29DD might be used like so:
1527 # ⧝MY_TOKEN_TYPE
1528 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
1529 # creating a CustomInfoType, or one of the names listed
1530 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
1531 # a built-in type. InfoType names should conform to the pattern
1532 # `[a-zA-Z0-9_]{1,64}`.
1533 },
1534 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
1535 # identifier in two different contexts won&#x27;t be given the same surrogate. If
1536 # the context is not set, a default tweak will be used.
1537 #
1538 # If the context is set but:
1539 #
1540 # 1. there is no record present when transforming a given value or
1541 # 1. the field is not present when transforming a given value,
1542 #
1543 # a default tweak will be used.
1544 #
1545 # Note that case (1) is expected when an `InfoTypeTransformation` is
1546 # applied to both structured and non-structured `ContentItem`s.
1547 # Currently, the referenced field may be of value type integer or string.
1548 #
1549 # The tweak is constructed as a sequence of bytes in big endian byte order
1550 # such that:
1551 #
1552 # - a 64 bit integer is encoded followed by a single byte of value 1
1553 # - a string is encoded in UTF-8 format followed by a single byte of value 2
1554 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
1555 },
1556 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
1557 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
1558 # a key encryption key (KEK) stored by KMS).
1559 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
1560 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
1561 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07001562 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
1563 # leaking the key. Choose another type of key if possible.
1564 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
1565 },
1566 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
1567 # It will be discarded after the request finishes.
1568 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
1569 # This is an arbitrary string used to differentiate different keys.
1570 # A unique key is generated per name: two separate `TransientCryptoKey`
1571 # protos share the same generated key if their names are the same.
1572 # When the data crypto key is generated, this name is not used in any way
1573 # (repeating the api call will result in a different key being generated).
1574 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001575 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
1576 # The wrapped key must be a 128/192/256 bit key.
1577 # Authorization requires the following IAM permissions when sending a request
1578 # to perform a crypto transformation using a kms-wrapped crypto key:
1579 # dlp.kms.encrypt
1580 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
1581 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
1582 },
Bu Sun Kim65020912020-05-20 12:08:20 -07001583 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001584 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
1585 # that the FFX mode natively supports. This happens before/after
1586 # encryption/decryption.
1587 # Each character listed must appear only once.
1588 # Number of characters must be in the range [2, 95].
1589 # This must be encoded as ASCII.
1590 # The order of characters does not matter.
1591 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -07001592 },
1593 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
1594 # input. Outputs a base64 encoded representation of the encrypted output.
1595 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
1596 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
1597 # This annotation will be applied to the surrogate by prefixing it with
1598 # the name of the custom info type followed by the number of
1599 # characters comprising the surrogate. The following scheme defines the
1600 # format: {info type name}({surrogate character count}):{surrogate}
1601 #
1602 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
1603 # the surrogate is &#x27;abc&#x27;, the full replacement value
1604 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
1605 #
1606 # This annotation identifies the surrogate when inspecting content using the
1607 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
1608 # surrogate when it occurs in free text.
1609 #
1610 # Note: For record transformations where the entire cell in a table is being
1611 # transformed, surrogates are not mandatory. Surrogates are used to denote
1612 # the location of the token and are necessary for re-identification in free
1613 # form text.
1614 #
1615 # In order for inspection to work properly, the name of this info type must
1616 # not occur naturally anywhere in your data; otherwise, inspection may either
1617 #
1618 # - reverse a surrogate that does not correspond to an actual identifier
1619 # - be unable to parse the surrogate and result in an error
1620 #
1621 # Therefore, choose your custom info type name carefully after considering
1622 # what your data looks like. One way to select a name that has a high chance
1623 # of yielding reliable detection is to include one or more unicode characters
1624 # that are highly improbable to exist in your data.
1625 # For example, assuming your data is entered from a regular ASCII keyboard,
1626 # the symbol with the hex code point 29DD might be used like so:
1627 # ⧝MY_TOKEN_TYPE.
1628 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
1629 # creating a CustomInfoType, or one of the names listed
1630 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
1631 # a built-in type. InfoType names should conform to the pattern
1632 # `[a-zA-Z0-9_]{1,64}`.
1633 },
1634 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
1635 # referential integrity such that the same identifier in two different
1636 # contexts will be given a distinct surrogate. The context is appended to
1637 # plaintext value being encrypted. On decryption the provided context is
1638 # validated against the value used during encryption. If a context was
1639 # provided during encryption, same context must be provided during decryption
1640 # as well.
1641 #
1642 # If the context is not set, plaintext would be used as is for encryption.
1643 # If the context is set but:
1644 #
1645 # 1. there is no record present when transforming a given value or
1646 # 2. the field is not present when transforming a given value,
1647 #
1648 # plaintext would be used as is for encryption.
1649 #
1650 # Note that case (1) is expected when an `InfoTypeTransformation` is
1651 # applied to both structured and non-structured `ContentItem`s.
1652 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
1653 },
1654 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
1655 # a key encryption key (KEK) stored by KMS).
1656 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
1657 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
1658 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07001659 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
1660 # leaking the key. Choose another type of key if possible.
1661 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
1662 },
1663 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
1664 # It will be discarded after the request finishes.
1665 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
1666 # This is an arbitrary string used to differentiate different keys.
1667 # A unique key is generated per name: two separate `TransientCryptoKey`
1668 # protos share the same generated key if their names are the same.
1669 # When the data crypto key is generated, this name is not used in any way
1670 # (repeating the api call will result in a different key being generated).
1671 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001672 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
1673 # The wrapped key must be a 128/192/256 bit key.
1674 # Authorization requires the following IAM permissions when sending a request
1675 # to perform a crypto transformation using a kms-wrapped crypto key:
1676 # dlp.kms.encrypt
1677 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
1678 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
1679 },
Bu Sun Kim65020912020-05-20 12:08:20 -07001680 },
1681 },
Bu Sun Kim65020912020-05-20 12:08:20 -07001682 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
1683 # replacement values are dynamically provided by the user for custom behavior,
1684 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
1685 # This can be used on
1686 # data of type: number, long, string, timestamp.
1687 # If the bound `Value` type differs from the type of data being transformed, we
1688 # will first attempt converting the type of the data to be transformed to match
1689 # the type of the bound before comparing.
1690 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
1691 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
1692 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -07001693 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
1694 # the default behavior will be to hyphenate the min-max range.
1695 # Note that for the purposes of inspection or transformation, the number
1696 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1697 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1698 # 123456789, the number of bytes would be counted as 9, even though an
1699 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07001700 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1701 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1702 # and time zone are either specified elsewhere or are not significant. The date
1703 # is relative to the Proleptic Gregorian Calendar. This can represent:
1704 #
1705 # * A full date, with non-zero year, month and day values
1706 # * A month and day value, with a zero year, e.g. an anniversary
1707 # * A year on its own, with zero month and day values
1708 # * A year and month value, with a zero day, e.g. a credit card expiration date
1709 #
1710 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1711 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1712 # a year.
1713 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1714 # month and day.
1715 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1716 # if specifying a year by itself or a year and month where the day is not
1717 # significant.
1718 },
1719 &quot;stringValue&quot;: &quot;A String&quot;, # string
1720 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1721 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1722 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1723 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07001724 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1725 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1726 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001727 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1728 # allow the value 60 if it allows leap-seconds.
1729 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07001730 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001731 &quot;booleanValue&quot;: True or False, # boolean
1732 &quot;floatValue&quot;: 3.14, # float
1733 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
1734 },
1735 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
1736 # used.
1737 # Note that for the purposes of inspection or transformation, the number
1738 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1739 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1740 # 123456789, the number of bytes would be counted as 9, even though an
1741 # int64 only holds up to 8 bytes of data.
1742 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1743 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1744 # and time zone are either specified elsewhere or are not significant. The date
1745 # is relative to the Proleptic Gregorian Calendar. This can represent:
1746 #
1747 # * A full date, with non-zero year, month and day values
1748 # * A month and day value, with a zero year, e.g. an anniversary
1749 # * A year on its own, with zero month and day values
1750 # * A year and month value, with a zero day, e.g. a credit card expiration date
1751 #
1752 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1753 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1754 # a year.
1755 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1756 # month and day.
1757 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1758 # if specifying a year by itself or a year and month where the day is not
1759 # significant.
1760 },
1761 &quot;stringValue&quot;: &quot;A String&quot;, # string
1762 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1763 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1764 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1765 # types are google.type.Date and `google.protobuf.Timestamp`.
1766 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1767 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1768 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
1769 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1770 # allow the value 60 if it allows leap-seconds.
1771 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
1772 },
1773 &quot;booleanValue&quot;: True or False, # boolean
1774 &quot;floatValue&quot;: 3.14, # float
1775 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
1776 },
1777 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
1778 # Note that for the purposes of inspection or transformation, the number
1779 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1780 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1781 # 123456789, the number of bytes would be counted as 9, even though an
1782 # int64 only holds up to 8 bytes of data.
1783 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1784 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1785 # and time zone are either specified elsewhere or are not significant. The date
1786 # is relative to the Proleptic Gregorian Calendar. This can represent:
1787 #
1788 # * A full date, with non-zero year, month and day values
1789 # * A month and day value, with a zero year, e.g. an anniversary
1790 # * A year on its own, with zero month and day values
1791 # * A year and month value, with a zero day, e.g. a credit card expiration date
1792 #
1793 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1794 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1795 # a year.
1796 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1797 # month and day.
1798 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1799 # if specifying a year by itself or a year and month where the day is not
1800 # significant.
1801 },
1802 &quot;stringValue&quot;: &quot;A String&quot;, # string
1803 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1804 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1805 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1806 # types are google.type.Date and `google.protobuf.Timestamp`.
1807 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1808 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1809 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
1810 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1811 # allow the value 60 if it allows leap-seconds.
1812 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
1813 },
1814 &quot;booleanValue&quot;: True or False, # boolean
1815 &quot;floatValue&quot;: 3.14, # float
1816 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07001817 },
1818 },
1819 ],
1820 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001821 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
1822 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
1823 # output would be &#x27;My phone number is &#x27;.
1824 },
Bu Sun Kim65020912020-05-20 12:08:20 -07001825 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
1826 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
1827 # Note that for the purposes of inspection or transformation, the number
1828 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1829 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1830 # 123456789, the number of bytes would be counted as 9, even though an
1831 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07001832 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1833 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1834 # and time zone are either specified elsewhere or are not significant. The date
1835 # is relative to the Proleptic Gregorian Calendar. This can represent:
1836 #
1837 # * A full date, with non-zero year, month and day values
1838 # * A month and day value, with a zero year, e.g. an anniversary
1839 # * A year on its own, with zero month and day values
1840 # * A year and month value, with a zero day, e.g. a credit card expiration date
1841 #
1842 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1843 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1844 # a year.
1845 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1846 # month and day.
1847 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1848 # if specifying a year by itself or a year and month where the day is not
1849 # significant.
1850 },
1851 &quot;stringValue&quot;: &quot;A String&quot;, # string
1852 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1853 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1854 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1855 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07001856 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1857 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1858 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001859 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1860 # allow the value 60 if it allows leap-seconds.
1861 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07001862 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001863 &quot;booleanValue&quot;: True or False, # boolean
1864 &quot;floatValue&quot;: 3.14, # float
1865 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07001866 },
1867 },
Bu Sun Kim65020912020-05-20 12:08:20 -07001868 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
1869 # Bucketing transformation can provide all of this functionality,
1870 # but requires more configuration. This message is provided as a convenience to
1871 # the user for simple bucketing strategies.
1872 #
1873 # The transformed value will be a hyphenated string of
1874 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
1875 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
1876 #
1877 # This can be used on data of type: double, long.
1878 #
1879 # If the bound Value type differs from the type of data
1880 # being transformed, we will first attempt converting the type of the data to
1881 # be transformed to match the type of the bound before comparing.
1882 #
1883 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -07001884 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
1885 # grouped together into a single bucket; for example if `upper_bound` = 89,
1886 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
1887 # Note that for the purposes of inspection or transformation, the number
1888 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1889 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1890 # 123456789, the number of bytes would be counted as 9, even though an
1891 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07001892 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1893 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1894 # and time zone are either specified elsewhere or are not significant. The date
1895 # is relative to the Proleptic Gregorian Calendar. This can represent:
1896 #
1897 # * A full date, with non-zero year, month and day values
1898 # * A month and day value, with a zero year, e.g. an anniversary
1899 # * A year on its own, with zero month and day values
1900 # * A year and month value, with a zero day, e.g. a credit card expiration date
1901 #
1902 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1903 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1904 # a year.
1905 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1906 # month and day.
1907 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1908 # if specifying a year by itself or a year and month where the day is not
1909 # significant.
1910 },
1911 &quot;stringValue&quot;: &quot;A String&quot;, # string
1912 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1913 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1914 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1915 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07001916 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1917 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1918 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001919 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1920 # allow the value 60 if it allows leap-seconds.
1921 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07001922 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001923 &quot;booleanValue&quot;: True or False, # boolean
1924 &quot;floatValue&quot;: 3.14, # float
1925 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07001926 },
1927 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
1928 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
1929 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
1930 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07001931 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
1932 # grouped together into a single bucket; for example if `lower_bound` = 10,
1933 # then all values less than 10 are replaced with the value &quot;-10&quot;.
1934 # Note that for the purposes of inspection or transformation, the number
1935 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
1936 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
1937 # 123456789, the number of bytes would be counted as 9, even though an
1938 # int64 only holds up to 8 bytes of data.
1939 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
1940 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
1941 # and time zone are either specified elsewhere or are not significant. The date
1942 # is relative to the Proleptic Gregorian Calendar. This can represent:
1943 #
1944 # * A full date, with non-zero year, month and day values
1945 # * A month and day value, with a zero year, e.g. an anniversary
1946 # * A year on its own, with zero month and day values
1947 # * A year and month value, with a zero day, e.g. a credit card expiration date
1948 #
1949 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
1950 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
1951 # a year.
1952 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
1953 # month and day.
1954 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
1955 # if specifying a year by itself or a year and month where the day is not
1956 # significant.
1957 },
1958 &quot;stringValue&quot;: &quot;A String&quot;, # string
1959 &quot;integerValue&quot;: &quot;A String&quot;, # integer
1960 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
1961 # or are specified elsewhere. An API may choose to allow leap seconds. Related
1962 # types are google.type.Date and `google.protobuf.Timestamp`.
1963 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
1964 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
1965 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
1966 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
1967 # allow the value 60 if it allows leap-seconds.
1968 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
1969 },
1970 &quot;booleanValue&quot;: True or False, # boolean
1971 &quot;floatValue&quot;: 3.14, # float
1972 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
1973 },
1974 },
1975 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
1976 # fixed character. Masking can start from the beginning or end of the string.
1977 # This can be used on data of any type (numbers, longs, and so on) and when
1978 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
1979 # type. (This allows you to take a long like 123 and modify it to a string like
1980 # **3.
1981 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
1982 # characters. For example, if the input string is `555-555-5555` and you
1983 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
1984 # returns `***-**5-5555`.
1985 { # Characters to skip when doing deidentification of a value. These will be left
1986 # alone and skipped.
1987 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
1988 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
1989 # punctuation.
1990 },
1991 ],
1992 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
1993 # masked. Skipped characters do not count towards this tally.
1994 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
1995 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
1996 # code or credit card number. This string must have a length of 1. If not
1997 # supplied, this value defaults to `*` for strings, and `0` for digits.
1998 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
1999 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
2000 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
2001 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
2002 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -07002003 },
2004 },
2005 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # Only apply the transformation if the condition evaluates to true for the
2006 # given `RecordCondition`. The conditions are allowed to reference fields
2007 # that are not used in the actual transformation.
2008 #
2009 # Example Use Cases:
2010 #
2011 # - Apply a different bucket transformation to an age column if the zip code
2012 # column for the same record is within a specific range.
2013 # - Redact a field if the date of birth field is greater than 85.
2014 # a field.
2015 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
2016 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
2017 # only supported value is `AND`.
2018 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
2019 &quot;conditions&quot;: [ # A collection of conditions.
2020 { # The field type of `value` and `field` do not need to match to be
2021 # considered equal, but not all comparisons are possible.
2022 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
2023 # but all other comparisons are invalid with incompatible types.
2024 # A `value` of type:
2025 #
2026 # - `string` can be compared against all other types
2027 # - `boolean` can only be compared against other booleans
2028 # - `integer` can be compared against doubles or a string if the string value
2029 # can be parsed as an integer.
2030 # - `double` can be compared against integers or a string if the string can
2031 # be parsed as a double.
2032 # - `Timestamp` can be compared against strings in RFC 3339 date string
2033 # format.
2034 # - `TimeOfDay` can be compared against timestamps and strings in the format
2035 # of &#x27;HH:mm:ss&#x27;.
2036 #
2037 # If we fail to compare do to type mismatch, a warning will be given and
2038 # the condition will evaluate to false.
Bu Sun Kim65020912020-05-20 12:08:20 -07002039 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
2040 # Note that for the purposes of inspection or transformation, the number
2041 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
2042 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
2043 # 123456789, the number of bytes would be counted as 9, even though an
2044 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07002045 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
2046 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
2047 # and time zone are either specified elsewhere or are not significant. The date
2048 # is relative to the Proleptic Gregorian Calendar. This can represent:
2049 #
2050 # * A full date, with non-zero year, month and day values
2051 # * A month and day value, with a zero year, e.g. an anniversary
2052 # * A year on its own, with zero month and day values
2053 # * A year and month value, with a zero day, e.g. a credit card expiration date
2054 #
2055 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
2056 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
2057 # a year.
2058 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
2059 # month and day.
2060 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
2061 # if specifying a year by itself or a year and month where the day is not
2062 # significant.
2063 },
2064 &quot;stringValue&quot;: &quot;A String&quot;, # string
2065 &quot;integerValue&quot;: &quot;A String&quot;, # integer
2066 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
2067 # or are specified elsewhere. An API may choose to allow leap seconds. Related
2068 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07002069 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
2070 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
2071 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07002072 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
2073 # allow the value 60 if it allows leap-seconds.
2074 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07002075 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07002076 &quot;booleanValue&quot;: True or False, # boolean
2077 &quot;floatValue&quot;: 3.14, # float
2078 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07002079 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07002080 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
2081 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
2082 },
2083 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -07002084 },
2085 ],
2086 },
2087 },
2088 },
2089 },
2090 ],
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07002091 &quot;recordSuppressions&quot;: [ # Configuration defining which records get suppressed entirely. Records that
2092 # match any suppression rule are omitted from the output.
2093 { # Configuration to suppress records whose suppression conditions evaluate to
2094 # true.
2095 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # A condition that when it evaluates to true will result in the record being
2096 # evaluated to be suppressed from the transformed content.
2097 # a field.
2098 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
2099 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
2100 # only supported value is `AND`.
2101 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
2102 &quot;conditions&quot;: [ # A collection of conditions.
2103 { # The field type of `value` and `field` do not need to match to be
2104 # considered equal, but not all comparisons are possible.
2105 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
2106 # but all other comparisons are invalid with incompatible types.
2107 # A `value` of type:
2108 #
2109 # - `string` can be compared against all other types
2110 # - `boolean` can only be compared against other booleans
2111 # - `integer` can be compared against doubles or a string if the string value
2112 # can be parsed as an integer.
2113 # - `double` can be compared against integers or a string if the string can
2114 # be parsed as a double.
2115 # - `Timestamp` can be compared against strings in RFC 3339 date string
2116 # format.
2117 # - `TimeOfDay` can be compared against timestamps and strings in the format
2118 # of &#x27;HH:mm:ss&#x27;.
2119 #
2120 # If we fail to compare do to type mismatch, a warning will be given and
2121 # the condition will evaluate to false.
2122 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
2123 # Note that for the purposes of inspection or transformation, the number
2124 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
2125 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
2126 # 123456789, the number of bytes would be counted as 9, even though an
2127 # int64 only holds up to 8 bytes of data.
2128 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
2129 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
2130 # and time zone are either specified elsewhere or are not significant. The date
2131 # is relative to the Proleptic Gregorian Calendar. This can represent:
2132 #
2133 # * A full date, with non-zero year, month and day values
2134 # * A month and day value, with a zero year, e.g. an anniversary
2135 # * A year on its own, with zero month and day values
2136 # * A year and month value, with a zero day, e.g. a credit card expiration date
2137 #
2138 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
2139 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
2140 # a year.
2141 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
2142 # month and day.
2143 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
2144 # if specifying a year by itself or a year and month where the day is not
2145 # significant.
2146 },
2147 &quot;stringValue&quot;: &quot;A String&quot;, # string
2148 &quot;integerValue&quot;: &quot;A String&quot;, # integer
2149 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
2150 # or are specified elsewhere. An API may choose to allow leap seconds. Related
2151 # types are google.type.Date and `google.protobuf.Timestamp`.
2152 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
2153 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
2154 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
2155 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
2156 # allow the value 60 if it allows leap-seconds.
2157 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
2158 },
2159 &quot;booleanValue&quot;: True or False, # boolean
2160 &quot;floatValue&quot;: 3.14, # float
2161 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07002162 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07002163 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
2164 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
Bu Sun Kim65020912020-05-20 12:08:20 -07002165 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07002166 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -07002167 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07002168 ],
Bu Sun Kim65020912020-05-20 12:08:20 -07002169 },
2170 },
Bu Sun Kim65020912020-05-20 12:08:20 -07002171 },
2172 },
2173 ],
2174 },
2175 },
2176 },
2177 &quot;locationId&quot;: &quot;A String&quot;, # The geographic location to store the deidentification template. Reserved
2178 # for future extensions.
2179 }
2180
2181 x__xgafv: string, V1 error format.
2182 Allowed values
2183 1 - v1 error format
2184 2 - v2 error format
2185
2186Returns:
2187 An object of the form:
2188
2189 { # DeidentifyTemplates contains instructions on how to de-identify content.
2190 # See https://cloud.google.com/dlp/docs/concepts-templates to learn more.
2191 &quot;name&quot;: &quot;A String&quot;, # Output only. The template name.
2192 #
2193 # The template will have one of the following formats:
2194 # `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR
2195 # `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`
2196 &quot;description&quot;: &quot;A String&quot;, # Short description (max 256 chars).
2197 &quot;displayName&quot;: &quot;A String&quot;, # Display name (max 256 chars).
2198 &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of an inspectTemplate.
2199 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of an inspectTemplate.
2200 &quot;deidentifyConfig&quot;: { # The configuration that controls how the data will change. # ///////////// // The core content of the template // ///////////////
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07002201 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the dataset as free-form text and apply the same free text
2202 # transformation everywhere.
2203 # apply various `PrimitiveTransformation`s to each finding, where the
2204 # transformation is applied to only values that were identified as a specific
2205 # info_type.
2206 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
2207 # for a given infoType.
2208 { # A transformation to apply to text that is identified as a specific
2209 # info_type.
2210 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
2211 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
2212 # portion of the value.
2213 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
2214 },
2215 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
2216 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
2217 # to learn more.
2218 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
2219 # If set, must also set cryptoKey. If set, shift will be consistent for the
2220 # given context.
2221 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
2222 },
2223 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
2224 # range (inclusive ends). Negative means shift to earlier in time. Must not
2225 # be more than 365250 days (1000 years) each direction.
2226 #
2227 # For example, 3 means shift date to at most 3 days into the future.
2228 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
2229 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
2230 # results in the same shift for the same context and crypto_key. If
2231 # set, must also set context. Can only be applied to table items.
2232 # a key encryption key (KEK) stored by KMS).
2233 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
2234 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
2235 # unwrap the data crypto key.
2236 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
2237 # leaking the key. Choose another type of key if possible.
2238 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
2239 },
2240 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
2241 # It will be discarded after the request finishes.
2242 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
2243 # This is an arbitrary string used to differentiate different keys.
2244 # A unique key is generated per name: two separate `TransientCryptoKey`
2245 # protos share the same generated key if their names are the same.
2246 # When the data crypto key is generated, this name is not used in any way
2247 # (repeating the api call will result in a different key being generated).
2248 },
2249 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
2250 # The wrapped key must be a 128/192/256 bit key.
2251 # Authorization requires the following IAM permissions when sending a request
2252 # to perform a crypto transformation using a kms-wrapped crypto key:
2253 # dlp.kms.encrypt
2254 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
2255 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
2256 },
2257 },
2258 },
2259 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
2260 },
2261 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
2262 # Uses SHA-256.
2263 # The key size must be either 32 or 64 bytes.
2264 # Outputs a base64 encoded representation of the hashed output
2265 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
2266 # Currently, only string and integer values can be hashed.
2267 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
2268 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
2269 # a key encryption key (KEK) stored by KMS).
2270 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
2271 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
2272 # unwrap the data crypto key.
2273 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
2274 # leaking the key. Choose another type of key if possible.
2275 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
2276 },
2277 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
2278 # It will be discarded after the request finishes.
2279 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
2280 # This is an arbitrary string used to differentiate different keys.
2281 # A unique key is generated per name: two separate `TransientCryptoKey`
2282 # protos share the same generated key if their names are the same.
2283 # When the data crypto key is generated, this name is not used in any way
2284 # (repeating the api call will result in a different key being generated).
2285 },
2286 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
2287 # The wrapped key must be a 128/192/256 bit key.
2288 # Authorization requires the following IAM permissions when sending a request
2289 # to perform a crypto transformation using a kms-wrapped crypto key:
2290 # dlp.kms.encrypt
2291 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
2292 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
2293 },
2294 },
2295 },
2296 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
2297 # (FPE) with the FFX mode of operation; however when used in the
2298 # `ReidentifyContent` API method, it serves the opposite function by reversing
2299 # the surrogate back into the original identifier. The identifier must be
2300 # encoded as ASCII. For a given crypto key and context, the same identifier
2301 # will be replaced with the same surrogate. Identifiers must be at least two
2302 # characters long. In the case that the identifier is the empty string, it will
2303 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
2304 # more.
2305 #
2306 # Note: We recommend using CryptoDeterministicConfig for all use cases which
2307 # do not require preserving the input alphabet space and size, plus warrant
2308 # referential integrity.
2309 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
2310 # This annotation will be applied to the surrogate by prefixing it with
2311 # the name of the custom infoType followed by the number of
2312 # characters comprising the surrogate. The following scheme defines the
2313 # format: info_type_name(surrogate_character_count):surrogate
2314 #
2315 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
2316 # the surrogate is &#x27;abc&#x27;, the full replacement value
2317 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
2318 #
2319 # This annotation identifies the surrogate when inspecting content using the
2320 # custom infoType
2321 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
2322 # This facilitates reversal of the surrogate when it occurs in free text.
2323 #
2324 # In order for inspection to work properly, the name of this infoType must
2325 # not occur naturally anywhere in your data; otherwise, inspection may
2326 # find a surrogate that does not correspond to an actual identifier.
2327 # Therefore, choose your custom infoType name carefully after considering
2328 # what your data looks like. One way to select a name that has a high chance
2329 # of yielding reliable detection is to include one or more unicode characters
2330 # that are highly improbable to exist in your data.
2331 # For example, assuming your data is entered from a regular ASCII keyboard,
2332 # the symbol with the hex code point 29DD might be used like so:
2333 # ⧝MY_TOKEN_TYPE
2334 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
2335 # creating a CustomInfoType, or one of the names listed
2336 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
2337 # a built-in type. InfoType names should conform to the pattern
2338 # `[a-zA-Z0-9_]{1,64}`.
2339 },
2340 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
2341 # identifier in two different contexts won&#x27;t be given the same surrogate. If
2342 # the context is not set, a default tweak will be used.
2343 #
2344 # If the context is set but:
2345 #
2346 # 1. there is no record present when transforming a given value or
2347 # 1. the field is not present when transforming a given value,
2348 #
2349 # a default tweak will be used.
2350 #
2351 # Note that case (1) is expected when an `InfoTypeTransformation` is
2352 # applied to both structured and non-structured `ContentItem`s.
2353 # Currently, the referenced field may be of value type integer or string.
2354 #
2355 # The tweak is constructed as a sequence of bytes in big endian byte order
2356 # such that:
2357 #
2358 # - a 64 bit integer is encoded followed by a single byte of value 1
2359 # - a string is encoded in UTF-8 format followed by a single byte of value 2
2360 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
2361 },
2362 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
2363 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
2364 # a key encryption key (KEK) stored by KMS).
2365 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
2366 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
2367 # unwrap the data crypto key.
2368 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
2369 # leaking the key. Choose another type of key if possible.
2370 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
2371 },
2372 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
2373 # It will be discarded after the request finishes.
2374 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
2375 # This is an arbitrary string used to differentiate different keys.
2376 # A unique key is generated per name: two separate `TransientCryptoKey`
2377 # protos share the same generated key if their names are the same.
2378 # When the data crypto key is generated, this name is not used in any way
2379 # (repeating the api call will result in a different key being generated).
2380 },
2381 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
2382 # The wrapped key must be a 128/192/256 bit key.
2383 # Authorization requires the following IAM permissions when sending a request
2384 # to perform a crypto transformation using a kms-wrapped crypto key:
2385 # dlp.kms.encrypt
2386 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
2387 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
2388 },
2389 },
2390 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
2391 # that the FFX mode natively supports. This happens before/after
2392 # encryption/decryption.
2393 # Each character listed must appear only once.
2394 # Number of characters must be in the range [2, 95].
2395 # This must be encoded as ASCII.
2396 # The order of characters does not matter.
2397 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
2398 },
2399 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
2400 # input. Outputs a base64 encoded representation of the encrypted output.
2401 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
2402 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
2403 # This annotation will be applied to the surrogate by prefixing it with
2404 # the name of the custom info type followed by the number of
2405 # characters comprising the surrogate. The following scheme defines the
2406 # format: {info type name}({surrogate character count}):{surrogate}
2407 #
2408 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
2409 # the surrogate is &#x27;abc&#x27;, the full replacement value
2410 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
2411 #
2412 # This annotation identifies the surrogate when inspecting content using the
2413 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
2414 # surrogate when it occurs in free text.
2415 #
2416 # Note: For record transformations where the entire cell in a table is being
2417 # transformed, surrogates are not mandatory. Surrogates are used to denote
2418 # the location of the token and are necessary for re-identification in free
2419 # form text.
2420 #
2421 # In order for inspection to work properly, the name of this info type must
2422 # not occur naturally anywhere in your data; otherwise, inspection may either
2423 #
2424 # - reverse a surrogate that does not correspond to an actual identifier
2425 # - be unable to parse the surrogate and result in an error
2426 #
2427 # Therefore, choose your custom info type name carefully after considering
2428 # what your data looks like. One way to select a name that has a high chance
2429 # of yielding reliable detection is to include one or more unicode characters
2430 # that are highly improbable to exist in your data.
2431 # For example, assuming your data is entered from a regular ASCII keyboard,
2432 # the symbol with the hex code point 29DD might be used like so:
2433 # ⧝MY_TOKEN_TYPE.
2434 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
2435 # creating a CustomInfoType, or one of the names listed
2436 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
2437 # a built-in type. InfoType names should conform to the pattern
2438 # `[a-zA-Z0-9_]{1,64}`.
2439 },
2440 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
2441 # referential integrity such that the same identifier in two different
2442 # contexts will be given a distinct surrogate. The context is appended to
2443 # plaintext value being encrypted. On decryption the provided context is
2444 # validated against the value used during encryption. If a context was
2445 # provided during encryption, same context must be provided during decryption
2446 # as well.
2447 #
2448 # If the context is not set, plaintext would be used as is for encryption.
2449 # If the context is set but:
2450 #
2451 # 1. there is no record present when transforming a given value or
2452 # 2. the field is not present when transforming a given value,
2453 #
2454 # plaintext would be used as is for encryption.
2455 #
2456 # Note that case (1) is expected when an `InfoTypeTransformation` is
2457 # applied to both structured and non-structured `ContentItem`s.
2458 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
2459 },
2460 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
2461 # a key encryption key (KEK) stored by KMS).
2462 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
2463 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
2464 # unwrap the data crypto key.
2465 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
2466 # leaking the key. Choose another type of key if possible.
2467 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
2468 },
2469 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
2470 # It will be discarded after the request finishes.
2471 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
2472 # This is an arbitrary string used to differentiate different keys.
2473 # A unique key is generated per name: two separate `TransientCryptoKey`
2474 # protos share the same generated key if their names are the same.
2475 # When the data crypto key is generated, this name is not used in any way
2476 # (repeating the api call will result in a different key being generated).
2477 },
2478 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
2479 # The wrapped key must be a 128/192/256 bit key.
2480 # Authorization requires the following IAM permissions when sending a request
2481 # to perform a crypto transformation using a kms-wrapped crypto key:
2482 # dlp.kms.encrypt
2483 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
2484 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
2485 },
2486 },
2487 },
2488 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
2489 # replacement values are dynamically provided by the user for custom behavior,
2490 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
2491 # This can be used on
2492 # data of type: number, long, string, timestamp.
2493 # If the bound `Value` type differs from the type of data being transformed, we
2494 # will first attempt converting the type of the data to be transformed to match
2495 # the type of the bound before comparing.
2496 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
2497 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
2498 { # Bucket is represented as a range, along with replacement values.
2499 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
2500 # the default behavior will be to hyphenate the min-max range.
2501 # Note that for the purposes of inspection or transformation, the number
2502 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
2503 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
2504 # 123456789, the number of bytes would be counted as 9, even though an
2505 # int64 only holds up to 8 bytes of data.
2506 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
2507 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
2508 # and time zone are either specified elsewhere or are not significant. The date
2509 # is relative to the Proleptic Gregorian Calendar. This can represent:
2510 #
2511 # * A full date, with non-zero year, month and day values
2512 # * A month and day value, with a zero year, e.g. an anniversary
2513 # * A year on its own, with zero month and day values
2514 # * A year and month value, with a zero day, e.g. a credit card expiration date
2515 #
2516 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
2517 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
2518 # a year.
2519 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
2520 # month and day.
2521 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
2522 # if specifying a year by itself or a year and month where the day is not
2523 # significant.
2524 },
2525 &quot;stringValue&quot;: &quot;A String&quot;, # string
2526 &quot;integerValue&quot;: &quot;A String&quot;, # integer
2527 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
2528 # or are specified elsewhere. An API may choose to allow leap seconds. Related
2529 # types are google.type.Date and `google.protobuf.Timestamp`.
2530 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
2531 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
2532 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
2533 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
2534 # allow the value 60 if it allows leap-seconds.
2535 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
2536 },
2537 &quot;booleanValue&quot;: True or False, # boolean
2538 &quot;floatValue&quot;: 3.14, # float
2539 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
2540 },
2541 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
2542 # used.
2543 # Note that for the purposes of inspection or transformation, the number
2544 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
2545 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
2546 # 123456789, the number of bytes would be counted as 9, even though an
2547 # int64 only holds up to 8 bytes of data.
2548 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
2549 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
2550 # and time zone are either specified elsewhere or are not significant. The date
2551 # is relative to the Proleptic Gregorian Calendar. This can represent:
2552 #
2553 # * A full date, with non-zero year, month and day values
2554 # * A month and day value, with a zero year, e.g. an anniversary
2555 # * A year on its own, with zero month and day values
2556 # * A year and month value, with a zero day, e.g. a credit card expiration date
2557 #
2558 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
2559 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
2560 # a year.
2561 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
2562 # month and day.
2563 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
2564 # if specifying a year by itself or a year and month where the day is not
2565 # significant.
2566 },
2567 &quot;stringValue&quot;: &quot;A String&quot;, # string
2568 &quot;integerValue&quot;: &quot;A String&quot;, # integer
2569 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
2570 # or are specified elsewhere. An API may choose to allow leap seconds. Related
2571 # types are google.type.Date and `google.protobuf.Timestamp`.
2572 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
2573 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
2574 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
2575 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
2576 # allow the value 60 if it allows leap-seconds.
2577 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
2578 },
2579 &quot;booleanValue&quot;: True or False, # boolean
2580 &quot;floatValue&quot;: 3.14, # float
2581 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
2582 },
2583 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
2584 # Note that for the purposes of inspection or transformation, the number
2585 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
2586 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
2587 # 123456789, the number of bytes would be counted as 9, even though an
2588 # int64 only holds up to 8 bytes of data.
2589 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
2590 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
2591 # and time zone are either specified elsewhere or are not significant. The date
2592 # is relative to the Proleptic Gregorian Calendar. This can represent:
2593 #
2594 # * A full date, with non-zero year, month and day values
2595 # * A month and day value, with a zero year, e.g. an anniversary
2596 # * A year on its own, with zero month and day values
2597 # * A year and month value, with a zero day, e.g. a credit card expiration date
2598 #
2599 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
2600 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
2601 # a year.
2602 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
2603 # month and day.
2604 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
2605 # if specifying a year by itself or a year and month where the day is not
2606 # significant.
2607 },
2608 &quot;stringValue&quot;: &quot;A String&quot;, # string
2609 &quot;integerValue&quot;: &quot;A String&quot;, # integer
2610 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
2611 # or are specified elsewhere. An API may choose to allow leap seconds. Related
2612 # types are google.type.Date and `google.protobuf.Timestamp`.
2613 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
2614 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
2615 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
2616 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
2617 # allow the value 60 if it allows leap-seconds.
2618 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
2619 },
2620 &quot;booleanValue&quot;: True or False, # boolean
2621 &quot;floatValue&quot;: 3.14, # float
2622 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
2623 },
2624 },
2625 ],
2626 },
2627 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
2628 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
2629 # output would be &#x27;My phone number is &#x27;.
2630 },
2631 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
2632 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
2633 # Note that for the purposes of inspection or transformation, the number
2634 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
2635 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
2636 # 123456789, the number of bytes would be counted as 9, even though an
2637 # int64 only holds up to 8 bytes of data.
2638 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
2639 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
2640 # and time zone are either specified elsewhere or are not significant. The date
2641 # is relative to the Proleptic Gregorian Calendar. This can represent:
2642 #
2643 # * A full date, with non-zero year, month and day values
2644 # * A month and day value, with a zero year, e.g. an anniversary
2645 # * A year on its own, with zero month and day values
2646 # * A year and month value, with a zero day, e.g. a credit card expiration date
2647 #
2648 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
2649 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
2650 # a year.
2651 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
2652 # month and day.
2653 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
2654 # if specifying a year by itself or a year and month where the day is not
2655 # significant.
2656 },
2657 &quot;stringValue&quot;: &quot;A String&quot;, # string
2658 &quot;integerValue&quot;: &quot;A String&quot;, # integer
2659 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
2660 # or are specified elsewhere. An API may choose to allow leap seconds. Related
2661 # types are google.type.Date and `google.protobuf.Timestamp`.
2662 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
2663 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
2664 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
2665 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
2666 # allow the value 60 if it allows leap-seconds.
2667 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
2668 },
2669 &quot;booleanValue&quot;: True or False, # boolean
2670 &quot;floatValue&quot;: 3.14, # float
2671 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
2672 },
2673 },
2674 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
2675 # Bucketing transformation can provide all of this functionality,
2676 # but requires more configuration. This message is provided as a convenience to
2677 # the user for simple bucketing strategies.
2678 #
2679 # The transformed value will be a hyphenated string of
2680 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
2681 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
2682 #
2683 # This can be used on data of type: double, long.
2684 #
2685 # If the bound Value type differs from the type of data
2686 # being transformed, we will first attempt converting the type of the data to
2687 # be transformed to match the type of the bound before comparing.
2688 #
2689 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
2690 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
2691 # grouped together into a single bucket; for example if `upper_bound` = 89,
2692 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
2693 # Note that for the purposes of inspection or transformation, the number
2694 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
2695 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
2696 # 123456789, the number of bytes would be counted as 9, even though an
2697 # int64 only holds up to 8 bytes of data.
2698 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
2699 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
2700 # and time zone are either specified elsewhere or are not significant. The date
2701 # is relative to the Proleptic Gregorian Calendar. This can represent:
2702 #
2703 # * A full date, with non-zero year, month and day values
2704 # * A month and day value, with a zero year, e.g. an anniversary
2705 # * A year on its own, with zero month and day values
2706 # * A year and month value, with a zero day, e.g. a credit card expiration date
2707 #
2708 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
2709 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
2710 # a year.
2711 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
2712 # month and day.
2713 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
2714 # if specifying a year by itself or a year and month where the day is not
2715 # significant.
2716 },
2717 &quot;stringValue&quot;: &quot;A String&quot;, # string
2718 &quot;integerValue&quot;: &quot;A String&quot;, # integer
2719 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
2720 # or are specified elsewhere. An API may choose to allow leap seconds. Related
2721 # types are google.type.Date and `google.protobuf.Timestamp`.
2722 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
2723 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
2724 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
2725 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
2726 # allow the value 60 if it allows leap-seconds.
2727 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
2728 },
2729 &quot;booleanValue&quot;: True or False, # boolean
2730 &quot;floatValue&quot;: 3.14, # float
2731 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
2732 },
2733 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
2734 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
2735 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
2736 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
2737 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
2738 # grouped together into a single bucket; for example if `lower_bound` = 10,
2739 # then all values less than 10 are replaced with the value &quot;-10&quot;.
2740 # Note that for the purposes of inspection or transformation, the number
2741 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
2742 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
2743 # 123456789, the number of bytes would be counted as 9, even though an
2744 # int64 only holds up to 8 bytes of data.
2745 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
2746 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
2747 # and time zone are either specified elsewhere or are not significant. The date
2748 # is relative to the Proleptic Gregorian Calendar. This can represent:
2749 #
2750 # * A full date, with non-zero year, month and day values
2751 # * A month and day value, with a zero year, e.g. an anniversary
2752 # * A year on its own, with zero month and day values
2753 # * A year and month value, with a zero day, e.g. a credit card expiration date
2754 #
2755 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
2756 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
2757 # a year.
2758 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
2759 # month and day.
2760 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
2761 # if specifying a year by itself or a year and month where the day is not
2762 # significant.
2763 },
2764 &quot;stringValue&quot;: &quot;A String&quot;, # string
2765 &quot;integerValue&quot;: &quot;A String&quot;, # integer
2766 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
2767 # or are specified elsewhere. An API may choose to allow leap seconds. Related
2768 # types are google.type.Date and `google.protobuf.Timestamp`.
2769 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
2770 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
2771 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
2772 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
2773 # allow the value 60 if it allows leap-seconds.
2774 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
2775 },
2776 &quot;booleanValue&quot;: True or False, # boolean
2777 &quot;floatValue&quot;: 3.14, # float
2778 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
2779 },
2780 },
2781 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
2782 # fixed character. Masking can start from the beginning or end of the string.
2783 # This can be used on data of any type (numbers, longs, and so on) and when
2784 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
2785 # type. (This allows you to take a long like 123 and modify it to a string like
2786 # **3.
2787 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
2788 # characters. For example, if the input string is `555-555-5555` and you
2789 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
2790 # returns `***-**5-5555`.
2791 { # Characters to skip when doing deidentification of a value. These will be left
2792 # alone and skipped.
2793 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
2794 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
2795 # punctuation.
2796 },
2797 ],
2798 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
2799 # masked. Skipped characters do not count towards this tally.
2800 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
2801 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
2802 # code or credit card number. This string must have a length of 1. If not
2803 # supplied, this value defaults to `*` for strings, and `0` for digits.
2804 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
2805 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
2806 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
2807 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
2808 # is `true`, then the string `12345` is masked as `12***`.
2809 },
2810 },
2811 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
2812 # this transformation to apply to all findings that correspond to
2813 # infoTypes that were requested in `InspectConfig`.
2814 { # Type of information detected by the API.
2815 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
2816 # creating a CustomInfoType, or one of the names listed
2817 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
2818 # a built-in type. InfoType names should conform to the pattern
2819 # `[a-zA-Z0-9_]{1,64}`.
2820 },
2821 ],
2822 },
2823 ],
2824 },
Bu Sun Kim65020912020-05-20 12:08:20 -07002825 &quot;transformationErrorHandling&quot;: { # How to handle transformation errors during de-identification. A # Mode for handling transformation errors. If left unspecified, the default
2826 # mode is `TransformationErrorHandling.ThrowError`.
2827 # transformation error occurs when the requested transformation is incompatible
2828 # with the data. For example, trying to de-identify an IP address using a
2829 # `DateShift` transformation would result in a transformation error, since date
2830 # info cannot be extracted from an IP address.
2831 # Information about any incompatible transformations, and how they were
2832 # handled, is returned in the response as part of the
2833 # `TransformationOverviews`.
2834 &quot;throwError&quot;: { # Throw an error and fail the request when a transformation error occurs. # Throw an error
2835 },
2836 &quot;leaveUntransformed&quot;: { # Skips the data without modifying it if the requested transformation would # Ignore errors
2837 # cause an error. For example, if a `DateShift` transformation were applied
2838 # an an IP address, this mode would leave the IP address unchanged in the
2839 # response.
2840 },
2841 },
2842 &quot;recordTransformations&quot;: { # A type of transformation that is applied over structured data such as a # Treat the dataset as structured. Transformations can be applied to
2843 # specific locations within structured datasets, such as transforming
2844 # a column within a table.
2845 # table.
Bu Sun Kim65020912020-05-20 12:08:20 -07002846 &quot;fieldTransformations&quot;: [ # Transform the record by applying various field transformations.
2847 { # The transformation to apply to the field.
2848 &quot;fields&quot;: [ # Required. Input field(s) to apply the transformation to.
2849 { # General identifier of a data field in a storage service.
2850 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
2851 },
2852 ],
2853 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the contents of the field as free text, and selectively
2854 # transform content that matches an `InfoType`.
2855 # apply various `PrimitiveTransformation`s to each finding, where the
2856 # transformation is applied to only values that were identified as a specific
2857 # info_type.
2858 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
2859 # for a given infoType.
2860 { # A transformation to apply to text that is identified as a specific
2861 # info_type.
Bu Sun Kim65020912020-05-20 12:08:20 -07002862 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
2863 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
2864 # portion of the value.
2865 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
2866 },
2867 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
2868 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
2869 # to learn more.
2870 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
2871 # If set, must also set cryptoKey. If set, shift will be consistent for the
2872 # given context.
2873 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
2874 },
2875 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
2876 # range (inclusive ends). Negative means shift to earlier in time. Must not
2877 # be more than 365250 days (1000 years) each direction.
2878 #
2879 # For example, 3 means shift date to at most 3 days into the future.
2880 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
2881 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
2882 # results in the same shift for the same context and crypto_key. If
2883 # set, must also set context. Can only be applied to table items.
2884 # a key encryption key (KEK) stored by KMS).
2885 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
2886 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
2887 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07002888 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
2889 # leaking the key. Choose another type of key if possible.
2890 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
2891 },
2892 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
2893 # It will be discarded after the request finishes.
2894 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
2895 # This is an arbitrary string used to differentiate different keys.
2896 # A unique key is generated per name: two separate `TransientCryptoKey`
2897 # protos share the same generated key if their names are the same.
2898 # When the data crypto key is generated, this name is not used in any way
2899 # (repeating the api call will result in a different key being generated).
2900 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07002901 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
2902 # The wrapped key must be a 128/192/256 bit key.
2903 # Authorization requires the following IAM permissions when sending a request
2904 # to perform a crypto transformation using a kms-wrapped crypto key:
2905 # dlp.kms.encrypt
2906 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
2907 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
2908 },
Bu Sun Kim65020912020-05-20 12:08:20 -07002909 },
2910 },
2911 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
2912 },
2913 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
2914 # Uses SHA-256.
2915 # The key size must be either 32 or 64 bytes.
2916 # Outputs a base64 encoded representation of the hashed output
2917 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
2918 # Currently, only string and integer values can be hashed.
2919 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
2920 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
2921 # a key encryption key (KEK) stored by KMS).
2922 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
2923 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
2924 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07002925 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
2926 # leaking the key. Choose another type of key if possible.
2927 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
2928 },
2929 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
2930 # It will be discarded after the request finishes.
2931 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
2932 # This is an arbitrary string used to differentiate different keys.
2933 # A unique key is generated per name: two separate `TransientCryptoKey`
2934 # protos share the same generated key if their names are the same.
2935 # When the data crypto key is generated, this name is not used in any way
2936 # (repeating the api call will result in a different key being generated).
2937 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07002938 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
2939 # The wrapped key must be a 128/192/256 bit key.
2940 # Authorization requires the following IAM permissions when sending a request
2941 # to perform a crypto transformation using a kms-wrapped crypto key:
2942 # dlp.kms.encrypt
2943 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
2944 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
2945 },
Bu Sun Kim65020912020-05-20 12:08:20 -07002946 },
2947 },
2948 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
2949 # (FPE) with the FFX mode of operation; however when used in the
2950 # `ReidentifyContent` API method, it serves the opposite function by reversing
2951 # the surrogate back into the original identifier. The identifier must be
2952 # encoded as ASCII. For a given crypto key and context, the same identifier
2953 # will be replaced with the same surrogate. Identifiers must be at least two
2954 # characters long. In the case that the identifier is the empty string, it will
2955 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
2956 # more.
2957 #
2958 # Note: We recommend using CryptoDeterministicConfig for all use cases which
2959 # do not require preserving the input alphabet space and size, plus warrant
2960 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -07002961 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
2962 # This annotation will be applied to the surrogate by prefixing it with
2963 # the name of the custom infoType followed by the number of
2964 # characters comprising the surrogate. The following scheme defines the
2965 # format: info_type_name(surrogate_character_count):surrogate
2966 #
2967 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
2968 # the surrogate is &#x27;abc&#x27;, the full replacement value
2969 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
2970 #
2971 # This annotation identifies the surrogate when inspecting content using the
2972 # custom infoType
2973 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
2974 # This facilitates reversal of the surrogate when it occurs in free text.
2975 #
2976 # In order for inspection to work properly, the name of this infoType must
2977 # not occur naturally anywhere in your data; otherwise, inspection may
2978 # find a surrogate that does not correspond to an actual identifier.
2979 # Therefore, choose your custom infoType name carefully after considering
2980 # what your data looks like. One way to select a name that has a high chance
2981 # of yielding reliable detection is to include one or more unicode characters
2982 # that are highly improbable to exist in your data.
2983 # For example, assuming your data is entered from a regular ASCII keyboard,
2984 # the symbol with the hex code point 29DD might be used like so:
2985 # ⧝MY_TOKEN_TYPE
2986 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
2987 # creating a CustomInfoType, or one of the names listed
2988 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
2989 # a built-in type. InfoType names should conform to the pattern
2990 # `[a-zA-Z0-9_]{1,64}`.
2991 },
2992 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
2993 # identifier in two different contexts won&#x27;t be given the same surrogate. If
2994 # the context is not set, a default tweak will be used.
2995 #
2996 # If the context is set but:
2997 #
2998 # 1. there is no record present when transforming a given value or
2999 # 1. the field is not present when transforming a given value,
3000 #
3001 # a default tweak will be used.
3002 #
3003 # Note that case (1) is expected when an `InfoTypeTransformation` is
3004 # applied to both structured and non-structured `ContentItem`s.
3005 # Currently, the referenced field may be of value type integer or string.
3006 #
3007 # The tweak is constructed as a sequence of bytes in big endian byte order
3008 # such that:
3009 #
3010 # - a 64 bit integer is encoded followed by a single byte of value 1
3011 # - a string is encoded in UTF-8 format followed by a single byte of value 2
3012 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
3013 },
3014 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
3015 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
3016 # a key encryption key (KEK) stored by KMS).
3017 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
3018 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
3019 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07003020 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
3021 # leaking the key. Choose another type of key if possible.
3022 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
3023 },
3024 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
3025 # It will be discarded after the request finishes.
3026 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
3027 # This is an arbitrary string used to differentiate different keys.
3028 # A unique key is generated per name: two separate `TransientCryptoKey`
3029 # protos share the same generated key if their names are the same.
3030 # When the data crypto key is generated, this name is not used in any way
3031 # (repeating the api call will result in a different key being generated).
3032 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003033 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
3034 # The wrapped key must be a 128/192/256 bit key.
3035 # Authorization requires the following IAM permissions when sending a request
3036 # to perform a crypto transformation using a kms-wrapped crypto key:
3037 # dlp.kms.encrypt
3038 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
3039 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
3040 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003041 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003042 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
3043 # that the FFX mode natively supports. This happens before/after
3044 # encryption/decryption.
3045 # Each character listed must appear only once.
3046 # Number of characters must be in the range [2, 95].
3047 # This must be encoded as ASCII.
3048 # The order of characters does not matter.
3049 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -07003050 },
3051 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
3052 # input. Outputs a base64 encoded representation of the encrypted output.
3053 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
3054 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
3055 # This annotation will be applied to the surrogate by prefixing it with
3056 # the name of the custom info type followed by the number of
3057 # characters comprising the surrogate. The following scheme defines the
3058 # format: {info type name}({surrogate character count}):{surrogate}
3059 #
3060 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
3061 # the surrogate is &#x27;abc&#x27;, the full replacement value
3062 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
3063 #
3064 # This annotation identifies the surrogate when inspecting content using the
3065 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
3066 # surrogate when it occurs in free text.
3067 #
3068 # Note: For record transformations where the entire cell in a table is being
3069 # transformed, surrogates are not mandatory. Surrogates are used to denote
3070 # the location of the token and are necessary for re-identification in free
3071 # form text.
3072 #
3073 # In order for inspection to work properly, the name of this info type must
3074 # not occur naturally anywhere in your data; otherwise, inspection may either
3075 #
3076 # - reverse a surrogate that does not correspond to an actual identifier
3077 # - be unable to parse the surrogate and result in an error
3078 #
3079 # Therefore, choose your custom info type name carefully after considering
3080 # what your data looks like. One way to select a name that has a high chance
3081 # of yielding reliable detection is to include one or more unicode characters
3082 # that are highly improbable to exist in your data.
3083 # For example, assuming your data is entered from a regular ASCII keyboard,
3084 # the symbol with the hex code point 29DD might be used like so:
3085 # ⧝MY_TOKEN_TYPE.
3086 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
3087 # creating a CustomInfoType, or one of the names listed
3088 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
3089 # a built-in type. InfoType names should conform to the pattern
3090 # `[a-zA-Z0-9_]{1,64}`.
3091 },
3092 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
3093 # referential integrity such that the same identifier in two different
3094 # contexts will be given a distinct surrogate. The context is appended to
3095 # plaintext value being encrypted. On decryption the provided context is
3096 # validated against the value used during encryption. If a context was
3097 # provided during encryption, same context must be provided during decryption
3098 # as well.
3099 #
3100 # If the context is not set, plaintext would be used as is for encryption.
3101 # If the context is set but:
3102 #
3103 # 1. there is no record present when transforming a given value or
3104 # 2. the field is not present when transforming a given value,
3105 #
3106 # plaintext would be used as is for encryption.
3107 #
3108 # Note that case (1) is expected when an `InfoTypeTransformation` is
3109 # applied to both structured and non-structured `ContentItem`s.
3110 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
3111 },
3112 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
3113 # a key encryption key (KEK) stored by KMS).
3114 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
3115 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
3116 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07003117 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
3118 # leaking the key. Choose another type of key if possible.
3119 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
3120 },
3121 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
3122 # It will be discarded after the request finishes.
3123 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
3124 # This is an arbitrary string used to differentiate different keys.
3125 # A unique key is generated per name: two separate `TransientCryptoKey`
3126 # protos share the same generated key if their names are the same.
3127 # When the data crypto key is generated, this name is not used in any way
3128 # (repeating the api call will result in a different key being generated).
3129 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003130 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
3131 # The wrapped key must be a 128/192/256 bit key.
3132 # Authorization requires the following IAM permissions when sending a request
3133 # to perform a crypto transformation using a kms-wrapped crypto key:
3134 # dlp.kms.encrypt
3135 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
3136 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
3137 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003138 },
3139 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003140 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
3141 # replacement values are dynamically provided by the user for custom behavior,
3142 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
3143 # This can be used on
3144 # data of type: number, long, string, timestamp.
3145 # If the bound `Value` type differs from the type of data being transformed, we
3146 # will first attempt converting the type of the data to be transformed to match
3147 # the type of the bound before comparing.
3148 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
3149 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
3150 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -07003151 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
3152 # the default behavior will be to hyphenate the min-max range.
3153 # Note that for the purposes of inspection or transformation, the number
3154 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
3155 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
3156 # 123456789, the number of bytes would be counted as 9, even though an
3157 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07003158 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
3159 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
3160 # and time zone are either specified elsewhere or are not significant. The date
3161 # is relative to the Proleptic Gregorian Calendar. This can represent:
3162 #
3163 # * A full date, with non-zero year, month and day values
3164 # * A month and day value, with a zero year, e.g. an anniversary
3165 # * A year on its own, with zero month and day values
3166 # * A year and month value, with a zero day, e.g. a credit card expiration date
3167 #
3168 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
3169 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
3170 # a year.
3171 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
3172 # month and day.
3173 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
3174 # if specifying a year by itself or a year and month where the day is not
3175 # significant.
3176 },
3177 &quot;stringValue&quot;: &quot;A String&quot;, # string
3178 &quot;integerValue&quot;: &quot;A String&quot;, # integer
3179 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
3180 # or are specified elsewhere. An API may choose to allow leap seconds. Related
3181 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07003182 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
3183 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
3184 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003185 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
3186 # allow the value 60 if it allows leap-seconds.
3187 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07003188 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003189 &quot;booleanValue&quot;: True or False, # boolean
3190 &quot;floatValue&quot;: 3.14, # float
3191 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
3192 },
3193 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
3194 # used.
3195 # Note that for the purposes of inspection or transformation, the number
3196 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
3197 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
3198 # 123456789, the number of bytes would be counted as 9, even though an
3199 # int64 only holds up to 8 bytes of data.
3200 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
3201 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
3202 # and time zone are either specified elsewhere or are not significant. The date
3203 # is relative to the Proleptic Gregorian Calendar. This can represent:
3204 #
3205 # * A full date, with non-zero year, month and day values
3206 # * A month and day value, with a zero year, e.g. an anniversary
3207 # * A year on its own, with zero month and day values
3208 # * A year and month value, with a zero day, e.g. a credit card expiration date
3209 #
3210 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
3211 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
3212 # a year.
3213 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
3214 # month and day.
3215 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
3216 # if specifying a year by itself or a year and month where the day is not
3217 # significant.
3218 },
3219 &quot;stringValue&quot;: &quot;A String&quot;, # string
3220 &quot;integerValue&quot;: &quot;A String&quot;, # integer
3221 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
3222 # or are specified elsewhere. An API may choose to allow leap seconds. Related
3223 # types are google.type.Date and `google.protobuf.Timestamp`.
3224 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
3225 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
3226 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
3227 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
3228 # allow the value 60 if it allows leap-seconds.
3229 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
3230 },
3231 &quot;booleanValue&quot;: True or False, # boolean
3232 &quot;floatValue&quot;: 3.14, # float
3233 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
3234 },
3235 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
3236 # Note that for the purposes of inspection or transformation, the number
3237 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
3238 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
3239 # 123456789, the number of bytes would be counted as 9, even though an
3240 # int64 only holds up to 8 bytes of data.
3241 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
3242 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
3243 # and time zone are either specified elsewhere or are not significant. The date
3244 # is relative to the Proleptic Gregorian Calendar. This can represent:
3245 #
3246 # * A full date, with non-zero year, month and day values
3247 # * A month and day value, with a zero year, e.g. an anniversary
3248 # * A year on its own, with zero month and day values
3249 # * A year and month value, with a zero day, e.g. a credit card expiration date
3250 #
3251 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
3252 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
3253 # a year.
3254 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
3255 # month and day.
3256 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
3257 # if specifying a year by itself or a year and month where the day is not
3258 # significant.
3259 },
3260 &quot;stringValue&quot;: &quot;A String&quot;, # string
3261 &quot;integerValue&quot;: &quot;A String&quot;, # integer
3262 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
3263 # or are specified elsewhere. An API may choose to allow leap seconds. Related
3264 # types are google.type.Date and `google.protobuf.Timestamp`.
3265 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
3266 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
3267 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
3268 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
3269 # allow the value 60 if it allows leap-seconds.
3270 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
3271 },
3272 &quot;booleanValue&quot;: True or False, # boolean
3273 &quot;floatValue&quot;: 3.14, # float
3274 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07003275 },
3276 },
3277 ],
3278 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003279 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
3280 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
3281 # output would be &#x27;My phone number is &#x27;.
3282 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003283 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
3284 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
3285 # Note that for the purposes of inspection or transformation, the number
3286 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
3287 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
3288 # 123456789, the number of bytes would be counted as 9, even though an
3289 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07003290 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
3291 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
3292 # and time zone are either specified elsewhere or are not significant. The date
3293 # is relative to the Proleptic Gregorian Calendar. This can represent:
3294 #
3295 # * A full date, with non-zero year, month and day values
3296 # * A month and day value, with a zero year, e.g. an anniversary
3297 # * A year on its own, with zero month and day values
3298 # * A year and month value, with a zero day, e.g. a credit card expiration date
3299 #
3300 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
3301 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
3302 # a year.
3303 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
3304 # month and day.
3305 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
3306 # if specifying a year by itself or a year and month where the day is not
3307 # significant.
3308 },
3309 &quot;stringValue&quot;: &quot;A String&quot;, # string
3310 &quot;integerValue&quot;: &quot;A String&quot;, # integer
3311 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
3312 # or are specified elsewhere. An API may choose to allow leap seconds. Related
3313 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07003314 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
3315 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
3316 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003317 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
3318 # allow the value 60 if it allows leap-seconds.
3319 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07003320 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003321 &quot;booleanValue&quot;: True or False, # boolean
3322 &quot;floatValue&quot;: 3.14, # float
3323 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07003324 },
3325 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003326 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
3327 # Bucketing transformation can provide all of this functionality,
3328 # but requires more configuration. This message is provided as a convenience to
3329 # the user for simple bucketing strategies.
3330 #
3331 # The transformed value will be a hyphenated string of
3332 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
3333 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
3334 #
3335 # This can be used on data of type: double, long.
3336 #
3337 # If the bound Value type differs from the type of data
3338 # being transformed, we will first attempt converting the type of the data to
3339 # be transformed to match the type of the bound before comparing.
3340 #
3341 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -07003342 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
3343 # grouped together into a single bucket; for example if `upper_bound` = 89,
3344 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
3345 # Note that for the purposes of inspection or transformation, the number
3346 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
3347 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
3348 # 123456789, the number of bytes would be counted as 9, even though an
3349 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07003350 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
3351 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
3352 # and time zone are either specified elsewhere or are not significant. The date
3353 # is relative to the Proleptic Gregorian Calendar. This can represent:
3354 #
3355 # * A full date, with non-zero year, month and day values
3356 # * A month and day value, with a zero year, e.g. an anniversary
3357 # * A year on its own, with zero month and day values
3358 # * A year and month value, with a zero day, e.g. a credit card expiration date
3359 #
3360 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
3361 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
3362 # a year.
3363 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
3364 # month and day.
3365 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
3366 # if specifying a year by itself or a year and month where the day is not
3367 # significant.
3368 },
3369 &quot;stringValue&quot;: &quot;A String&quot;, # string
3370 &quot;integerValue&quot;: &quot;A String&quot;, # integer
3371 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
3372 # or are specified elsewhere. An API may choose to allow leap seconds. Related
3373 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07003374 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
3375 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
3376 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003377 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
3378 # allow the value 60 if it allows leap-seconds.
3379 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07003380 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003381 &quot;booleanValue&quot;: True or False, # boolean
3382 &quot;floatValue&quot;: 3.14, # float
3383 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07003384 },
3385 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
3386 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
3387 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
3388 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003389 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
3390 # grouped together into a single bucket; for example if `lower_bound` = 10,
3391 # then all values less than 10 are replaced with the value &quot;-10&quot;.
3392 # Note that for the purposes of inspection or transformation, the number
3393 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
3394 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
3395 # 123456789, the number of bytes would be counted as 9, even though an
3396 # int64 only holds up to 8 bytes of data.
3397 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
3398 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
3399 # and time zone are either specified elsewhere or are not significant. The date
3400 # is relative to the Proleptic Gregorian Calendar. This can represent:
3401 #
3402 # * A full date, with non-zero year, month and day values
3403 # * A month and day value, with a zero year, e.g. an anniversary
3404 # * A year on its own, with zero month and day values
3405 # * A year and month value, with a zero day, e.g. a credit card expiration date
3406 #
3407 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
3408 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
3409 # a year.
3410 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
3411 # month and day.
3412 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
3413 # if specifying a year by itself or a year and month where the day is not
3414 # significant.
3415 },
3416 &quot;stringValue&quot;: &quot;A String&quot;, # string
3417 &quot;integerValue&quot;: &quot;A String&quot;, # integer
3418 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
3419 # or are specified elsewhere. An API may choose to allow leap seconds. Related
3420 # types are google.type.Date and `google.protobuf.Timestamp`.
3421 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
3422 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
3423 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
3424 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
3425 # allow the value 60 if it allows leap-seconds.
3426 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
3427 },
3428 &quot;booleanValue&quot;: True or False, # boolean
3429 &quot;floatValue&quot;: 3.14, # float
3430 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
3431 },
3432 },
3433 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
3434 # fixed character. Masking can start from the beginning or end of the string.
3435 # This can be used on data of any type (numbers, longs, and so on) and when
3436 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
3437 # type. (This allows you to take a long like 123 and modify it to a string like
3438 # **3.
3439 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
3440 # characters. For example, if the input string is `555-555-5555` and you
3441 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
3442 # returns `***-**5-5555`.
3443 { # Characters to skip when doing deidentification of a value. These will be left
3444 # alone and skipped.
3445 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
3446 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
3447 # punctuation.
3448 },
3449 ],
3450 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
3451 # masked. Skipped characters do not count towards this tally.
3452 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
3453 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
3454 # code or credit card number. This string must have a length of 1. If not
3455 # supplied, this value defaults to `*` for strings, and `0` for digits.
3456 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
3457 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
3458 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
3459 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
3460 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -07003461 },
3462 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003463 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
3464 # this transformation to apply to all findings that correspond to
3465 # infoTypes that were requested in `InspectConfig`.
3466 { # Type of information detected by the API.
3467 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
3468 # creating a CustomInfoType, or one of the names listed
3469 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
3470 # a built-in type. InfoType names should conform to the pattern
3471 # `[a-zA-Z0-9_]{1,64}`.
3472 },
3473 ],
Bu Sun Kim65020912020-05-20 12:08:20 -07003474 },
3475 ],
3476 },
3477 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Apply the transformation to the entire field.
3478 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
3479 # portion of the value.
3480 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
3481 },
3482 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
3483 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
3484 # to learn more.
3485 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
3486 # If set, must also set cryptoKey. If set, shift will be consistent for the
3487 # given context.
3488 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
3489 },
3490 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
3491 # range (inclusive ends). Negative means shift to earlier in time. Must not
3492 # be more than 365250 days (1000 years) each direction.
3493 #
3494 # For example, 3 means shift date to at most 3 days into the future.
3495 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
3496 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
3497 # results in the same shift for the same context and crypto_key. If
3498 # set, must also set context. Can only be applied to table items.
3499 # a key encryption key (KEK) stored by KMS).
3500 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
3501 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
3502 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07003503 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
3504 # leaking the key. Choose another type of key if possible.
3505 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
3506 },
3507 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
3508 # It will be discarded after the request finishes.
3509 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
3510 # This is an arbitrary string used to differentiate different keys.
3511 # A unique key is generated per name: two separate `TransientCryptoKey`
3512 # protos share the same generated key if their names are the same.
3513 # When the data crypto key is generated, this name is not used in any way
3514 # (repeating the api call will result in a different key being generated).
3515 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003516 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
3517 # The wrapped key must be a 128/192/256 bit key.
3518 # Authorization requires the following IAM permissions when sending a request
3519 # to perform a crypto transformation using a kms-wrapped crypto key:
3520 # dlp.kms.encrypt
3521 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
3522 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
3523 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003524 },
3525 },
3526 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
3527 },
3528 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
3529 # Uses SHA-256.
3530 # The key size must be either 32 or 64 bytes.
3531 # Outputs a base64 encoded representation of the hashed output
3532 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
3533 # Currently, only string and integer values can be hashed.
3534 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
3535 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
3536 # a key encryption key (KEK) stored by KMS).
3537 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
3538 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
3539 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07003540 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
3541 # leaking the key. Choose another type of key if possible.
3542 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
3543 },
3544 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
3545 # It will be discarded after the request finishes.
3546 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
3547 # This is an arbitrary string used to differentiate different keys.
3548 # A unique key is generated per name: two separate `TransientCryptoKey`
3549 # protos share the same generated key if their names are the same.
3550 # When the data crypto key is generated, this name is not used in any way
3551 # (repeating the api call will result in a different key being generated).
3552 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003553 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
3554 # The wrapped key must be a 128/192/256 bit key.
3555 # Authorization requires the following IAM permissions when sending a request
3556 # to perform a crypto transformation using a kms-wrapped crypto key:
3557 # dlp.kms.encrypt
3558 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
3559 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
3560 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003561 },
3562 },
3563 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
3564 # (FPE) with the FFX mode of operation; however when used in the
3565 # `ReidentifyContent` API method, it serves the opposite function by reversing
3566 # the surrogate back into the original identifier. The identifier must be
3567 # encoded as ASCII. For a given crypto key and context, the same identifier
3568 # will be replaced with the same surrogate. Identifiers must be at least two
3569 # characters long. In the case that the identifier is the empty string, it will
3570 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
3571 # more.
3572 #
3573 # Note: We recommend using CryptoDeterministicConfig for all use cases which
3574 # do not require preserving the input alphabet space and size, plus warrant
3575 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -07003576 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
3577 # This annotation will be applied to the surrogate by prefixing it with
3578 # the name of the custom infoType followed by the number of
3579 # characters comprising the surrogate. The following scheme defines the
3580 # format: info_type_name(surrogate_character_count):surrogate
3581 #
3582 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
3583 # the surrogate is &#x27;abc&#x27;, the full replacement value
3584 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
3585 #
3586 # This annotation identifies the surrogate when inspecting content using the
3587 # custom infoType
3588 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
3589 # This facilitates reversal of the surrogate when it occurs in free text.
3590 #
3591 # In order for inspection to work properly, the name of this infoType must
3592 # not occur naturally anywhere in your data; otherwise, inspection may
3593 # find a surrogate that does not correspond to an actual identifier.
3594 # Therefore, choose your custom infoType name carefully after considering
3595 # what your data looks like. One way to select a name that has a high chance
3596 # of yielding reliable detection is to include one or more unicode characters
3597 # that are highly improbable to exist in your data.
3598 # For example, assuming your data is entered from a regular ASCII keyboard,
3599 # the symbol with the hex code point 29DD might be used like so:
3600 # ⧝MY_TOKEN_TYPE
3601 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
3602 # creating a CustomInfoType, or one of the names listed
3603 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
3604 # a built-in type. InfoType names should conform to the pattern
3605 # `[a-zA-Z0-9_]{1,64}`.
3606 },
3607 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
3608 # identifier in two different contexts won&#x27;t be given the same surrogate. If
3609 # the context is not set, a default tweak will be used.
3610 #
3611 # If the context is set but:
3612 #
3613 # 1. there is no record present when transforming a given value or
3614 # 1. the field is not present when transforming a given value,
3615 #
3616 # a default tweak will be used.
3617 #
3618 # Note that case (1) is expected when an `InfoTypeTransformation` is
3619 # applied to both structured and non-structured `ContentItem`s.
3620 # Currently, the referenced field may be of value type integer or string.
3621 #
3622 # The tweak is constructed as a sequence of bytes in big endian byte order
3623 # such that:
3624 #
3625 # - a 64 bit integer is encoded followed by a single byte of value 1
3626 # - a string is encoded in UTF-8 format followed by a single byte of value 2
3627 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
3628 },
3629 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
3630 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
3631 # a key encryption key (KEK) stored by KMS).
3632 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
3633 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
3634 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07003635 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
3636 # leaking the key. Choose another type of key if possible.
3637 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
3638 },
3639 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
3640 # It will be discarded after the request finishes.
3641 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
3642 # This is an arbitrary string used to differentiate different keys.
3643 # A unique key is generated per name: two separate `TransientCryptoKey`
3644 # protos share the same generated key if their names are the same.
3645 # When the data crypto key is generated, this name is not used in any way
3646 # (repeating the api call will result in a different key being generated).
3647 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003648 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
3649 # The wrapped key must be a 128/192/256 bit key.
3650 # Authorization requires the following IAM permissions when sending a request
3651 # to perform a crypto transformation using a kms-wrapped crypto key:
3652 # dlp.kms.encrypt
3653 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
3654 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
3655 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003656 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003657 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
3658 # that the FFX mode natively supports. This happens before/after
3659 # encryption/decryption.
3660 # Each character listed must appear only once.
3661 # Number of characters must be in the range [2, 95].
3662 # This must be encoded as ASCII.
3663 # The order of characters does not matter.
3664 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -07003665 },
3666 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
3667 # input. Outputs a base64 encoded representation of the encrypted output.
3668 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
3669 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
3670 # This annotation will be applied to the surrogate by prefixing it with
3671 # the name of the custom info type followed by the number of
3672 # characters comprising the surrogate. The following scheme defines the
3673 # format: {info type name}({surrogate character count}):{surrogate}
3674 #
3675 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
3676 # the surrogate is &#x27;abc&#x27;, the full replacement value
3677 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
3678 #
3679 # This annotation identifies the surrogate when inspecting content using the
3680 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
3681 # surrogate when it occurs in free text.
3682 #
3683 # Note: For record transformations where the entire cell in a table is being
3684 # transformed, surrogates are not mandatory. Surrogates are used to denote
3685 # the location of the token and are necessary for re-identification in free
3686 # form text.
3687 #
3688 # In order for inspection to work properly, the name of this info type must
3689 # not occur naturally anywhere in your data; otherwise, inspection may either
3690 #
3691 # - reverse a surrogate that does not correspond to an actual identifier
3692 # - be unable to parse the surrogate and result in an error
3693 #
3694 # Therefore, choose your custom info type name carefully after considering
3695 # what your data looks like. One way to select a name that has a high chance
3696 # of yielding reliable detection is to include one or more unicode characters
3697 # that are highly improbable to exist in your data.
3698 # For example, assuming your data is entered from a regular ASCII keyboard,
3699 # the symbol with the hex code point 29DD might be used like so:
3700 # ⧝MY_TOKEN_TYPE.
3701 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
3702 # creating a CustomInfoType, or one of the names listed
3703 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
3704 # a built-in type. InfoType names should conform to the pattern
3705 # `[a-zA-Z0-9_]{1,64}`.
3706 },
3707 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
3708 # referential integrity such that the same identifier in two different
3709 # contexts will be given a distinct surrogate. The context is appended to
3710 # plaintext value being encrypted. On decryption the provided context is
3711 # validated against the value used during encryption. If a context was
3712 # provided during encryption, same context must be provided during decryption
3713 # as well.
3714 #
3715 # If the context is not set, plaintext would be used as is for encryption.
3716 # If the context is set but:
3717 #
3718 # 1. there is no record present when transforming a given value or
3719 # 2. the field is not present when transforming a given value,
3720 #
3721 # plaintext would be used as is for encryption.
3722 #
3723 # Note that case (1) is expected when an `InfoTypeTransformation` is
3724 # applied to both structured and non-structured `ContentItem`s.
3725 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
3726 },
3727 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
3728 # a key encryption key (KEK) stored by KMS).
3729 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
3730 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
3731 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07003732 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
3733 # leaking the key. Choose another type of key if possible.
3734 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
3735 },
3736 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
3737 # It will be discarded after the request finishes.
3738 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
3739 # This is an arbitrary string used to differentiate different keys.
3740 # A unique key is generated per name: two separate `TransientCryptoKey`
3741 # protos share the same generated key if their names are the same.
3742 # When the data crypto key is generated, this name is not used in any way
3743 # (repeating the api call will result in a different key being generated).
3744 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003745 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
3746 # The wrapped key must be a 128/192/256 bit key.
3747 # Authorization requires the following IAM permissions when sending a request
3748 # to perform a crypto transformation using a kms-wrapped crypto key:
3749 # dlp.kms.encrypt
3750 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
3751 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
3752 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003753 },
3754 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003755 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
3756 # replacement values are dynamically provided by the user for custom behavior,
3757 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
3758 # This can be used on
3759 # data of type: number, long, string, timestamp.
3760 # If the bound `Value` type differs from the type of data being transformed, we
3761 # will first attempt converting the type of the data to be transformed to match
3762 # the type of the bound before comparing.
3763 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
3764 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
3765 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -07003766 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
3767 # the default behavior will be to hyphenate the min-max range.
3768 # Note that for the purposes of inspection or transformation, the number
3769 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
3770 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
3771 # 123456789, the number of bytes would be counted as 9, even though an
3772 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07003773 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
3774 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
3775 # and time zone are either specified elsewhere or are not significant. The date
3776 # is relative to the Proleptic Gregorian Calendar. This can represent:
3777 #
3778 # * A full date, with non-zero year, month and day values
3779 # * A month and day value, with a zero year, e.g. an anniversary
3780 # * A year on its own, with zero month and day values
3781 # * A year and month value, with a zero day, e.g. a credit card expiration date
3782 #
3783 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
3784 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
3785 # a year.
3786 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
3787 # month and day.
3788 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
3789 # if specifying a year by itself or a year and month where the day is not
3790 # significant.
3791 },
3792 &quot;stringValue&quot;: &quot;A String&quot;, # string
3793 &quot;integerValue&quot;: &quot;A String&quot;, # integer
3794 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
3795 # or are specified elsewhere. An API may choose to allow leap seconds. Related
3796 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07003797 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
3798 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
3799 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003800 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
3801 # allow the value 60 if it allows leap-seconds.
3802 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07003803 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003804 &quot;booleanValue&quot;: True or False, # boolean
3805 &quot;floatValue&quot;: 3.14, # float
3806 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
3807 },
3808 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
3809 # used.
3810 # Note that for the purposes of inspection or transformation, the number
3811 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
3812 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
3813 # 123456789, the number of bytes would be counted as 9, even though an
3814 # int64 only holds up to 8 bytes of data.
3815 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
3816 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
3817 # and time zone are either specified elsewhere or are not significant. The date
3818 # is relative to the Proleptic Gregorian Calendar. This can represent:
3819 #
3820 # * A full date, with non-zero year, month and day values
3821 # * A month and day value, with a zero year, e.g. an anniversary
3822 # * A year on its own, with zero month and day values
3823 # * A year and month value, with a zero day, e.g. a credit card expiration date
3824 #
3825 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
3826 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
3827 # a year.
3828 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
3829 # month and day.
3830 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
3831 # if specifying a year by itself or a year and month where the day is not
3832 # significant.
3833 },
3834 &quot;stringValue&quot;: &quot;A String&quot;, # string
3835 &quot;integerValue&quot;: &quot;A String&quot;, # integer
3836 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
3837 # or are specified elsewhere. An API may choose to allow leap seconds. Related
3838 # types are google.type.Date and `google.protobuf.Timestamp`.
3839 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
3840 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
3841 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
3842 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
3843 # allow the value 60 if it allows leap-seconds.
3844 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
3845 },
3846 &quot;booleanValue&quot;: True or False, # boolean
3847 &quot;floatValue&quot;: 3.14, # float
3848 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
3849 },
3850 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
3851 # Note that for the purposes of inspection or transformation, the number
3852 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
3853 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
3854 # 123456789, the number of bytes would be counted as 9, even though an
3855 # int64 only holds up to 8 bytes of data.
3856 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
3857 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
3858 # and time zone are either specified elsewhere or are not significant. The date
3859 # is relative to the Proleptic Gregorian Calendar. This can represent:
3860 #
3861 # * A full date, with non-zero year, month and day values
3862 # * A month and day value, with a zero year, e.g. an anniversary
3863 # * A year on its own, with zero month and day values
3864 # * A year and month value, with a zero day, e.g. a credit card expiration date
3865 #
3866 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
3867 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
3868 # a year.
3869 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
3870 # month and day.
3871 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
3872 # if specifying a year by itself or a year and month where the day is not
3873 # significant.
3874 },
3875 &quot;stringValue&quot;: &quot;A String&quot;, # string
3876 &quot;integerValue&quot;: &quot;A String&quot;, # integer
3877 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
3878 # or are specified elsewhere. An API may choose to allow leap seconds. Related
3879 # types are google.type.Date and `google.protobuf.Timestamp`.
3880 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
3881 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
3882 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
3883 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
3884 # allow the value 60 if it allows leap-seconds.
3885 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
3886 },
3887 &quot;booleanValue&quot;: True or False, # boolean
3888 &quot;floatValue&quot;: 3.14, # float
3889 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07003890 },
3891 },
3892 ],
3893 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003894 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
3895 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
3896 # output would be &#x27;My phone number is &#x27;.
3897 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003898 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
3899 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
3900 # Note that for the purposes of inspection or transformation, the number
3901 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
3902 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
3903 # 123456789, the number of bytes would be counted as 9, even though an
3904 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07003905 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
3906 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
3907 # and time zone are either specified elsewhere or are not significant. The date
3908 # is relative to the Proleptic Gregorian Calendar. This can represent:
3909 #
3910 # * A full date, with non-zero year, month and day values
3911 # * A month and day value, with a zero year, e.g. an anniversary
3912 # * A year on its own, with zero month and day values
3913 # * A year and month value, with a zero day, e.g. a credit card expiration date
3914 #
3915 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
3916 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
3917 # a year.
3918 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
3919 # month and day.
3920 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
3921 # if specifying a year by itself or a year and month where the day is not
3922 # significant.
3923 },
3924 &quot;stringValue&quot;: &quot;A String&quot;, # string
3925 &quot;integerValue&quot;: &quot;A String&quot;, # integer
3926 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
3927 # or are specified elsewhere. An API may choose to allow leap seconds. Related
3928 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07003929 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
3930 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
3931 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003932 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
3933 # allow the value 60 if it allows leap-seconds.
3934 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07003935 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003936 &quot;booleanValue&quot;: True or False, # boolean
3937 &quot;floatValue&quot;: 3.14, # float
3938 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07003939 },
3940 },
Bu Sun Kim65020912020-05-20 12:08:20 -07003941 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
3942 # Bucketing transformation can provide all of this functionality,
3943 # but requires more configuration. This message is provided as a convenience to
3944 # the user for simple bucketing strategies.
3945 #
3946 # The transformed value will be a hyphenated string of
3947 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
3948 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
3949 #
3950 # This can be used on data of type: double, long.
3951 #
3952 # If the bound Value type differs from the type of data
3953 # being transformed, we will first attempt converting the type of the data to
3954 # be transformed to match the type of the bound before comparing.
3955 #
3956 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -07003957 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
3958 # grouped together into a single bucket; for example if `upper_bound` = 89,
3959 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
3960 # Note that for the purposes of inspection or transformation, the number
3961 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
3962 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
3963 # 123456789, the number of bytes would be counted as 9, even though an
3964 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07003965 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
3966 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
3967 # and time zone are either specified elsewhere or are not significant. The date
3968 # is relative to the Proleptic Gregorian Calendar. This can represent:
3969 #
3970 # * A full date, with non-zero year, month and day values
3971 # * A month and day value, with a zero year, e.g. an anniversary
3972 # * A year on its own, with zero month and day values
3973 # * A year and month value, with a zero day, e.g. a credit card expiration date
3974 #
3975 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
3976 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
3977 # a year.
3978 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
3979 # month and day.
3980 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
3981 # if specifying a year by itself or a year and month where the day is not
3982 # significant.
3983 },
3984 &quot;stringValue&quot;: &quot;A String&quot;, # string
3985 &quot;integerValue&quot;: &quot;A String&quot;, # integer
3986 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
3987 # or are specified elsewhere. An API may choose to allow leap seconds. Related
3988 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07003989 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
3990 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
3991 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003992 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
3993 # allow the value 60 if it allows leap-seconds.
3994 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07003995 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07003996 &quot;booleanValue&quot;: True or False, # boolean
3997 &quot;floatValue&quot;: 3.14, # float
3998 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07003999 },
4000 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
4001 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
4002 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
4003 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07004004 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
4005 # grouped together into a single bucket; for example if `lower_bound` = 10,
4006 # then all values less than 10 are replaced with the value &quot;-10&quot;.
4007 # Note that for the purposes of inspection or transformation, the number
4008 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
4009 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
4010 # 123456789, the number of bytes would be counted as 9, even though an
4011 # int64 only holds up to 8 bytes of data.
4012 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
4013 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
4014 # and time zone are either specified elsewhere or are not significant. The date
4015 # is relative to the Proleptic Gregorian Calendar. This can represent:
4016 #
4017 # * A full date, with non-zero year, month and day values
4018 # * A month and day value, with a zero year, e.g. an anniversary
4019 # * A year on its own, with zero month and day values
4020 # * A year and month value, with a zero day, e.g. a credit card expiration date
4021 #
4022 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
4023 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
4024 # a year.
4025 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
4026 # month and day.
4027 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
4028 # if specifying a year by itself or a year and month where the day is not
4029 # significant.
4030 },
4031 &quot;stringValue&quot;: &quot;A String&quot;, # string
4032 &quot;integerValue&quot;: &quot;A String&quot;, # integer
4033 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
4034 # or are specified elsewhere. An API may choose to allow leap seconds. Related
4035 # types are google.type.Date and `google.protobuf.Timestamp`.
4036 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
4037 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
4038 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
4039 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
4040 # allow the value 60 if it allows leap-seconds.
4041 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
4042 },
4043 &quot;booleanValue&quot;: True or False, # boolean
4044 &quot;floatValue&quot;: 3.14, # float
4045 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
4046 },
4047 },
4048 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
4049 # fixed character. Masking can start from the beginning or end of the string.
4050 # This can be used on data of any type (numbers, longs, and so on) and when
4051 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
4052 # type. (This allows you to take a long like 123 and modify it to a string like
4053 # **3.
4054 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
4055 # characters. For example, if the input string is `555-555-5555` and you
4056 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
4057 # returns `***-**5-5555`.
4058 { # Characters to skip when doing deidentification of a value. These will be left
4059 # alone and skipped.
4060 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
4061 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
4062 # punctuation.
4063 },
4064 ],
4065 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
4066 # masked. Skipped characters do not count towards this tally.
4067 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
4068 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
4069 # code or credit card number. This string must have a length of 1. If not
4070 # supplied, this value defaults to `*` for strings, and `0` for digits.
4071 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
4072 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
4073 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
4074 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
4075 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -07004076 },
4077 },
4078 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # Only apply the transformation if the condition evaluates to true for the
4079 # given `RecordCondition`. The conditions are allowed to reference fields
4080 # that are not used in the actual transformation.
4081 #
4082 # Example Use Cases:
4083 #
4084 # - Apply a different bucket transformation to an age column if the zip code
4085 # column for the same record is within a specific range.
4086 # - Redact a field if the date of birth field is greater than 85.
4087 # a field.
4088 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
4089 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
4090 # only supported value is `AND`.
4091 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
4092 &quot;conditions&quot;: [ # A collection of conditions.
4093 { # The field type of `value` and `field` do not need to match to be
4094 # considered equal, but not all comparisons are possible.
4095 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
4096 # but all other comparisons are invalid with incompatible types.
4097 # A `value` of type:
4098 #
4099 # - `string` can be compared against all other types
4100 # - `boolean` can only be compared against other booleans
4101 # - `integer` can be compared against doubles or a string if the string value
4102 # can be parsed as an integer.
4103 # - `double` can be compared against integers or a string if the string can
4104 # be parsed as a double.
4105 # - `Timestamp` can be compared against strings in RFC 3339 date string
4106 # format.
4107 # - `TimeOfDay` can be compared against timestamps and strings in the format
4108 # of &#x27;HH:mm:ss&#x27;.
4109 #
4110 # If we fail to compare do to type mismatch, a warning will be given and
4111 # the condition will evaluate to false.
Bu Sun Kim65020912020-05-20 12:08:20 -07004112 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
4113 # Note that for the purposes of inspection or transformation, the number
4114 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
4115 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
4116 # 123456789, the number of bytes would be counted as 9, even though an
4117 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07004118 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
4119 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
4120 # and time zone are either specified elsewhere or are not significant. The date
4121 # is relative to the Proleptic Gregorian Calendar. This can represent:
4122 #
4123 # * A full date, with non-zero year, month and day values
4124 # * A month and day value, with a zero year, e.g. an anniversary
4125 # * A year on its own, with zero month and day values
4126 # * A year and month value, with a zero day, e.g. a credit card expiration date
4127 #
4128 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
4129 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
4130 # a year.
4131 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
4132 # month and day.
4133 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
4134 # if specifying a year by itself or a year and month where the day is not
4135 # significant.
4136 },
4137 &quot;stringValue&quot;: &quot;A String&quot;, # string
4138 &quot;integerValue&quot;: &quot;A String&quot;, # integer
4139 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
4140 # or are specified elsewhere. An API may choose to allow leap seconds. Related
4141 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07004142 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
4143 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
4144 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07004145 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
4146 # allow the value 60 if it allows leap-seconds.
4147 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07004148 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07004149 &quot;booleanValue&quot;: True or False, # boolean
4150 &quot;floatValue&quot;: 3.14, # float
4151 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07004152 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07004153 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
4154 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
4155 },
4156 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -07004157 },
4158 ],
4159 },
4160 },
4161 },
4162 },
4163 ],
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07004164 &quot;recordSuppressions&quot;: [ # Configuration defining which records get suppressed entirely. Records that
4165 # match any suppression rule are omitted from the output.
4166 { # Configuration to suppress records whose suppression conditions evaluate to
4167 # true.
4168 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # A condition that when it evaluates to true will result in the record being
4169 # evaluated to be suppressed from the transformed content.
4170 # a field.
4171 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
4172 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
4173 # only supported value is `AND`.
4174 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
4175 &quot;conditions&quot;: [ # A collection of conditions.
4176 { # The field type of `value` and `field` do not need to match to be
4177 # considered equal, but not all comparisons are possible.
4178 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
4179 # but all other comparisons are invalid with incompatible types.
4180 # A `value` of type:
4181 #
4182 # - `string` can be compared against all other types
4183 # - `boolean` can only be compared against other booleans
4184 # - `integer` can be compared against doubles or a string if the string value
4185 # can be parsed as an integer.
4186 # - `double` can be compared against integers or a string if the string can
4187 # be parsed as a double.
4188 # - `Timestamp` can be compared against strings in RFC 3339 date string
4189 # format.
4190 # - `TimeOfDay` can be compared against timestamps and strings in the format
4191 # of &#x27;HH:mm:ss&#x27;.
4192 #
4193 # If we fail to compare do to type mismatch, a warning will be given and
4194 # the condition will evaluate to false.
4195 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
4196 # Note that for the purposes of inspection or transformation, the number
4197 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
4198 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
4199 # 123456789, the number of bytes would be counted as 9, even though an
4200 # int64 only holds up to 8 bytes of data.
4201 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
4202 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
4203 # and time zone are either specified elsewhere or are not significant. The date
4204 # is relative to the Proleptic Gregorian Calendar. This can represent:
4205 #
4206 # * A full date, with non-zero year, month and day values
4207 # * A month and day value, with a zero year, e.g. an anniversary
4208 # * A year on its own, with zero month and day values
4209 # * A year and month value, with a zero day, e.g. a credit card expiration date
4210 #
4211 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
4212 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
4213 # a year.
4214 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
4215 # month and day.
4216 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
4217 # if specifying a year by itself or a year and month where the day is not
4218 # significant.
4219 },
4220 &quot;stringValue&quot;: &quot;A String&quot;, # string
4221 &quot;integerValue&quot;: &quot;A String&quot;, # integer
4222 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
4223 # or are specified elsewhere. An API may choose to allow leap seconds. Related
4224 # types are google.type.Date and `google.protobuf.Timestamp`.
4225 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
4226 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
4227 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
4228 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
4229 # allow the value 60 if it allows leap-seconds.
4230 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
4231 },
4232 &quot;booleanValue&quot;: True or False, # boolean
4233 &quot;floatValue&quot;: 3.14, # float
4234 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07004235 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07004236 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
4237 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
Bu Sun Kim65020912020-05-20 12:08:20 -07004238 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07004239 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -07004240 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07004241 ],
Bu Sun Kim65020912020-05-20 12:08:20 -07004242 },
4243 },
Bu Sun Kim65020912020-05-20 12:08:20 -07004244 },
4245 },
4246 ],
4247 },
4248 },
4249 }</pre>
4250</div>
4251
4252<div class="method">
4253 <code class="details" id="delete">delete(name, x__xgafv=None)</code>
4254 <pre>Deletes a DeidentifyTemplate.
4255See https://cloud.google.com/dlp/docs/creating-templates-deid to learn
4256more.
4257
4258Args:
4259 name: string, Required. Resource name of the organization and deidentify template to be deleted,
4260for example `organizations/433245324/deidentifyTemplates/432452342` or
4261projects/project-id/deidentifyTemplates/432452342. (required)
4262 x__xgafv: string, V1 error format.
4263 Allowed values
4264 1 - v1 error format
4265 2 - v2 error format
4266
4267Returns:
4268 An object of the form:
4269
4270 { # A generic empty message that you can re-use to avoid defining duplicated
4271 # empty messages in your APIs. A typical example is to use it as the request
4272 # or the response type of an API method. For instance:
4273 #
4274 # service Foo {
4275 # rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
4276 # }
4277 #
4278 # The JSON representation for `Empty` is empty JSON object `{}`.
4279 }</pre>
4280</div>
4281
4282<div class="method">
4283 <code class="details" id="get">get(name, x__xgafv=None)</code>
4284 <pre>Gets a DeidentifyTemplate.
4285See https://cloud.google.com/dlp/docs/creating-templates-deid to learn
4286more.
4287
4288Args:
4289 name: string, Required. Resource name of the organization and deidentify template to be read, for
4290example `organizations/433245324/deidentifyTemplates/432452342` or
4291projects/project-id/deidentifyTemplates/432452342. (required)
4292 x__xgafv: string, V1 error format.
4293 Allowed values
4294 1 - v1 error format
4295 2 - v2 error format
4296
4297Returns:
4298 An object of the form:
4299
4300 { # DeidentifyTemplates contains instructions on how to de-identify content.
4301 # See https://cloud.google.com/dlp/docs/concepts-templates to learn more.
4302 &quot;name&quot;: &quot;A String&quot;, # Output only. The template name.
4303 #
4304 # The template will have one of the following formats:
4305 # `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR
4306 # `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`
4307 &quot;description&quot;: &quot;A String&quot;, # Short description (max 256 chars).
4308 &quot;displayName&quot;: &quot;A String&quot;, # Display name (max 256 chars).
4309 &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of an inspectTemplate.
4310 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of an inspectTemplate.
4311 &quot;deidentifyConfig&quot;: { # The configuration that controls how the data will change. # ///////////// // The core content of the template // ///////////////
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07004312 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the dataset as free-form text and apply the same free text
4313 # transformation everywhere.
4314 # apply various `PrimitiveTransformation`s to each finding, where the
4315 # transformation is applied to only values that were identified as a specific
4316 # info_type.
4317 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
4318 # for a given infoType.
4319 { # A transformation to apply to text that is identified as a specific
4320 # info_type.
4321 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
4322 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
4323 # portion of the value.
4324 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
4325 },
4326 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
4327 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
4328 # to learn more.
4329 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
4330 # If set, must also set cryptoKey. If set, shift will be consistent for the
4331 # given context.
4332 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
4333 },
4334 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
4335 # range (inclusive ends). Negative means shift to earlier in time. Must not
4336 # be more than 365250 days (1000 years) each direction.
4337 #
4338 # For example, 3 means shift date to at most 3 days into the future.
4339 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
4340 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
4341 # results in the same shift for the same context and crypto_key. If
4342 # set, must also set context. Can only be applied to table items.
4343 # a key encryption key (KEK) stored by KMS).
4344 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
4345 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
4346 # unwrap the data crypto key.
4347 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
4348 # leaking the key. Choose another type of key if possible.
4349 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
4350 },
4351 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
4352 # It will be discarded after the request finishes.
4353 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
4354 # This is an arbitrary string used to differentiate different keys.
4355 # A unique key is generated per name: two separate `TransientCryptoKey`
4356 # protos share the same generated key if their names are the same.
4357 # When the data crypto key is generated, this name is not used in any way
4358 # (repeating the api call will result in a different key being generated).
4359 },
4360 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
4361 # The wrapped key must be a 128/192/256 bit key.
4362 # Authorization requires the following IAM permissions when sending a request
4363 # to perform a crypto transformation using a kms-wrapped crypto key:
4364 # dlp.kms.encrypt
4365 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
4366 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
4367 },
4368 },
4369 },
4370 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
4371 },
4372 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
4373 # Uses SHA-256.
4374 # The key size must be either 32 or 64 bytes.
4375 # Outputs a base64 encoded representation of the hashed output
4376 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
4377 # Currently, only string and integer values can be hashed.
4378 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
4379 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
4380 # a key encryption key (KEK) stored by KMS).
4381 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
4382 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
4383 # unwrap the data crypto key.
4384 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
4385 # leaking the key. Choose another type of key if possible.
4386 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
4387 },
4388 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
4389 # It will be discarded after the request finishes.
4390 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
4391 # This is an arbitrary string used to differentiate different keys.
4392 # A unique key is generated per name: two separate `TransientCryptoKey`
4393 # protos share the same generated key if their names are the same.
4394 # When the data crypto key is generated, this name is not used in any way
4395 # (repeating the api call will result in a different key being generated).
4396 },
4397 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
4398 # The wrapped key must be a 128/192/256 bit key.
4399 # Authorization requires the following IAM permissions when sending a request
4400 # to perform a crypto transformation using a kms-wrapped crypto key:
4401 # dlp.kms.encrypt
4402 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
4403 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
4404 },
4405 },
4406 },
4407 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
4408 # (FPE) with the FFX mode of operation; however when used in the
4409 # `ReidentifyContent` API method, it serves the opposite function by reversing
4410 # the surrogate back into the original identifier. The identifier must be
4411 # encoded as ASCII. For a given crypto key and context, the same identifier
4412 # will be replaced with the same surrogate. Identifiers must be at least two
4413 # characters long. In the case that the identifier is the empty string, it will
4414 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
4415 # more.
4416 #
4417 # Note: We recommend using CryptoDeterministicConfig for all use cases which
4418 # do not require preserving the input alphabet space and size, plus warrant
4419 # referential integrity.
4420 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
4421 # This annotation will be applied to the surrogate by prefixing it with
4422 # the name of the custom infoType followed by the number of
4423 # characters comprising the surrogate. The following scheme defines the
4424 # format: info_type_name(surrogate_character_count):surrogate
4425 #
4426 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
4427 # the surrogate is &#x27;abc&#x27;, the full replacement value
4428 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
4429 #
4430 # This annotation identifies the surrogate when inspecting content using the
4431 # custom infoType
4432 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
4433 # This facilitates reversal of the surrogate when it occurs in free text.
4434 #
4435 # In order for inspection to work properly, the name of this infoType must
4436 # not occur naturally anywhere in your data; otherwise, inspection may
4437 # find a surrogate that does not correspond to an actual identifier.
4438 # Therefore, choose your custom infoType name carefully after considering
4439 # what your data looks like. One way to select a name that has a high chance
4440 # of yielding reliable detection is to include one or more unicode characters
4441 # that are highly improbable to exist in your data.
4442 # For example, assuming your data is entered from a regular ASCII keyboard,
4443 # the symbol with the hex code point 29DD might be used like so:
4444 # ⧝MY_TOKEN_TYPE
4445 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
4446 # creating a CustomInfoType, or one of the names listed
4447 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
4448 # a built-in type. InfoType names should conform to the pattern
4449 # `[a-zA-Z0-9_]{1,64}`.
4450 },
4451 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
4452 # identifier in two different contexts won&#x27;t be given the same surrogate. If
4453 # the context is not set, a default tweak will be used.
4454 #
4455 # If the context is set but:
4456 #
4457 # 1. there is no record present when transforming a given value or
4458 # 1. the field is not present when transforming a given value,
4459 #
4460 # a default tweak will be used.
4461 #
4462 # Note that case (1) is expected when an `InfoTypeTransformation` is
4463 # applied to both structured and non-structured `ContentItem`s.
4464 # Currently, the referenced field may be of value type integer or string.
4465 #
4466 # The tweak is constructed as a sequence of bytes in big endian byte order
4467 # such that:
4468 #
4469 # - a 64 bit integer is encoded followed by a single byte of value 1
4470 # - a string is encoded in UTF-8 format followed by a single byte of value 2
4471 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
4472 },
4473 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
4474 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
4475 # a key encryption key (KEK) stored by KMS).
4476 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
4477 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
4478 # unwrap the data crypto key.
4479 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
4480 # leaking the key. Choose another type of key if possible.
4481 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
4482 },
4483 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
4484 # It will be discarded after the request finishes.
4485 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
4486 # This is an arbitrary string used to differentiate different keys.
4487 # A unique key is generated per name: two separate `TransientCryptoKey`
4488 # protos share the same generated key if their names are the same.
4489 # When the data crypto key is generated, this name is not used in any way
4490 # (repeating the api call will result in a different key being generated).
4491 },
4492 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
4493 # The wrapped key must be a 128/192/256 bit key.
4494 # Authorization requires the following IAM permissions when sending a request
4495 # to perform a crypto transformation using a kms-wrapped crypto key:
4496 # dlp.kms.encrypt
4497 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
4498 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
4499 },
4500 },
4501 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
4502 # that the FFX mode natively supports. This happens before/after
4503 # encryption/decryption.
4504 # Each character listed must appear only once.
4505 # Number of characters must be in the range [2, 95].
4506 # This must be encoded as ASCII.
4507 # The order of characters does not matter.
4508 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
4509 },
4510 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
4511 # input. Outputs a base64 encoded representation of the encrypted output.
4512 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
4513 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
4514 # This annotation will be applied to the surrogate by prefixing it with
4515 # the name of the custom info type followed by the number of
4516 # characters comprising the surrogate. The following scheme defines the
4517 # format: {info type name}({surrogate character count}):{surrogate}
4518 #
4519 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
4520 # the surrogate is &#x27;abc&#x27;, the full replacement value
4521 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
4522 #
4523 # This annotation identifies the surrogate when inspecting content using the
4524 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
4525 # surrogate when it occurs in free text.
4526 #
4527 # Note: For record transformations where the entire cell in a table is being
4528 # transformed, surrogates are not mandatory. Surrogates are used to denote
4529 # the location of the token and are necessary for re-identification in free
4530 # form text.
4531 #
4532 # In order for inspection to work properly, the name of this info type must
4533 # not occur naturally anywhere in your data; otherwise, inspection may either
4534 #
4535 # - reverse a surrogate that does not correspond to an actual identifier
4536 # - be unable to parse the surrogate and result in an error
4537 #
4538 # Therefore, choose your custom info type name carefully after considering
4539 # what your data looks like. One way to select a name that has a high chance
4540 # of yielding reliable detection is to include one or more unicode characters
4541 # that are highly improbable to exist in your data.
4542 # For example, assuming your data is entered from a regular ASCII keyboard,
4543 # the symbol with the hex code point 29DD might be used like so:
4544 # ⧝MY_TOKEN_TYPE.
4545 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
4546 # creating a CustomInfoType, or one of the names listed
4547 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
4548 # a built-in type. InfoType names should conform to the pattern
4549 # `[a-zA-Z0-9_]{1,64}`.
4550 },
4551 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
4552 # referential integrity such that the same identifier in two different
4553 # contexts will be given a distinct surrogate. The context is appended to
4554 # plaintext value being encrypted. On decryption the provided context is
4555 # validated against the value used during encryption. If a context was
4556 # provided during encryption, same context must be provided during decryption
4557 # as well.
4558 #
4559 # If the context is not set, plaintext would be used as is for encryption.
4560 # If the context is set but:
4561 #
4562 # 1. there is no record present when transforming a given value or
4563 # 2. the field is not present when transforming a given value,
4564 #
4565 # plaintext would be used as is for encryption.
4566 #
4567 # Note that case (1) is expected when an `InfoTypeTransformation` is
4568 # applied to both structured and non-structured `ContentItem`s.
4569 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
4570 },
4571 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
4572 # a key encryption key (KEK) stored by KMS).
4573 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
4574 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
4575 # unwrap the data crypto key.
4576 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
4577 # leaking the key. Choose another type of key if possible.
4578 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
4579 },
4580 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
4581 # It will be discarded after the request finishes.
4582 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
4583 # This is an arbitrary string used to differentiate different keys.
4584 # A unique key is generated per name: two separate `TransientCryptoKey`
4585 # protos share the same generated key if their names are the same.
4586 # When the data crypto key is generated, this name is not used in any way
4587 # (repeating the api call will result in a different key being generated).
4588 },
4589 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
4590 # The wrapped key must be a 128/192/256 bit key.
4591 # Authorization requires the following IAM permissions when sending a request
4592 # to perform a crypto transformation using a kms-wrapped crypto key:
4593 # dlp.kms.encrypt
4594 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
4595 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
4596 },
4597 },
4598 },
4599 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
4600 # replacement values are dynamically provided by the user for custom behavior,
4601 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
4602 # This can be used on
4603 # data of type: number, long, string, timestamp.
4604 # If the bound `Value` type differs from the type of data being transformed, we
4605 # will first attempt converting the type of the data to be transformed to match
4606 # the type of the bound before comparing.
4607 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
4608 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
4609 { # Bucket is represented as a range, along with replacement values.
4610 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
4611 # the default behavior will be to hyphenate the min-max range.
4612 # Note that for the purposes of inspection or transformation, the number
4613 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
4614 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
4615 # 123456789, the number of bytes would be counted as 9, even though an
4616 # int64 only holds up to 8 bytes of data.
4617 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
4618 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
4619 # and time zone are either specified elsewhere or are not significant. The date
4620 # is relative to the Proleptic Gregorian Calendar. This can represent:
4621 #
4622 # * A full date, with non-zero year, month and day values
4623 # * A month and day value, with a zero year, e.g. an anniversary
4624 # * A year on its own, with zero month and day values
4625 # * A year and month value, with a zero day, e.g. a credit card expiration date
4626 #
4627 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
4628 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
4629 # a year.
4630 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
4631 # month and day.
4632 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
4633 # if specifying a year by itself or a year and month where the day is not
4634 # significant.
4635 },
4636 &quot;stringValue&quot;: &quot;A String&quot;, # string
4637 &quot;integerValue&quot;: &quot;A String&quot;, # integer
4638 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
4639 # or are specified elsewhere. An API may choose to allow leap seconds. Related
4640 # types are google.type.Date and `google.protobuf.Timestamp`.
4641 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
4642 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
4643 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
4644 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
4645 # allow the value 60 if it allows leap-seconds.
4646 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
4647 },
4648 &quot;booleanValue&quot;: True or False, # boolean
4649 &quot;floatValue&quot;: 3.14, # float
4650 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
4651 },
4652 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
4653 # used.
4654 # Note that for the purposes of inspection or transformation, the number
4655 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
4656 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
4657 # 123456789, the number of bytes would be counted as 9, even though an
4658 # int64 only holds up to 8 bytes of data.
4659 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
4660 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
4661 # and time zone are either specified elsewhere or are not significant. The date
4662 # is relative to the Proleptic Gregorian Calendar. This can represent:
4663 #
4664 # * A full date, with non-zero year, month and day values
4665 # * A month and day value, with a zero year, e.g. an anniversary
4666 # * A year on its own, with zero month and day values
4667 # * A year and month value, with a zero day, e.g. a credit card expiration date
4668 #
4669 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
4670 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
4671 # a year.
4672 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
4673 # month and day.
4674 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
4675 # if specifying a year by itself or a year and month where the day is not
4676 # significant.
4677 },
4678 &quot;stringValue&quot;: &quot;A String&quot;, # string
4679 &quot;integerValue&quot;: &quot;A String&quot;, # integer
4680 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
4681 # or are specified elsewhere. An API may choose to allow leap seconds. Related
4682 # types are google.type.Date and `google.protobuf.Timestamp`.
4683 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
4684 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
4685 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
4686 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
4687 # allow the value 60 if it allows leap-seconds.
4688 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
4689 },
4690 &quot;booleanValue&quot;: True or False, # boolean
4691 &quot;floatValue&quot;: 3.14, # float
4692 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
4693 },
4694 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
4695 # Note that for the purposes of inspection or transformation, the number
4696 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
4697 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
4698 # 123456789, the number of bytes would be counted as 9, even though an
4699 # int64 only holds up to 8 bytes of data.
4700 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
4701 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
4702 # and time zone are either specified elsewhere or are not significant. The date
4703 # is relative to the Proleptic Gregorian Calendar. This can represent:
4704 #
4705 # * A full date, with non-zero year, month and day values
4706 # * A month and day value, with a zero year, e.g. an anniversary
4707 # * A year on its own, with zero month and day values
4708 # * A year and month value, with a zero day, e.g. a credit card expiration date
4709 #
4710 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
4711 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
4712 # a year.
4713 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
4714 # month and day.
4715 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
4716 # if specifying a year by itself or a year and month where the day is not
4717 # significant.
4718 },
4719 &quot;stringValue&quot;: &quot;A String&quot;, # string
4720 &quot;integerValue&quot;: &quot;A String&quot;, # integer
4721 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
4722 # or are specified elsewhere. An API may choose to allow leap seconds. Related
4723 # types are google.type.Date and `google.protobuf.Timestamp`.
4724 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
4725 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
4726 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
4727 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
4728 # allow the value 60 if it allows leap-seconds.
4729 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
4730 },
4731 &quot;booleanValue&quot;: True or False, # boolean
4732 &quot;floatValue&quot;: 3.14, # float
4733 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
4734 },
4735 },
4736 ],
4737 },
4738 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
4739 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
4740 # output would be &#x27;My phone number is &#x27;.
4741 },
4742 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
4743 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
4744 # Note that for the purposes of inspection or transformation, the number
4745 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
4746 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
4747 # 123456789, the number of bytes would be counted as 9, even though an
4748 # int64 only holds up to 8 bytes of data.
4749 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
4750 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
4751 # and time zone are either specified elsewhere or are not significant. The date
4752 # is relative to the Proleptic Gregorian Calendar. This can represent:
4753 #
4754 # * A full date, with non-zero year, month and day values
4755 # * A month and day value, with a zero year, e.g. an anniversary
4756 # * A year on its own, with zero month and day values
4757 # * A year and month value, with a zero day, e.g. a credit card expiration date
4758 #
4759 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
4760 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
4761 # a year.
4762 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
4763 # month and day.
4764 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
4765 # if specifying a year by itself or a year and month where the day is not
4766 # significant.
4767 },
4768 &quot;stringValue&quot;: &quot;A String&quot;, # string
4769 &quot;integerValue&quot;: &quot;A String&quot;, # integer
4770 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
4771 # or are specified elsewhere. An API may choose to allow leap seconds. Related
4772 # types are google.type.Date and `google.protobuf.Timestamp`.
4773 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
4774 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
4775 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
4776 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
4777 # allow the value 60 if it allows leap-seconds.
4778 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
4779 },
4780 &quot;booleanValue&quot;: True or False, # boolean
4781 &quot;floatValue&quot;: 3.14, # float
4782 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
4783 },
4784 },
4785 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
4786 # Bucketing transformation can provide all of this functionality,
4787 # but requires more configuration. This message is provided as a convenience to
4788 # the user for simple bucketing strategies.
4789 #
4790 # The transformed value will be a hyphenated string of
4791 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
4792 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
4793 #
4794 # This can be used on data of type: double, long.
4795 #
4796 # If the bound Value type differs from the type of data
4797 # being transformed, we will first attempt converting the type of the data to
4798 # be transformed to match the type of the bound before comparing.
4799 #
4800 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
4801 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
4802 # grouped together into a single bucket; for example if `upper_bound` = 89,
4803 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
4804 # Note that for the purposes of inspection or transformation, the number
4805 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
4806 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
4807 # 123456789, the number of bytes would be counted as 9, even though an
4808 # int64 only holds up to 8 bytes of data.
4809 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
4810 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
4811 # and time zone are either specified elsewhere or are not significant. The date
4812 # is relative to the Proleptic Gregorian Calendar. This can represent:
4813 #
4814 # * A full date, with non-zero year, month and day values
4815 # * A month and day value, with a zero year, e.g. an anniversary
4816 # * A year on its own, with zero month and day values
4817 # * A year and month value, with a zero day, e.g. a credit card expiration date
4818 #
4819 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
4820 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
4821 # a year.
4822 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
4823 # month and day.
4824 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
4825 # if specifying a year by itself or a year and month where the day is not
4826 # significant.
4827 },
4828 &quot;stringValue&quot;: &quot;A String&quot;, # string
4829 &quot;integerValue&quot;: &quot;A String&quot;, # integer
4830 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
4831 # or are specified elsewhere. An API may choose to allow leap seconds. Related
4832 # types are google.type.Date and `google.protobuf.Timestamp`.
4833 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
4834 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
4835 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
4836 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
4837 # allow the value 60 if it allows leap-seconds.
4838 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
4839 },
4840 &quot;booleanValue&quot;: True or False, # boolean
4841 &quot;floatValue&quot;: 3.14, # float
4842 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
4843 },
4844 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
4845 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
4846 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
4847 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
4848 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
4849 # grouped together into a single bucket; for example if `lower_bound` = 10,
4850 # then all values less than 10 are replaced with the value &quot;-10&quot;.
4851 # Note that for the purposes of inspection or transformation, the number
4852 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
4853 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
4854 # 123456789, the number of bytes would be counted as 9, even though an
4855 # int64 only holds up to 8 bytes of data.
4856 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
4857 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
4858 # and time zone are either specified elsewhere or are not significant. The date
4859 # is relative to the Proleptic Gregorian Calendar. This can represent:
4860 #
4861 # * A full date, with non-zero year, month and day values
4862 # * A month and day value, with a zero year, e.g. an anniversary
4863 # * A year on its own, with zero month and day values
4864 # * A year and month value, with a zero day, e.g. a credit card expiration date
4865 #
4866 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
4867 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
4868 # a year.
4869 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
4870 # month and day.
4871 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
4872 # if specifying a year by itself or a year and month where the day is not
4873 # significant.
4874 },
4875 &quot;stringValue&quot;: &quot;A String&quot;, # string
4876 &quot;integerValue&quot;: &quot;A String&quot;, # integer
4877 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
4878 # or are specified elsewhere. An API may choose to allow leap seconds. Related
4879 # types are google.type.Date and `google.protobuf.Timestamp`.
4880 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
4881 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
4882 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
4883 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
4884 # allow the value 60 if it allows leap-seconds.
4885 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
4886 },
4887 &quot;booleanValue&quot;: True or False, # boolean
4888 &quot;floatValue&quot;: 3.14, # float
4889 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
4890 },
4891 },
4892 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
4893 # fixed character. Masking can start from the beginning or end of the string.
4894 # This can be used on data of any type (numbers, longs, and so on) and when
4895 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
4896 # type. (This allows you to take a long like 123 and modify it to a string like
4897 # **3.
4898 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
4899 # characters. For example, if the input string is `555-555-5555` and you
4900 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
4901 # returns `***-**5-5555`.
4902 { # Characters to skip when doing deidentification of a value. These will be left
4903 # alone and skipped.
4904 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
4905 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
4906 # punctuation.
4907 },
4908 ],
4909 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
4910 # masked. Skipped characters do not count towards this tally.
4911 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
4912 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
4913 # code or credit card number. This string must have a length of 1. If not
4914 # supplied, this value defaults to `*` for strings, and `0` for digits.
4915 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
4916 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
4917 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
4918 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
4919 # is `true`, then the string `12345` is masked as `12***`.
4920 },
4921 },
4922 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
4923 # this transformation to apply to all findings that correspond to
4924 # infoTypes that were requested in `InspectConfig`.
4925 { # Type of information detected by the API.
4926 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
4927 # creating a CustomInfoType, or one of the names listed
4928 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
4929 # a built-in type. InfoType names should conform to the pattern
4930 # `[a-zA-Z0-9_]{1,64}`.
4931 },
4932 ],
4933 },
4934 ],
4935 },
Bu Sun Kim65020912020-05-20 12:08:20 -07004936 &quot;transformationErrorHandling&quot;: { # How to handle transformation errors during de-identification. A # Mode for handling transformation errors. If left unspecified, the default
4937 # mode is `TransformationErrorHandling.ThrowError`.
4938 # transformation error occurs when the requested transformation is incompatible
4939 # with the data. For example, trying to de-identify an IP address using a
4940 # `DateShift` transformation would result in a transformation error, since date
4941 # info cannot be extracted from an IP address.
4942 # Information about any incompatible transformations, and how they were
4943 # handled, is returned in the response as part of the
4944 # `TransformationOverviews`.
4945 &quot;throwError&quot;: { # Throw an error and fail the request when a transformation error occurs. # Throw an error
4946 },
4947 &quot;leaveUntransformed&quot;: { # Skips the data without modifying it if the requested transformation would # Ignore errors
4948 # cause an error. For example, if a `DateShift` transformation were applied
4949 # an an IP address, this mode would leave the IP address unchanged in the
4950 # response.
4951 },
4952 },
4953 &quot;recordTransformations&quot;: { # A type of transformation that is applied over structured data such as a # Treat the dataset as structured. Transformations can be applied to
4954 # specific locations within structured datasets, such as transforming
4955 # a column within a table.
4956 # table.
Bu Sun Kim65020912020-05-20 12:08:20 -07004957 &quot;fieldTransformations&quot;: [ # Transform the record by applying various field transformations.
4958 { # The transformation to apply to the field.
4959 &quot;fields&quot;: [ # Required. Input field(s) to apply the transformation to.
4960 { # General identifier of a data field in a storage service.
4961 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
4962 },
4963 ],
4964 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the contents of the field as free text, and selectively
4965 # transform content that matches an `InfoType`.
4966 # apply various `PrimitiveTransformation`s to each finding, where the
4967 # transformation is applied to only values that were identified as a specific
4968 # info_type.
4969 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
4970 # for a given infoType.
4971 { # A transformation to apply to text that is identified as a specific
4972 # info_type.
Bu Sun Kim65020912020-05-20 12:08:20 -07004973 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
4974 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
4975 # portion of the value.
4976 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
4977 },
4978 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
4979 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
4980 # to learn more.
4981 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
4982 # If set, must also set cryptoKey. If set, shift will be consistent for the
4983 # given context.
4984 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
4985 },
4986 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
4987 # range (inclusive ends). Negative means shift to earlier in time. Must not
4988 # be more than 365250 days (1000 years) each direction.
4989 #
4990 # For example, 3 means shift date to at most 3 days into the future.
4991 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
4992 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
4993 # results in the same shift for the same context and crypto_key. If
4994 # set, must also set context. Can only be applied to table items.
4995 # a key encryption key (KEK) stored by KMS).
4996 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
4997 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
4998 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07004999 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
5000 # leaking the key. Choose another type of key if possible.
5001 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
5002 },
5003 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
5004 # It will be discarded after the request finishes.
5005 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
5006 # This is an arbitrary string used to differentiate different keys.
5007 # A unique key is generated per name: two separate `TransientCryptoKey`
5008 # protos share the same generated key if their names are the same.
5009 # When the data crypto key is generated, this name is not used in any way
5010 # (repeating the api call will result in a different key being generated).
5011 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005012 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
5013 # The wrapped key must be a 128/192/256 bit key.
5014 # Authorization requires the following IAM permissions when sending a request
5015 # to perform a crypto transformation using a kms-wrapped crypto key:
5016 # dlp.kms.encrypt
5017 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
5018 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
5019 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005020 },
5021 },
5022 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
5023 },
5024 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
5025 # Uses SHA-256.
5026 # The key size must be either 32 or 64 bytes.
5027 # Outputs a base64 encoded representation of the hashed output
5028 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
5029 # Currently, only string and integer values can be hashed.
5030 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
5031 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
5032 # a key encryption key (KEK) stored by KMS).
5033 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
5034 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
5035 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07005036 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
5037 # leaking the key. Choose another type of key if possible.
5038 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
5039 },
5040 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
5041 # It will be discarded after the request finishes.
5042 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
5043 # This is an arbitrary string used to differentiate different keys.
5044 # A unique key is generated per name: two separate `TransientCryptoKey`
5045 # protos share the same generated key if their names are the same.
5046 # When the data crypto key is generated, this name is not used in any way
5047 # (repeating the api call will result in a different key being generated).
5048 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005049 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
5050 # The wrapped key must be a 128/192/256 bit key.
5051 # Authorization requires the following IAM permissions when sending a request
5052 # to perform a crypto transformation using a kms-wrapped crypto key:
5053 # dlp.kms.encrypt
5054 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
5055 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
5056 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005057 },
5058 },
5059 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
5060 # (FPE) with the FFX mode of operation; however when used in the
5061 # `ReidentifyContent` API method, it serves the opposite function by reversing
5062 # the surrogate back into the original identifier. The identifier must be
5063 # encoded as ASCII. For a given crypto key and context, the same identifier
5064 # will be replaced with the same surrogate. Identifiers must be at least two
5065 # characters long. In the case that the identifier is the empty string, it will
5066 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
5067 # more.
5068 #
5069 # Note: We recommend using CryptoDeterministicConfig for all use cases which
5070 # do not require preserving the input alphabet space and size, plus warrant
5071 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -07005072 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
5073 # This annotation will be applied to the surrogate by prefixing it with
5074 # the name of the custom infoType followed by the number of
5075 # characters comprising the surrogate. The following scheme defines the
5076 # format: info_type_name(surrogate_character_count):surrogate
5077 #
5078 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
5079 # the surrogate is &#x27;abc&#x27;, the full replacement value
5080 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
5081 #
5082 # This annotation identifies the surrogate when inspecting content using the
5083 # custom infoType
5084 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
5085 # This facilitates reversal of the surrogate when it occurs in free text.
5086 #
5087 # In order for inspection to work properly, the name of this infoType must
5088 # not occur naturally anywhere in your data; otherwise, inspection may
5089 # find a surrogate that does not correspond to an actual identifier.
5090 # Therefore, choose your custom infoType name carefully after considering
5091 # what your data looks like. One way to select a name that has a high chance
5092 # of yielding reliable detection is to include one or more unicode characters
5093 # that are highly improbable to exist in your data.
5094 # For example, assuming your data is entered from a regular ASCII keyboard,
5095 # the symbol with the hex code point 29DD might be used like so:
5096 # ⧝MY_TOKEN_TYPE
5097 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
5098 # creating a CustomInfoType, or one of the names listed
5099 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
5100 # a built-in type. InfoType names should conform to the pattern
5101 # `[a-zA-Z0-9_]{1,64}`.
5102 },
5103 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
5104 # identifier in two different contexts won&#x27;t be given the same surrogate. If
5105 # the context is not set, a default tweak will be used.
5106 #
5107 # If the context is set but:
5108 #
5109 # 1. there is no record present when transforming a given value or
5110 # 1. the field is not present when transforming a given value,
5111 #
5112 # a default tweak will be used.
5113 #
5114 # Note that case (1) is expected when an `InfoTypeTransformation` is
5115 # applied to both structured and non-structured `ContentItem`s.
5116 # Currently, the referenced field may be of value type integer or string.
5117 #
5118 # The tweak is constructed as a sequence of bytes in big endian byte order
5119 # such that:
5120 #
5121 # - a 64 bit integer is encoded followed by a single byte of value 1
5122 # - a string is encoded in UTF-8 format followed by a single byte of value 2
5123 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
5124 },
5125 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
5126 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
5127 # a key encryption key (KEK) stored by KMS).
5128 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
5129 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
5130 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07005131 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
5132 # leaking the key. Choose another type of key if possible.
5133 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
5134 },
5135 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
5136 # It will be discarded after the request finishes.
5137 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
5138 # This is an arbitrary string used to differentiate different keys.
5139 # A unique key is generated per name: two separate `TransientCryptoKey`
5140 # protos share the same generated key if their names are the same.
5141 # When the data crypto key is generated, this name is not used in any way
5142 # (repeating the api call will result in a different key being generated).
5143 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005144 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
5145 # The wrapped key must be a 128/192/256 bit key.
5146 # Authorization requires the following IAM permissions when sending a request
5147 # to perform a crypto transformation using a kms-wrapped crypto key:
5148 # dlp.kms.encrypt
5149 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
5150 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
5151 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005152 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005153 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
5154 # that the FFX mode natively supports. This happens before/after
5155 # encryption/decryption.
5156 # Each character listed must appear only once.
5157 # Number of characters must be in the range [2, 95].
5158 # This must be encoded as ASCII.
5159 # The order of characters does not matter.
5160 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -07005161 },
5162 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
5163 # input. Outputs a base64 encoded representation of the encrypted output.
5164 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
5165 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
5166 # This annotation will be applied to the surrogate by prefixing it with
5167 # the name of the custom info type followed by the number of
5168 # characters comprising the surrogate. The following scheme defines the
5169 # format: {info type name}({surrogate character count}):{surrogate}
5170 #
5171 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
5172 # the surrogate is &#x27;abc&#x27;, the full replacement value
5173 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
5174 #
5175 # This annotation identifies the surrogate when inspecting content using the
5176 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
5177 # surrogate when it occurs in free text.
5178 #
5179 # Note: For record transformations where the entire cell in a table is being
5180 # transformed, surrogates are not mandatory. Surrogates are used to denote
5181 # the location of the token and are necessary for re-identification in free
5182 # form text.
5183 #
5184 # In order for inspection to work properly, the name of this info type must
5185 # not occur naturally anywhere in your data; otherwise, inspection may either
5186 #
5187 # - reverse a surrogate that does not correspond to an actual identifier
5188 # - be unable to parse the surrogate and result in an error
5189 #
5190 # Therefore, choose your custom info type name carefully after considering
5191 # what your data looks like. One way to select a name that has a high chance
5192 # of yielding reliable detection is to include one or more unicode characters
5193 # that are highly improbable to exist in your data.
5194 # For example, assuming your data is entered from a regular ASCII keyboard,
5195 # the symbol with the hex code point 29DD might be used like so:
5196 # ⧝MY_TOKEN_TYPE.
5197 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
5198 # creating a CustomInfoType, or one of the names listed
5199 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
5200 # a built-in type. InfoType names should conform to the pattern
5201 # `[a-zA-Z0-9_]{1,64}`.
5202 },
5203 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
5204 # referential integrity such that the same identifier in two different
5205 # contexts will be given a distinct surrogate. The context is appended to
5206 # plaintext value being encrypted. On decryption the provided context is
5207 # validated against the value used during encryption. If a context was
5208 # provided during encryption, same context must be provided during decryption
5209 # as well.
5210 #
5211 # If the context is not set, plaintext would be used as is for encryption.
5212 # If the context is set but:
5213 #
5214 # 1. there is no record present when transforming a given value or
5215 # 2. the field is not present when transforming a given value,
5216 #
5217 # plaintext would be used as is for encryption.
5218 #
5219 # Note that case (1) is expected when an `InfoTypeTransformation` is
5220 # applied to both structured and non-structured `ContentItem`s.
5221 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
5222 },
5223 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
5224 # a key encryption key (KEK) stored by KMS).
5225 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
5226 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
5227 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07005228 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
5229 # leaking the key. Choose another type of key if possible.
5230 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
5231 },
5232 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
5233 # It will be discarded after the request finishes.
5234 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
5235 # This is an arbitrary string used to differentiate different keys.
5236 # A unique key is generated per name: two separate `TransientCryptoKey`
5237 # protos share the same generated key if their names are the same.
5238 # When the data crypto key is generated, this name is not used in any way
5239 # (repeating the api call will result in a different key being generated).
5240 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005241 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
5242 # The wrapped key must be a 128/192/256 bit key.
5243 # Authorization requires the following IAM permissions when sending a request
5244 # to perform a crypto transformation using a kms-wrapped crypto key:
5245 # dlp.kms.encrypt
5246 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
5247 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
5248 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005249 },
5250 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005251 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
5252 # replacement values are dynamically provided by the user for custom behavior,
5253 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
5254 # This can be used on
5255 # data of type: number, long, string, timestamp.
5256 # If the bound `Value` type differs from the type of data being transformed, we
5257 # will first attempt converting the type of the data to be transformed to match
5258 # the type of the bound before comparing.
5259 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
5260 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
5261 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -07005262 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
5263 # the default behavior will be to hyphenate the min-max range.
5264 # Note that for the purposes of inspection or transformation, the number
5265 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
5266 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
5267 # 123456789, the number of bytes would be counted as 9, even though an
5268 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07005269 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
5270 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
5271 # and time zone are either specified elsewhere or are not significant. The date
5272 # is relative to the Proleptic Gregorian Calendar. This can represent:
5273 #
5274 # * A full date, with non-zero year, month and day values
5275 # * A month and day value, with a zero year, e.g. an anniversary
5276 # * A year on its own, with zero month and day values
5277 # * A year and month value, with a zero day, e.g. a credit card expiration date
5278 #
5279 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
5280 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
5281 # a year.
5282 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
5283 # month and day.
5284 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
5285 # if specifying a year by itself or a year and month where the day is not
5286 # significant.
5287 },
5288 &quot;stringValue&quot;: &quot;A String&quot;, # string
5289 &quot;integerValue&quot;: &quot;A String&quot;, # integer
5290 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
5291 # or are specified elsewhere. An API may choose to allow leap seconds. Related
5292 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07005293 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
5294 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
5295 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005296 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
5297 # allow the value 60 if it allows leap-seconds.
5298 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07005299 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005300 &quot;booleanValue&quot;: True or False, # boolean
5301 &quot;floatValue&quot;: 3.14, # float
5302 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
5303 },
5304 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
5305 # used.
5306 # Note that for the purposes of inspection or transformation, the number
5307 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
5308 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
5309 # 123456789, the number of bytes would be counted as 9, even though an
5310 # int64 only holds up to 8 bytes of data.
5311 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
5312 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
5313 # and time zone are either specified elsewhere or are not significant. The date
5314 # is relative to the Proleptic Gregorian Calendar. This can represent:
5315 #
5316 # * A full date, with non-zero year, month and day values
5317 # * A month and day value, with a zero year, e.g. an anniversary
5318 # * A year on its own, with zero month and day values
5319 # * A year and month value, with a zero day, e.g. a credit card expiration date
5320 #
5321 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
5322 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
5323 # a year.
5324 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
5325 # month and day.
5326 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
5327 # if specifying a year by itself or a year and month where the day is not
5328 # significant.
5329 },
5330 &quot;stringValue&quot;: &quot;A String&quot;, # string
5331 &quot;integerValue&quot;: &quot;A String&quot;, # integer
5332 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
5333 # or are specified elsewhere. An API may choose to allow leap seconds. Related
5334 # types are google.type.Date and `google.protobuf.Timestamp`.
5335 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
5336 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
5337 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
5338 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
5339 # allow the value 60 if it allows leap-seconds.
5340 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
5341 },
5342 &quot;booleanValue&quot;: True or False, # boolean
5343 &quot;floatValue&quot;: 3.14, # float
5344 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
5345 },
5346 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
5347 # Note that for the purposes of inspection or transformation, the number
5348 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
5349 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
5350 # 123456789, the number of bytes would be counted as 9, even though an
5351 # int64 only holds up to 8 bytes of data.
5352 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
5353 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
5354 # and time zone are either specified elsewhere or are not significant. The date
5355 # is relative to the Proleptic Gregorian Calendar. This can represent:
5356 #
5357 # * A full date, with non-zero year, month and day values
5358 # * A month and day value, with a zero year, e.g. an anniversary
5359 # * A year on its own, with zero month and day values
5360 # * A year and month value, with a zero day, e.g. a credit card expiration date
5361 #
5362 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
5363 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
5364 # a year.
5365 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
5366 # month and day.
5367 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
5368 # if specifying a year by itself or a year and month where the day is not
5369 # significant.
5370 },
5371 &quot;stringValue&quot;: &quot;A String&quot;, # string
5372 &quot;integerValue&quot;: &quot;A String&quot;, # integer
5373 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
5374 # or are specified elsewhere. An API may choose to allow leap seconds. Related
5375 # types are google.type.Date and `google.protobuf.Timestamp`.
5376 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
5377 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
5378 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
5379 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
5380 # allow the value 60 if it allows leap-seconds.
5381 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
5382 },
5383 &quot;booleanValue&quot;: True or False, # boolean
5384 &quot;floatValue&quot;: 3.14, # float
5385 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07005386 },
5387 },
5388 ],
5389 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005390 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
5391 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
5392 # output would be &#x27;My phone number is &#x27;.
5393 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005394 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
5395 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
5396 # Note that for the purposes of inspection or transformation, the number
5397 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
5398 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
5399 # 123456789, the number of bytes would be counted as 9, even though an
5400 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07005401 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
5402 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
5403 # and time zone are either specified elsewhere or are not significant. The date
5404 # is relative to the Proleptic Gregorian Calendar. This can represent:
5405 #
5406 # * A full date, with non-zero year, month and day values
5407 # * A month and day value, with a zero year, e.g. an anniversary
5408 # * A year on its own, with zero month and day values
5409 # * A year and month value, with a zero day, e.g. a credit card expiration date
5410 #
5411 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
5412 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
5413 # a year.
5414 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
5415 # month and day.
5416 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
5417 # if specifying a year by itself or a year and month where the day is not
5418 # significant.
5419 },
5420 &quot;stringValue&quot;: &quot;A String&quot;, # string
5421 &quot;integerValue&quot;: &quot;A String&quot;, # integer
5422 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
5423 # or are specified elsewhere. An API may choose to allow leap seconds. Related
5424 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07005425 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
5426 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
5427 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005428 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
5429 # allow the value 60 if it allows leap-seconds.
5430 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07005431 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005432 &quot;booleanValue&quot;: True or False, # boolean
5433 &quot;floatValue&quot;: 3.14, # float
5434 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07005435 },
5436 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005437 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
5438 # Bucketing transformation can provide all of this functionality,
5439 # but requires more configuration. This message is provided as a convenience to
5440 # the user for simple bucketing strategies.
5441 #
5442 # The transformed value will be a hyphenated string of
5443 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
5444 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
5445 #
5446 # This can be used on data of type: double, long.
5447 #
5448 # If the bound Value type differs from the type of data
5449 # being transformed, we will first attempt converting the type of the data to
5450 # be transformed to match the type of the bound before comparing.
5451 #
5452 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -07005453 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
5454 # grouped together into a single bucket; for example if `upper_bound` = 89,
5455 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
5456 # Note that for the purposes of inspection or transformation, the number
5457 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
5458 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
5459 # 123456789, the number of bytes would be counted as 9, even though an
5460 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07005461 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
5462 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
5463 # and time zone are either specified elsewhere or are not significant. The date
5464 # is relative to the Proleptic Gregorian Calendar. This can represent:
5465 #
5466 # * A full date, with non-zero year, month and day values
5467 # * A month and day value, with a zero year, e.g. an anniversary
5468 # * A year on its own, with zero month and day values
5469 # * A year and month value, with a zero day, e.g. a credit card expiration date
5470 #
5471 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
5472 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
5473 # a year.
5474 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
5475 # month and day.
5476 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
5477 # if specifying a year by itself or a year and month where the day is not
5478 # significant.
5479 },
5480 &quot;stringValue&quot;: &quot;A String&quot;, # string
5481 &quot;integerValue&quot;: &quot;A String&quot;, # integer
5482 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
5483 # or are specified elsewhere. An API may choose to allow leap seconds. Related
5484 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07005485 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
5486 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
5487 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005488 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
5489 # allow the value 60 if it allows leap-seconds.
5490 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07005491 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005492 &quot;booleanValue&quot;: True or False, # boolean
5493 &quot;floatValue&quot;: 3.14, # float
5494 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07005495 },
5496 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
5497 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
5498 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
5499 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005500 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
5501 # grouped together into a single bucket; for example if `lower_bound` = 10,
5502 # then all values less than 10 are replaced with the value &quot;-10&quot;.
5503 # Note that for the purposes of inspection or transformation, the number
5504 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
5505 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
5506 # 123456789, the number of bytes would be counted as 9, even though an
5507 # int64 only holds up to 8 bytes of data.
5508 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
5509 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
5510 # and time zone are either specified elsewhere or are not significant. The date
5511 # is relative to the Proleptic Gregorian Calendar. This can represent:
5512 #
5513 # * A full date, with non-zero year, month and day values
5514 # * A month and day value, with a zero year, e.g. an anniversary
5515 # * A year on its own, with zero month and day values
5516 # * A year and month value, with a zero day, e.g. a credit card expiration date
5517 #
5518 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
5519 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
5520 # a year.
5521 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
5522 # month and day.
5523 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
5524 # if specifying a year by itself or a year and month where the day is not
5525 # significant.
5526 },
5527 &quot;stringValue&quot;: &quot;A String&quot;, # string
5528 &quot;integerValue&quot;: &quot;A String&quot;, # integer
5529 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
5530 # or are specified elsewhere. An API may choose to allow leap seconds. Related
5531 # types are google.type.Date and `google.protobuf.Timestamp`.
5532 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
5533 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
5534 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
5535 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
5536 # allow the value 60 if it allows leap-seconds.
5537 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
5538 },
5539 &quot;booleanValue&quot;: True or False, # boolean
5540 &quot;floatValue&quot;: 3.14, # float
5541 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
5542 },
5543 },
5544 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
5545 # fixed character. Masking can start from the beginning or end of the string.
5546 # This can be used on data of any type (numbers, longs, and so on) and when
5547 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
5548 # type. (This allows you to take a long like 123 and modify it to a string like
5549 # **3.
5550 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
5551 # characters. For example, if the input string is `555-555-5555` and you
5552 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
5553 # returns `***-**5-5555`.
5554 { # Characters to skip when doing deidentification of a value. These will be left
5555 # alone and skipped.
5556 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
5557 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
5558 # punctuation.
5559 },
5560 ],
5561 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
5562 # masked. Skipped characters do not count towards this tally.
5563 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
5564 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
5565 # code or credit card number. This string must have a length of 1. If not
5566 # supplied, this value defaults to `*` for strings, and `0` for digits.
5567 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
5568 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
5569 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
5570 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
5571 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -07005572 },
5573 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005574 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
5575 # this transformation to apply to all findings that correspond to
5576 # infoTypes that were requested in `InspectConfig`.
5577 { # Type of information detected by the API.
5578 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
5579 # creating a CustomInfoType, or one of the names listed
5580 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
5581 # a built-in type. InfoType names should conform to the pattern
5582 # `[a-zA-Z0-9_]{1,64}`.
5583 },
5584 ],
Bu Sun Kim65020912020-05-20 12:08:20 -07005585 },
5586 ],
5587 },
5588 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Apply the transformation to the entire field.
5589 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
5590 # portion of the value.
5591 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
5592 },
5593 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
5594 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
5595 # to learn more.
5596 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
5597 # If set, must also set cryptoKey. If set, shift will be consistent for the
5598 # given context.
5599 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
5600 },
5601 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
5602 # range (inclusive ends). Negative means shift to earlier in time. Must not
5603 # be more than 365250 days (1000 years) each direction.
5604 #
5605 # For example, 3 means shift date to at most 3 days into the future.
5606 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
5607 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
5608 # results in the same shift for the same context and crypto_key. If
5609 # set, must also set context. Can only be applied to table items.
5610 # a key encryption key (KEK) stored by KMS).
5611 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
5612 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
5613 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07005614 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
5615 # leaking the key. Choose another type of key if possible.
5616 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
5617 },
5618 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
5619 # It will be discarded after the request finishes.
5620 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
5621 # This is an arbitrary string used to differentiate different keys.
5622 # A unique key is generated per name: two separate `TransientCryptoKey`
5623 # protos share the same generated key if their names are the same.
5624 # When the data crypto key is generated, this name is not used in any way
5625 # (repeating the api call will result in a different key being generated).
5626 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005627 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
5628 # The wrapped key must be a 128/192/256 bit key.
5629 # Authorization requires the following IAM permissions when sending a request
5630 # to perform a crypto transformation using a kms-wrapped crypto key:
5631 # dlp.kms.encrypt
5632 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
5633 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
5634 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005635 },
5636 },
5637 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
5638 },
5639 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
5640 # Uses SHA-256.
5641 # The key size must be either 32 or 64 bytes.
5642 # Outputs a base64 encoded representation of the hashed output
5643 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
5644 # Currently, only string and integer values can be hashed.
5645 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
5646 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
5647 # a key encryption key (KEK) stored by KMS).
5648 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
5649 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
5650 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07005651 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
5652 # leaking the key. Choose another type of key if possible.
5653 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
5654 },
5655 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
5656 # It will be discarded after the request finishes.
5657 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
5658 # This is an arbitrary string used to differentiate different keys.
5659 # A unique key is generated per name: two separate `TransientCryptoKey`
5660 # protos share the same generated key if their names are the same.
5661 # When the data crypto key is generated, this name is not used in any way
5662 # (repeating the api call will result in a different key being generated).
5663 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005664 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
5665 # The wrapped key must be a 128/192/256 bit key.
5666 # Authorization requires the following IAM permissions when sending a request
5667 # to perform a crypto transformation using a kms-wrapped crypto key:
5668 # dlp.kms.encrypt
5669 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
5670 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
5671 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005672 },
5673 },
5674 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
5675 # (FPE) with the FFX mode of operation; however when used in the
5676 # `ReidentifyContent` API method, it serves the opposite function by reversing
5677 # the surrogate back into the original identifier. The identifier must be
5678 # encoded as ASCII. For a given crypto key and context, the same identifier
5679 # will be replaced with the same surrogate. Identifiers must be at least two
5680 # characters long. In the case that the identifier is the empty string, it will
5681 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
5682 # more.
5683 #
5684 # Note: We recommend using CryptoDeterministicConfig for all use cases which
5685 # do not require preserving the input alphabet space and size, plus warrant
5686 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -07005687 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
5688 # This annotation will be applied to the surrogate by prefixing it with
5689 # the name of the custom infoType followed by the number of
5690 # characters comprising the surrogate. The following scheme defines the
5691 # format: info_type_name(surrogate_character_count):surrogate
5692 #
5693 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
5694 # the surrogate is &#x27;abc&#x27;, the full replacement value
5695 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
5696 #
5697 # This annotation identifies the surrogate when inspecting content using the
5698 # custom infoType
5699 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
5700 # This facilitates reversal of the surrogate when it occurs in free text.
5701 #
5702 # In order for inspection to work properly, the name of this infoType must
5703 # not occur naturally anywhere in your data; otherwise, inspection may
5704 # find a surrogate that does not correspond to an actual identifier.
5705 # Therefore, choose your custom infoType name carefully after considering
5706 # what your data looks like. One way to select a name that has a high chance
5707 # of yielding reliable detection is to include one or more unicode characters
5708 # that are highly improbable to exist in your data.
5709 # For example, assuming your data is entered from a regular ASCII keyboard,
5710 # the symbol with the hex code point 29DD might be used like so:
5711 # ⧝MY_TOKEN_TYPE
5712 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
5713 # creating a CustomInfoType, or one of the names listed
5714 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
5715 # a built-in type. InfoType names should conform to the pattern
5716 # `[a-zA-Z0-9_]{1,64}`.
5717 },
5718 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
5719 # identifier in two different contexts won&#x27;t be given the same surrogate. If
5720 # the context is not set, a default tweak will be used.
5721 #
5722 # If the context is set but:
5723 #
5724 # 1. there is no record present when transforming a given value or
5725 # 1. the field is not present when transforming a given value,
5726 #
5727 # a default tweak will be used.
5728 #
5729 # Note that case (1) is expected when an `InfoTypeTransformation` is
5730 # applied to both structured and non-structured `ContentItem`s.
5731 # Currently, the referenced field may be of value type integer or string.
5732 #
5733 # The tweak is constructed as a sequence of bytes in big endian byte order
5734 # such that:
5735 #
5736 # - a 64 bit integer is encoded followed by a single byte of value 1
5737 # - a string is encoded in UTF-8 format followed by a single byte of value 2
5738 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
5739 },
5740 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
5741 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
5742 # a key encryption key (KEK) stored by KMS).
5743 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
5744 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
5745 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07005746 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
5747 # leaking the key. Choose another type of key if possible.
5748 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
5749 },
5750 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
5751 # It will be discarded after the request finishes.
5752 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
5753 # This is an arbitrary string used to differentiate different keys.
5754 # A unique key is generated per name: two separate `TransientCryptoKey`
5755 # protos share the same generated key if their names are the same.
5756 # When the data crypto key is generated, this name is not used in any way
5757 # (repeating the api call will result in a different key being generated).
5758 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005759 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
5760 # The wrapped key must be a 128/192/256 bit key.
5761 # Authorization requires the following IAM permissions when sending a request
5762 # to perform a crypto transformation using a kms-wrapped crypto key:
5763 # dlp.kms.encrypt
5764 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
5765 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
5766 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005767 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005768 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
5769 # that the FFX mode natively supports. This happens before/after
5770 # encryption/decryption.
5771 # Each character listed must appear only once.
5772 # Number of characters must be in the range [2, 95].
5773 # This must be encoded as ASCII.
5774 # The order of characters does not matter.
5775 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -07005776 },
5777 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
5778 # input. Outputs a base64 encoded representation of the encrypted output.
5779 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
5780 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
5781 # This annotation will be applied to the surrogate by prefixing it with
5782 # the name of the custom info type followed by the number of
5783 # characters comprising the surrogate. The following scheme defines the
5784 # format: {info type name}({surrogate character count}):{surrogate}
5785 #
5786 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
5787 # the surrogate is &#x27;abc&#x27;, the full replacement value
5788 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
5789 #
5790 # This annotation identifies the surrogate when inspecting content using the
5791 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
5792 # surrogate when it occurs in free text.
5793 #
5794 # Note: For record transformations where the entire cell in a table is being
5795 # transformed, surrogates are not mandatory. Surrogates are used to denote
5796 # the location of the token and are necessary for re-identification in free
5797 # form text.
5798 #
5799 # In order for inspection to work properly, the name of this info type must
5800 # not occur naturally anywhere in your data; otherwise, inspection may either
5801 #
5802 # - reverse a surrogate that does not correspond to an actual identifier
5803 # - be unable to parse the surrogate and result in an error
5804 #
5805 # Therefore, choose your custom info type name carefully after considering
5806 # what your data looks like. One way to select a name that has a high chance
5807 # of yielding reliable detection is to include one or more unicode characters
5808 # that are highly improbable to exist in your data.
5809 # For example, assuming your data is entered from a regular ASCII keyboard,
5810 # the symbol with the hex code point 29DD might be used like so:
5811 # ⧝MY_TOKEN_TYPE.
5812 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
5813 # creating a CustomInfoType, or one of the names listed
5814 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
5815 # a built-in type. InfoType names should conform to the pattern
5816 # `[a-zA-Z0-9_]{1,64}`.
5817 },
5818 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
5819 # referential integrity such that the same identifier in two different
5820 # contexts will be given a distinct surrogate. The context is appended to
5821 # plaintext value being encrypted. On decryption the provided context is
5822 # validated against the value used during encryption. If a context was
5823 # provided during encryption, same context must be provided during decryption
5824 # as well.
5825 #
5826 # If the context is not set, plaintext would be used as is for encryption.
5827 # If the context is set but:
5828 #
5829 # 1. there is no record present when transforming a given value or
5830 # 2. the field is not present when transforming a given value,
5831 #
5832 # plaintext would be used as is for encryption.
5833 #
5834 # Note that case (1) is expected when an `InfoTypeTransformation` is
5835 # applied to both structured and non-structured `ContentItem`s.
5836 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
5837 },
5838 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
5839 # a key encryption key (KEK) stored by KMS).
5840 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
5841 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
5842 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07005843 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
5844 # leaking the key. Choose another type of key if possible.
5845 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
5846 },
5847 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
5848 # It will be discarded after the request finishes.
5849 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
5850 # This is an arbitrary string used to differentiate different keys.
5851 # A unique key is generated per name: two separate `TransientCryptoKey`
5852 # protos share the same generated key if their names are the same.
5853 # When the data crypto key is generated, this name is not used in any way
5854 # (repeating the api call will result in a different key being generated).
5855 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005856 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
5857 # The wrapped key must be a 128/192/256 bit key.
5858 # Authorization requires the following IAM permissions when sending a request
5859 # to perform a crypto transformation using a kms-wrapped crypto key:
5860 # dlp.kms.encrypt
5861 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
5862 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
5863 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005864 },
5865 },
Bu Sun Kim65020912020-05-20 12:08:20 -07005866 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
5867 # replacement values are dynamically provided by the user for custom behavior,
5868 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
5869 # This can be used on
5870 # data of type: number, long, string, timestamp.
5871 # If the bound `Value` type differs from the type of data being transformed, we
5872 # will first attempt converting the type of the data to be transformed to match
5873 # the type of the bound before comparing.
5874 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
5875 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
5876 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -07005877 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
5878 # the default behavior will be to hyphenate the min-max range.
5879 # Note that for the purposes of inspection or transformation, the number
5880 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
5881 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
5882 # 123456789, the number of bytes would be counted as 9, even though an
5883 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07005884 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
5885 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
5886 # and time zone are either specified elsewhere or are not significant. The date
5887 # is relative to the Proleptic Gregorian Calendar. This can represent:
5888 #
5889 # * A full date, with non-zero year, month and day values
5890 # * A month and day value, with a zero year, e.g. an anniversary
5891 # * A year on its own, with zero month and day values
5892 # * A year and month value, with a zero day, e.g. a credit card expiration date
5893 #
5894 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
5895 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
5896 # a year.
5897 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
5898 # month and day.
5899 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
5900 # if specifying a year by itself or a year and month where the day is not
5901 # significant.
5902 },
5903 &quot;stringValue&quot;: &quot;A String&quot;, # string
5904 &quot;integerValue&quot;: &quot;A String&quot;, # integer
5905 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
5906 # or are specified elsewhere. An API may choose to allow leap seconds. Related
5907 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07005908 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
5909 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
5910 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005911 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
5912 # allow the value 60 if it allows leap-seconds.
5913 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07005914 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07005915 &quot;booleanValue&quot;: True or False, # boolean
5916 &quot;floatValue&quot;: 3.14, # float
5917 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
5918 },
5919 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
5920 # used.
5921 # Note that for the purposes of inspection or transformation, the number
5922 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
5923 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
5924 # 123456789, the number of bytes would be counted as 9, even though an
5925 # int64 only holds up to 8 bytes of data.
5926 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
5927 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
5928 # and time zone are either specified elsewhere or are not significant. The date
5929 # is relative to the Proleptic Gregorian Calendar. This can represent:
5930 #
5931 # * A full date, with non-zero year, month and day values
5932 # * A month and day value, with a zero year, e.g. an anniversary
5933 # * A year on its own, with zero month and day values
5934 # * A year and month value, with a zero day, e.g. a credit card expiration date
5935 #
5936 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
5937 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
5938 # a year.
5939 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
5940 # month and day.
5941 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
5942 # if specifying a year by itself or a year and month where the day is not
5943 # significant.
5944 },
5945 &quot;stringValue&quot;: &quot;A String&quot;, # string
5946 &quot;integerValue&quot;: &quot;A String&quot;, # integer
5947 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
5948 # or are specified elsewhere. An API may choose to allow leap seconds. Related
5949 # types are google.type.Date and `google.protobuf.Timestamp`.
5950 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
5951 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
5952 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
5953 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
5954 # allow the value 60 if it allows leap-seconds.
5955 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
5956 },
5957 &quot;booleanValue&quot;: True or False, # boolean
5958 &quot;floatValue&quot;: 3.14, # float
5959 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
5960 },
5961 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
5962 # Note that for the purposes of inspection or transformation, the number
5963 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
5964 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
5965 # 123456789, the number of bytes would be counted as 9, even though an
5966 # int64 only holds up to 8 bytes of data.
5967 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
5968 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
5969 # and time zone are either specified elsewhere or are not significant. The date
5970 # is relative to the Proleptic Gregorian Calendar. This can represent:
5971 #
5972 # * A full date, with non-zero year, month and day values
5973 # * A month and day value, with a zero year, e.g. an anniversary
5974 # * A year on its own, with zero month and day values
5975 # * A year and month value, with a zero day, e.g. a credit card expiration date
5976 #
5977 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
5978 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
5979 # a year.
5980 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
5981 # month and day.
5982 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
5983 # if specifying a year by itself or a year and month where the day is not
5984 # significant.
5985 },
5986 &quot;stringValue&quot;: &quot;A String&quot;, # string
5987 &quot;integerValue&quot;: &quot;A String&quot;, # integer
5988 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
5989 # or are specified elsewhere. An API may choose to allow leap seconds. Related
5990 # types are google.type.Date and `google.protobuf.Timestamp`.
5991 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
5992 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
5993 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
5994 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
5995 # allow the value 60 if it allows leap-seconds.
5996 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
5997 },
5998 &quot;booleanValue&quot;: True or False, # boolean
5999 &quot;floatValue&quot;: 3.14, # float
6000 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07006001 },
6002 },
6003 ],
6004 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006005 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
6006 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
6007 # output would be &#x27;My phone number is &#x27;.
6008 },
Bu Sun Kim65020912020-05-20 12:08:20 -07006009 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
6010 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
6011 # Note that for the purposes of inspection or transformation, the number
6012 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
6013 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
6014 # 123456789, the number of bytes would be counted as 9, even though an
6015 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07006016 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
6017 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
6018 # and time zone are either specified elsewhere or are not significant. The date
6019 # is relative to the Proleptic Gregorian Calendar. This can represent:
6020 #
6021 # * A full date, with non-zero year, month and day values
6022 # * A month and day value, with a zero year, e.g. an anniversary
6023 # * A year on its own, with zero month and day values
6024 # * A year and month value, with a zero day, e.g. a credit card expiration date
6025 #
6026 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
6027 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
6028 # a year.
6029 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
6030 # month and day.
6031 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
6032 # if specifying a year by itself or a year and month where the day is not
6033 # significant.
6034 },
6035 &quot;stringValue&quot;: &quot;A String&quot;, # string
6036 &quot;integerValue&quot;: &quot;A String&quot;, # integer
6037 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
6038 # or are specified elsewhere. An API may choose to allow leap seconds. Related
6039 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07006040 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
6041 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
6042 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006043 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
6044 # allow the value 60 if it allows leap-seconds.
6045 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07006046 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006047 &quot;booleanValue&quot;: True or False, # boolean
6048 &quot;floatValue&quot;: 3.14, # float
6049 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07006050 },
6051 },
Bu Sun Kim65020912020-05-20 12:08:20 -07006052 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
6053 # Bucketing transformation can provide all of this functionality,
6054 # but requires more configuration. This message is provided as a convenience to
6055 # the user for simple bucketing strategies.
6056 #
6057 # The transformed value will be a hyphenated string of
6058 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
6059 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
6060 #
6061 # This can be used on data of type: double, long.
6062 #
6063 # If the bound Value type differs from the type of data
6064 # being transformed, we will first attempt converting the type of the data to
6065 # be transformed to match the type of the bound before comparing.
6066 #
6067 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -07006068 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
6069 # grouped together into a single bucket; for example if `upper_bound` = 89,
6070 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
6071 # Note that for the purposes of inspection or transformation, the number
6072 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
6073 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
6074 # 123456789, the number of bytes would be counted as 9, even though an
6075 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07006076 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
6077 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
6078 # and time zone are either specified elsewhere or are not significant. The date
6079 # is relative to the Proleptic Gregorian Calendar. This can represent:
6080 #
6081 # * A full date, with non-zero year, month and day values
6082 # * A month and day value, with a zero year, e.g. an anniversary
6083 # * A year on its own, with zero month and day values
6084 # * A year and month value, with a zero day, e.g. a credit card expiration date
6085 #
6086 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
6087 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
6088 # a year.
6089 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
6090 # month and day.
6091 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
6092 # if specifying a year by itself or a year and month where the day is not
6093 # significant.
6094 },
6095 &quot;stringValue&quot;: &quot;A String&quot;, # string
6096 &quot;integerValue&quot;: &quot;A String&quot;, # integer
6097 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
6098 # or are specified elsewhere. An API may choose to allow leap seconds. Related
6099 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07006100 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
6101 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
6102 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006103 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
6104 # allow the value 60 if it allows leap-seconds.
6105 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07006106 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006107 &quot;booleanValue&quot;: True or False, # boolean
6108 &quot;floatValue&quot;: 3.14, # float
6109 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07006110 },
6111 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
6112 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
6113 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
6114 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006115 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
6116 # grouped together into a single bucket; for example if `lower_bound` = 10,
6117 # then all values less than 10 are replaced with the value &quot;-10&quot;.
6118 # Note that for the purposes of inspection or transformation, the number
6119 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
6120 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
6121 # 123456789, the number of bytes would be counted as 9, even though an
6122 # int64 only holds up to 8 bytes of data.
6123 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
6124 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
6125 # and time zone are either specified elsewhere or are not significant. The date
6126 # is relative to the Proleptic Gregorian Calendar. This can represent:
6127 #
6128 # * A full date, with non-zero year, month and day values
6129 # * A month and day value, with a zero year, e.g. an anniversary
6130 # * A year on its own, with zero month and day values
6131 # * A year and month value, with a zero day, e.g. a credit card expiration date
6132 #
6133 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
6134 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
6135 # a year.
6136 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
6137 # month and day.
6138 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
6139 # if specifying a year by itself or a year and month where the day is not
6140 # significant.
6141 },
6142 &quot;stringValue&quot;: &quot;A String&quot;, # string
6143 &quot;integerValue&quot;: &quot;A String&quot;, # integer
6144 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
6145 # or are specified elsewhere. An API may choose to allow leap seconds. Related
6146 # types are google.type.Date and `google.protobuf.Timestamp`.
6147 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
6148 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
6149 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
6150 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
6151 # allow the value 60 if it allows leap-seconds.
6152 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
6153 },
6154 &quot;booleanValue&quot;: True or False, # boolean
6155 &quot;floatValue&quot;: 3.14, # float
6156 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
6157 },
6158 },
6159 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
6160 # fixed character. Masking can start from the beginning or end of the string.
6161 # This can be used on data of any type (numbers, longs, and so on) and when
6162 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
6163 # type. (This allows you to take a long like 123 and modify it to a string like
6164 # **3.
6165 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
6166 # characters. For example, if the input string is `555-555-5555` and you
6167 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
6168 # returns `***-**5-5555`.
6169 { # Characters to skip when doing deidentification of a value. These will be left
6170 # alone and skipped.
6171 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
6172 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
6173 # punctuation.
6174 },
6175 ],
6176 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
6177 # masked. Skipped characters do not count towards this tally.
6178 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
6179 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
6180 # code or credit card number. This string must have a length of 1. If not
6181 # supplied, this value defaults to `*` for strings, and `0` for digits.
6182 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
6183 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
6184 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
6185 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
6186 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -07006187 },
6188 },
6189 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # Only apply the transformation if the condition evaluates to true for the
6190 # given `RecordCondition`. The conditions are allowed to reference fields
6191 # that are not used in the actual transformation.
6192 #
6193 # Example Use Cases:
6194 #
6195 # - Apply a different bucket transformation to an age column if the zip code
6196 # column for the same record is within a specific range.
6197 # - Redact a field if the date of birth field is greater than 85.
6198 # a field.
6199 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
6200 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
6201 # only supported value is `AND`.
6202 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
6203 &quot;conditions&quot;: [ # A collection of conditions.
6204 { # The field type of `value` and `field` do not need to match to be
6205 # considered equal, but not all comparisons are possible.
6206 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
6207 # but all other comparisons are invalid with incompatible types.
6208 # A `value` of type:
6209 #
6210 # - `string` can be compared against all other types
6211 # - `boolean` can only be compared against other booleans
6212 # - `integer` can be compared against doubles or a string if the string value
6213 # can be parsed as an integer.
6214 # - `double` can be compared against integers or a string if the string can
6215 # be parsed as a double.
6216 # - `Timestamp` can be compared against strings in RFC 3339 date string
6217 # format.
6218 # - `TimeOfDay` can be compared against timestamps and strings in the format
6219 # of &#x27;HH:mm:ss&#x27;.
6220 #
6221 # If we fail to compare do to type mismatch, a warning will be given and
6222 # the condition will evaluate to false.
Bu Sun Kim65020912020-05-20 12:08:20 -07006223 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
6224 # Note that for the purposes of inspection or transformation, the number
6225 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
6226 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
6227 # 123456789, the number of bytes would be counted as 9, even though an
6228 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07006229 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
6230 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
6231 # and time zone are either specified elsewhere or are not significant. The date
6232 # is relative to the Proleptic Gregorian Calendar. This can represent:
6233 #
6234 # * A full date, with non-zero year, month and day values
6235 # * A month and day value, with a zero year, e.g. an anniversary
6236 # * A year on its own, with zero month and day values
6237 # * A year and month value, with a zero day, e.g. a credit card expiration date
6238 #
6239 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
6240 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
6241 # a year.
6242 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
6243 # month and day.
6244 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
6245 # if specifying a year by itself or a year and month where the day is not
6246 # significant.
6247 },
6248 &quot;stringValue&quot;: &quot;A String&quot;, # string
6249 &quot;integerValue&quot;: &quot;A String&quot;, # integer
6250 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
6251 # or are specified elsewhere. An API may choose to allow leap seconds. Related
6252 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07006253 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
6254 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
6255 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006256 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
6257 # allow the value 60 if it allows leap-seconds.
6258 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07006259 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006260 &quot;booleanValue&quot;: True or False, # boolean
6261 &quot;floatValue&quot;: 3.14, # float
6262 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07006263 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006264 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
6265 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
6266 },
6267 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -07006268 },
6269 ],
6270 },
6271 },
6272 },
6273 },
6274 ],
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006275 &quot;recordSuppressions&quot;: [ # Configuration defining which records get suppressed entirely. Records that
6276 # match any suppression rule are omitted from the output.
6277 { # Configuration to suppress records whose suppression conditions evaluate to
6278 # true.
6279 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # A condition that when it evaluates to true will result in the record being
6280 # evaluated to be suppressed from the transformed content.
6281 # a field.
6282 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
6283 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
6284 # only supported value is `AND`.
6285 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
6286 &quot;conditions&quot;: [ # A collection of conditions.
6287 { # The field type of `value` and `field` do not need to match to be
6288 # considered equal, but not all comparisons are possible.
6289 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
6290 # but all other comparisons are invalid with incompatible types.
6291 # A `value` of type:
6292 #
6293 # - `string` can be compared against all other types
6294 # - `boolean` can only be compared against other booleans
6295 # - `integer` can be compared against doubles or a string if the string value
6296 # can be parsed as an integer.
6297 # - `double` can be compared against integers or a string if the string can
6298 # be parsed as a double.
6299 # - `Timestamp` can be compared against strings in RFC 3339 date string
6300 # format.
6301 # - `TimeOfDay` can be compared against timestamps and strings in the format
6302 # of &#x27;HH:mm:ss&#x27;.
6303 #
6304 # If we fail to compare do to type mismatch, a warning will be given and
6305 # the condition will evaluate to false.
6306 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
6307 # Note that for the purposes of inspection or transformation, the number
6308 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
6309 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
6310 # 123456789, the number of bytes would be counted as 9, even though an
6311 # int64 only holds up to 8 bytes of data.
6312 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
6313 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
6314 # and time zone are either specified elsewhere or are not significant. The date
6315 # is relative to the Proleptic Gregorian Calendar. This can represent:
6316 #
6317 # * A full date, with non-zero year, month and day values
6318 # * A month and day value, with a zero year, e.g. an anniversary
6319 # * A year on its own, with zero month and day values
6320 # * A year and month value, with a zero day, e.g. a credit card expiration date
6321 #
6322 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
6323 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
6324 # a year.
6325 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
6326 # month and day.
6327 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
6328 # if specifying a year by itself or a year and month where the day is not
6329 # significant.
6330 },
6331 &quot;stringValue&quot;: &quot;A String&quot;, # string
6332 &quot;integerValue&quot;: &quot;A String&quot;, # integer
6333 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
6334 # or are specified elsewhere. An API may choose to allow leap seconds. Related
6335 # types are google.type.Date and `google.protobuf.Timestamp`.
6336 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
6337 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
6338 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
6339 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
6340 # allow the value 60 if it allows leap-seconds.
6341 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
6342 },
6343 &quot;booleanValue&quot;: True or False, # boolean
6344 &quot;floatValue&quot;: 3.14, # float
6345 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07006346 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006347 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
6348 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
Bu Sun Kim65020912020-05-20 12:08:20 -07006349 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006350 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -07006351 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006352 ],
Bu Sun Kim65020912020-05-20 12:08:20 -07006353 },
6354 },
Bu Sun Kim65020912020-05-20 12:08:20 -07006355 },
6356 },
6357 ],
6358 },
6359 },
6360 }</pre>
6361</div>
6362
6363<div class="method">
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006364 <code class="details" id="list">list(parent, locationId, pageSize=None, orderBy=None, pageToken=None, x__xgafv=None)</code>
Bu Sun Kim65020912020-05-20 12:08:20 -07006365 <pre>Lists DeidentifyTemplates.
6366See https://cloud.google.com/dlp/docs/creating-templates-deid to learn
6367more.
6368
6369Args:
6370 parent: string, Required. The parent resource name, for example projects/my-project-id or
6371organizations/my-org-id. (required)
6372 locationId: string, The geographic location where deidentifications templates will be retrieved
6373from. Use `-` for all locations. Reserved for future extensions. (required)
Bu Sun Kim65020912020-05-20 12:08:20 -07006374 pageSize: integer, Size of the page, can be limited by server. If zero server returns
6375a page of max size 100.
6376 orderBy: string, Comma separated list of fields to order by,
6377followed by `asc` or `desc` postfix. This list is case-insensitive,
6378default sorting order is ascending, redundant space characters are
6379insignificant.
6380
6381Example: `name asc,update_time, create_time desc`
6382
6383Supported fields are:
6384
6385- `create_time`: corresponds to time the template was created.
6386- `update_time`: corresponds to time the template was last updated.
6387- `name`: corresponds to template&#x27;s name.
6388- `display_name`: corresponds to template&#x27;s display name.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006389 pageToken: string, Page token to continue retrieval. Comes from previous call
6390to `ListDeidentifyTemplates`.
Bu Sun Kim65020912020-05-20 12:08:20 -07006391 x__xgafv: string, V1 error format.
6392 Allowed values
6393 1 - v1 error format
6394 2 - v2 error format
6395
6396Returns:
6397 An object of the form:
6398
6399 { # Response message for ListDeidentifyTemplates.
6400 &quot;nextPageToken&quot;: &quot;A String&quot;, # If the next page is available then the next page token to be used
6401 # in following ListDeidentifyTemplates request.
6402 &quot;deidentifyTemplates&quot;: [ # List of deidentify templates, up to page_size in
6403 # ListDeidentifyTemplatesRequest.
6404 { # DeidentifyTemplates contains instructions on how to de-identify content.
6405 # See https://cloud.google.com/dlp/docs/concepts-templates to learn more.
6406 &quot;name&quot;: &quot;A String&quot;, # Output only. The template name.
6407 #
6408 # The template will have one of the following formats:
6409 # `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR
6410 # `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`
6411 &quot;description&quot;: &quot;A String&quot;, # Short description (max 256 chars).
6412 &quot;displayName&quot;: &quot;A String&quot;, # Display name (max 256 chars).
6413 &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of an inspectTemplate.
6414 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of an inspectTemplate.
6415 &quot;deidentifyConfig&quot;: { # The configuration that controls how the data will change. # ///////////// // The core content of the template // ///////////////
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07006416 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the dataset as free-form text and apply the same free text
6417 # transformation everywhere.
6418 # apply various `PrimitiveTransformation`s to each finding, where the
6419 # transformation is applied to only values that were identified as a specific
6420 # info_type.
6421 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
6422 # for a given infoType.
6423 { # A transformation to apply to text that is identified as a specific
6424 # info_type.
6425 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
6426 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
6427 # portion of the value.
6428 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
6429 },
6430 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
6431 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
6432 # to learn more.
6433 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
6434 # If set, must also set cryptoKey. If set, shift will be consistent for the
6435 # given context.
6436 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
6437 },
6438 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
6439 # range (inclusive ends). Negative means shift to earlier in time. Must not
6440 # be more than 365250 days (1000 years) each direction.
6441 #
6442 # For example, 3 means shift date to at most 3 days into the future.
6443 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
6444 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
6445 # results in the same shift for the same context and crypto_key. If
6446 # set, must also set context. Can only be applied to table items.
6447 # a key encryption key (KEK) stored by KMS).
6448 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
6449 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
6450 # unwrap the data crypto key.
6451 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
6452 # leaking the key. Choose another type of key if possible.
6453 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
6454 },
6455 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
6456 # It will be discarded after the request finishes.
6457 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
6458 # This is an arbitrary string used to differentiate different keys.
6459 # A unique key is generated per name: two separate `TransientCryptoKey`
6460 # protos share the same generated key if their names are the same.
6461 # When the data crypto key is generated, this name is not used in any way
6462 # (repeating the api call will result in a different key being generated).
6463 },
6464 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
6465 # The wrapped key must be a 128/192/256 bit key.
6466 # Authorization requires the following IAM permissions when sending a request
6467 # to perform a crypto transformation using a kms-wrapped crypto key:
6468 # dlp.kms.encrypt
6469 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
6470 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
6471 },
6472 },
6473 },
6474 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
6475 },
6476 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
6477 # Uses SHA-256.
6478 # The key size must be either 32 or 64 bytes.
6479 # Outputs a base64 encoded representation of the hashed output
6480 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
6481 # Currently, only string and integer values can be hashed.
6482 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
6483 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
6484 # a key encryption key (KEK) stored by KMS).
6485 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
6486 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
6487 # unwrap the data crypto key.
6488 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
6489 # leaking the key. Choose another type of key if possible.
6490 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
6491 },
6492 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
6493 # It will be discarded after the request finishes.
6494 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
6495 # This is an arbitrary string used to differentiate different keys.
6496 # A unique key is generated per name: two separate `TransientCryptoKey`
6497 # protos share the same generated key if their names are the same.
6498 # When the data crypto key is generated, this name is not used in any way
6499 # (repeating the api call will result in a different key being generated).
6500 },
6501 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
6502 # The wrapped key must be a 128/192/256 bit key.
6503 # Authorization requires the following IAM permissions when sending a request
6504 # to perform a crypto transformation using a kms-wrapped crypto key:
6505 # dlp.kms.encrypt
6506 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
6507 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
6508 },
6509 },
6510 },
6511 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
6512 # (FPE) with the FFX mode of operation; however when used in the
6513 # `ReidentifyContent` API method, it serves the opposite function by reversing
6514 # the surrogate back into the original identifier. The identifier must be
6515 # encoded as ASCII. For a given crypto key and context, the same identifier
6516 # will be replaced with the same surrogate. Identifiers must be at least two
6517 # characters long. In the case that the identifier is the empty string, it will
6518 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
6519 # more.
6520 #
6521 # Note: We recommend using CryptoDeterministicConfig for all use cases which
6522 # do not require preserving the input alphabet space and size, plus warrant
6523 # referential integrity.
6524 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
6525 # This annotation will be applied to the surrogate by prefixing it with
6526 # the name of the custom infoType followed by the number of
6527 # characters comprising the surrogate. The following scheme defines the
6528 # format: info_type_name(surrogate_character_count):surrogate
6529 #
6530 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
6531 # the surrogate is &#x27;abc&#x27;, the full replacement value
6532 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
6533 #
6534 # This annotation identifies the surrogate when inspecting content using the
6535 # custom infoType
6536 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
6537 # This facilitates reversal of the surrogate when it occurs in free text.
6538 #
6539 # In order for inspection to work properly, the name of this infoType must
6540 # not occur naturally anywhere in your data; otherwise, inspection may
6541 # find a surrogate that does not correspond to an actual identifier.
6542 # Therefore, choose your custom infoType name carefully after considering
6543 # what your data looks like. One way to select a name that has a high chance
6544 # of yielding reliable detection is to include one or more unicode characters
6545 # that are highly improbable to exist in your data.
6546 # For example, assuming your data is entered from a regular ASCII keyboard,
6547 # the symbol with the hex code point 29DD might be used like so:
6548 # ⧝MY_TOKEN_TYPE
6549 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
6550 # creating a CustomInfoType, or one of the names listed
6551 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
6552 # a built-in type. InfoType names should conform to the pattern
6553 # `[a-zA-Z0-9_]{1,64}`.
6554 },
6555 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
6556 # identifier in two different contexts won&#x27;t be given the same surrogate. If
6557 # the context is not set, a default tweak will be used.
6558 #
6559 # If the context is set but:
6560 #
6561 # 1. there is no record present when transforming a given value or
6562 # 1. the field is not present when transforming a given value,
6563 #
6564 # a default tweak will be used.
6565 #
6566 # Note that case (1) is expected when an `InfoTypeTransformation` is
6567 # applied to both structured and non-structured `ContentItem`s.
6568 # Currently, the referenced field may be of value type integer or string.
6569 #
6570 # The tweak is constructed as a sequence of bytes in big endian byte order
6571 # such that:
6572 #
6573 # - a 64 bit integer is encoded followed by a single byte of value 1
6574 # - a string is encoded in UTF-8 format followed by a single byte of value 2
6575 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
6576 },
6577 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
6578 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
6579 # a key encryption key (KEK) stored by KMS).
6580 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
6581 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
6582 # unwrap the data crypto key.
6583 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
6584 # leaking the key. Choose another type of key if possible.
6585 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
6586 },
6587 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
6588 # It will be discarded after the request finishes.
6589 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
6590 # This is an arbitrary string used to differentiate different keys.
6591 # A unique key is generated per name: two separate `TransientCryptoKey`
6592 # protos share the same generated key if their names are the same.
6593 # When the data crypto key is generated, this name is not used in any way
6594 # (repeating the api call will result in a different key being generated).
6595 },
6596 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
6597 # The wrapped key must be a 128/192/256 bit key.
6598 # Authorization requires the following IAM permissions when sending a request
6599 # to perform a crypto transformation using a kms-wrapped crypto key:
6600 # dlp.kms.encrypt
6601 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
6602 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
6603 },
6604 },
6605 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
6606 # that the FFX mode natively supports. This happens before/after
6607 # encryption/decryption.
6608 # Each character listed must appear only once.
6609 # Number of characters must be in the range [2, 95].
6610 # This must be encoded as ASCII.
6611 # The order of characters does not matter.
6612 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
6613 },
6614 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
6615 # input. Outputs a base64 encoded representation of the encrypted output.
6616 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
6617 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
6618 # This annotation will be applied to the surrogate by prefixing it with
6619 # the name of the custom info type followed by the number of
6620 # characters comprising the surrogate. The following scheme defines the
6621 # format: {info type name}({surrogate character count}):{surrogate}
6622 #
6623 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
6624 # the surrogate is &#x27;abc&#x27;, the full replacement value
6625 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
6626 #
6627 # This annotation identifies the surrogate when inspecting content using the
6628 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
6629 # surrogate when it occurs in free text.
6630 #
6631 # Note: For record transformations where the entire cell in a table is being
6632 # transformed, surrogates are not mandatory. Surrogates are used to denote
6633 # the location of the token and are necessary for re-identification in free
6634 # form text.
6635 #
6636 # In order for inspection to work properly, the name of this info type must
6637 # not occur naturally anywhere in your data; otherwise, inspection may either
6638 #
6639 # - reverse a surrogate that does not correspond to an actual identifier
6640 # - be unable to parse the surrogate and result in an error
6641 #
6642 # Therefore, choose your custom info type name carefully after considering
6643 # what your data looks like. One way to select a name that has a high chance
6644 # of yielding reliable detection is to include one or more unicode characters
6645 # that are highly improbable to exist in your data.
6646 # For example, assuming your data is entered from a regular ASCII keyboard,
6647 # the symbol with the hex code point 29DD might be used like so:
6648 # ⧝MY_TOKEN_TYPE.
6649 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
6650 # creating a CustomInfoType, or one of the names listed
6651 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
6652 # a built-in type. InfoType names should conform to the pattern
6653 # `[a-zA-Z0-9_]{1,64}`.
6654 },
6655 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
6656 # referential integrity such that the same identifier in two different
6657 # contexts will be given a distinct surrogate. The context is appended to
6658 # plaintext value being encrypted. On decryption the provided context is
6659 # validated against the value used during encryption. If a context was
6660 # provided during encryption, same context must be provided during decryption
6661 # as well.
6662 #
6663 # If the context is not set, plaintext would be used as is for encryption.
6664 # If the context is set but:
6665 #
6666 # 1. there is no record present when transforming a given value or
6667 # 2. the field is not present when transforming a given value,
6668 #
6669 # plaintext would be used as is for encryption.
6670 #
6671 # Note that case (1) is expected when an `InfoTypeTransformation` is
6672 # applied to both structured and non-structured `ContentItem`s.
6673 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
6674 },
6675 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
6676 # a key encryption key (KEK) stored by KMS).
6677 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
6678 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
6679 # unwrap the data crypto key.
6680 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
6681 # leaking the key. Choose another type of key if possible.
6682 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
6683 },
6684 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
6685 # It will be discarded after the request finishes.
6686 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
6687 # This is an arbitrary string used to differentiate different keys.
6688 # A unique key is generated per name: two separate `TransientCryptoKey`
6689 # protos share the same generated key if their names are the same.
6690 # When the data crypto key is generated, this name is not used in any way
6691 # (repeating the api call will result in a different key being generated).
6692 },
6693 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
6694 # The wrapped key must be a 128/192/256 bit key.
6695 # Authorization requires the following IAM permissions when sending a request
6696 # to perform a crypto transformation using a kms-wrapped crypto key:
6697 # dlp.kms.encrypt
6698 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
6699 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
6700 },
6701 },
6702 },
6703 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
6704 # replacement values are dynamically provided by the user for custom behavior,
6705 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
6706 # This can be used on
6707 # data of type: number, long, string, timestamp.
6708 # If the bound `Value` type differs from the type of data being transformed, we
6709 # will first attempt converting the type of the data to be transformed to match
6710 # the type of the bound before comparing.
6711 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
6712 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
6713 { # Bucket is represented as a range, along with replacement values.
6714 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
6715 # the default behavior will be to hyphenate the min-max range.
6716 # Note that for the purposes of inspection or transformation, the number
6717 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
6718 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
6719 # 123456789, the number of bytes would be counted as 9, even though an
6720 # int64 only holds up to 8 bytes of data.
6721 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
6722 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
6723 # and time zone are either specified elsewhere or are not significant. The date
6724 # is relative to the Proleptic Gregorian Calendar. This can represent:
6725 #
6726 # * A full date, with non-zero year, month and day values
6727 # * A month and day value, with a zero year, e.g. an anniversary
6728 # * A year on its own, with zero month and day values
6729 # * A year and month value, with a zero day, e.g. a credit card expiration date
6730 #
6731 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
6732 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
6733 # a year.
6734 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
6735 # month and day.
6736 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
6737 # if specifying a year by itself or a year and month where the day is not
6738 # significant.
6739 },
6740 &quot;stringValue&quot;: &quot;A String&quot;, # string
6741 &quot;integerValue&quot;: &quot;A String&quot;, # integer
6742 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
6743 # or are specified elsewhere. An API may choose to allow leap seconds. Related
6744 # types are google.type.Date and `google.protobuf.Timestamp`.
6745 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
6746 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
6747 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
6748 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
6749 # allow the value 60 if it allows leap-seconds.
6750 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
6751 },
6752 &quot;booleanValue&quot;: True or False, # boolean
6753 &quot;floatValue&quot;: 3.14, # float
6754 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
6755 },
6756 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
6757 # used.
6758 # Note that for the purposes of inspection or transformation, the number
6759 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
6760 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
6761 # 123456789, the number of bytes would be counted as 9, even though an
6762 # int64 only holds up to 8 bytes of data.
6763 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
6764 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
6765 # and time zone are either specified elsewhere or are not significant. The date
6766 # is relative to the Proleptic Gregorian Calendar. This can represent:
6767 #
6768 # * A full date, with non-zero year, month and day values
6769 # * A month and day value, with a zero year, e.g. an anniversary
6770 # * A year on its own, with zero month and day values
6771 # * A year and month value, with a zero day, e.g. a credit card expiration date
6772 #
6773 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
6774 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
6775 # a year.
6776 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
6777 # month and day.
6778 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
6779 # if specifying a year by itself or a year and month where the day is not
6780 # significant.
6781 },
6782 &quot;stringValue&quot;: &quot;A String&quot;, # string
6783 &quot;integerValue&quot;: &quot;A String&quot;, # integer
6784 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
6785 # or are specified elsewhere. An API may choose to allow leap seconds. Related
6786 # types are google.type.Date and `google.protobuf.Timestamp`.
6787 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
6788 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
6789 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
6790 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
6791 # allow the value 60 if it allows leap-seconds.
6792 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
6793 },
6794 &quot;booleanValue&quot;: True or False, # boolean
6795 &quot;floatValue&quot;: 3.14, # float
6796 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
6797 },
6798 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
6799 # Note that for the purposes of inspection or transformation, the number
6800 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
6801 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
6802 # 123456789, the number of bytes would be counted as 9, even though an
6803 # int64 only holds up to 8 bytes of data.
6804 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
6805 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
6806 # and time zone are either specified elsewhere or are not significant. The date
6807 # is relative to the Proleptic Gregorian Calendar. This can represent:
6808 #
6809 # * A full date, with non-zero year, month and day values
6810 # * A month and day value, with a zero year, e.g. an anniversary
6811 # * A year on its own, with zero month and day values
6812 # * A year and month value, with a zero day, e.g. a credit card expiration date
6813 #
6814 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
6815 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
6816 # a year.
6817 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
6818 # month and day.
6819 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
6820 # if specifying a year by itself or a year and month where the day is not
6821 # significant.
6822 },
6823 &quot;stringValue&quot;: &quot;A String&quot;, # string
6824 &quot;integerValue&quot;: &quot;A String&quot;, # integer
6825 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
6826 # or are specified elsewhere. An API may choose to allow leap seconds. Related
6827 # types are google.type.Date and `google.protobuf.Timestamp`.
6828 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
6829 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
6830 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
6831 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
6832 # allow the value 60 if it allows leap-seconds.
6833 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
6834 },
6835 &quot;booleanValue&quot;: True or False, # boolean
6836 &quot;floatValue&quot;: 3.14, # float
6837 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
6838 },
6839 },
6840 ],
6841 },
6842 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
6843 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
6844 # output would be &#x27;My phone number is &#x27;.
6845 },
6846 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
6847 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
6848 # Note that for the purposes of inspection or transformation, the number
6849 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
6850 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
6851 # 123456789, the number of bytes would be counted as 9, even though an
6852 # int64 only holds up to 8 bytes of data.
6853 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
6854 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
6855 # and time zone are either specified elsewhere or are not significant. The date
6856 # is relative to the Proleptic Gregorian Calendar. This can represent:
6857 #
6858 # * A full date, with non-zero year, month and day values
6859 # * A month and day value, with a zero year, e.g. an anniversary
6860 # * A year on its own, with zero month and day values
6861 # * A year and month value, with a zero day, e.g. a credit card expiration date
6862 #
6863 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
6864 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
6865 # a year.
6866 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
6867 # month and day.
6868 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
6869 # if specifying a year by itself or a year and month where the day is not
6870 # significant.
6871 },
6872 &quot;stringValue&quot;: &quot;A String&quot;, # string
6873 &quot;integerValue&quot;: &quot;A String&quot;, # integer
6874 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
6875 # or are specified elsewhere. An API may choose to allow leap seconds. Related
6876 # types are google.type.Date and `google.protobuf.Timestamp`.
6877 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
6878 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
6879 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
6880 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
6881 # allow the value 60 if it allows leap-seconds.
6882 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
6883 },
6884 &quot;booleanValue&quot;: True or False, # boolean
6885 &quot;floatValue&quot;: 3.14, # float
6886 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
6887 },
6888 },
6889 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
6890 # Bucketing transformation can provide all of this functionality,
6891 # but requires more configuration. This message is provided as a convenience to
6892 # the user for simple bucketing strategies.
6893 #
6894 # The transformed value will be a hyphenated string of
6895 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
6896 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
6897 #
6898 # This can be used on data of type: double, long.
6899 #
6900 # If the bound Value type differs from the type of data
6901 # being transformed, we will first attempt converting the type of the data to
6902 # be transformed to match the type of the bound before comparing.
6903 #
6904 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
6905 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
6906 # grouped together into a single bucket; for example if `upper_bound` = 89,
6907 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
6908 # Note that for the purposes of inspection or transformation, the number
6909 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
6910 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
6911 # 123456789, the number of bytes would be counted as 9, even though an
6912 # int64 only holds up to 8 bytes of data.
6913 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
6914 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
6915 # and time zone are either specified elsewhere or are not significant. The date
6916 # is relative to the Proleptic Gregorian Calendar. This can represent:
6917 #
6918 # * A full date, with non-zero year, month and day values
6919 # * A month and day value, with a zero year, e.g. an anniversary
6920 # * A year on its own, with zero month and day values
6921 # * A year and month value, with a zero day, e.g. a credit card expiration date
6922 #
6923 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
6924 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
6925 # a year.
6926 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
6927 # month and day.
6928 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
6929 # if specifying a year by itself or a year and month where the day is not
6930 # significant.
6931 },
6932 &quot;stringValue&quot;: &quot;A String&quot;, # string
6933 &quot;integerValue&quot;: &quot;A String&quot;, # integer
6934 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
6935 # or are specified elsewhere. An API may choose to allow leap seconds. Related
6936 # types are google.type.Date and `google.protobuf.Timestamp`.
6937 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
6938 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
6939 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
6940 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
6941 # allow the value 60 if it allows leap-seconds.
6942 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
6943 },
6944 &quot;booleanValue&quot;: True or False, # boolean
6945 &quot;floatValue&quot;: 3.14, # float
6946 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
6947 },
6948 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
6949 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
6950 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
6951 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
6952 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
6953 # grouped together into a single bucket; for example if `lower_bound` = 10,
6954 # then all values less than 10 are replaced with the value &quot;-10&quot;.
6955 # Note that for the purposes of inspection or transformation, the number
6956 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
6957 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
6958 # 123456789, the number of bytes would be counted as 9, even though an
6959 # int64 only holds up to 8 bytes of data.
6960 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
6961 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
6962 # and time zone are either specified elsewhere or are not significant. The date
6963 # is relative to the Proleptic Gregorian Calendar. This can represent:
6964 #
6965 # * A full date, with non-zero year, month and day values
6966 # * A month and day value, with a zero year, e.g. an anniversary
6967 # * A year on its own, with zero month and day values
6968 # * A year and month value, with a zero day, e.g. a credit card expiration date
6969 #
6970 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
6971 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
6972 # a year.
6973 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
6974 # month and day.
6975 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
6976 # if specifying a year by itself or a year and month where the day is not
6977 # significant.
6978 },
6979 &quot;stringValue&quot;: &quot;A String&quot;, # string
6980 &quot;integerValue&quot;: &quot;A String&quot;, # integer
6981 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
6982 # or are specified elsewhere. An API may choose to allow leap seconds. Related
6983 # types are google.type.Date and `google.protobuf.Timestamp`.
6984 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
6985 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
6986 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
6987 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
6988 # allow the value 60 if it allows leap-seconds.
6989 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
6990 },
6991 &quot;booleanValue&quot;: True or False, # boolean
6992 &quot;floatValue&quot;: 3.14, # float
6993 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
6994 },
6995 },
6996 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
6997 # fixed character. Masking can start from the beginning or end of the string.
6998 # This can be used on data of any type (numbers, longs, and so on) and when
6999 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
7000 # type. (This allows you to take a long like 123 and modify it to a string like
7001 # **3.
7002 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
7003 # characters. For example, if the input string is `555-555-5555` and you
7004 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
7005 # returns `***-**5-5555`.
7006 { # Characters to skip when doing deidentification of a value. These will be left
7007 # alone and skipped.
7008 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
7009 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
7010 # punctuation.
7011 },
7012 ],
7013 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
7014 # masked. Skipped characters do not count towards this tally.
7015 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
7016 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
7017 # code or credit card number. This string must have a length of 1. If not
7018 # supplied, this value defaults to `*` for strings, and `0` for digits.
7019 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
7020 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
7021 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
7022 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
7023 # is `true`, then the string `12345` is masked as `12***`.
7024 },
7025 },
7026 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
7027 # this transformation to apply to all findings that correspond to
7028 # infoTypes that were requested in `InspectConfig`.
7029 { # Type of information detected by the API.
7030 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
7031 # creating a CustomInfoType, or one of the names listed
7032 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
7033 # a built-in type. InfoType names should conform to the pattern
7034 # `[a-zA-Z0-9_]{1,64}`.
7035 },
7036 ],
7037 },
7038 ],
7039 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007040 &quot;transformationErrorHandling&quot;: { # How to handle transformation errors during de-identification. A # Mode for handling transformation errors. If left unspecified, the default
7041 # mode is `TransformationErrorHandling.ThrowError`.
7042 # transformation error occurs when the requested transformation is incompatible
7043 # with the data. For example, trying to de-identify an IP address using a
7044 # `DateShift` transformation would result in a transformation error, since date
7045 # info cannot be extracted from an IP address.
7046 # Information about any incompatible transformations, and how they were
7047 # handled, is returned in the response as part of the
7048 # `TransformationOverviews`.
7049 &quot;throwError&quot;: { # Throw an error and fail the request when a transformation error occurs. # Throw an error
7050 },
7051 &quot;leaveUntransformed&quot;: { # Skips the data without modifying it if the requested transformation would # Ignore errors
7052 # cause an error. For example, if a `DateShift` transformation were applied
7053 # an an IP address, this mode would leave the IP address unchanged in the
7054 # response.
7055 },
7056 },
7057 &quot;recordTransformations&quot;: { # A type of transformation that is applied over structured data such as a # Treat the dataset as structured. Transformations can be applied to
7058 # specific locations within structured datasets, such as transforming
7059 # a column within a table.
7060 # table.
Bu Sun Kim65020912020-05-20 12:08:20 -07007061 &quot;fieldTransformations&quot;: [ # Transform the record by applying various field transformations.
7062 { # The transformation to apply to the field.
7063 &quot;fields&quot;: [ # Required. Input field(s) to apply the transformation to.
7064 { # General identifier of a data field in a storage service.
7065 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
7066 },
7067 ],
7068 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the contents of the field as free text, and selectively
7069 # transform content that matches an `InfoType`.
7070 # apply various `PrimitiveTransformation`s to each finding, where the
7071 # transformation is applied to only values that were identified as a specific
7072 # info_type.
7073 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
7074 # for a given infoType.
7075 { # A transformation to apply to text that is identified as a specific
7076 # info_type.
Bu Sun Kim65020912020-05-20 12:08:20 -07007077 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
7078 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
7079 # portion of the value.
7080 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
7081 },
7082 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
7083 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
7084 # to learn more.
7085 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
7086 # If set, must also set cryptoKey. If set, shift will be consistent for the
7087 # given context.
7088 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
7089 },
7090 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
7091 # range (inclusive ends). Negative means shift to earlier in time. Must not
7092 # be more than 365250 days (1000 years) each direction.
7093 #
7094 # For example, 3 means shift date to at most 3 days into the future.
7095 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
7096 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
7097 # results in the same shift for the same context and crypto_key. If
7098 # set, must also set context. Can only be applied to table items.
7099 # a key encryption key (KEK) stored by KMS).
7100 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
7101 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
7102 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07007103 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
7104 # leaking the key. Choose another type of key if possible.
7105 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
7106 },
7107 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
7108 # It will be discarded after the request finishes.
7109 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
7110 # This is an arbitrary string used to differentiate different keys.
7111 # A unique key is generated per name: two separate `TransientCryptoKey`
7112 # protos share the same generated key if their names are the same.
7113 # When the data crypto key is generated, this name is not used in any way
7114 # (repeating the api call will result in a different key being generated).
7115 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007116 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
7117 # The wrapped key must be a 128/192/256 bit key.
7118 # Authorization requires the following IAM permissions when sending a request
7119 # to perform a crypto transformation using a kms-wrapped crypto key:
7120 # dlp.kms.encrypt
7121 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
7122 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
7123 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007124 },
7125 },
7126 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
7127 },
7128 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
7129 # Uses SHA-256.
7130 # The key size must be either 32 or 64 bytes.
7131 # Outputs a base64 encoded representation of the hashed output
7132 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
7133 # Currently, only string and integer values can be hashed.
7134 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
7135 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
7136 # a key encryption key (KEK) stored by KMS).
7137 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
7138 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
7139 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07007140 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
7141 # leaking the key. Choose another type of key if possible.
7142 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
7143 },
7144 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
7145 # It will be discarded after the request finishes.
7146 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
7147 # This is an arbitrary string used to differentiate different keys.
7148 # A unique key is generated per name: two separate `TransientCryptoKey`
7149 # protos share the same generated key if their names are the same.
7150 # When the data crypto key is generated, this name is not used in any way
7151 # (repeating the api call will result in a different key being generated).
7152 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007153 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
7154 # The wrapped key must be a 128/192/256 bit key.
7155 # Authorization requires the following IAM permissions when sending a request
7156 # to perform a crypto transformation using a kms-wrapped crypto key:
7157 # dlp.kms.encrypt
7158 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
7159 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
7160 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007161 },
7162 },
7163 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
7164 # (FPE) with the FFX mode of operation; however when used in the
7165 # `ReidentifyContent` API method, it serves the opposite function by reversing
7166 # the surrogate back into the original identifier. The identifier must be
7167 # encoded as ASCII. For a given crypto key and context, the same identifier
7168 # will be replaced with the same surrogate. Identifiers must be at least two
7169 # characters long. In the case that the identifier is the empty string, it will
7170 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
7171 # more.
7172 #
7173 # Note: We recommend using CryptoDeterministicConfig for all use cases which
7174 # do not require preserving the input alphabet space and size, plus warrant
7175 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -07007176 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
7177 # This annotation will be applied to the surrogate by prefixing it with
7178 # the name of the custom infoType followed by the number of
7179 # characters comprising the surrogate. The following scheme defines the
7180 # format: info_type_name(surrogate_character_count):surrogate
7181 #
7182 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
7183 # the surrogate is &#x27;abc&#x27;, the full replacement value
7184 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
7185 #
7186 # This annotation identifies the surrogate when inspecting content using the
7187 # custom infoType
7188 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
7189 # This facilitates reversal of the surrogate when it occurs in free text.
7190 #
7191 # In order for inspection to work properly, the name of this infoType must
7192 # not occur naturally anywhere in your data; otherwise, inspection may
7193 # find a surrogate that does not correspond to an actual identifier.
7194 # Therefore, choose your custom infoType name carefully after considering
7195 # what your data looks like. One way to select a name that has a high chance
7196 # of yielding reliable detection is to include one or more unicode characters
7197 # that are highly improbable to exist in your data.
7198 # For example, assuming your data is entered from a regular ASCII keyboard,
7199 # the symbol with the hex code point 29DD might be used like so:
7200 # ⧝MY_TOKEN_TYPE
7201 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
7202 # creating a CustomInfoType, or one of the names listed
7203 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
7204 # a built-in type. InfoType names should conform to the pattern
7205 # `[a-zA-Z0-9_]{1,64}`.
7206 },
7207 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
7208 # identifier in two different contexts won&#x27;t be given the same surrogate. If
7209 # the context is not set, a default tweak will be used.
7210 #
7211 # If the context is set but:
7212 #
7213 # 1. there is no record present when transforming a given value or
7214 # 1. the field is not present when transforming a given value,
7215 #
7216 # a default tweak will be used.
7217 #
7218 # Note that case (1) is expected when an `InfoTypeTransformation` is
7219 # applied to both structured and non-structured `ContentItem`s.
7220 # Currently, the referenced field may be of value type integer or string.
7221 #
7222 # The tweak is constructed as a sequence of bytes in big endian byte order
7223 # such that:
7224 #
7225 # - a 64 bit integer is encoded followed by a single byte of value 1
7226 # - a string is encoded in UTF-8 format followed by a single byte of value 2
7227 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
7228 },
7229 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
7230 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
7231 # a key encryption key (KEK) stored by KMS).
7232 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
7233 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
7234 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07007235 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
7236 # leaking the key. Choose another type of key if possible.
7237 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
7238 },
7239 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
7240 # It will be discarded after the request finishes.
7241 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
7242 # This is an arbitrary string used to differentiate different keys.
7243 # A unique key is generated per name: two separate `TransientCryptoKey`
7244 # protos share the same generated key if their names are the same.
7245 # When the data crypto key is generated, this name is not used in any way
7246 # (repeating the api call will result in a different key being generated).
7247 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007248 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
7249 # The wrapped key must be a 128/192/256 bit key.
7250 # Authorization requires the following IAM permissions when sending a request
7251 # to perform a crypto transformation using a kms-wrapped crypto key:
7252 # dlp.kms.encrypt
7253 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
7254 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
7255 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007256 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007257 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
7258 # that the FFX mode natively supports. This happens before/after
7259 # encryption/decryption.
7260 # Each character listed must appear only once.
7261 # Number of characters must be in the range [2, 95].
7262 # This must be encoded as ASCII.
7263 # The order of characters does not matter.
7264 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -07007265 },
7266 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
7267 # input. Outputs a base64 encoded representation of the encrypted output.
7268 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
7269 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
7270 # This annotation will be applied to the surrogate by prefixing it with
7271 # the name of the custom info type followed by the number of
7272 # characters comprising the surrogate. The following scheme defines the
7273 # format: {info type name}({surrogate character count}):{surrogate}
7274 #
7275 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
7276 # the surrogate is &#x27;abc&#x27;, the full replacement value
7277 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
7278 #
7279 # This annotation identifies the surrogate when inspecting content using the
7280 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
7281 # surrogate when it occurs in free text.
7282 #
7283 # Note: For record transformations where the entire cell in a table is being
7284 # transformed, surrogates are not mandatory. Surrogates are used to denote
7285 # the location of the token and are necessary for re-identification in free
7286 # form text.
7287 #
7288 # In order for inspection to work properly, the name of this info type must
7289 # not occur naturally anywhere in your data; otherwise, inspection may either
7290 #
7291 # - reverse a surrogate that does not correspond to an actual identifier
7292 # - be unable to parse the surrogate and result in an error
7293 #
7294 # Therefore, choose your custom info type name carefully after considering
7295 # what your data looks like. One way to select a name that has a high chance
7296 # of yielding reliable detection is to include one or more unicode characters
7297 # that are highly improbable to exist in your data.
7298 # For example, assuming your data is entered from a regular ASCII keyboard,
7299 # the symbol with the hex code point 29DD might be used like so:
7300 # ⧝MY_TOKEN_TYPE.
7301 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
7302 # creating a CustomInfoType, or one of the names listed
7303 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
7304 # a built-in type. InfoType names should conform to the pattern
7305 # `[a-zA-Z0-9_]{1,64}`.
7306 },
7307 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
7308 # referential integrity such that the same identifier in two different
7309 # contexts will be given a distinct surrogate. The context is appended to
7310 # plaintext value being encrypted. On decryption the provided context is
7311 # validated against the value used during encryption. If a context was
7312 # provided during encryption, same context must be provided during decryption
7313 # as well.
7314 #
7315 # If the context is not set, plaintext would be used as is for encryption.
7316 # If the context is set but:
7317 #
7318 # 1. there is no record present when transforming a given value or
7319 # 2. the field is not present when transforming a given value,
7320 #
7321 # plaintext would be used as is for encryption.
7322 #
7323 # Note that case (1) is expected when an `InfoTypeTransformation` is
7324 # applied to both structured and non-structured `ContentItem`s.
7325 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
7326 },
7327 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
7328 # a key encryption key (KEK) stored by KMS).
7329 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
7330 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
7331 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07007332 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
7333 # leaking the key. Choose another type of key if possible.
7334 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
7335 },
7336 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
7337 # It will be discarded after the request finishes.
7338 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
7339 # This is an arbitrary string used to differentiate different keys.
7340 # A unique key is generated per name: two separate `TransientCryptoKey`
7341 # protos share the same generated key if their names are the same.
7342 # When the data crypto key is generated, this name is not used in any way
7343 # (repeating the api call will result in a different key being generated).
7344 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007345 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
7346 # The wrapped key must be a 128/192/256 bit key.
7347 # Authorization requires the following IAM permissions when sending a request
7348 # to perform a crypto transformation using a kms-wrapped crypto key:
7349 # dlp.kms.encrypt
7350 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
7351 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
7352 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007353 },
7354 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007355 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
7356 # replacement values are dynamically provided by the user for custom behavior,
7357 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
7358 # This can be used on
7359 # data of type: number, long, string, timestamp.
7360 # If the bound `Value` type differs from the type of data being transformed, we
7361 # will first attempt converting the type of the data to be transformed to match
7362 # the type of the bound before comparing.
7363 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
7364 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
7365 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -07007366 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
7367 # the default behavior will be to hyphenate the min-max range.
7368 # Note that for the purposes of inspection or transformation, the number
7369 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
7370 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
7371 # 123456789, the number of bytes would be counted as 9, even though an
7372 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07007373 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
7374 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
7375 # and time zone are either specified elsewhere or are not significant. The date
7376 # is relative to the Proleptic Gregorian Calendar. This can represent:
7377 #
7378 # * A full date, with non-zero year, month and day values
7379 # * A month and day value, with a zero year, e.g. an anniversary
7380 # * A year on its own, with zero month and day values
7381 # * A year and month value, with a zero day, e.g. a credit card expiration date
7382 #
7383 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
7384 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
7385 # a year.
7386 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
7387 # month and day.
7388 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
7389 # if specifying a year by itself or a year and month where the day is not
7390 # significant.
7391 },
7392 &quot;stringValue&quot;: &quot;A String&quot;, # string
7393 &quot;integerValue&quot;: &quot;A String&quot;, # integer
7394 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
7395 # or are specified elsewhere. An API may choose to allow leap seconds. Related
7396 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07007397 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
7398 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
7399 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007400 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
7401 # allow the value 60 if it allows leap-seconds.
7402 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07007403 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007404 &quot;booleanValue&quot;: True or False, # boolean
7405 &quot;floatValue&quot;: 3.14, # float
7406 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
7407 },
7408 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
7409 # used.
7410 # Note that for the purposes of inspection or transformation, the number
7411 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
7412 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
7413 # 123456789, the number of bytes would be counted as 9, even though an
7414 # int64 only holds up to 8 bytes of data.
7415 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
7416 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
7417 # and time zone are either specified elsewhere or are not significant. The date
7418 # is relative to the Proleptic Gregorian Calendar. This can represent:
7419 #
7420 # * A full date, with non-zero year, month and day values
7421 # * A month and day value, with a zero year, e.g. an anniversary
7422 # * A year on its own, with zero month and day values
7423 # * A year and month value, with a zero day, e.g. a credit card expiration date
7424 #
7425 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
7426 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
7427 # a year.
7428 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
7429 # month and day.
7430 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
7431 # if specifying a year by itself or a year and month where the day is not
7432 # significant.
7433 },
7434 &quot;stringValue&quot;: &quot;A String&quot;, # string
7435 &quot;integerValue&quot;: &quot;A String&quot;, # integer
7436 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
7437 # or are specified elsewhere. An API may choose to allow leap seconds. Related
7438 # types are google.type.Date and `google.protobuf.Timestamp`.
7439 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
7440 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
7441 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
7442 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
7443 # allow the value 60 if it allows leap-seconds.
7444 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
7445 },
7446 &quot;booleanValue&quot;: True or False, # boolean
7447 &quot;floatValue&quot;: 3.14, # float
7448 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
7449 },
7450 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
7451 # Note that for the purposes of inspection or transformation, the number
7452 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
7453 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
7454 # 123456789, the number of bytes would be counted as 9, even though an
7455 # int64 only holds up to 8 bytes of data.
7456 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
7457 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
7458 # and time zone are either specified elsewhere or are not significant. The date
7459 # is relative to the Proleptic Gregorian Calendar. This can represent:
7460 #
7461 # * A full date, with non-zero year, month and day values
7462 # * A month and day value, with a zero year, e.g. an anniversary
7463 # * A year on its own, with zero month and day values
7464 # * A year and month value, with a zero day, e.g. a credit card expiration date
7465 #
7466 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
7467 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
7468 # a year.
7469 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
7470 # month and day.
7471 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
7472 # if specifying a year by itself or a year and month where the day is not
7473 # significant.
7474 },
7475 &quot;stringValue&quot;: &quot;A String&quot;, # string
7476 &quot;integerValue&quot;: &quot;A String&quot;, # integer
7477 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
7478 # or are specified elsewhere. An API may choose to allow leap seconds. Related
7479 # types are google.type.Date and `google.protobuf.Timestamp`.
7480 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
7481 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
7482 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
7483 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
7484 # allow the value 60 if it allows leap-seconds.
7485 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
7486 },
7487 &quot;booleanValue&quot;: True or False, # boolean
7488 &quot;floatValue&quot;: 3.14, # float
7489 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07007490 },
7491 },
7492 ],
7493 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007494 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
7495 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
7496 # output would be &#x27;My phone number is &#x27;.
7497 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007498 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
7499 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
7500 # Note that for the purposes of inspection or transformation, the number
7501 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
7502 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
7503 # 123456789, the number of bytes would be counted as 9, even though an
7504 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07007505 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
7506 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
7507 # and time zone are either specified elsewhere or are not significant. The date
7508 # is relative to the Proleptic Gregorian Calendar. This can represent:
7509 #
7510 # * A full date, with non-zero year, month and day values
7511 # * A month and day value, with a zero year, e.g. an anniversary
7512 # * A year on its own, with zero month and day values
7513 # * A year and month value, with a zero day, e.g. a credit card expiration date
7514 #
7515 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
7516 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
7517 # a year.
7518 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
7519 # month and day.
7520 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
7521 # if specifying a year by itself or a year and month where the day is not
7522 # significant.
7523 },
7524 &quot;stringValue&quot;: &quot;A String&quot;, # string
7525 &quot;integerValue&quot;: &quot;A String&quot;, # integer
7526 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
7527 # or are specified elsewhere. An API may choose to allow leap seconds. Related
7528 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07007529 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
7530 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
7531 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007532 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
7533 # allow the value 60 if it allows leap-seconds.
7534 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07007535 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007536 &quot;booleanValue&quot;: True or False, # boolean
7537 &quot;floatValue&quot;: 3.14, # float
7538 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07007539 },
7540 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007541 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
7542 # Bucketing transformation can provide all of this functionality,
7543 # but requires more configuration. This message is provided as a convenience to
7544 # the user for simple bucketing strategies.
7545 #
7546 # The transformed value will be a hyphenated string of
7547 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
7548 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
7549 #
7550 # This can be used on data of type: double, long.
7551 #
7552 # If the bound Value type differs from the type of data
7553 # being transformed, we will first attempt converting the type of the data to
7554 # be transformed to match the type of the bound before comparing.
7555 #
7556 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -07007557 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
7558 # grouped together into a single bucket; for example if `upper_bound` = 89,
7559 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
7560 # Note that for the purposes of inspection or transformation, the number
7561 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
7562 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
7563 # 123456789, the number of bytes would be counted as 9, even though an
7564 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07007565 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
7566 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
7567 # and time zone are either specified elsewhere or are not significant. The date
7568 # is relative to the Proleptic Gregorian Calendar. This can represent:
7569 #
7570 # * A full date, with non-zero year, month and day values
7571 # * A month and day value, with a zero year, e.g. an anniversary
7572 # * A year on its own, with zero month and day values
7573 # * A year and month value, with a zero day, e.g. a credit card expiration date
7574 #
7575 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
7576 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
7577 # a year.
7578 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
7579 # month and day.
7580 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
7581 # if specifying a year by itself or a year and month where the day is not
7582 # significant.
7583 },
7584 &quot;stringValue&quot;: &quot;A String&quot;, # string
7585 &quot;integerValue&quot;: &quot;A String&quot;, # integer
7586 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
7587 # or are specified elsewhere. An API may choose to allow leap seconds. Related
7588 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07007589 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
7590 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
7591 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007592 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
7593 # allow the value 60 if it allows leap-seconds.
7594 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07007595 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007596 &quot;booleanValue&quot;: True or False, # boolean
7597 &quot;floatValue&quot;: 3.14, # float
7598 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07007599 },
7600 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
7601 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
7602 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
7603 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007604 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
7605 # grouped together into a single bucket; for example if `lower_bound` = 10,
7606 # then all values less than 10 are replaced with the value &quot;-10&quot;.
7607 # Note that for the purposes of inspection or transformation, the number
7608 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
7609 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
7610 # 123456789, the number of bytes would be counted as 9, even though an
7611 # int64 only holds up to 8 bytes of data.
7612 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
7613 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
7614 # and time zone are either specified elsewhere or are not significant. The date
7615 # is relative to the Proleptic Gregorian Calendar. This can represent:
7616 #
7617 # * A full date, with non-zero year, month and day values
7618 # * A month and day value, with a zero year, e.g. an anniversary
7619 # * A year on its own, with zero month and day values
7620 # * A year and month value, with a zero day, e.g. a credit card expiration date
7621 #
7622 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
7623 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
7624 # a year.
7625 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
7626 # month and day.
7627 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
7628 # if specifying a year by itself or a year and month where the day is not
7629 # significant.
7630 },
7631 &quot;stringValue&quot;: &quot;A String&quot;, # string
7632 &quot;integerValue&quot;: &quot;A String&quot;, # integer
7633 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
7634 # or are specified elsewhere. An API may choose to allow leap seconds. Related
7635 # types are google.type.Date and `google.protobuf.Timestamp`.
7636 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
7637 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
7638 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
7639 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
7640 # allow the value 60 if it allows leap-seconds.
7641 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
7642 },
7643 &quot;booleanValue&quot;: True or False, # boolean
7644 &quot;floatValue&quot;: 3.14, # float
7645 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
7646 },
7647 },
7648 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
7649 # fixed character. Masking can start from the beginning or end of the string.
7650 # This can be used on data of any type (numbers, longs, and so on) and when
7651 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
7652 # type. (This allows you to take a long like 123 and modify it to a string like
7653 # **3.
7654 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
7655 # characters. For example, if the input string is `555-555-5555` and you
7656 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
7657 # returns `***-**5-5555`.
7658 { # Characters to skip when doing deidentification of a value. These will be left
7659 # alone and skipped.
7660 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
7661 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
7662 # punctuation.
7663 },
7664 ],
7665 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
7666 # masked. Skipped characters do not count towards this tally.
7667 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
7668 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
7669 # code or credit card number. This string must have a length of 1. If not
7670 # supplied, this value defaults to `*` for strings, and `0` for digits.
7671 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
7672 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
7673 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
7674 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
7675 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -07007676 },
7677 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007678 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
7679 # this transformation to apply to all findings that correspond to
7680 # infoTypes that were requested in `InspectConfig`.
7681 { # Type of information detected by the API.
7682 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
7683 # creating a CustomInfoType, or one of the names listed
7684 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
7685 # a built-in type. InfoType names should conform to the pattern
7686 # `[a-zA-Z0-9_]{1,64}`.
7687 },
7688 ],
Bu Sun Kim65020912020-05-20 12:08:20 -07007689 },
7690 ],
7691 },
7692 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Apply the transformation to the entire field.
7693 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
7694 # portion of the value.
7695 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
7696 },
7697 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
7698 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
7699 # to learn more.
7700 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
7701 # If set, must also set cryptoKey. If set, shift will be consistent for the
7702 # given context.
7703 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
7704 },
7705 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
7706 # range (inclusive ends). Negative means shift to earlier in time. Must not
7707 # be more than 365250 days (1000 years) each direction.
7708 #
7709 # For example, 3 means shift date to at most 3 days into the future.
7710 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
7711 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
7712 # results in the same shift for the same context and crypto_key. If
7713 # set, must also set context. Can only be applied to table items.
7714 # a key encryption key (KEK) stored by KMS).
7715 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
7716 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
7717 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07007718 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
7719 # leaking the key. Choose another type of key if possible.
7720 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
7721 },
7722 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
7723 # It will be discarded after the request finishes.
7724 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
7725 # This is an arbitrary string used to differentiate different keys.
7726 # A unique key is generated per name: two separate `TransientCryptoKey`
7727 # protos share the same generated key if their names are the same.
7728 # When the data crypto key is generated, this name is not used in any way
7729 # (repeating the api call will result in a different key being generated).
7730 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007731 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
7732 # The wrapped key must be a 128/192/256 bit key.
7733 # Authorization requires the following IAM permissions when sending a request
7734 # to perform a crypto transformation using a kms-wrapped crypto key:
7735 # dlp.kms.encrypt
7736 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
7737 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
7738 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007739 },
7740 },
7741 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
7742 },
7743 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
7744 # Uses SHA-256.
7745 # The key size must be either 32 or 64 bytes.
7746 # Outputs a base64 encoded representation of the hashed output
7747 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
7748 # Currently, only string and integer values can be hashed.
7749 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
7750 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
7751 # a key encryption key (KEK) stored by KMS).
7752 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
7753 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
7754 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07007755 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
7756 # leaking the key. Choose another type of key if possible.
7757 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
7758 },
7759 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
7760 # It will be discarded after the request finishes.
7761 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
7762 # This is an arbitrary string used to differentiate different keys.
7763 # A unique key is generated per name: two separate `TransientCryptoKey`
7764 # protos share the same generated key if their names are the same.
7765 # When the data crypto key is generated, this name is not used in any way
7766 # (repeating the api call will result in a different key being generated).
7767 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007768 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
7769 # The wrapped key must be a 128/192/256 bit key.
7770 # Authorization requires the following IAM permissions when sending a request
7771 # to perform a crypto transformation using a kms-wrapped crypto key:
7772 # dlp.kms.encrypt
7773 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
7774 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
7775 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007776 },
7777 },
7778 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
7779 # (FPE) with the FFX mode of operation; however when used in the
7780 # `ReidentifyContent` API method, it serves the opposite function by reversing
7781 # the surrogate back into the original identifier. The identifier must be
7782 # encoded as ASCII. For a given crypto key and context, the same identifier
7783 # will be replaced with the same surrogate. Identifiers must be at least two
7784 # characters long. In the case that the identifier is the empty string, it will
7785 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
7786 # more.
7787 #
7788 # Note: We recommend using CryptoDeterministicConfig for all use cases which
7789 # do not require preserving the input alphabet space and size, plus warrant
7790 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -07007791 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
7792 # This annotation will be applied to the surrogate by prefixing it with
7793 # the name of the custom infoType followed by the number of
7794 # characters comprising the surrogate. The following scheme defines the
7795 # format: info_type_name(surrogate_character_count):surrogate
7796 #
7797 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
7798 # the surrogate is &#x27;abc&#x27;, the full replacement value
7799 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
7800 #
7801 # This annotation identifies the surrogate when inspecting content using the
7802 # custom infoType
7803 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
7804 # This facilitates reversal of the surrogate when it occurs in free text.
7805 #
7806 # In order for inspection to work properly, the name of this infoType must
7807 # not occur naturally anywhere in your data; otherwise, inspection may
7808 # find a surrogate that does not correspond to an actual identifier.
7809 # Therefore, choose your custom infoType name carefully after considering
7810 # what your data looks like. One way to select a name that has a high chance
7811 # of yielding reliable detection is to include one or more unicode characters
7812 # that are highly improbable to exist in your data.
7813 # For example, assuming your data is entered from a regular ASCII keyboard,
7814 # the symbol with the hex code point 29DD might be used like so:
7815 # ⧝MY_TOKEN_TYPE
7816 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
7817 # creating a CustomInfoType, or one of the names listed
7818 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
7819 # a built-in type. InfoType names should conform to the pattern
7820 # `[a-zA-Z0-9_]{1,64}`.
7821 },
7822 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
7823 # identifier in two different contexts won&#x27;t be given the same surrogate. If
7824 # the context is not set, a default tweak will be used.
7825 #
7826 # If the context is set but:
7827 #
7828 # 1. there is no record present when transforming a given value or
7829 # 1. the field is not present when transforming a given value,
7830 #
7831 # a default tweak will be used.
7832 #
7833 # Note that case (1) is expected when an `InfoTypeTransformation` is
7834 # applied to both structured and non-structured `ContentItem`s.
7835 # Currently, the referenced field may be of value type integer or string.
7836 #
7837 # The tweak is constructed as a sequence of bytes in big endian byte order
7838 # such that:
7839 #
7840 # - a 64 bit integer is encoded followed by a single byte of value 1
7841 # - a string is encoded in UTF-8 format followed by a single byte of value 2
7842 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
7843 },
7844 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
7845 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
7846 # a key encryption key (KEK) stored by KMS).
7847 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
7848 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
7849 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07007850 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
7851 # leaking the key. Choose another type of key if possible.
7852 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
7853 },
7854 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
7855 # It will be discarded after the request finishes.
7856 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
7857 # This is an arbitrary string used to differentiate different keys.
7858 # A unique key is generated per name: two separate `TransientCryptoKey`
7859 # protos share the same generated key if their names are the same.
7860 # When the data crypto key is generated, this name is not used in any way
7861 # (repeating the api call will result in a different key being generated).
7862 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007863 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
7864 # The wrapped key must be a 128/192/256 bit key.
7865 # Authorization requires the following IAM permissions when sending a request
7866 # to perform a crypto transformation using a kms-wrapped crypto key:
7867 # dlp.kms.encrypt
7868 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
7869 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
7870 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007871 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007872 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
7873 # that the FFX mode natively supports. This happens before/after
7874 # encryption/decryption.
7875 # Each character listed must appear only once.
7876 # Number of characters must be in the range [2, 95].
7877 # This must be encoded as ASCII.
7878 # The order of characters does not matter.
7879 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -07007880 },
7881 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
7882 # input. Outputs a base64 encoded representation of the encrypted output.
7883 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
7884 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
7885 # This annotation will be applied to the surrogate by prefixing it with
7886 # the name of the custom info type followed by the number of
7887 # characters comprising the surrogate. The following scheme defines the
7888 # format: {info type name}({surrogate character count}):{surrogate}
7889 #
7890 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
7891 # the surrogate is &#x27;abc&#x27;, the full replacement value
7892 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
7893 #
7894 # This annotation identifies the surrogate when inspecting content using the
7895 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
7896 # surrogate when it occurs in free text.
7897 #
7898 # Note: For record transformations where the entire cell in a table is being
7899 # transformed, surrogates are not mandatory. Surrogates are used to denote
7900 # the location of the token and are necessary for re-identification in free
7901 # form text.
7902 #
7903 # In order for inspection to work properly, the name of this info type must
7904 # not occur naturally anywhere in your data; otherwise, inspection may either
7905 #
7906 # - reverse a surrogate that does not correspond to an actual identifier
7907 # - be unable to parse the surrogate and result in an error
7908 #
7909 # Therefore, choose your custom info type name carefully after considering
7910 # what your data looks like. One way to select a name that has a high chance
7911 # of yielding reliable detection is to include one or more unicode characters
7912 # that are highly improbable to exist in your data.
7913 # For example, assuming your data is entered from a regular ASCII keyboard,
7914 # the symbol with the hex code point 29DD might be used like so:
7915 # ⧝MY_TOKEN_TYPE.
7916 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
7917 # creating a CustomInfoType, or one of the names listed
7918 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
7919 # a built-in type. InfoType names should conform to the pattern
7920 # `[a-zA-Z0-9_]{1,64}`.
7921 },
7922 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
7923 # referential integrity such that the same identifier in two different
7924 # contexts will be given a distinct surrogate. The context is appended to
7925 # plaintext value being encrypted. On decryption the provided context is
7926 # validated against the value used during encryption. If a context was
7927 # provided during encryption, same context must be provided during decryption
7928 # as well.
7929 #
7930 # If the context is not set, plaintext would be used as is for encryption.
7931 # If the context is set but:
7932 #
7933 # 1. there is no record present when transforming a given value or
7934 # 2. the field is not present when transforming a given value,
7935 #
7936 # plaintext would be used as is for encryption.
7937 #
7938 # Note that case (1) is expected when an `InfoTypeTransformation` is
7939 # applied to both structured and non-structured `ContentItem`s.
7940 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
7941 },
7942 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
7943 # a key encryption key (KEK) stored by KMS).
7944 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
7945 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
7946 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07007947 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
7948 # leaking the key. Choose another type of key if possible.
7949 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
7950 },
7951 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
7952 # It will be discarded after the request finishes.
7953 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
7954 # This is an arbitrary string used to differentiate different keys.
7955 # A unique key is generated per name: two separate `TransientCryptoKey`
7956 # protos share the same generated key if their names are the same.
7957 # When the data crypto key is generated, this name is not used in any way
7958 # (repeating the api call will result in a different key being generated).
7959 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07007960 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
7961 # The wrapped key must be a 128/192/256 bit key.
7962 # Authorization requires the following IAM permissions when sending a request
7963 # to perform a crypto transformation using a kms-wrapped crypto key:
7964 # dlp.kms.encrypt
7965 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
7966 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
7967 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007968 },
7969 },
Bu Sun Kim65020912020-05-20 12:08:20 -07007970 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
7971 # replacement values are dynamically provided by the user for custom behavior,
7972 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
7973 # This can be used on
7974 # data of type: number, long, string, timestamp.
7975 # If the bound `Value` type differs from the type of data being transformed, we
7976 # will first attempt converting the type of the data to be transformed to match
7977 # the type of the bound before comparing.
7978 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
7979 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
7980 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -07007981 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
7982 # the default behavior will be to hyphenate the min-max range.
7983 # Note that for the purposes of inspection or transformation, the number
7984 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
7985 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
7986 # 123456789, the number of bytes would be counted as 9, even though an
7987 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07007988 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
7989 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
7990 # and time zone are either specified elsewhere or are not significant. The date
7991 # is relative to the Proleptic Gregorian Calendar. This can represent:
7992 #
7993 # * A full date, with non-zero year, month and day values
7994 # * A month and day value, with a zero year, e.g. an anniversary
7995 # * A year on its own, with zero month and day values
7996 # * A year and month value, with a zero day, e.g. a credit card expiration date
7997 #
7998 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
7999 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8000 # a year.
8001 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8002 # month and day.
8003 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8004 # if specifying a year by itself or a year and month where the day is not
8005 # significant.
8006 },
8007 &quot;stringValue&quot;: &quot;A String&quot;, # string
8008 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8009 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8010 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8011 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07008012 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8013 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8014 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008015 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8016 # allow the value 60 if it allows leap-seconds.
8017 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07008018 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008019 &quot;booleanValue&quot;: True or False, # boolean
8020 &quot;floatValue&quot;: 3.14, # float
8021 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
8022 },
8023 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
8024 # used.
8025 # Note that for the purposes of inspection or transformation, the number
8026 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
8027 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
8028 # 123456789, the number of bytes would be counted as 9, even though an
8029 # int64 only holds up to 8 bytes of data.
8030 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
8031 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
8032 # and time zone are either specified elsewhere or are not significant. The date
8033 # is relative to the Proleptic Gregorian Calendar. This can represent:
8034 #
8035 # * A full date, with non-zero year, month and day values
8036 # * A month and day value, with a zero year, e.g. an anniversary
8037 # * A year on its own, with zero month and day values
8038 # * A year and month value, with a zero day, e.g. a credit card expiration date
8039 #
8040 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
8041 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8042 # a year.
8043 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8044 # month and day.
8045 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8046 # if specifying a year by itself or a year and month where the day is not
8047 # significant.
8048 },
8049 &quot;stringValue&quot;: &quot;A String&quot;, # string
8050 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8051 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8052 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8053 # types are google.type.Date and `google.protobuf.Timestamp`.
8054 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8055 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8056 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
8057 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8058 # allow the value 60 if it allows leap-seconds.
8059 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
8060 },
8061 &quot;booleanValue&quot;: True or False, # boolean
8062 &quot;floatValue&quot;: 3.14, # float
8063 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
8064 },
8065 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
8066 # Note that for the purposes of inspection or transformation, the number
8067 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
8068 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
8069 # 123456789, the number of bytes would be counted as 9, even though an
8070 # int64 only holds up to 8 bytes of data.
8071 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
8072 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
8073 # and time zone are either specified elsewhere or are not significant. The date
8074 # is relative to the Proleptic Gregorian Calendar. This can represent:
8075 #
8076 # * A full date, with non-zero year, month and day values
8077 # * A month and day value, with a zero year, e.g. an anniversary
8078 # * A year on its own, with zero month and day values
8079 # * A year and month value, with a zero day, e.g. a credit card expiration date
8080 #
8081 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
8082 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8083 # a year.
8084 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8085 # month and day.
8086 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8087 # if specifying a year by itself or a year and month where the day is not
8088 # significant.
8089 },
8090 &quot;stringValue&quot;: &quot;A String&quot;, # string
8091 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8092 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8093 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8094 # types are google.type.Date and `google.protobuf.Timestamp`.
8095 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8096 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8097 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
8098 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8099 # allow the value 60 if it allows leap-seconds.
8100 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
8101 },
8102 &quot;booleanValue&quot;: True or False, # boolean
8103 &quot;floatValue&quot;: 3.14, # float
8104 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07008105 },
8106 },
8107 ],
8108 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008109 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
8110 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
8111 # output would be &#x27;My phone number is &#x27;.
8112 },
Bu Sun Kim65020912020-05-20 12:08:20 -07008113 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
8114 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
8115 # Note that for the purposes of inspection or transformation, the number
8116 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
8117 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
8118 # 123456789, the number of bytes would be counted as 9, even though an
8119 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07008120 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
8121 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
8122 # and time zone are either specified elsewhere or are not significant. The date
8123 # is relative to the Proleptic Gregorian Calendar. This can represent:
8124 #
8125 # * A full date, with non-zero year, month and day values
8126 # * A month and day value, with a zero year, e.g. an anniversary
8127 # * A year on its own, with zero month and day values
8128 # * A year and month value, with a zero day, e.g. a credit card expiration date
8129 #
8130 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
8131 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8132 # a year.
8133 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8134 # month and day.
8135 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8136 # if specifying a year by itself or a year and month where the day is not
8137 # significant.
8138 },
8139 &quot;stringValue&quot;: &quot;A String&quot;, # string
8140 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8141 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8142 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8143 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07008144 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8145 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8146 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008147 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8148 # allow the value 60 if it allows leap-seconds.
8149 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07008150 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008151 &quot;booleanValue&quot;: True or False, # boolean
8152 &quot;floatValue&quot;: 3.14, # float
8153 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07008154 },
8155 },
Bu Sun Kim65020912020-05-20 12:08:20 -07008156 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
8157 # Bucketing transformation can provide all of this functionality,
8158 # but requires more configuration. This message is provided as a convenience to
8159 # the user for simple bucketing strategies.
8160 #
8161 # The transformed value will be a hyphenated string of
8162 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
8163 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
8164 #
8165 # This can be used on data of type: double, long.
8166 #
8167 # If the bound Value type differs from the type of data
8168 # being transformed, we will first attempt converting the type of the data to
8169 # be transformed to match the type of the bound before comparing.
8170 #
8171 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -07008172 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
8173 # grouped together into a single bucket; for example if `upper_bound` = 89,
8174 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
8175 # Note that for the purposes of inspection or transformation, the number
8176 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
8177 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
8178 # 123456789, the number of bytes would be counted as 9, even though an
8179 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07008180 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
8181 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
8182 # and time zone are either specified elsewhere or are not significant. The date
8183 # is relative to the Proleptic Gregorian Calendar. This can represent:
8184 #
8185 # * A full date, with non-zero year, month and day values
8186 # * A month and day value, with a zero year, e.g. an anniversary
8187 # * A year on its own, with zero month and day values
8188 # * A year and month value, with a zero day, e.g. a credit card expiration date
8189 #
8190 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
8191 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8192 # a year.
8193 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8194 # month and day.
8195 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8196 # if specifying a year by itself or a year and month where the day is not
8197 # significant.
8198 },
8199 &quot;stringValue&quot;: &quot;A String&quot;, # string
8200 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8201 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8202 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8203 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07008204 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8205 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8206 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008207 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8208 # allow the value 60 if it allows leap-seconds.
8209 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07008210 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008211 &quot;booleanValue&quot;: True or False, # boolean
8212 &quot;floatValue&quot;: 3.14, # float
8213 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07008214 },
8215 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
8216 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
8217 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
8218 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008219 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
8220 # grouped together into a single bucket; for example if `lower_bound` = 10,
8221 # then all values less than 10 are replaced with the value &quot;-10&quot;.
8222 # Note that for the purposes of inspection or transformation, the number
8223 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
8224 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
8225 # 123456789, the number of bytes would be counted as 9, even though an
8226 # int64 only holds up to 8 bytes of data.
8227 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
8228 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
8229 # and time zone are either specified elsewhere or are not significant. The date
8230 # is relative to the Proleptic Gregorian Calendar. This can represent:
8231 #
8232 # * A full date, with non-zero year, month and day values
8233 # * A month and day value, with a zero year, e.g. an anniversary
8234 # * A year on its own, with zero month and day values
8235 # * A year and month value, with a zero day, e.g. a credit card expiration date
8236 #
8237 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
8238 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8239 # a year.
8240 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8241 # month and day.
8242 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8243 # if specifying a year by itself or a year and month where the day is not
8244 # significant.
8245 },
8246 &quot;stringValue&quot;: &quot;A String&quot;, # string
8247 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8248 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8249 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8250 # types are google.type.Date and `google.protobuf.Timestamp`.
8251 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8252 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8253 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
8254 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8255 # allow the value 60 if it allows leap-seconds.
8256 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
8257 },
8258 &quot;booleanValue&quot;: True or False, # boolean
8259 &quot;floatValue&quot;: 3.14, # float
8260 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
8261 },
8262 },
8263 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
8264 # fixed character. Masking can start from the beginning or end of the string.
8265 # This can be used on data of any type (numbers, longs, and so on) and when
8266 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
8267 # type. (This allows you to take a long like 123 and modify it to a string like
8268 # **3.
8269 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
8270 # characters. For example, if the input string is `555-555-5555` and you
8271 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
8272 # returns `***-**5-5555`.
8273 { # Characters to skip when doing deidentification of a value. These will be left
8274 # alone and skipped.
8275 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
8276 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
8277 # punctuation.
8278 },
8279 ],
8280 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
8281 # masked. Skipped characters do not count towards this tally.
8282 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
8283 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
8284 # code or credit card number. This string must have a length of 1. If not
8285 # supplied, this value defaults to `*` for strings, and `0` for digits.
8286 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
8287 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
8288 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
8289 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
8290 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -07008291 },
8292 },
8293 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # Only apply the transformation if the condition evaluates to true for the
8294 # given `RecordCondition`. The conditions are allowed to reference fields
8295 # that are not used in the actual transformation.
8296 #
8297 # Example Use Cases:
8298 #
8299 # - Apply a different bucket transformation to an age column if the zip code
8300 # column for the same record is within a specific range.
8301 # - Redact a field if the date of birth field is greater than 85.
8302 # a field.
8303 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
8304 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
8305 # only supported value is `AND`.
8306 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
8307 &quot;conditions&quot;: [ # A collection of conditions.
8308 { # The field type of `value` and `field` do not need to match to be
8309 # considered equal, but not all comparisons are possible.
8310 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
8311 # but all other comparisons are invalid with incompatible types.
8312 # A `value` of type:
8313 #
8314 # - `string` can be compared against all other types
8315 # - `boolean` can only be compared against other booleans
8316 # - `integer` can be compared against doubles or a string if the string value
8317 # can be parsed as an integer.
8318 # - `double` can be compared against integers or a string if the string can
8319 # be parsed as a double.
8320 # - `Timestamp` can be compared against strings in RFC 3339 date string
8321 # format.
8322 # - `TimeOfDay` can be compared against timestamps and strings in the format
8323 # of &#x27;HH:mm:ss&#x27;.
8324 #
8325 # If we fail to compare do to type mismatch, a warning will be given and
8326 # the condition will evaluate to false.
Bu Sun Kim65020912020-05-20 12:08:20 -07008327 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
8328 # Note that for the purposes of inspection or transformation, the number
8329 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
8330 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
8331 # 123456789, the number of bytes would be counted as 9, even though an
8332 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07008333 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
8334 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
8335 # and time zone are either specified elsewhere or are not significant. The date
8336 # is relative to the Proleptic Gregorian Calendar. This can represent:
8337 #
8338 # * A full date, with non-zero year, month and day values
8339 # * A month and day value, with a zero year, e.g. an anniversary
8340 # * A year on its own, with zero month and day values
8341 # * A year and month value, with a zero day, e.g. a credit card expiration date
8342 #
8343 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
8344 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8345 # a year.
8346 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8347 # month and day.
8348 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8349 # if specifying a year by itself or a year and month where the day is not
8350 # significant.
8351 },
8352 &quot;stringValue&quot;: &quot;A String&quot;, # string
8353 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8354 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8355 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8356 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07008357 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8358 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8359 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008360 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8361 # allow the value 60 if it allows leap-seconds.
8362 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07008363 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008364 &quot;booleanValue&quot;: True or False, # boolean
8365 &quot;floatValue&quot;: 3.14, # float
8366 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07008367 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008368 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
8369 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
8370 },
8371 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -07008372 },
8373 ],
8374 },
8375 },
8376 },
8377 },
8378 ],
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008379 &quot;recordSuppressions&quot;: [ # Configuration defining which records get suppressed entirely. Records that
8380 # match any suppression rule are omitted from the output.
8381 { # Configuration to suppress records whose suppression conditions evaluate to
8382 # true.
8383 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # A condition that when it evaluates to true will result in the record being
8384 # evaluated to be suppressed from the transformed content.
8385 # a field.
8386 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
8387 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
8388 # only supported value is `AND`.
8389 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
8390 &quot;conditions&quot;: [ # A collection of conditions.
8391 { # The field type of `value` and `field` do not need to match to be
8392 # considered equal, but not all comparisons are possible.
8393 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
8394 # but all other comparisons are invalid with incompatible types.
8395 # A `value` of type:
8396 #
8397 # - `string` can be compared against all other types
8398 # - `boolean` can only be compared against other booleans
8399 # - `integer` can be compared against doubles or a string if the string value
8400 # can be parsed as an integer.
8401 # - `double` can be compared against integers or a string if the string can
8402 # be parsed as a double.
8403 # - `Timestamp` can be compared against strings in RFC 3339 date string
8404 # format.
8405 # - `TimeOfDay` can be compared against timestamps and strings in the format
8406 # of &#x27;HH:mm:ss&#x27;.
8407 #
8408 # If we fail to compare do to type mismatch, a warning will be given and
8409 # the condition will evaluate to false.
8410 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
8411 # Note that for the purposes of inspection or transformation, the number
8412 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
8413 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
8414 # 123456789, the number of bytes would be counted as 9, even though an
8415 # int64 only holds up to 8 bytes of data.
8416 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
8417 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
8418 # and time zone are either specified elsewhere or are not significant. The date
8419 # is relative to the Proleptic Gregorian Calendar. This can represent:
8420 #
8421 # * A full date, with non-zero year, month and day values
8422 # * A month and day value, with a zero year, e.g. an anniversary
8423 # * A year on its own, with zero month and day values
8424 # * A year and month value, with a zero day, e.g. a credit card expiration date
8425 #
8426 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
8427 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8428 # a year.
8429 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8430 # month and day.
8431 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8432 # if specifying a year by itself or a year and month where the day is not
8433 # significant.
8434 },
8435 &quot;stringValue&quot;: &quot;A String&quot;, # string
8436 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8437 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8438 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8439 # types are google.type.Date and `google.protobuf.Timestamp`.
8440 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8441 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8442 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
8443 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8444 # allow the value 60 if it allows leap-seconds.
8445 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
8446 },
8447 &quot;booleanValue&quot;: True or False, # boolean
8448 &quot;floatValue&quot;: 3.14, # float
8449 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07008450 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008451 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
8452 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
Bu Sun Kim65020912020-05-20 12:08:20 -07008453 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008454 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -07008455 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008456 ],
Bu Sun Kim65020912020-05-20 12:08:20 -07008457 },
8458 },
Bu Sun Kim65020912020-05-20 12:08:20 -07008459 },
8460 },
8461 ],
8462 },
8463 },
8464 },
8465 ],
8466 }</pre>
8467</div>
8468
8469<div class="method">
8470 <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
8471 <pre>Retrieves the next page of results.
8472
8473Args:
8474 previous_request: The request for the previous page. (required)
8475 previous_response: The response from the request for the previous page. (required)
8476
8477Returns:
8478 A request object that you can call &#x27;execute()&#x27; on to request the next
8479 page. Returns None if there are no more items in the collection.
8480 </pre>
8481</div>
8482
8483<div class="method">
8484 <code class="details" id="patch">patch(name, body=None, x__xgafv=None)</code>
8485 <pre>Updates the DeidentifyTemplate.
8486See https://cloud.google.com/dlp/docs/creating-templates-deid to learn
8487more.
8488
8489Args:
8490 name: string, Required. Resource name of organization and deidentify template to be updated, for
8491example `organizations/433245324/deidentifyTemplates/432452342` or
8492projects/project-id/deidentifyTemplates/432452342. (required)
8493 body: object, The request body.
8494 The object takes the form of:
8495
8496{ # Request message for UpdateDeidentifyTemplate.
8497 &quot;deidentifyTemplate&quot;: { # DeidentifyTemplates contains instructions on how to de-identify content. # New DeidentifyTemplate value.
8498 # See https://cloud.google.com/dlp/docs/concepts-templates to learn more.
8499 &quot;name&quot;: &quot;A String&quot;, # Output only. The template name.
8500 #
8501 # The template will have one of the following formats:
8502 # `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR
8503 # `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`
8504 &quot;description&quot;: &quot;A String&quot;, # Short description (max 256 chars).
8505 &quot;displayName&quot;: &quot;A String&quot;, # Display name (max 256 chars).
8506 &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of an inspectTemplate.
8507 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of an inspectTemplate.
8508 &quot;deidentifyConfig&quot;: { # The configuration that controls how the data will change. # ///////////// // The core content of the template // ///////////////
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07008509 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the dataset as free-form text and apply the same free text
8510 # transformation everywhere.
8511 # apply various `PrimitiveTransformation`s to each finding, where the
8512 # transformation is applied to only values that were identified as a specific
8513 # info_type.
8514 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
8515 # for a given infoType.
8516 { # A transformation to apply to text that is identified as a specific
8517 # info_type.
8518 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
8519 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
8520 # portion of the value.
8521 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
8522 },
8523 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
8524 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
8525 # to learn more.
8526 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
8527 # If set, must also set cryptoKey. If set, shift will be consistent for the
8528 # given context.
8529 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
8530 },
8531 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
8532 # range (inclusive ends). Negative means shift to earlier in time. Must not
8533 # be more than 365250 days (1000 years) each direction.
8534 #
8535 # For example, 3 means shift date to at most 3 days into the future.
8536 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
8537 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
8538 # results in the same shift for the same context and crypto_key. If
8539 # set, must also set context. Can only be applied to table items.
8540 # a key encryption key (KEK) stored by KMS).
8541 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
8542 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
8543 # unwrap the data crypto key.
8544 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
8545 # leaking the key. Choose another type of key if possible.
8546 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
8547 },
8548 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
8549 # It will be discarded after the request finishes.
8550 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
8551 # This is an arbitrary string used to differentiate different keys.
8552 # A unique key is generated per name: two separate `TransientCryptoKey`
8553 # protos share the same generated key if their names are the same.
8554 # When the data crypto key is generated, this name is not used in any way
8555 # (repeating the api call will result in a different key being generated).
8556 },
8557 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
8558 # The wrapped key must be a 128/192/256 bit key.
8559 # Authorization requires the following IAM permissions when sending a request
8560 # to perform a crypto transformation using a kms-wrapped crypto key:
8561 # dlp.kms.encrypt
8562 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
8563 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
8564 },
8565 },
8566 },
8567 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
8568 },
8569 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
8570 # Uses SHA-256.
8571 # The key size must be either 32 or 64 bytes.
8572 # Outputs a base64 encoded representation of the hashed output
8573 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
8574 # Currently, only string and integer values can be hashed.
8575 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
8576 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
8577 # a key encryption key (KEK) stored by KMS).
8578 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
8579 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
8580 # unwrap the data crypto key.
8581 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
8582 # leaking the key. Choose another type of key if possible.
8583 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
8584 },
8585 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
8586 # It will be discarded after the request finishes.
8587 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
8588 # This is an arbitrary string used to differentiate different keys.
8589 # A unique key is generated per name: two separate `TransientCryptoKey`
8590 # protos share the same generated key if their names are the same.
8591 # When the data crypto key is generated, this name is not used in any way
8592 # (repeating the api call will result in a different key being generated).
8593 },
8594 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
8595 # The wrapped key must be a 128/192/256 bit key.
8596 # Authorization requires the following IAM permissions when sending a request
8597 # to perform a crypto transformation using a kms-wrapped crypto key:
8598 # dlp.kms.encrypt
8599 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
8600 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
8601 },
8602 },
8603 },
8604 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
8605 # (FPE) with the FFX mode of operation; however when used in the
8606 # `ReidentifyContent` API method, it serves the opposite function by reversing
8607 # the surrogate back into the original identifier. The identifier must be
8608 # encoded as ASCII. For a given crypto key and context, the same identifier
8609 # will be replaced with the same surrogate. Identifiers must be at least two
8610 # characters long. In the case that the identifier is the empty string, it will
8611 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
8612 # more.
8613 #
8614 # Note: We recommend using CryptoDeterministicConfig for all use cases which
8615 # do not require preserving the input alphabet space and size, plus warrant
8616 # referential integrity.
8617 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
8618 # This annotation will be applied to the surrogate by prefixing it with
8619 # the name of the custom infoType followed by the number of
8620 # characters comprising the surrogate. The following scheme defines the
8621 # format: info_type_name(surrogate_character_count):surrogate
8622 #
8623 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
8624 # the surrogate is &#x27;abc&#x27;, the full replacement value
8625 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
8626 #
8627 # This annotation identifies the surrogate when inspecting content using the
8628 # custom infoType
8629 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
8630 # This facilitates reversal of the surrogate when it occurs in free text.
8631 #
8632 # In order for inspection to work properly, the name of this infoType must
8633 # not occur naturally anywhere in your data; otherwise, inspection may
8634 # find a surrogate that does not correspond to an actual identifier.
8635 # Therefore, choose your custom infoType name carefully after considering
8636 # what your data looks like. One way to select a name that has a high chance
8637 # of yielding reliable detection is to include one or more unicode characters
8638 # that are highly improbable to exist in your data.
8639 # For example, assuming your data is entered from a regular ASCII keyboard,
8640 # the symbol with the hex code point 29DD might be used like so:
8641 # ⧝MY_TOKEN_TYPE
8642 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
8643 # creating a CustomInfoType, or one of the names listed
8644 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
8645 # a built-in type. InfoType names should conform to the pattern
8646 # `[a-zA-Z0-9_]{1,64}`.
8647 },
8648 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
8649 # identifier in two different contexts won&#x27;t be given the same surrogate. If
8650 # the context is not set, a default tweak will be used.
8651 #
8652 # If the context is set but:
8653 #
8654 # 1. there is no record present when transforming a given value or
8655 # 1. the field is not present when transforming a given value,
8656 #
8657 # a default tweak will be used.
8658 #
8659 # Note that case (1) is expected when an `InfoTypeTransformation` is
8660 # applied to both structured and non-structured `ContentItem`s.
8661 # Currently, the referenced field may be of value type integer or string.
8662 #
8663 # The tweak is constructed as a sequence of bytes in big endian byte order
8664 # such that:
8665 #
8666 # - a 64 bit integer is encoded followed by a single byte of value 1
8667 # - a string is encoded in UTF-8 format followed by a single byte of value 2
8668 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
8669 },
8670 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
8671 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
8672 # a key encryption key (KEK) stored by KMS).
8673 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
8674 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
8675 # unwrap the data crypto key.
8676 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
8677 # leaking the key. Choose another type of key if possible.
8678 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
8679 },
8680 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
8681 # It will be discarded after the request finishes.
8682 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
8683 # This is an arbitrary string used to differentiate different keys.
8684 # A unique key is generated per name: two separate `TransientCryptoKey`
8685 # protos share the same generated key if their names are the same.
8686 # When the data crypto key is generated, this name is not used in any way
8687 # (repeating the api call will result in a different key being generated).
8688 },
8689 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
8690 # The wrapped key must be a 128/192/256 bit key.
8691 # Authorization requires the following IAM permissions when sending a request
8692 # to perform a crypto transformation using a kms-wrapped crypto key:
8693 # dlp.kms.encrypt
8694 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
8695 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
8696 },
8697 },
8698 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
8699 # that the FFX mode natively supports. This happens before/after
8700 # encryption/decryption.
8701 # Each character listed must appear only once.
8702 # Number of characters must be in the range [2, 95].
8703 # This must be encoded as ASCII.
8704 # The order of characters does not matter.
8705 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
8706 },
8707 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
8708 # input. Outputs a base64 encoded representation of the encrypted output.
8709 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
8710 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
8711 # This annotation will be applied to the surrogate by prefixing it with
8712 # the name of the custom info type followed by the number of
8713 # characters comprising the surrogate. The following scheme defines the
8714 # format: {info type name}({surrogate character count}):{surrogate}
8715 #
8716 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
8717 # the surrogate is &#x27;abc&#x27;, the full replacement value
8718 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
8719 #
8720 # This annotation identifies the surrogate when inspecting content using the
8721 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
8722 # surrogate when it occurs in free text.
8723 #
8724 # Note: For record transformations where the entire cell in a table is being
8725 # transformed, surrogates are not mandatory. Surrogates are used to denote
8726 # the location of the token and are necessary for re-identification in free
8727 # form text.
8728 #
8729 # In order for inspection to work properly, the name of this info type must
8730 # not occur naturally anywhere in your data; otherwise, inspection may either
8731 #
8732 # - reverse a surrogate that does not correspond to an actual identifier
8733 # - be unable to parse the surrogate and result in an error
8734 #
8735 # Therefore, choose your custom info type name carefully after considering
8736 # what your data looks like. One way to select a name that has a high chance
8737 # of yielding reliable detection is to include one or more unicode characters
8738 # that are highly improbable to exist in your data.
8739 # For example, assuming your data is entered from a regular ASCII keyboard,
8740 # the symbol with the hex code point 29DD might be used like so:
8741 # ⧝MY_TOKEN_TYPE.
8742 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
8743 # creating a CustomInfoType, or one of the names listed
8744 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
8745 # a built-in type. InfoType names should conform to the pattern
8746 # `[a-zA-Z0-9_]{1,64}`.
8747 },
8748 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
8749 # referential integrity such that the same identifier in two different
8750 # contexts will be given a distinct surrogate. The context is appended to
8751 # plaintext value being encrypted. On decryption the provided context is
8752 # validated against the value used during encryption. If a context was
8753 # provided during encryption, same context must be provided during decryption
8754 # as well.
8755 #
8756 # If the context is not set, plaintext would be used as is for encryption.
8757 # If the context is set but:
8758 #
8759 # 1. there is no record present when transforming a given value or
8760 # 2. the field is not present when transforming a given value,
8761 #
8762 # plaintext would be used as is for encryption.
8763 #
8764 # Note that case (1) is expected when an `InfoTypeTransformation` is
8765 # applied to both structured and non-structured `ContentItem`s.
8766 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
8767 },
8768 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
8769 # a key encryption key (KEK) stored by KMS).
8770 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
8771 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
8772 # unwrap the data crypto key.
8773 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
8774 # leaking the key. Choose another type of key if possible.
8775 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
8776 },
8777 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
8778 # It will be discarded after the request finishes.
8779 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
8780 # This is an arbitrary string used to differentiate different keys.
8781 # A unique key is generated per name: two separate `TransientCryptoKey`
8782 # protos share the same generated key if their names are the same.
8783 # When the data crypto key is generated, this name is not used in any way
8784 # (repeating the api call will result in a different key being generated).
8785 },
8786 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
8787 # The wrapped key must be a 128/192/256 bit key.
8788 # Authorization requires the following IAM permissions when sending a request
8789 # to perform a crypto transformation using a kms-wrapped crypto key:
8790 # dlp.kms.encrypt
8791 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
8792 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
8793 },
8794 },
8795 },
8796 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
8797 # replacement values are dynamically provided by the user for custom behavior,
8798 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
8799 # This can be used on
8800 # data of type: number, long, string, timestamp.
8801 # If the bound `Value` type differs from the type of data being transformed, we
8802 # will first attempt converting the type of the data to be transformed to match
8803 # the type of the bound before comparing.
8804 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
8805 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
8806 { # Bucket is represented as a range, along with replacement values.
8807 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
8808 # the default behavior will be to hyphenate the min-max range.
8809 # Note that for the purposes of inspection or transformation, the number
8810 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
8811 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
8812 # 123456789, the number of bytes would be counted as 9, even though an
8813 # int64 only holds up to 8 bytes of data.
8814 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
8815 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
8816 # and time zone are either specified elsewhere or are not significant. The date
8817 # is relative to the Proleptic Gregorian Calendar. This can represent:
8818 #
8819 # * A full date, with non-zero year, month and day values
8820 # * A month and day value, with a zero year, e.g. an anniversary
8821 # * A year on its own, with zero month and day values
8822 # * A year and month value, with a zero day, e.g. a credit card expiration date
8823 #
8824 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
8825 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8826 # a year.
8827 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8828 # month and day.
8829 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8830 # if specifying a year by itself or a year and month where the day is not
8831 # significant.
8832 },
8833 &quot;stringValue&quot;: &quot;A String&quot;, # string
8834 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8835 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8836 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8837 # types are google.type.Date and `google.protobuf.Timestamp`.
8838 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8839 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8840 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
8841 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8842 # allow the value 60 if it allows leap-seconds.
8843 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
8844 },
8845 &quot;booleanValue&quot;: True or False, # boolean
8846 &quot;floatValue&quot;: 3.14, # float
8847 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
8848 },
8849 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
8850 # used.
8851 # Note that for the purposes of inspection or transformation, the number
8852 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
8853 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
8854 # 123456789, the number of bytes would be counted as 9, even though an
8855 # int64 only holds up to 8 bytes of data.
8856 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
8857 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
8858 # and time zone are either specified elsewhere or are not significant. The date
8859 # is relative to the Proleptic Gregorian Calendar. This can represent:
8860 #
8861 # * A full date, with non-zero year, month and day values
8862 # * A month and day value, with a zero year, e.g. an anniversary
8863 # * A year on its own, with zero month and day values
8864 # * A year and month value, with a zero day, e.g. a credit card expiration date
8865 #
8866 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
8867 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8868 # a year.
8869 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8870 # month and day.
8871 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8872 # if specifying a year by itself or a year and month where the day is not
8873 # significant.
8874 },
8875 &quot;stringValue&quot;: &quot;A String&quot;, # string
8876 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8877 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8878 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8879 # types are google.type.Date and `google.protobuf.Timestamp`.
8880 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8881 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8882 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
8883 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8884 # allow the value 60 if it allows leap-seconds.
8885 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
8886 },
8887 &quot;booleanValue&quot;: True or False, # boolean
8888 &quot;floatValue&quot;: 3.14, # float
8889 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
8890 },
8891 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
8892 # Note that for the purposes of inspection or transformation, the number
8893 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
8894 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
8895 # 123456789, the number of bytes would be counted as 9, even though an
8896 # int64 only holds up to 8 bytes of data.
8897 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
8898 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
8899 # and time zone are either specified elsewhere or are not significant. The date
8900 # is relative to the Proleptic Gregorian Calendar. This can represent:
8901 #
8902 # * A full date, with non-zero year, month and day values
8903 # * A month and day value, with a zero year, e.g. an anniversary
8904 # * A year on its own, with zero month and day values
8905 # * A year and month value, with a zero day, e.g. a credit card expiration date
8906 #
8907 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
8908 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8909 # a year.
8910 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8911 # month and day.
8912 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8913 # if specifying a year by itself or a year and month where the day is not
8914 # significant.
8915 },
8916 &quot;stringValue&quot;: &quot;A String&quot;, # string
8917 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8918 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8919 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8920 # types are google.type.Date and `google.protobuf.Timestamp`.
8921 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8922 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8923 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
8924 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8925 # allow the value 60 if it allows leap-seconds.
8926 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
8927 },
8928 &quot;booleanValue&quot;: True or False, # boolean
8929 &quot;floatValue&quot;: 3.14, # float
8930 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
8931 },
8932 },
8933 ],
8934 },
8935 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
8936 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
8937 # output would be &#x27;My phone number is &#x27;.
8938 },
8939 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
8940 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
8941 # Note that for the purposes of inspection or transformation, the number
8942 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
8943 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
8944 # 123456789, the number of bytes would be counted as 9, even though an
8945 # int64 only holds up to 8 bytes of data.
8946 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
8947 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
8948 # and time zone are either specified elsewhere or are not significant. The date
8949 # is relative to the Proleptic Gregorian Calendar. This can represent:
8950 #
8951 # * A full date, with non-zero year, month and day values
8952 # * A month and day value, with a zero year, e.g. an anniversary
8953 # * A year on its own, with zero month and day values
8954 # * A year and month value, with a zero day, e.g. a credit card expiration date
8955 #
8956 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
8957 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
8958 # a year.
8959 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
8960 # month and day.
8961 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
8962 # if specifying a year by itself or a year and month where the day is not
8963 # significant.
8964 },
8965 &quot;stringValue&quot;: &quot;A String&quot;, # string
8966 &quot;integerValue&quot;: &quot;A String&quot;, # integer
8967 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
8968 # or are specified elsewhere. An API may choose to allow leap seconds. Related
8969 # types are google.type.Date and `google.protobuf.Timestamp`.
8970 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
8971 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
8972 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
8973 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
8974 # allow the value 60 if it allows leap-seconds.
8975 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
8976 },
8977 &quot;booleanValue&quot;: True or False, # boolean
8978 &quot;floatValue&quot;: 3.14, # float
8979 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
8980 },
8981 },
8982 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
8983 # Bucketing transformation can provide all of this functionality,
8984 # but requires more configuration. This message is provided as a convenience to
8985 # the user for simple bucketing strategies.
8986 #
8987 # The transformed value will be a hyphenated string of
8988 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
8989 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
8990 #
8991 # This can be used on data of type: double, long.
8992 #
8993 # If the bound Value type differs from the type of data
8994 # being transformed, we will first attempt converting the type of the data to
8995 # be transformed to match the type of the bound before comparing.
8996 #
8997 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
8998 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
8999 # grouped together into a single bucket; for example if `upper_bound` = 89,
9000 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
9001 # Note that for the purposes of inspection or transformation, the number
9002 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
9003 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
9004 # 123456789, the number of bytes would be counted as 9, even though an
9005 # int64 only holds up to 8 bytes of data.
9006 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
9007 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
9008 # and time zone are either specified elsewhere or are not significant. The date
9009 # is relative to the Proleptic Gregorian Calendar. This can represent:
9010 #
9011 # * A full date, with non-zero year, month and day values
9012 # * A month and day value, with a zero year, e.g. an anniversary
9013 # * A year on its own, with zero month and day values
9014 # * A year and month value, with a zero day, e.g. a credit card expiration date
9015 #
9016 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
9017 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
9018 # a year.
9019 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
9020 # month and day.
9021 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
9022 # if specifying a year by itself or a year and month where the day is not
9023 # significant.
9024 },
9025 &quot;stringValue&quot;: &quot;A String&quot;, # string
9026 &quot;integerValue&quot;: &quot;A String&quot;, # integer
9027 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
9028 # or are specified elsewhere. An API may choose to allow leap seconds. Related
9029 # types are google.type.Date and `google.protobuf.Timestamp`.
9030 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
9031 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
9032 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
9033 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
9034 # allow the value 60 if it allows leap-seconds.
9035 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
9036 },
9037 &quot;booleanValue&quot;: True or False, # boolean
9038 &quot;floatValue&quot;: 3.14, # float
9039 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
9040 },
9041 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
9042 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
9043 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
9044 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
9045 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
9046 # grouped together into a single bucket; for example if `lower_bound` = 10,
9047 # then all values less than 10 are replaced with the value &quot;-10&quot;.
9048 # Note that for the purposes of inspection or transformation, the number
9049 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
9050 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
9051 # 123456789, the number of bytes would be counted as 9, even though an
9052 # int64 only holds up to 8 bytes of data.
9053 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
9054 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
9055 # and time zone are either specified elsewhere or are not significant. The date
9056 # is relative to the Proleptic Gregorian Calendar. This can represent:
9057 #
9058 # * A full date, with non-zero year, month and day values
9059 # * A month and day value, with a zero year, e.g. an anniversary
9060 # * A year on its own, with zero month and day values
9061 # * A year and month value, with a zero day, e.g. a credit card expiration date
9062 #
9063 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
9064 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
9065 # a year.
9066 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
9067 # month and day.
9068 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
9069 # if specifying a year by itself or a year and month where the day is not
9070 # significant.
9071 },
9072 &quot;stringValue&quot;: &quot;A String&quot;, # string
9073 &quot;integerValue&quot;: &quot;A String&quot;, # integer
9074 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
9075 # or are specified elsewhere. An API may choose to allow leap seconds. Related
9076 # types are google.type.Date and `google.protobuf.Timestamp`.
9077 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
9078 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
9079 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
9080 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
9081 # allow the value 60 if it allows leap-seconds.
9082 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
9083 },
9084 &quot;booleanValue&quot;: True or False, # boolean
9085 &quot;floatValue&quot;: 3.14, # float
9086 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
9087 },
9088 },
9089 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
9090 # fixed character. Masking can start from the beginning or end of the string.
9091 # This can be used on data of any type (numbers, longs, and so on) and when
9092 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
9093 # type. (This allows you to take a long like 123 and modify it to a string like
9094 # **3.
9095 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
9096 # characters. For example, if the input string is `555-555-5555` and you
9097 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
9098 # returns `***-**5-5555`.
9099 { # Characters to skip when doing deidentification of a value. These will be left
9100 # alone and skipped.
9101 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
9102 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
9103 # punctuation.
9104 },
9105 ],
9106 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
9107 # masked. Skipped characters do not count towards this tally.
9108 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
9109 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
9110 # code or credit card number. This string must have a length of 1. If not
9111 # supplied, this value defaults to `*` for strings, and `0` for digits.
9112 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
9113 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
9114 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
9115 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
9116 # is `true`, then the string `12345` is masked as `12***`.
9117 },
9118 },
9119 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
9120 # this transformation to apply to all findings that correspond to
9121 # infoTypes that were requested in `InspectConfig`.
9122 { # Type of information detected by the API.
9123 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
9124 # creating a CustomInfoType, or one of the names listed
9125 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
9126 # a built-in type. InfoType names should conform to the pattern
9127 # `[a-zA-Z0-9_]{1,64}`.
9128 },
9129 ],
9130 },
9131 ],
9132 },
Bu Sun Kim65020912020-05-20 12:08:20 -07009133 &quot;transformationErrorHandling&quot;: { # How to handle transformation errors during de-identification. A # Mode for handling transformation errors. If left unspecified, the default
9134 # mode is `TransformationErrorHandling.ThrowError`.
9135 # transformation error occurs when the requested transformation is incompatible
9136 # with the data. For example, trying to de-identify an IP address using a
9137 # `DateShift` transformation would result in a transformation error, since date
9138 # info cannot be extracted from an IP address.
9139 # Information about any incompatible transformations, and how they were
9140 # handled, is returned in the response as part of the
9141 # `TransformationOverviews`.
9142 &quot;throwError&quot;: { # Throw an error and fail the request when a transformation error occurs. # Throw an error
9143 },
9144 &quot;leaveUntransformed&quot;: { # Skips the data without modifying it if the requested transformation would # Ignore errors
9145 # cause an error. For example, if a `DateShift` transformation were applied
9146 # an an IP address, this mode would leave the IP address unchanged in the
9147 # response.
9148 },
9149 },
9150 &quot;recordTransformations&quot;: { # A type of transformation that is applied over structured data such as a # Treat the dataset as structured. Transformations can be applied to
9151 # specific locations within structured datasets, such as transforming
9152 # a column within a table.
9153 # table.
Bu Sun Kim65020912020-05-20 12:08:20 -07009154 &quot;fieldTransformations&quot;: [ # Transform the record by applying various field transformations.
9155 { # The transformation to apply to the field.
9156 &quot;fields&quot;: [ # Required. Input field(s) to apply the transformation to.
9157 { # General identifier of a data field in a storage service.
9158 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
9159 },
9160 ],
9161 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the contents of the field as free text, and selectively
9162 # transform content that matches an `InfoType`.
9163 # apply various `PrimitiveTransformation`s to each finding, where the
9164 # transformation is applied to only values that were identified as a specific
9165 # info_type.
9166 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
9167 # for a given infoType.
9168 { # A transformation to apply to text that is identified as a specific
9169 # info_type.
Bu Sun Kim65020912020-05-20 12:08:20 -07009170 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
9171 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
9172 # portion of the value.
9173 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
9174 },
9175 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
9176 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
9177 # to learn more.
9178 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
9179 # If set, must also set cryptoKey. If set, shift will be consistent for the
9180 # given context.
9181 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
9182 },
9183 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
9184 # range (inclusive ends). Negative means shift to earlier in time. Must not
9185 # be more than 365250 days (1000 years) each direction.
9186 #
9187 # For example, 3 means shift date to at most 3 days into the future.
9188 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
9189 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
9190 # results in the same shift for the same context and crypto_key. If
9191 # set, must also set context. Can only be applied to table items.
9192 # a key encryption key (KEK) stored by KMS).
9193 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
9194 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
9195 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07009196 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
9197 # leaking the key. Choose another type of key if possible.
9198 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
9199 },
9200 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
9201 # It will be discarded after the request finishes.
9202 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
9203 # This is an arbitrary string used to differentiate different keys.
9204 # A unique key is generated per name: two separate `TransientCryptoKey`
9205 # protos share the same generated key if their names are the same.
9206 # When the data crypto key is generated, this name is not used in any way
9207 # (repeating the api call will result in a different key being generated).
9208 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009209 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
9210 # The wrapped key must be a 128/192/256 bit key.
9211 # Authorization requires the following IAM permissions when sending a request
9212 # to perform a crypto transformation using a kms-wrapped crypto key:
9213 # dlp.kms.encrypt
9214 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
9215 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
9216 },
Bu Sun Kim65020912020-05-20 12:08:20 -07009217 },
9218 },
9219 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
9220 },
9221 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
9222 # Uses SHA-256.
9223 # The key size must be either 32 or 64 bytes.
9224 # Outputs a base64 encoded representation of the hashed output
9225 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
9226 # Currently, only string and integer values can be hashed.
9227 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
9228 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
9229 # a key encryption key (KEK) stored by KMS).
9230 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
9231 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
9232 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07009233 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
9234 # leaking the key. Choose another type of key if possible.
9235 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
9236 },
9237 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
9238 # It will be discarded after the request finishes.
9239 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
9240 # This is an arbitrary string used to differentiate different keys.
9241 # A unique key is generated per name: two separate `TransientCryptoKey`
9242 # protos share the same generated key if their names are the same.
9243 # When the data crypto key is generated, this name is not used in any way
9244 # (repeating the api call will result in a different key being generated).
9245 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009246 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
9247 # The wrapped key must be a 128/192/256 bit key.
9248 # Authorization requires the following IAM permissions when sending a request
9249 # to perform a crypto transformation using a kms-wrapped crypto key:
9250 # dlp.kms.encrypt
9251 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
9252 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
9253 },
Bu Sun Kim65020912020-05-20 12:08:20 -07009254 },
9255 },
9256 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
9257 # (FPE) with the FFX mode of operation; however when used in the
9258 # `ReidentifyContent` API method, it serves the opposite function by reversing
9259 # the surrogate back into the original identifier. The identifier must be
9260 # encoded as ASCII. For a given crypto key and context, the same identifier
9261 # will be replaced with the same surrogate. Identifiers must be at least two
9262 # characters long. In the case that the identifier is the empty string, it will
9263 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
9264 # more.
9265 #
9266 # Note: We recommend using CryptoDeterministicConfig for all use cases which
9267 # do not require preserving the input alphabet space and size, plus warrant
9268 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -07009269 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
9270 # This annotation will be applied to the surrogate by prefixing it with
9271 # the name of the custom infoType followed by the number of
9272 # characters comprising the surrogate. The following scheme defines the
9273 # format: info_type_name(surrogate_character_count):surrogate
9274 #
9275 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
9276 # the surrogate is &#x27;abc&#x27;, the full replacement value
9277 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
9278 #
9279 # This annotation identifies the surrogate when inspecting content using the
9280 # custom infoType
9281 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
9282 # This facilitates reversal of the surrogate when it occurs in free text.
9283 #
9284 # In order for inspection to work properly, the name of this infoType must
9285 # not occur naturally anywhere in your data; otherwise, inspection may
9286 # find a surrogate that does not correspond to an actual identifier.
9287 # Therefore, choose your custom infoType name carefully after considering
9288 # what your data looks like. One way to select a name that has a high chance
9289 # of yielding reliable detection is to include one or more unicode characters
9290 # that are highly improbable to exist in your data.
9291 # For example, assuming your data is entered from a regular ASCII keyboard,
9292 # the symbol with the hex code point 29DD might be used like so:
9293 # ⧝MY_TOKEN_TYPE
9294 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
9295 # creating a CustomInfoType, or one of the names listed
9296 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
9297 # a built-in type. InfoType names should conform to the pattern
9298 # `[a-zA-Z0-9_]{1,64}`.
9299 },
9300 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
9301 # identifier in two different contexts won&#x27;t be given the same surrogate. If
9302 # the context is not set, a default tweak will be used.
9303 #
9304 # If the context is set but:
9305 #
9306 # 1. there is no record present when transforming a given value or
9307 # 1. the field is not present when transforming a given value,
9308 #
9309 # a default tweak will be used.
9310 #
9311 # Note that case (1) is expected when an `InfoTypeTransformation` is
9312 # applied to both structured and non-structured `ContentItem`s.
9313 # Currently, the referenced field may be of value type integer or string.
9314 #
9315 # The tweak is constructed as a sequence of bytes in big endian byte order
9316 # such that:
9317 #
9318 # - a 64 bit integer is encoded followed by a single byte of value 1
9319 # - a string is encoded in UTF-8 format followed by a single byte of value 2
9320 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
9321 },
9322 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
9323 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
9324 # a key encryption key (KEK) stored by KMS).
9325 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
9326 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
9327 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07009328 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
9329 # leaking the key. Choose another type of key if possible.
9330 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
9331 },
9332 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
9333 # It will be discarded after the request finishes.
9334 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
9335 # This is an arbitrary string used to differentiate different keys.
9336 # A unique key is generated per name: two separate `TransientCryptoKey`
9337 # protos share the same generated key if their names are the same.
9338 # When the data crypto key is generated, this name is not used in any way
9339 # (repeating the api call will result in a different key being generated).
9340 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009341 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
9342 # The wrapped key must be a 128/192/256 bit key.
9343 # Authorization requires the following IAM permissions when sending a request
9344 # to perform a crypto transformation using a kms-wrapped crypto key:
9345 # dlp.kms.encrypt
9346 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
9347 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
9348 },
Bu Sun Kim65020912020-05-20 12:08:20 -07009349 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009350 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
9351 # that the FFX mode natively supports. This happens before/after
9352 # encryption/decryption.
9353 # Each character listed must appear only once.
9354 # Number of characters must be in the range [2, 95].
9355 # This must be encoded as ASCII.
9356 # The order of characters does not matter.
9357 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -07009358 },
9359 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
9360 # input. Outputs a base64 encoded representation of the encrypted output.
9361 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
9362 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
9363 # This annotation will be applied to the surrogate by prefixing it with
9364 # the name of the custom info type followed by the number of
9365 # characters comprising the surrogate. The following scheme defines the
9366 # format: {info type name}({surrogate character count}):{surrogate}
9367 #
9368 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
9369 # the surrogate is &#x27;abc&#x27;, the full replacement value
9370 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
9371 #
9372 # This annotation identifies the surrogate when inspecting content using the
9373 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
9374 # surrogate when it occurs in free text.
9375 #
9376 # Note: For record transformations where the entire cell in a table is being
9377 # transformed, surrogates are not mandatory. Surrogates are used to denote
9378 # the location of the token and are necessary for re-identification in free
9379 # form text.
9380 #
9381 # In order for inspection to work properly, the name of this info type must
9382 # not occur naturally anywhere in your data; otherwise, inspection may either
9383 #
9384 # - reverse a surrogate that does not correspond to an actual identifier
9385 # - be unable to parse the surrogate and result in an error
9386 #
9387 # Therefore, choose your custom info type name carefully after considering
9388 # what your data looks like. One way to select a name that has a high chance
9389 # of yielding reliable detection is to include one or more unicode characters
9390 # that are highly improbable to exist in your data.
9391 # For example, assuming your data is entered from a regular ASCII keyboard,
9392 # the symbol with the hex code point 29DD might be used like so:
9393 # ⧝MY_TOKEN_TYPE.
9394 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
9395 # creating a CustomInfoType, or one of the names listed
9396 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
9397 # a built-in type. InfoType names should conform to the pattern
9398 # `[a-zA-Z0-9_]{1,64}`.
9399 },
9400 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
9401 # referential integrity such that the same identifier in two different
9402 # contexts will be given a distinct surrogate. The context is appended to
9403 # plaintext value being encrypted. On decryption the provided context is
9404 # validated against the value used during encryption. If a context was
9405 # provided during encryption, same context must be provided during decryption
9406 # as well.
9407 #
9408 # If the context is not set, plaintext would be used as is for encryption.
9409 # If the context is set but:
9410 #
9411 # 1. there is no record present when transforming a given value or
9412 # 2. the field is not present when transforming a given value,
9413 #
9414 # plaintext would be used as is for encryption.
9415 #
9416 # Note that case (1) is expected when an `InfoTypeTransformation` is
9417 # applied to both structured and non-structured `ContentItem`s.
9418 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
9419 },
9420 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
9421 # a key encryption key (KEK) stored by KMS).
9422 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
9423 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
9424 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07009425 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
9426 # leaking the key. Choose another type of key if possible.
9427 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
9428 },
9429 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
9430 # It will be discarded after the request finishes.
9431 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
9432 # This is an arbitrary string used to differentiate different keys.
9433 # A unique key is generated per name: two separate `TransientCryptoKey`
9434 # protos share the same generated key if their names are the same.
9435 # When the data crypto key is generated, this name is not used in any way
9436 # (repeating the api call will result in a different key being generated).
9437 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009438 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
9439 # The wrapped key must be a 128/192/256 bit key.
9440 # Authorization requires the following IAM permissions when sending a request
9441 # to perform a crypto transformation using a kms-wrapped crypto key:
9442 # dlp.kms.encrypt
9443 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
9444 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
9445 },
Bu Sun Kim65020912020-05-20 12:08:20 -07009446 },
9447 },
Bu Sun Kim65020912020-05-20 12:08:20 -07009448 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
9449 # replacement values are dynamically provided by the user for custom behavior,
9450 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
9451 # This can be used on
9452 # data of type: number, long, string, timestamp.
9453 # If the bound `Value` type differs from the type of data being transformed, we
9454 # will first attempt converting the type of the data to be transformed to match
9455 # the type of the bound before comparing.
9456 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
9457 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
9458 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -07009459 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
9460 # the default behavior will be to hyphenate the min-max range.
9461 # Note that for the purposes of inspection or transformation, the number
9462 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
9463 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
9464 # 123456789, the number of bytes would be counted as 9, even though an
9465 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07009466 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
9467 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
9468 # and time zone are either specified elsewhere or are not significant. The date
9469 # is relative to the Proleptic Gregorian Calendar. This can represent:
9470 #
9471 # * A full date, with non-zero year, month and day values
9472 # * A month and day value, with a zero year, e.g. an anniversary
9473 # * A year on its own, with zero month and day values
9474 # * A year and month value, with a zero day, e.g. a credit card expiration date
9475 #
9476 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
9477 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
9478 # a year.
9479 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
9480 # month and day.
9481 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
9482 # if specifying a year by itself or a year and month where the day is not
9483 # significant.
9484 },
9485 &quot;stringValue&quot;: &quot;A String&quot;, # string
9486 &quot;integerValue&quot;: &quot;A String&quot;, # integer
9487 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
9488 # or are specified elsewhere. An API may choose to allow leap seconds. Related
9489 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07009490 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
9491 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
9492 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009493 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
9494 # allow the value 60 if it allows leap-seconds.
9495 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07009496 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009497 &quot;booleanValue&quot;: True or False, # boolean
9498 &quot;floatValue&quot;: 3.14, # float
9499 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
9500 },
9501 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
9502 # used.
9503 # Note that for the purposes of inspection or transformation, the number
9504 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
9505 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
9506 # 123456789, the number of bytes would be counted as 9, even though an
9507 # int64 only holds up to 8 bytes of data.
9508 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
9509 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
9510 # and time zone are either specified elsewhere or are not significant. The date
9511 # is relative to the Proleptic Gregorian Calendar. This can represent:
9512 #
9513 # * A full date, with non-zero year, month and day values
9514 # * A month and day value, with a zero year, e.g. an anniversary
9515 # * A year on its own, with zero month and day values
9516 # * A year and month value, with a zero day, e.g. a credit card expiration date
9517 #
9518 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
9519 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
9520 # a year.
9521 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
9522 # month and day.
9523 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
9524 # if specifying a year by itself or a year and month where the day is not
9525 # significant.
9526 },
9527 &quot;stringValue&quot;: &quot;A String&quot;, # string
9528 &quot;integerValue&quot;: &quot;A String&quot;, # integer
9529 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
9530 # or are specified elsewhere. An API may choose to allow leap seconds. Related
9531 # types are google.type.Date and `google.protobuf.Timestamp`.
9532 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
9533 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
9534 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
9535 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
9536 # allow the value 60 if it allows leap-seconds.
9537 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
9538 },
9539 &quot;booleanValue&quot;: True or False, # boolean
9540 &quot;floatValue&quot;: 3.14, # float
9541 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
9542 },
9543 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
9544 # Note that for the purposes of inspection or transformation, the number
9545 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
9546 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
9547 # 123456789, the number of bytes would be counted as 9, even though an
9548 # int64 only holds up to 8 bytes of data.
9549 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
9550 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
9551 # and time zone are either specified elsewhere or are not significant. The date
9552 # is relative to the Proleptic Gregorian Calendar. This can represent:
9553 #
9554 # * A full date, with non-zero year, month and day values
9555 # * A month and day value, with a zero year, e.g. an anniversary
9556 # * A year on its own, with zero month and day values
9557 # * A year and month value, with a zero day, e.g. a credit card expiration date
9558 #
9559 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
9560 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
9561 # a year.
9562 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
9563 # month and day.
9564 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
9565 # if specifying a year by itself or a year and month where the day is not
9566 # significant.
9567 },
9568 &quot;stringValue&quot;: &quot;A String&quot;, # string
9569 &quot;integerValue&quot;: &quot;A String&quot;, # integer
9570 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
9571 # or are specified elsewhere. An API may choose to allow leap seconds. Related
9572 # types are google.type.Date and `google.protobuf.Timestamp`.
9573 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
9574 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
9575 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
9576 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
9577 # allow the value 60 if it allows leap-seconds.
9578 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
9579 },
9580 &quot;booleanValue&quot;: True or False, # boolean
9581 &quot;floatValue&quot;: 3.14, # float
9582 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07009583 },
9584 },
9585 ],
9586 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009587 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
9588 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
9589 # output would be &#x27;My phone number is &#x27;.
9590 },
Bu Sun Kim65020912020-05-20 12:08:20 -07009591 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
9592 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
9593 # Note that for the purposes of inspection or transformation, the number
9594 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
9595 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
9596 # 123456789, the number of bytes would be counted as 9, even though an
9597 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07009598 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
9599 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
9600 # and time zone are either specified elsewhere or are not significant. The date
9601 # is relative to the Proleptic Gregorian Calendar. This can represent:
9602 #
9603 # * A full date, with non-zero year, month and day values
9604 # * A month and day value, with a zero year, e.g. an anniversary
9605 # * A year on its own, with zero month and day values
9606 # * A year and month value, with a zero day, e.g. a credit card expiration date
9607 #
9608 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
9609 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
9610 # a year.
9611 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
9612 # month and day.
9613 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
9614 # if specifying a year by itself or a year and month where the day is not
9615 # significant.
9616 },
9617 &quot;stringValue&quot;: &quot;A String&quot;, # string
9618 &quot;integerValue&quot;: &quot;A String&quot;, # integer
9619 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
9620 # or are specified elsewhere. An API may choose to allow leap seconds. Related
9621 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07009622 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
9623 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
9624 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009625 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
9626 # allow the value 60 if it allows leap-seconds.
9627 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07009628 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009629 &quot;booleanValue&quot;: True or False, # boolean
9630 &quot;floatValue&quot;: 3.14, # float
9631 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07009632 },
9633 },
Bu Sun Kim65020912020-05-20 12:08:20 -07009634 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
9635 # Bucketing transformation can provide all of this functionality,
9636 # but requires more configuration. This message is provided as a convenience to
9637 # the user for simple bucketing strategies.
9638 #
9639 # The transformed value will be a hyphenated string of
9640 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
9641 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
9642 #
9643 # This can be used on data of type: double, long.
9644 #
9645 # If the bound Value type differs from the type of data
9646 # being transformed, we will first attempt converting the type of the data to
9647 # be transformed to match the type of the bound before comparing.
9648 #
9649 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -07009650 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
9651 # grouped together into a single bucket; for example if `upper_bound` = 89,
9652 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
9653 # Note that for the purposes of inspection or transformation, the number
9654 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
9655 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
9656 # 123456789, the number of bytes would be counted as 9, even though an
9657 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -07009658 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
9659 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
9660 # and time zone are either specified elsewhere or are not significant. The date
9661 # is relative to the Proleptic Gregorian Calendar. This can represent:
9662 #
9663 # * A full date, with non-zero year, month and day values
9664 # * A month and day value, with a zero year, e.g. an anniversary
9665 # * A year on its own, with zero month and day values
9666 # * A year and month value, with a zero day, e.g. a credit card expiration date
9667 #
9668 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
9669 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
9670 # a year.
9671 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
9672 # month and day.
9673 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
9674 # if specifying a year by itself or a year and month where the day is not
9675 # significant.
9676 },
9677 &quot;stringValue&quot;: &quot;A String&quot;, # string
9678 &quot;integerValue&quot;: &quot;A String&quot;, # integer
9679 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
9680 # or are specified elsewhere. An API may choose to allow leap seconds. Related
9681 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -07009682 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
9683 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
9684 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009685 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
9686 # allow the value 60 if it allows leap-seconds.
9687 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -07009688 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009689 &quot;booleanValue&quot;: True or False, # boolean
9690 &quot;floatValue&quot;: 3.14, # float
9691 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -07009692 },
9693 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
9694 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
9695 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
9696 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009697 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
9698 # grouped together into a single bucket; for example if `lower_bound` = 10,
9699 # then all values less than 10 are replaced with the value &quot;-10&quot;.
9700 # Note that for the purposes of inspection or transformation, the number
9701 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
9702 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
9703 # 123456789, the number of bytes would be counted as 9, even though an
9704 # int64 only holds up to 8 bytes of data.
9705 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
9706 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
9707 # and time zone are either specified elsewhere or are not significant. The date
9708 # is relative to the Proleptic Gregorian Calendar. This can represent:
9709 #
9710 # * A full date, with non-zero year, month and day values
9711 # * A month and day value, with a zero year, e.g. an anniversary
9712 # * A year on its own, with zero month and day values
9713 # * A year and month value, with a zero day, e.g. a credit card expiration date
9714 #
9715 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
9716 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
9717 # a year.
9718 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
9719 # month and day.
9720 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
9721 # if specifying a year by itself or a year and month where the day is not
9722 # significant.
9723 },
9724 &quot;stringValue&quot;: &quot;A String&quot;, # string
9725 &quot;integerValue&quot;: &quot;A String&quot;, # integer
9726 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
9727 # or are specified elsewhere. An API may choose to allow leap seconds. Related
9728 # types are google.type.Date and `google.protobuf.Timestamp`.
9729 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
9730 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
9731 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
9732 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
9733 # allow the value 60 if it allows leap-seconds.
9734 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
9735 },
9736 &quot;booleanValue&quot;: True or False, # boolean
9737 &quot;floatValue&quot;: 3.14, # float
9738 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
9739 },
9740 },
9741 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
9742 # fixed character. Masking can start from the beginning or end of the string.
9743 # This can be used on data of any type (numbers, longs, and so on) and when
9744 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
9745 # type. (This allows you to take a long like 123 and modify it to a string like
9746 # **3.
9747 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
9748 # characters. For example, if the input string is `555-555-5555` and you
9749 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
9750 # returns `***-**5-5555`.
9751 { # Characters to skip when doing deidentification of a value. These will be left
9752 # alone and skipped.
9753 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
9754 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
9755 # punctuation.
9756 },
9757 ],
9758 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
9759 # masked. Skipped characters do not count towards this tally.
9760 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
9761 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
9762 # code or credit card number. This string must have a length of 1. If not
9763 # supplied, this value defaults to `*` for strings, and `0` for digits.
9764 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
9765 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
9766 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
9767 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
9768 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -07009769 },
9770 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009771 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
9772 # this transformation to apply to all findings that correspond to
9773 # infoTypes that were requested in `InspectConfig`.
9774 { # Type of information detected by the API.
9775 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
9776 # creating a CustomInfoType, or one of the names listed
9777 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
9778 # a built-in type. InfoType names should conform to the pattern
9779 # `[a-zA-Z0-9_]{1,64}`.
9780 },
9781 ],
Bu Sun Kim65020912020-05-20 12:08:20 -07009782 },
9783 ],
9784 },
9785 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Apply the transformation to the entire field.
9786 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
9787 # portion of the value.
9788 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
9789 },
9790 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
9791 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
9792 # to learn more.
9793 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
9794 # If set, must also set cryptoKey. If set, shift will be consistent for the
9795 # given context.
9796 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
9797 },
9798 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
9799 # range (inclusive ends). Negative means shift to earlier in time. Must not
9800 # be more than 365250 days (1000 years) each direction.
9801 #
9802 # For example, 3 means shift date to at most 3 days into the future.
9803 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
9804 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
9805 # results in the same shift for the same context and crypto_key. If
9806 # set, must also set context. Can only be applied to table items.
9807 # a key encryption key (KEK) stored by KMS).
9808 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
9809 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
9810 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07009811 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
9812 # leaking the key. Choose another type of key if possible.
9813 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
9814 },
9815 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
9816 # It will be discarded after the request finishes.
9817 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
9818 # This is an arbitrary string used to differentiate different keys.
9819 # A unique key is generated per name: two separate `TransientCryptoKey`
9820 # protos share the same generated key if their names are the same.
9821 # When the data crypto key is generated, this name is not used in any way
9822 # (repeating the api call will result in a different key being generated).
9823 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009824 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
9825 # The wrapped key must be a 128/192/256 bit key.
9826 # Authorization requires the following IAM permissions when sending a request
9827 # to perform a crypto transformation using a kms-wrapped crypto key:
9828 # dlp.kms.encrypt
9829 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
9830 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
9831 },
Bu Sun Kim65020912020-05-20 12:08:20 -07009832 },
9833 },
9834 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
9835 },
9836 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
9837 # Uses SHA-256.
9838 # The key size must be either 32 or 64 bytes.
9839 # Outputs a base64 encoded representation of the hashed output
9840 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
9841 # Currently, only string and integer values can be hashed.
9842 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
9843 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
9844 # a key encryption key (KEK) stored by KMS).
9845 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
9846 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
9847 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07009848 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
9849 # leaking the key. Choose another type of key if possible.
9850 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
9851 },
9852 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
9853 # It will be discarded after the request finishes.
9854 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
9855 # This is an arbitrary string used to differentiate different keys.
9856 # A unique key is generated per name: two separate `TransientCryptoKey`
9857 # protos share the same generated key if their names are the same.
9858 # When the data crypto key is generated, this name is not used in any way
9859 # (repeating the api call will result in a different key being generated).
9860 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009861 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
9862 # The wrapped key must be a 128/192/256 bit key.
9863 # Authorization requires the following IAM permissions when sending a request
9864 # to perform a crypto transformation using a kms-wrapped crypto key:
9865 # dlp.kms.encrypt
9866 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
9867 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
9868 },
Bu Sun Kim65020912020-05-20 12:08:20 -07009869 },
9870 },
9871 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
9872 # (FPE) with the FFX mode of operation; however when used in the
9873 # `ReidentifyContent` API method, it serves the opposite function by reversing
9874 # the surrogate back into the original identifier. The identifier must be
9875 # encoded as ASCII. For a given crypto key and context, the same identifier
9876 # will be replaced with the same surrogate. Identifiers must be at least two
9877 # characters long. In the case that the identifier is the empty string, it will
9878 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
9879 # more.
9880 #
9881 # Note: We recommend using CryptoDeterministicConfig for all use cases which
9882 # do not require preserving the input alphabet space and size, plus warrant
9883 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -07009884 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
9885 # This annotation will be applied to the surrogate by prefixing it with
9886 # the name of the custom infoType followed by the number of
9887 # characters comprising the surrogate. The following scheme defines the
9888 # format: info_type_name(surrogate_character_count):surrogate
9889 #
9890 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
9891 # the surrogate is &#x27;abc&#x27;, the full replacement value
9892 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
9893 #
9894 # This annotation identifies the surrogate when inspecting content using the
9895 # custom infoType
9896 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
9897 # This facilitates reversal of the surrogate when it occurs in free text.
9898 #
9899 # In order for inspection to work properly, the name of this infoType must
9900 # not occur naturally anywhere in your data; otherwise, inspection may
9901 # find a surrogate that does not correspond to an actual identifier.
9902 # Therefore, choose your custom infoType name carefully after considering
9903 # what your data looks like. One way to select a name that has a high chance
9904 # of yielding reliable detection is to include one or more unicode characters
9905 # that are highly improbable to exist in your data.
9906 # For example, assuming your data is entered from a regular ASCII keyboard,
9907 # the symbol with the hex code point 29DD might be used like so:
9908 # ⧝MY_TOKEN_TYPE
9909 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
9910 # creating a CustomInfoType, or one of the names listed
9911 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
9912 # a built-in type. InfoType names should conform to the pattern
9913 # `[a-zA-Z0-9_]{1,64}`.
9914 },
9915 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
9916 # identifier in two different contexts won&#x27;t be given the same surrogate. If
9917 # the context is not set, a default tweak will be used.
9918 #
9919 # If the context is set but:
9920 #
9921 # 1. there is no record present when transforming a given value or
9922 # 1. the field is not present when transforming a given value,
9923 #
9924 # a default tweak will be used.
9925 #
9926 # Note that case (1) is expected when an `InfoTypeTransformation` is
9927 # applied to both structured and non-structured `ContentItem`s.
9928 # Currently, the referenced field may be of value type integer or string.
9929 #
9930 # The tweak is constructed as a sequence of bytes in big endian byte order
9931 # such that:
9932 #
9933 # - a 64 bit integer is encoded followed by a single byte of value 1
9934 # - a string is encoded in UTF-8 format followed by a single byte of value 2
9935 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
9936 },
9937 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
9938 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
9939 # a key encryption key (KEK) stored by KMS).
9940 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
9941 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
9942 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -07009943 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
9944 # leaking the key. Choose another type of key if possible.
9945 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
9946 },
9947 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
9948 # It will be discarded after the request finishes.
9949 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
9950 # This is an arbitrary string used to differentiate different keys.
9951 # A unique key is generated per name: two separate `TransientCryptoKey`
9952 # protos share the same generated key if their names are the same.
9953 # When the data crypto key is generated, this name is not used in any way
9954 # (repeating the api call will result in a different key being generated).
9955 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009956 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
9957 # The wrapped key must be a 128/192/256 bit key.
9958 # Authorization requires the following IAM permissions when sending a request
9959 # to perform a crypto transformation using a kms-wrapped crypto key:
9960 # dlp.kms.encrypt
9961 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
9962 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
9963 },
Bu Sun Kim65020912020-05-20 12:08:20 -07009964 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -07009965 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
9966 # that the FFX mode natively supports. This happens before/after
9967 # encryption/decryption.
9968 # Each character listed must appear only once.
9969 # Number of characters must be in the range [2, 95].
9970 # This must be encoded as ASCII.
9971 # The order of characters does not matter.
9972 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -07009973 },
9974 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
9975 # input. Outputs a base64 encoded representation of the encrypted output.
9976 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
9977 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
9978 # This annotation will be applied to the surrogate by prefixing it with
9979 # the name of the custom info type followed by the number of
9980 # characters comprising the surrogate. The following scheme defines the
9981 # format: {info type name}({surrogate character count}):{surrogate}
9982 #
9983 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
9984 # the surrogate is &#x27;abc&#x27;, the full replacement value
9985 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
9986 #
9987 # This annotation identifies the surrogate when inspecting content using the
9988 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
9989 # surrogate when it occurs in free text.
9990 #
9991 # Note: For record transformations where the entire cell in a table is being
9992 # transformed, surrogates are not mandatory. Surrogates are used to denote
9993 # the location of the token and are necessary for re-identification in free
9994 # form text.
9995 #
9996 # In order for inspection to work properly, the name of this info type must
9997 # not occur naturally anywhere in your data; otherwise, inspection may either
9998 #
9999 # - reverse a surrogate that does not correspond to an actual identifier
10000 # - be unable to parse the surrogate and result in an error
10001 #
10002 # Therefore, choose your custom info type name carefully after considering
10003 # what your data looks like. One way to select a name that has a high chance
10004 # of yielding reliable detection is to include one or more unicode characters
10005 # that are highly improbable to exist in your data.
10006 # For example, assuming your data is entered from a regular ASCII keyboard,
10007 # the symbol with the hex code point 29DD might be used like so:
10008 # ⧝MY_TOKEN_TYPE.
10009 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
10010 # creating a CustomInfoType, or one of the names listed
10011 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
10012 # a built-in type. InfoType names should conform to the pattern
10013 # `[a-zA-Z0-9_]{1,64}`.
10014 },
10015 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
10016 # referential integrity such that the same identifier in two different
10017 # contexts will be given a distinct surrogate. The context is appended to
10018 # plaintext value being encrypted. On decryption the provided context is
10019 # validated against the value used during encryption. If a context was
10020 # provided during encryption, same context must be provided during decryption
10021 # as well.
10022 #
10023 # If the context is not set, plaintext would be used as is for encryption.
10024 # If the context is set but:
10025 #
10026 # 1. there is no record present when transforming a given value or
10027 # 2. the field is not present when transforming a given value,
10028 #
10029 # plaintext would be used as is for encryption.
10030 #
10031 # Note that case (1) is expected when an `InfoTypeTransformation` is
10032 # applied to both structured and non-structured `ContentItem`s.
10033 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
10034 },
10035 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
10036 # a key encryption key (KEK) stored by KMS).
10037 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
10038 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
10039 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -070010040 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
10041 # leaking the key. Choose another type of key if possible.
10042 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
10043 },
10044 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
10045 # It will be discarded after the request finishes.
10046 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
10047 # This is an arbitrary string used to differentiate different keys.
10048 # A unique key is generated per name: two separate `TransientCryptoKey`
10049 # protos share the same generated key if their names are the same.
10050 # When the data crypto key is generated, this name is not used in any way
10051 # (repeating the api call will result in a different key being generated).
10052 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010053 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
10054 # The wrapped key must be a 128/192/256 bit key.
10055 # Authorization requires the following IAM permissions when sending a request
10056 # to perform a crypto transformation using a kms-wrapped crypto key:
10057 # dlp.kms.encrypt
10058 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
10059 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
10060 },
Bu Sun Kim65020912020-05-20 12:08:20 -070010061 },
10062 },
Bu Sun Kim65020912020-05-20 12:08:20 -070010063 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
10064 # replacement values are dynamically provided by the user for custom behavior,
10065 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
10066 # This can be used on
10067 # data of type: number, long, string, timestamp.
10068 # If the bound `Value` type differs from the type of data being transformed, we
10069 # will first attempt converting the type of the data to be transformed to match
10070 # the type of the bound before comparing.
10071 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
10072 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
10073 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -070010074 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
10075 # the default behavior will be to hyphenate the min-max range.
10076 # Note that for the purposes of inspection or transformation, the number
10077 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
10078 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
10079 # 123456789, the number of bytes would be counted as 9, even though an
10080 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -070010081 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
10082 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
10083 # and time zone are either specified elsewhere or are not significant. The date
10084 # is relative to the Proleptic Gregorian Calendar. This can represent:
10085 #
10086 # * A full date, with non-zero year, month and day values
10087 # * A month and day value, with a zero year, e.g. an anniversary
10088 # * A year on its own, with zero month and day values
10089 # * A year and month value, with a zero day, e.g. a credit card expiration date
10090 #
10091 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
10092 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
10093 # a year.
10094 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
10095 # month and day.
10096 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
10097 # if specifying a year by itself or a year and month where the day is not
10098 # significant.
10099 },
10100 &quot;stringValue&quot;: &quot;A String&quot;, # string
10101 &quot;integerValue&quot;: &quot;A String&quot;, # integer
10102 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
10103 # or are specified elsewhere. An API may choose to allow leap seconds. Related
10104 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -070010105 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
10106 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
10107 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010108 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
10109 # allow the value 60 if it allows leap-seconds.
10110 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -070010111 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010112 &quot;booleanValue&quot;: True or False, # boolean
10113 &quot;floatValue&quot;: 3.14, # float
10114 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
10115 },
10116 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
10117 # used.
10118 # Note that for the purposes of inspection or transformation, the number
10119 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
10120 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
10121 # 123456789, the number of bytes would be counted as 9, even though an
10122 # int64 only holds up to 8 bytes of data.
10123 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
10124 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
10125 # and time zone are either specified elsewhere or are not significant. The date
10126 # is relative to the Proleptic Gregorian Calendar. This can represent:
10127 #
10128 # * A full date, with non-zero year, month and day values
10129 # * A month and day value, with a zero year, e.g. an anniversary
10130 # * A year on its own, with zero month and day values
10131 # * A year and month value, with a zero day, e.g. a credit card expiration date
10132 #
10133 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
10134 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
10135 # a year.
10136 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
10137 # month and day.
10138 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
10139 # if specifying a year by itself or a year and month where the day is not
10140 # significant.
10141 },
10142 &quot;stringValue&quot;: &quot;A String&quot;, # string
10143 &quot;integerValue&quot;: &quot;A String&quot;, # integer
10144 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
10145 # or are specified elsewhere. An API may choose to allow leap seconds. Related
10146 # types are google.type.Date and `google.protobuf.Timestamp`.
10147 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
10148 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
10149 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
10150 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
10151 # allow the value 60 if it allows leap-seconds.
10152 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
10153 },
10154 &quot;booleanValue&quot;: True or False, # boolean
10155 &quot;floatValue&quot;: 3.14, # float
10156 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
10157 },
10158 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
10159 # Note that for the purposes of inspection or transformation, the number
10160 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
10161 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
10162 # 123456789, the number of bytes would be counted as 9, even though an
10163 # int64 only holds up to 8 bytes of data.
10164 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
10165 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
10166 # and time zone are either specified elsewhere or are not significant. The date
10167 # is relative to the Proleptic Gregorian Calendar. This can represent:
10168 #
10169 # * A full date, with non-zero year, month and day values
10170 # * A month and day value, with a zero year, e.g. an anniversary
10171 # * A year on its own, with zero month and day values
10172 # * A year and month value, with a zero day, e.g. a credit card expiration date
10173 #
10174 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
10175 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
10176 # a year.
10177 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
10178 # month and day.
10179 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
10180 # if specifying a year by itself or a year and month where the day is not
10181 # significant.
10182 },
10183 &quot;stringValue&quot;: &quot;A String&quot;, # string
10184 &quot;integerValue&quot;: &quot;A String&quot;, # integer
10185 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
10186 # or are specified elsewhere. An API may choose to allow leap seconds. Related
10187 # types are google.type.Date and `google.protobuf.Timestamp`.
10188 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
10189 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
10190 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
10191 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
10192 # allow the value 60 if it allows leap-seconds.
10193 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
10194 },
10195 &quot;booleanValue&quot;: True or False, # boolean
10196 &quot;floatValue&quot;: 3.14, # float
10197 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070010198 },
10199 },
10200 ],
10201 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010202 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
10203 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
10204 # output would be &#x27;My phone number is &#x27;.
10205 },
Bu Sun Kim65020912020-05-20 12:08:20 -070010206 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
10207 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
10208 # Note that for the purposes of inspection or transformation, the number
10209 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
10210 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
10211 # 123456789, the number of bytes would be counted as 9, even though an
10212 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -070010213 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
10214 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
10215 # and time zone are either specified elsewhere or are not significant. The date
10216 # is relative to the Proleptic Gregorian Calendar. This can represent:
10217 #
10218 # * A full date, with non-zero year, month and day values
10219 # * A month and day value, with a zero year, e.g. an anniversary
10220 # * A year on its own, with zero month and day values
10221 # * A year and month value, with a zero day, e.g. a credit card expiration date
10222 #
10223 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
10224 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
10225 # a year.
10226 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
10227 # month and day.
10228 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
10229 # if specifying a year by itself or a year and month where the day is not
10230 # significant.
10231 },
10232 &quot;stringValue&quot;: &quot;A String&quot;, # string
10233 &quot;integerValue&quot;: &quot;A String&quot;, # integer
10234 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
10235 # or are specified elsewhere. An API may choose to allow leap seconds. Related
10236 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -070010237 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
10238 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
10239 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010240 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
10241 # allow the value 60 if it allows leap-seconds.
10242 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -070010243 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010244 &quot;booleanValue&quot;: True or False, # boolean
10245 &quot;floatValue&quot;: 3.14, # float
10246 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070010247 },
10248 },
Bu Sun Kim65020912020-05-20 12:08:20 -070010249 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
10250 # Bucketing transformation can provide all of this functionality,
10251 # but requires more configuration. This message is provided as a convenience to
10252 # the user for simple bucketing strategies.
10253 #
10254 # The transformed value will be a hyphenated string of
10255 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
10256 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
10257 #
10258 # This can be used on data of type: double, long.
10259 #
10260 # If the bound Value type differs from the type of data
10261 # being transformed, we will first attempt converting the type of the data to
10262 # be transformed to match the type of the bound before comparing.
10263 #
10264 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -070010265 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
10266 # grouped together into a single bucket; for example if `upper_bound` = 89,
10267 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
10268 # Note that for the purposes of inspection or transformation, the number
10269 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
10270 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
10271 # 123456789, the number of bytes would be counted as 9, even though an
10272 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -070010273 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
10274 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
10275 # and time zone are either specified elsewhere or are not significant. The date
10276 # is relative to the Proleptic Gregorian Calendar. This can represent:
10277 #
10278 # * A full date, with non-zero year, month and day values
10279 # * A month and day value, with a zero year, e.g. an anniversary
10280 # * A year on its own, with zero month and day values
10281 # * A year and month value, with a zero day, e.g. a credit card expiration date
10282 #
10283 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
10284 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
10285 # a year.
10286 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
10287 # month and day.
10288 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
10289 # if specifying a year by itself or a year and month where the day is not
10290 # significant.
10291 },
10292 &quot;stringValue&quot;: &quot;A String&quot;, # string
10293 &quot;integerValue&quot;: &quot;A String&quot;, # integer
10294 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
10295 # or are specified elsewhere. An API may choose to allow leap seconds. Related
10296 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -070010297 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
10298 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
10299 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010300 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
10301 # allow the value 60 if it allows leap-seconds.
10302 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -070010303 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010304 &quot;booleanValue&quot;: True or False, # boolean
10305 &quot;floatValue&quot;: 3.14, # float
10306 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070010307 },
10308 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
10309 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
10310 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
10311 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010312 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
10313 # grouped together into a single bucket; for example if `lower_bound` = 10,
10314 # then all values less than 10 are replaced with the value &quot;-10&quot;.
10315 # Note that for the purposes of inspection or transformation, the number
10316 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
10317 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
10318 # 123456789, the number of bytes would be counted as 9, even though an
10319 # int64 only holds up to 8 bytes of data.
10320 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
10321 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
10322 # and time zone are either specified elsewhere or are not significant. The date
10323 # is relative to the Proleptic Gregorian Calendar. This can represent:
10324 #
10325 # * A full date, with non-zero year, month and day values
10326 # * A month and day value, with a zero year, e.g. an anniversary
10327 # * A year on its own, with zero month and day values
10328 # * A year and month value, with a zero day, e.g. a credit card expiration date
10329 #
10330 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
10331 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
10332 # a year.
10333 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
10334 # month and day.
10335 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
10336 # if specifying a year by itself or a year and month where the day is not
10337 # significant.
10338 },
10339 &quot;stringValue&quot;: &quot;A String&quot;, # string
10340 &quot;integerValue&quot;: &quot;A String&quot;, # integer
10341 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
10342 # or are specified elsewhere. An API may choose to allow leap seconds. Related
10343 # types are google.type.Date and `google.protobuf.Timestamp`.
10344 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
10345 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
10346 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
10347 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
10348 # allow the value 60 if it allows leap-seconds.
10349 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
10350 },
10351 &quot;booleanValue&quot;: True or False, # boolean
10352 &quot;floatValue&quot;: 3.14, # float
10353 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
10354 },
10355 },
10356 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
10357 # fixed character. Masking can start from the beginning or end of the string.
10358 # This can be used on data of any type (numbers, longs, and so on) and when
10359 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
10360 # type. (This allows you to take a long like 123 and modify it to a string like
10361 # **3.
10362 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
10363 # characters. For example, if the input string is `555-555-5555` and you
10364 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
10365 # returns `***-**5-5555`.
10366 { # Characters to skip when doing deidentification of a value. These will be left
10367 # alone and skipped.
10368 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
10369 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
10370 # punctuation.
10371 },
10372 ],
10373 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
10374 # masked. Skipped characters do not count towards this tally.
10375 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
10376 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
10377 # code or credit card number. This string must have a length of 1. If not
10378 # supplied, this value defaults to `*` for strings, and `0` for digits.
10379 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
10380 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
10381 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
10382 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
10383 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -070010384 },
10385 },
10386 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # Only apply the transformation if the condition evaluates to true for the
10387 # given `RecordCondition`. The conditions are allowed to reference fields
10388 # that are not used in the actual transformation.
10389 #
10390 # Example Use Cases:
10391 #
10392 # - Apply a different bucket transformation to an age column if the zip code
10393 # column for the same record is within a specific range.
10394 # - Redact a field if the date of birth field is greater than 85.
10395 # a field.
10396 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
10397 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
10398 # only supported value is `AND`.
10399 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
10400 &quot;conditions&quot;: [ # A collection of conditions.
10401 { # The field type of `value` and `field` do not need to match to be
10402 # considered equal, but not all comparisons are possible.
10403 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
10404 # but all other comparisons are invalid with incompatible types.
10405 # A `value` of type:
10406 #
10407 # - `string` can be compared against all other types
10408 # - `boolean` can only be compared against other booleans
10409 # - `integer` can be compared against doubles or a string if the string value
10410 # can be parsed as an integer.
10411 # - `double` can be compared against integers or a string if the string can
10412 # be parsed as a double.
10413 # - `Timestamp` can be compared against strings in RFC 3339 date string
10414 # format.
10415 # - `TimeOfDay` can be compared against timestamps and strings in the format
10416 # of &#x27;HH:mm:ss&#x27;.
10417 #
10418 # If we fail to compare do to type mismatch, a warning will be given and
10419 # the condition will evaluate to false.
Bu Sun Kim65020912020-05-20 12:08:20 -070010420 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
10421 # Note that for the purposes of inspection or transformation, the number
10422 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
10423 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
10424 # 123456789, the number of bytes would be counted as 9, even though an
10425 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -070010426 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
10427 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
10428 # and time zone are either specified elsewhere or are not significant. The date
10429 # is relative to the Proleptic Gregorian Calendar. This can represent:
10430 #
10431 # * A full date, with non-zero year, month and day values
10432 # * A month and day value, with a zero year, e.g. an anniversary
10433 # * A year on its own, with zero month and day values
10434 # * A year and month value, with a zero day, e.g. a credit card expiration date
10435 #
10436 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
10437 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
10438 # a year.
10439 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
10440 # month and day.
10441 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
10442 # if specifying a year by itself or a year and month where the day is not
10443 # significant.
10444 },
10445 &quot;stringValue&quot;: &quot;A String&quot;, # string
10446 &quot;integerValue&quot;: &quot;A String&quot;, # integer
10447 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
10448 # or are specified elsewhere. An API may choose to allow leap seconds. Related
10449 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -070010450 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
10451 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
10452 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010453 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
10454 # allow the value 60 if it allows leap-seconds.
10455 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -070010456 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010457 &quot;booleanValue&quot;: True or False, # boolean
10458 &quot;floatValue&quot;: 3.14, # float
10459 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070010460 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010461 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
10462 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
10463 },
10464 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -070010465 },
10466 ],
10467 },
10468 },
10469 },
10470 },
10471 ],
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010472 &quot;recordSuppressions&quot;: [ # Configuration defining which records get suppressed entirely. Records that
10473 # match any suppression rule are omitted from the output.
10474 { # Configuration to suppress records whose suppression conditions evaluate to
10475 # true.
10476 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # A condition that when it evaluates to true will result in the record being
10477 # evaluated to be suppressed from the transformed content.
10478 # a field.
10479 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
10480 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
10481 # only supported value is `AND`.
10482 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
10483 &quot;conditions&quot;: [ # A collection of conditions.
10484 { # The field type of `value` and `field` do not need to match to be
10485 # considered equal, but not all comparisons are possible.
10486 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
10487 # but all other comparisons are invalid with incompatible types.
10488 # A `value` of type:
10489 #
10490 # - `string` can be compared against all other types
10491 # - `boolean` can only be compared against other booleans
10492 # - `integer` can be compared against doubles or a string if the string value
10493 # can be parsed as an integer.
10494 # - `double` can be compared against integers or a string if the string can
10495 # be parsed as a double.
10496 # - `Timestamp` can be compared against strings in RFC 3339 date string
10497 # format.
10498 # - `TimeOfDay` can be compared against timestamps and strings in the format
10499 # of &#x27;HH:mm:ss&#x27;.
10500 #
10501 # If we fail to compare do to type mismatch, a warning will be given and
10502 # the condition will evaluate to false.
10503 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
10504 # Note that for the purposes of inspection or transformation, the number
10505 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
10506 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
10507 # 123456789, the number of bytes would be counted as 9, even though an
10508 # int64 only holds up to 8 bytes of data.
10509 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
10510 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
10511 # and time zone are either specified elsewhere or are not significant. The date
10512 # is relative to the Proleptic Gregorian Calendar. This can represent:
10513 #
10514 # * A full date, with non-zero year, month and day values
10515 # * A month and day value, with a zero year, e.g. an anniversary
10516 # * A year on its own, with zero month and day values
10517 # * A year and month value, with a zero day, e.g. a credit card expiration date
10518 #
10519 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
10520 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
10521 # a year.
10522 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
10523 # month and day.
10524 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
10525 # if specifying a year by itself or a year and month where the day is not
10526 # significant.
10527 },
10528 &quot;stringValue&quot;: &quot;A String&quot;, # string
10529 &quot;integerValue&quot;: &quot;A String&quot;, # integer
10530 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
10531 # or are specified elsewhere. An API may choose to allow leap seconds. Related
10532 # types are google.type.Date and `google.protobuf.Timestamp`.
10533 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
10534 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
10535 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
10536 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
10537 # allow the value 60 if it allows leap-seconds.
10538 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
10539 },
10540 &quot;booleanValue&quot;: True or False, # boolean
10541 &quot;floatValue&quot;: 3.14, # float
10542 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070010543 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010544 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
10545 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
Bu Sun Kim65020912020-05-20 12:08:20 -070010546 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010547 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -070010548 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010549 ],
Bu Sun Kim65020912020-05-20 12:08:20 -070010550 },
10551 },
Bu Sun Kim65020912020-05-20 12:08:20 -070010552 },
10553 },
10554 ],
10555 },
10556 },
10557 },
10558 &quot;updateMask&quot;: &quot;A String&quot;, # Mask to control which fields get updated.
10559 }
10560
10561 x__xgafv: string, V1 error format.
10562 Allowed values
10563 1 - v1 error format
10564 2 - v2 error format
10565
10566Returns:
10567 An object of the form:
10568
10569 { # DeidentifyTemplates contains instructions on how to de-identify content.
10570 # See https://cloud.google.com/dlp/docs/concepts-templates to learn more.
10571 &quot;name&quot;: &quot;A String&quot;, # Output only. The template name.
10572 #
10573 # The template will have one of the following formats:
10574 # `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR
10575 # `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`
10576 &quot;description&quot;: &quot;A String&quot;, # Short description (max 256 chars).
10577 &quot;displayName&quot;: &quot;A String&quot;, # Display name (max 256 chars).
10578 &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of an inspectTemplate.
10579 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of an inspectTemplate.
10580 &quot;deidentifyConfig&quot;: { # The configuration that controls how the data will change. # ///////////// // The core content of the template // ///////////////
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070010581 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the dataset as free-form text and apply the same free text
10582 # transformation everywhere.
10583 # apply various `PrimitiveTransformation`s to each finding, where the
10584 # transformation is applied to only values that were identified as a specific
10585 # info_type.
10586 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
10587 # for a given infoType.
10588 { # A transformation to apply to text that is identified as a specific
10589 # info_type.
10590 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
10591 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
10592 # portion of the value.
10593 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
10594 },
10595 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
10596 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
10597 # to learn more.
10598 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
10599 # If set, must also set cryptoKey. If set, shift will be consistent for the
10600 # given context.
10601 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
10602 },
10603 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
10604 # range (inclusive ends). Negative means shift to earlier in time. Must not
10605 # be more than 365250 days (1000 years) each direction.
10606 #
10607 # For example, 3 means shift date to at most 3 days into the future.
10608 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
10609 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
10610 # results in the same shift for the same context and crypto_key. If
10611 # set, must also set context. Can only be applied to table items.
10612 # a key encryption key (KEK) stored by KMS).
10613 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
10614 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
10615 # unwrap the data crypto key.
10616 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
10617 # leaking the key. Choose another type of key if possible.
10618 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
10619 },
10620 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
10621 # It will be discarded after the request finishes.
10622 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
10623 # This is an arbitrary string used to differentiate different keys.
10624 # A unique key is generated per name: two separate `TransientCryptoKey`
10625 # protos share the same generated key if their names are the same.
10626 # When the data crypto key is generated, this name is not used in any way
10627 # (repeating the api call will result in a different key being generated).
10628 },
10629 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
10630 # The wrapped key must be a 128/192/256 bit key.
10631 # Authorization requires the following IAM permissions when sending a request
10632 # to perform a crypto transformation using a kms-wrapped crypto key:
10633 # dlp.kms.encrypt
10634 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
10635 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
10636 },
10637 },
10638 },
10639 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
10640 },
10641 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
10642 # Uses SHA-256.
10643 # The key size must be either 32 or 64 bytes.
10644 # Outputs a base64 encoded representation of the hashed output
10645 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
10646 # Currently, only string and integer values can be hashed.
10647 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
10648 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
10649 # a key encryption key (KEK) stored by KMS).
10650 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
10651 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
10652 # unwrap the data crypto key.
10653 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
10654 # leaking the key. Choose another type of key if possible.
10655 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
10656 },
10657 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
10658 # It will be discarded after the request finishes.
10659 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
10660 # This is an arbitrary string used to differentiate different keys.
10661 # A unique key is generated per name: two separate `TransientCryptoKey`
10662 # protos share the same generated key if their names are the same.
10663 # When the data crypto key is generated, this name is not used in any way
10664 # (repeating the api call will result in a different key being generated).
10665 },
10666 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
10667 # The wrapped key must be a 128/192/256 bit key.
10668 # Authorization requires the following IAM permissions when sending a request
10669 # to perform a crypto transformation using a kms-wrapped crypto key:
10670 # dlp.kms.encrypt
10671 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
10672 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
10673 },
10674 },
10675 },
10676 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
10677 # (FPE) with the FFX mode of operation; however when used in the
10678 # `ReidentifyContent` API method, it serves the opposite function by reversing
10679 # the surrogate back into the original identifier. The identifier must be
10680 # encoded as ASCII. For a given crypto key and context, the same identifier
10681 # will be replaced with the same surrogate. Identifiers must be at least two
10682 # characters long. In the case that the identifier is the empty string, it will
10683 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
10684 # more.
10685 #
10686 # Note: We recommend using CryptoDeterministicConfig for all use cases which
10687 # do not require preserving the input alphabet space and size, plus warrant
10688 # referential integrity.
10689 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
10690 # This annotation will be applied to the surrogate by prefixing it with
10691 # the name of the custom infoType followed by the number of
10692 # characters comprising the surrogate. The following scheme defines the
10693 # format: info_type_name(surrogate_character_count):surrogate
10694 #
10695 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
10696 # the surrogate is &#x27;abc&#x27;, the full replacement value
10697 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
10698 #
10699 # This annotation identifies the surrogate when inspecting content using the
10700 # custom infoType
10701 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
10702 # This facilitates reversal of the surrogate when it occurs in free text.
10703 #
10704 # In order for inspection to work properly, the name of this infoType must
10705 # not occur naturally anywhere in your data; otherwise, inspection may
10706 # find a surrogate that does not correspond to an actual identifier.
10707 # Therefore, choose your custom infoType name carefully after considering
10708 # what your data looks like. One way to select a name that has a high chance
10709 # of yielding reliable detection is to include one or more unicode characters
10710 # that are highly improbable to exist in your data.
10711 # For example, assuming your data is entered from a regular ASCII keyboard,
10712 # the symbol with the hex code point 29DD might be used like so:
10713 # ⧝MY_TOKEN_TYPE
10714 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
10715 # creating a CustomInfoType, or one of the names listed
10716 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
10717 # a built-in type. InfoType names should conform to the pattern
10718 # `[a-zA-Z0-9_]{1,64}`.
10719 },
10720 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
10721 # identifier in two different contexts won&#x27;t be given the same surrogate. If
10722 # the context is not set, a default tweak will be used.
10723 #
10724 # If the context is set but:
10725 #
10726 # 1. there is no record present when transforming a given value or
10727 # 1. the field is not present when transforming a given value,
10728 #
10729 # a default tweak will be used.
10730 #
10731 # Note that case (1) is expected when an `InfoTypeTransformation` is
10732 # applied to both structured and non-structured `ContentItem`s.
10733 # Currently, the referenced field may be of value type integer or string.
10734 #
10735 # The tweak is constructed as a sequence of bytes in big endian byte order
10736 # such that:
10737 #
10738 # - a 64 bit integer is encoded followed by a single byte of value 1
10739 # - a string is encoded in UTF-8 format followed by a single byte of value 2
10740 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
10741 },
10742 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
10743 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
10744 # a key encryption key (KEK) stored by KMS).
10745 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
10746 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
10747 # unwrap the data crypto key.
10748 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
10749 # leaking the key. Choose another type of key if possible.
10750 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
10751 },
10752 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
10753 # It will be discarded after the request finishes.
10754 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
10755 # This is an arbitrary string used to differentiate different keys.
10756 # A unique key is generated per name: two separate `TransientCryptoKey`
10757 # protos share the same generated key if their names are the same.
10758 # When the data crypto key is generated, this name is not used in any way
10759 # (repeating the api call will result in a different key being generated).
10760 },
10761 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
10762 # The wrapped key must be a 128/192/256 bit key.
10763 # Authorization requires the following IAM permissions when sending a request
10764 # to perform a crypto transformation using a kms-wrapped crypto key:
10765 # dlp.kms.encrypt
10766 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
10767 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
10768 },
10769 },
10770 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
10771 # that the FFX mode natively supports. This happens before/after
10772 # encryption/decryption.
10773 # Each character listed must appear only once.
10774 # Number of characters must be in the range [2, 95].
10775 # This must be encoded as ASCII.
10776 # The order of characters does not matter.
10777 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
10778 },
10779 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
10780 # input. Outputs a base64 encoded representation of the encrypted output.
10781 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
10782 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
10783 # This annotation will be applied to the surrogate by prefixing it with
10784 # the name of the custom info type followed by the number of
10785 # characters comprising the surrogate. The following scheme defines the
10786 # format: {info type name}({surrogate character count}):{surrogate}
10787 #
10788 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
10789 # the surrogate is &#x27;abc&#x27;, the full replacement value
10790 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
10791 #
10792 # This annotation identifies the surrogate when inspecting content using the
10793 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
10794 # surrogate when it occurs in free text.
10795 #
10796 # Note: For record transformations where the entire cell in a table is being
10797 # transformed, surrogates are not mandatory. Surrogates are used to denote
10798 # the location of the token and are necessary for re-identification in free
10799 # form text.
10800 #
10801 # In order for inspection to work properly, the name of this info type must
10802 # not occur naturally anywhere in your data; otherwise, inspection may either
10803 #
10804 # - reverse a surrogate that does not correspond to an actual identifier
10805 # - be unable to parse the surrogate and result in an error
10806 #
10807 # Therefore, choose your custom info type name carefully after considering
10808 # what your data looks like. One way to select a name that has a high chance
10809 # of yielding reliable detection is to include one or more unicode characters
10810 # that are highly improbable to exist in your data.
10811 # For example, assuming your data is entered from a regular ASCII keyboard,
10812 # the symbol with the hex code point 29DD might be used like so:
10813 # ⧝MY_TOKEN_TYPE.
10814 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
10815 # creating a CustomInfoType, or one of the names listed
10816 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
10817 # a built-in type. InfoType names should conform to the pattern
10818 # `[a-zA-Z0-9_]{1,64}`.
10819 },
10820 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
10821 # referential integrity such that the same identifier in two different
10822 # contexts will be given a distinct surrogate. The context is appended to
10823 # plaintext value being encrypted. On decryption the provided context is
10824 # validated against the value used during encryption. If a context was
10825 # provided during encryption, same context must be provided during decryption
10826 # as well.
10827 #
10828 # If the context is not set, plaintext would be used as is for encryption.
10829 # If the context is set but:
10830 #
10831 # 1. there is no record present when transforming a given value or
10832 # 2. the field is not present when transforming a given value,
10833 #
10834 # plaintext would be used as is for encryption.
10835 #
10836 # Note that case (1) is expected when an `InfoTypeTransformation` is
10837 # applied to both structured and non-structured `ContentItem`s.
10838 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
10839 },
10840 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
10841 # a key encryption key (KEK) stored by KMS).
10842 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
10843 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
10844 # unwrap the data crypto key.
10845 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
10846 # leaking the key. Choose another type of key if possible.
10847 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
10848 },
10849 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
10850 # It will be discarded after the request finishes.
10851 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
10852 # This is an arbitrary string used to differentiate different keys.
10853 # A unique key is generated per name: two separate `TransientCryptoKey`
10854 # protos share the same generated key if their names are the same.
10855 # When the data crypto key is generated, this name is not used in any way
10856 # (repeating the api call will result in a different key being generated).
10857 },
10858 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
10859 # The wrapped key must be a 128/192/256 bit key.
10860 # Authorization requires the following IAM permissions when sending a request
10861 # to perform a crypto transformation using a kms-wrapped crypto key:
10862 # dlp.kms.encrypt
10863 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
10864 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
10865 },
10866 },
10867 },
10868 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
10869 # replacement values are dynamically provided by the user for custom behavior,
10870 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
10871 # This can be used on
10872 # data of type: number, long, string, timestamp.
10873 # If the bound `Value` type differs from the type of data being transformed, we
10874 # will first attempt converting the type of the data to be transformed to match
10875 # the type of the bound before comparing.
10876 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
10877 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
10878 { # Bucket is represented as a range, along with replacement values.
10879 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
10880 # the default behavior will be to hyphenate the min-max range.
10881 # Note that for the purposes of inspection or transformation, the number
10882 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
10883 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
10884 # 123456789, the number of bytes would be counted as 9, even though an
10885 # int64 only holds up to 8 bytes of data.
10886 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
10887 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
10888 # and time zone are either specified elsewhere or are not significant. The date
10889 # is relative to the Proleptic Gregorian Calendar. This can represent:
10890 #
10891 # * A full date, with non-zero year, month and day values
10892 # * A month and day value, with a zero year, e.g. an anniversary
10893 # * A year on its own, with zero month and day values
10894 # * A year and month value, with a zero day, e.g. a credit card expiration date
10895 #
10896 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
10897 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
10898 # a year.
10899 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
10900 # month and day.
10901 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
10902 # if specifying a year by itself or a year and month where the day is not
10903 # significant.
10904 },
10905 &quot;stringValue&quot;: &quot;A String&quot;, # string
10906 &quot;integerValue&quot;: &quot;A String&quot;, # integer
10907 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
10908 # or are specified elsewhere. An API may choose to allow leap seconds. Related
10909 # types are google.type.Date and `google.protobuf.Timestamp`.
10910 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
10911 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
10912 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
10913 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
10914 # allow the value 60 if it allows leap-seconds.
10915 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
10916 },
10917 &quot;booleanValue&quot;: True or False, # boolean
10918 &quot;floatValue&quot;: 3.14, # float
10919 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
10920 },
10921 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
10922 # used.
10923 # Note that for the purposes of inspection or transformation, the number
10924 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
10925 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
10926 # 123456789, the number of bytes would be counted as 9, even though an
10927 # int64 only holds up to 8 bytes of data.
10928 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
10929 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
10930 # and time zone are either specified elsewhere or are not significant. The date
10931 # is relative to the Proleptic Gregorian Calendar. This can represent:
10932 #
10933 # * A full date, with non-zero year, month and day values
10934 # * A month and day value, with a zero year, e.g. an anniversary
10935 # * A year on its own, with zero month and day values
10936 # * A year and month value, with a zero day, e.g. a credit card expiration date
10937 #
10938 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
10939 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
10940 # a year.
10941 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
10942 # month and day.
10943 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
10944 # if specifying a year by itself or a year and month where the day is not
10945 # significant.
10946 },
10947 &quot;stringValue&quot;: &quot;A String&quot;, # string
10948 &quot;integerValue&quot;: &quot;A String&quot;, # integer
10949 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
10950 # or are specified elsewhere. An API may choose to allow leap seconds. Related
10951 # types are google.type.Date and `google.protobuf.Timestamp`.
10952 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
10953 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
10954 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
10955 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
10956 # allow the value 60 if it allows leap-seconds.
10957 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
10958 },
10959 &quot;booleanValue&quot;: True or False, # boolean
10960 &quot;floatValue&quot;: 3.14, # float
10961 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
10962 },
10963 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
10964 # Note that for the purposes of inspection or transformation, the number
10965 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
10966 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
10967 # 123456789, the number of bytes would be counted as 9, even though an
10968 # int64 only holds up to 8 bytes of data.
10969 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
10970 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
10971 # and time zone are either specified elsewhere or are not significant. The date
10972 # is relative to the Proleptic Gregorian Calendar. This can represent:
10973 #
10974 # * A full date, with non-zero year, month and day values
10975 # * A month and day value, with a zero year, e.g. an anniversary
10976 # * A year on its own, with zero month and day values
10977 # * A year and month value, with a zero day, e.g. a credit card expiration date
10978 #
10979 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
10980 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
10981 # a year.
10982 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
10983 # month and day.
10984 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
10985 # if specifying a year by itself or a year and month where the day is not
10986 # significant.
10987 },
10988 &quot;stringValue&quot;: &quot;A String&quot;, # string
10989 &quot;integerValue&quot;: &quot;A String&quot;, # integer
10990 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
10991 # or are specified elsewhere. An API may choose to allow leap seconds. Related
10992 # types are google.type.Date and `google.protobuf.Timestamp`.
10993 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
10994 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
10995 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
10996 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
10997 # allow the value 60 if it allows leap-seconds.
10998 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
10999 },
11000 &quot;booleanValue&quot;: True or False, # boolean
11001 &quot;floatValue&quot;: 3.14, # float
11002 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
11003 },
11004 },
11005 ],
11006 },
11007 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
11008 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
11009 # output would be &#x27;My phone number is &#x27;.
11010 },
11011 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
11012 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
11013 # Note that for the purposes of inspection or transformation, the number
11014 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
11015 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
11016 # 123456789, the number of bytes would be counted as 9, even though an
11017 # int64 only holds up to 8 bytes of data.
11018 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
11019 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
11020 # and time zone are either specified elsewhere or are not significant. The date
11021 # is relative to the Proleptic Gregorian Calendar. This can represent:
11022 #
11023 # * A full date, with non-zero year, month and day values
11024 # * A month and day value, with a zero year, e.g. an anniversary
11025 # * A year on its own, with zero month and day values
11026 # * A year and month value, with a zero day, e.g. a credit card expiration date
11027 #
11028 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
11029 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
11030 # a year.
11031 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
11032 # month and day.
11033 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
11034 # if specifying a year by itself or a year and month where the day is not
11035 # significant.
11036 },
11037 &quot;stringValue&quot;: &quot;A String&quot;, # string
11038 &quot;integerValue&quot;: &quot;A String&quot;, # integer
11039 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
11040 # or are specified elsewhere. An API may choose to allow leap seconds. Related
11041 # types are google.type.Date and `google.protobuf.Timestamp`.
11042 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
11043 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
11044 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
11045 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
11046 # allow the value 60 if it allows leap-seconds.
11047 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
11048 },
11049 &quot;booleanValue&quot;: True or False, # boolean
11050 &quot;floatValue&quot;: 3.14, # float
11051 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
11052 },
11053 },
11054 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
11055 # Bucketing transformation can provide all of this functionality,
11056 # but requires more configuration. This message is provided as a convenience to
11057 # the user for simple bucketing strategies.
11058 #
11059 # The transformed value will be a hyphenated string of
11060 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
11061 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
11062 #
11063 # This can be used on data of type: double, long.
11064 #
11065 # If the bound Value type differs from the type of data
11066 # being transformed, we will first attempt converting the type of the data to
11067 # be transformed to match the type of the bound before comparing.
11068 #
11069 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
11070 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
11071 # grouped together into a single bucket; for example if `upper_bound` = 89,
11072 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
11073 # Note that for the purposes of inspection or transformation, the number
11074 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
11075 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
11076 # 123456789, the number of bytes would be counted as 9, even though an
11077 # int64 only holds up to 8 bytes of data.
11078 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
11079 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
11080 # and time zone are either specified elsewhere or are not significant. The date
11081 # is relative to the Proleptic Gregorian Calendar. This can represent:
11082 #
11083 # * A full date, with non-zero year, month and day values
11084 # * A month and day value, with a zero year, e.g. an anniversary
11085 # * A year on its own, with zero month and day values
11086 # * A year and month value, with a zero day, e.g. a credit card expiration date
11087 #
11088 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
11089 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
11090 # a year.
11091 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
11092 # month and day.
11093 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
11094 # if specifying a year by itself or a year and month where the day is not
11095 # significant.
11096 },
11097 &quot;stringValue&quot;: &quot;A String&quot;, # string
11098 &quot;integerValue&quot;: &quot;A String&quot;, # integer
11099 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
11100 # or are specified elsewhere. An API may choose to allow leap seconds. Related
11101 # types are google.type.Date and `google.protobuf.Timestamp`.
11102 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
11103 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
11104 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
11105 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
11106 # allow the value 60 if it allows leap-seconds.
11107 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
11108 },
11109 &quot;booleanValue&quot;: True or False, # boolean
11110 &quot;floatValue&quot;: 3.14, # float
11111 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
11112 },
11113 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
11114 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
11115 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
11116 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
11117 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
11118 # grouped together into a single bucket; for example if `lower_bound` = 10,
11119 # then all values less than 10 are replaced with the value &quot;-10&quot;.
11120 # Note that for the purposes of inspection or transformation, the number
11121 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
11122 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
11123 # 123456789, the number of bytes would be counted as 9, even though an
11124 # int64 only holds up to 8 bytes of data.
11125 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
11126 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
11127 # and time zone are either specified elsewhere or are not significant. The date
11128 # is relative to the Proleptic Gregorian Calendar. This can represent:
11129 #
11130 # * A full date, with non-zero year, month and day values
11131 # * A month and day value, with a zero year, e.g. an anniversary
11132 # * A year on its own, with zero month and day values
11133 # * A year and month value, with a zero day, e.g. a credit card expiration date
11134 #
11135 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
11136 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
11137 # a year.
11138 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
11139 # month and day.
11140 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
11141 # if specifying a year by itself or a year and month where the day is not
11142 # significant.
11143 },
11144 &quot;stringValue&quot;: &quot;A String&quot;, # string
11145 &quot;integerValue&quot;: &quot;A String&quot;, # integer
11146 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
11147 # or are specified elsewhere. An API may choose to allow leap seconds. Related
11148 # types are google.type.Date and `google.protobuf.Timestamp`.
11149 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
11150 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
11151 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
11152 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
11153 # allow the value 60 if it allows leap-seconds.
11154 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
11155 },
11156 &quot;booleanValue&quot;: True or False, # boolean
11157 &quot;floatValue&quot;: 3.14, # float
11158 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
11159 },
11160 },
11161 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
11162 # fixed character. Masking can start from the beginning or end of the string.
11163 # This can be used on data of any type (numbers, longs, and so on) and when
11164 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
11165 # type. (This allows you to take a long like 123 and modify it to a string like
11166 # **3.
11167 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
11168 # characters. For example, if the input string is `555-555-5555` and you
11169 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
11170 # returns `***-**5-5555`.
11171 { # Characters to skip when doing deidentification of a value. These will be left
11172 # alone and skipped.
11173 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
11174 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
11175 # punctuation.
11176 },
11177 ],
11178 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
11179 # masked. Skipped characters do not count towards this tally.
11180 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
11181 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
11182 # code or credit card number. This string must have a length of 1. If not
11183 # supplied, this value defaults to `*` for strings, and `0` for digits.
11184 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
11185 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
11186 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
11187 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
11188 # is `true`, then the string `12345` is masked as `12***`.
11189 },
11190 },
11191 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
11192 # this transformation to apply to all findings that correspond to
11193 # infoTypes that were requested in `InspectConfig`.
11194 { # Type of information detected by the API.
11195 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
11196 # creating a CustomInfoType, or one of the names listed
11197 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
11198 # a built-in type. InfoType names should conform to the pattern
11199 # `[a-zA-Z0-9_]{1,64}`.
11200 },
11201 ],
11202 },
11203 ],
11204 },
Bu Sun Kim65020912020-05-20 12:08:20 -070011205 &quot;transformationErrorHandling&quot;: { # How to handle transformation errors during de-identification. A # Mode for handling transformation errors. If left unspecified, the default
11206 # mode is `TransformationErrorHandling.ThrowError`.
11207 # transformation error occurs when the requested transformation is incompatible
11208 # with the data. For example, trying to de-identify an IP address using a
11209 # `DateShift` transformation would result in a transformation error, since date
11210 # info cannot be extracted from an IP address.
11211 # Information about any incompatible transformations, and how they were
11212 # handled, is returned in the response as part of the
11213 # `TransformationOverviews`.
11214 &quot;throwError&quot;: { # Throw an error and fail the request when a transformation error occurs. # Throw an error
11215 },
11216 &quot;leaveUntransformed&quot;: { # Skips the data without modifying it if the requested transformation would # Ignore errors
11217 # cause an error. For example, if a `DateShift` transformation were applied
11218 # an an IP address, this mode would leave the IP address unchanged in the
11219 # response.
11220 },
11221 },
11222 &quot;recordTransformations&quot;: { # A type of transformation that is applied over structured data such as a # Treat the dataset as structured. Transformations can be applied to
11223 # specific locations within structured datasets, such as transforming
11224 # a column within a table.
11225 # table.
Bu Sun Kim65020912020-05-20 12:08:20 -070011226 &quot;fieldTransformations&quot;: [ # Transform the record by applying various field transformations.
11227 { # The transformation to apply to the field.
11228 &quot;fields&quot;: [ # Required. Input field(s) to apply the transformation to.
11229 { # General identifier of a data field in a storage service.
11230 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
11231 },
11232 ],
11233 &quot;infoTypeTransformations&quot;: { # A type of transformation that will scan unstructured text and # Treat the contents of the field as free text, and selectively
11234 # transform content that matches an `InfoType`.
11235 # apply various `PrimitiveTransformation`s to each finding, where the
11236 # transformation is applied to only values that were identified as a specific
11237 # info_type.
11238 &quot;transformations&quot;: [ # Required. Transformation for each infoType. Cannot specify more than one
11239 # for a given infoType.
11240 { # A transformation to apply to text that is identified as a specific
11241 # info_type.
Bu Sun Kim65020912020-05-20 12:08:20 -070011242 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Required. Primitive transformation to apply to the infoType.
11243 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
11244 # portion of the value.
11245 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
11246 },
11247 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
11248 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
11249 # to learn more.
11250 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
11251 # If set, must also set cryptoKey. If set, shift will be consistent for the
11252 # given context.
11253 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
11254 },
11255 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
11256 # range (inclusive ends). Negative means shift to earlier in time. Must not
11257 # be more than 365250 days (1000 years) each direction.
11258 #
11259 # For example, 3 means shift date to at most 3 days into the future.
11260 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
11261 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
11262 # results in the same shift for the same context and crypto_key. If
11263 # set, must also set context. Can only be applied to table items.
11264 # a key encryption key (KEK) stored by KMS).
11265 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
11266 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
11267 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -070011268 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
11269 # leaking the key. Choose another type of key if possible.
11270 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
11271 },
11272 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
11273 # It will be discarded after the request finishes.
11274 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
11275 # This is an arbitrary string used to differentiate different keys.
11276 # A unique key is generated per name: two separate `TransientCryptoKey`
11277 # protos share the same generated key if their names are the same.
11278 # When the data crypto key is generated, this name is not used in any way
11279 # (repeating the api call will result in a different key being generated).
11280 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011281 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
11282 # The wrapped key must be a 128/192/256 bit key.
11283 # Authorization requires the following IAM permissions when sending a request
11284 # to perform a crypto transformation using a kms-wrapped crypto key:
11285 # dlp.kms.encrypt
11286 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
11287 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
11288 },
Bu Sun Kim65020912020-05-20 12:08:20 -070011289 },
11290 },
11291 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
11292 },
11293 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
11294 # Uses SHA-256.
11295 # The key size must be either 32 or 64 bytes.
11296 # Outputs a base64 encoded representation of the hashed output
11297 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
11298 # Currently, only string and integer values can be hashed.
11299 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
11300 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
11301 # a key encryption key (KEK) stored by KMS).
11302 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
11303 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
11304 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -070011305 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
11306 # leaking the key. Choose another type of key if possible.
11307 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
11308 },
11309 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
11310 # It will be discarded after the request finishes.
11311 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
11312 # This is an arbitrary string used to differentiate different keys.
11313 # A unique key is generated per name: two separate `TransientCryptoKey`
11314 # protos share the same generated key if their names are the same.
11315 # When the data crypto key is generated, this name is not used in any way
11316 # (repeating the api call will result in a different key being generated).
11317 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011318 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
11319 # The wrapped key must be a 128/192/256 bit key.
11320 # Authorization requires the following IAM permissions when sending a request
11321 # to perform a crypto transformation using a kms-wrapped crypto key:
11322 # dlp.kms.encrypt
11323 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
11324 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
11325 },
Bu Sun Kim65020912020-05-20 12:08:20 -070011326 },
11327 },
11328 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
11329 # (FPE) with the FFX mode of operation; however when used in the
11330 # `ReidentifyContent` API method, it serves the opposite function by reversing
11331 # the surrogate back into the original identifier. The identifier must be
11332 # encoded as ASCII. For a given crypto key and context, the same identifier
11333 # will be replaced with the same surrogate. Identifiers must be at least two
11334 # characters long. In the case that the identifier is the empty string, it will
11335 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
11336 # more.
11337 #
11338 # Note: We recommend using CryptoDeterministicConfig for all use cases which
11339 # do not require preserving the input alphabet space and size, plus warrant
11340 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -070011341 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
11342 # This annotation will be applied to the surrogate by prefixing it with
11343 # the name of the custom infoType followed by the number of
11344 # characters comprising the surrogate. The following scheme defines the
11345 # format: info_type_name(surrogate_character_count):surrogate
11346 #
11347 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
11348 # the surrogate is &#x27;abc&#x27;, the full replacement value
11349 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
11350 #
11351 # This annotation identifies the surrogate when inspecting content using the
11352 # custom infoType
11353 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
11354 # This facilitates reversal of the surrogate when it occurs in free text.
11355 #
11356 # In order for inspection to work properly, the name of this infoType must
11357 # not occur naturally anywhere in your data; otherwise, inspection may
11358 # find a surrogate that does not correspond to an actual identifier.
11359 # Therefore, choose your custom infoType name carefully after considering
11360 # what your data looks like. One way to select a name that has a high chance
11361 # of yielding reliable detection is to include one or more unicode characters
11362 # that are highly improbable to exist in your data.
11363 # For example, assuming your data is entered from a regular ASCII keyboard,
11364 # the symbol with the hex code point 29DD might be used like so:
11365 # ⧝MY_TOKEN_TYPE
11366 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
11367 # creating a CustomInfoType, or one of the names listed
11368 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
11369 # a built-in type. InfoType names should conform to the pattern
11370 # `[a-zA-Z0-9_]{1,64}`.
11371 },
11372 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
11373 # identifier in two different contexts won&#x27;t be given the same surrogate. If
11374 # the context is not set, a default tweak will be used.
11375 #
11376 # If the context is set but:
11377 #
11378 # 1. there is no record present when transforming a given value or
11379 # 1. the field is not present when transforming a given value,
11380 #
11381 # a default tweak will be used.
11382 #
11383 # Note that case (1) is expected when an `InfoTypeTransformation` is
11384 # applied to both structured and non-structured `ContentItem`s.
11385 # Currently, the referenced field may be of value type integer or string.
11386 #
11387 # The tweak is constructed as a sequence of bytes in big endian byte order
11388 # such that:
11389 #
11390 # - a 64 bit integer is encoded followed by a single byte of value 1
11391 # - a string is encoded in UTF-8 format followed by a single byte of value 2
11392 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
11393 },
11394 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
11395 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
11396 # a key encryption key (KEK) stored by KMS).
11397 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
11398 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
11399 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -070011400 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
11401 # leaking the key. Choose another type of key if possible.
11402 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
11403 },
11404 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
11405 # It will be discarded after the request finishes.
11406 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
11407 # This is an arbitrary string used to differentiate different keys.
11408 # A unique key is generated per name: two separate `TransientCryptoKey`
11409 # protos share the same generated key if their names are the same.
11410 # When the data crypto key is generated, this name is not used in any way
11411 # (repeating the api call will result in a different key being generated).
11412 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011413 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
11414 # The wrapped key must be a 128/192/256 bit key.
11415 # Authorization requires the following IAM permissions when sending a request
11416 # to perform a crypto transformation using a kms-wrapped crypto key:
11417 # dlp.kms.encrypt
11418 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
11419 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
11420 },
Bu Sun Kim65020912020-05-20 12:08:20 -070011421 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011422 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
11423 # that the FFX mode natively supports. This happens before/after
11424 # encryption/decryption.
11425 # Each character listed must appear only once.
11426 # Number of characters must be in the range [2, 95].
11427 # This must be encoded as ASCII.
11428 # The order of characters does not matter.
11429 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -070011430 },
11431 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
11432 # input. Outputs a base64 encoded representation of the encrypted output.
11433 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
11434 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
11435 # This annotation will be applied to the surrogate by prefixing it with
11436 # the name of the custom info type followed by the number of
11437 # characters comprising the surrogate. The following scheme defines the
11438 # format: {info type name}({surrogate character count}):{surrogate}
11439 #
11440 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
11441 # the surrogate is &#x27;abc&#x27;, the full replacement value
11442 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
11443 #
11444 # This annotation identifies the surrogate when inspecting content using the
11445 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
11446 # surrogate when it occurs in free text.
11447 #
11448 # Note: For record transformations where the entire cell in a table is being
11449 # transformed, surrogates are not mandatory. Surrogates are used to denote
11450 # the location of the token and are necessary for re-identification in free
11451 # form text.
11452 #
11453 # In order for inspection to work properly, the name of this info type must
11454 # not occur naturally anywhere in your data; otherwise, inspection may either
11455 #
11456 # - reverse a surrogate that does not correspond to an actual identifier
11457 # - be unable to parse the surrogate and result in an error
11458 #
11459 # Therefore, choose your custom info type name carefully after considering
11460 # what your data looks like. One way to select a name that has a high chance
11461 # of yielding reliable detection is to include one or more unicode characters
11462 # that are highly improbable to exist in your data.
11463 # For example, assuming your data is entered from a regular ASCII keyboard,
11464 # the symbol with the hex code point 29DD might be used like so:
11465 # ⧝MY_TOKEN_TYPE.
11466 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
11467 # creating a CustomInfoType, or one of the names listed
11468 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
11469 # a built-in type. InfoType names should conform to the pattern
11470 # `[a-zA-Z0-9_]{1,64}`.
11471 },
11472 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
11473 # referential integrity such that the same identifier in two different
11474 # contexts will be given a distinct surrogate. The context is appended to
11475 # plaintext value being encrypted. On decryption the provided context is
11476 # validated against the value used during encryption. If a context was
11477 # provided during encryption, same context must be provided during decryption
11478 # as well.
11479 #
11480 # If the context is not set, plaintext would be used as is for encryption.
11481 # If the context is set but:
11482 #
11483 # 1. there is no record present when transforming a given value or
11484 # 2. the field is not present when transforming a given value,
11485 #
11486 # plaintext would be used as is for encryption.
11487 #
11488 # Note that case (1) is expected when an `InfoTypeTransformation` is
11489 # applied to both structured and non-structured `ContentItem`s.
11490 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
11491 },
11492 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
11493 # a key encryption key (KEK) stored by KMS).
11494 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
11495 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
11496 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -070011497 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
11498 # leaking the key. Choose another type of key if possible.
11499 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
11500 },
11501 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
11502 # It will be discarded after the request finishes.
11503 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
11504 # This is an arbitrary string used to differentiate different keys.
11505 # A unique key is generated per name: two separate `TransientCryptoKey`
11506 # protos share the same generated key if their names are the same.
11507 # When the data crypto key is generated, this name is not used in any way
11508 # (repeating the api call will result in a different key being generated).
11509 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011510 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
11511 # The wrapped key must be a 128/192/256 bit key.
11512 # Authorization requires the following IAM permissions when sending a request
11513 # to perform a crypto transformation using a kms-wrapped crypto key:
11514 # dlp.kms.encrypt
11515 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
11516 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
11517 },
Bu Sun Kim65020912020-05-20 12:08:20 -070011518 },
11519 },
Bu Sun Kim65020912020-05-20 12:08:20 -070011520 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
11521 # replacement values are dynamically provided by the user for custom behavior,
11522 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
11523 # This can be used on
11524 # data of type: number, long, string, timestamp.
11525 # If the bound `Value` type differs from the type of data being transformed, we
11526 # will first attempt converting the type of the data to be transformed to match
11527 # the type of the bound before comparing.
11528 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
11529 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
11530 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -070011531 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
11532 # the default behavior will be to hyphenate the min-max range.
11533 # Note that for the purposes of inspection or transformation, the number
11534 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
11535 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
11536 # 123456789, the number of bytes would be counted as 9, even though an
11537 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -070011538 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
11539 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
11540 # and time zone are either specified elsewhere or are not significant. The date
11541 # is relative to the Proleptic Gregorian Calendar. This can represent:
11542 #
11543 # * A full date, with non-zero year, month and day values
11544 # * A month and day value, with a zero year, e.g. an anniversary
11545 # * A year on its own, with zero month and day values
11546 # * A year and month value, with a zero day, e.g. a credit card expiration date
11547 #
11548 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
11549 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
11550 # a year.
11551 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
11552 # month and day.
11553 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
11554 # if specifying a year by itself or a year and month where the day is not
11555 # significant.
11556 },
11557 &quot;stringValue&quot;: &quot;A String&quot;, # string
11558 &quot;integerValue&quot;: &quot;A String&quot;, # integer
11559 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
11560 # or are specified elsewhere. An API may choose to allow leap seconds. Related
11561 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -070011562 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
11563 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
11564 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011565 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
11566 # allow the value 60 if it allows leap-seconds.
11567 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -070011568 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011569 &quot;booleanValue&quot;: True or False, # boolean
11570 &quot;floatValue&quot;: 3.14, # float
11571 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
11572 },
11573 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
11574 # used.
11575 # Note that for the purposes of inspection or transformation, the number
11576 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
11577 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
11578 # 123456789, the number of bytes would be counted as 9, even though an
11579 # int64 only holds up to 8 bytes of data.
11580 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
11581 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
11582 # and time zone are either specified elsewhere or are not significant. The date
11583 # is relative to the Proleptic Gregorian Calendar. This can represent:
11584 #
11585 # * A full date, with non-zero year, month and day values
11586 # * A month and day value, with a zero year, e.g. an anniversary
11587 # * A year on its own, with zero month and day values
11588 # * A year and month value, with a zero day, e.g. a credit card expiration date
11589 #
11590 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
11591 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
11592 # a year.
11593 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
11594 # month and day.
11595 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
11596 # if specifying a year by itself or a year and month where the day is not
11597 # significant.
11598 },
11599 &quot;stringValue&quot;: &quot;A String&quot;, # string
11600 &quot;integerValue&quot;: &quot;A String&quot;, # integer
11601 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
11602 # or are specified elsewhere. An API may choose to allow leap seconds. Related
11603 # types are google.type.Date and `google.protobuf.Timestamp`.
11604 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
11605 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
11606 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
11607 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
11608 # allow the value 60 if it allows leap-seconds.
11609 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
11610 },
11611 &quot;booleanValue&quot;: True or False, # boolean
11612 &quot;floatValue&quot;: 3.14, # float
11613 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
11614 },
11615 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
11616 # Note that for the purposes of inspection or transformation, the number
11617 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
11618 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
11619 # 123456789, the number of bytes would be counted as 9, even though an
11620 # int64 only holds up to 8 bytes of data.
11621 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
11622 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
11623 # and time zone are either specified elsewhere or are not significant. The date
11624 # is relative to the Proleptic Gregorian Calendar. This can represent:
11625 #
11626 # * A full date, with non-zero year, month and day values
11627 # * A month and day value, with a zero year, e.g. an anniversary
11628 # * A year on its own, with zero month and day values
11629 # * A year and month value, with a zero day, e.g. a credit card expiration date
11630 #
11631 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
11632 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
11633 # a year.
11634 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
11635 # month and day.
11636 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
11637 # if specifying a year by itself or a year and month where the day is not
11638 # significant.
11639 },
11640 &quot;stringValue&quot;: &quot;A String&quot;, # string
11641 &quot;integerValue&quot;: &quot;A String&quot;, # integer
11642 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
11643 # or are specified elsewhere. An API may choose to allow leap seconds. Related
11644 # types are google.type.Date and `google.protobuf.Timestamp`.
11645 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
11646 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
11647 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
11648 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
11649 # allow the value 60 if it allows leap-seconds.
11650 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
11651 },
11652 &quot;booleanValue&quot;: True or False, # boolean
11653 &quot;floatValue&quot;: 3.14, # float
11654 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070011655 },
11656 },
11657 ],
11658 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011659 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
11660 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
11661 # output would be &#x27;My phone number is &#x27;.
11662 },
Bu Sun Kim65020912020-05-20 12:08:20 -070011663 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
11664 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
11665 # Note that for the purposes of inspection or transformation, the number
11666 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
11667 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
11668 # 123456789, the number of bytes would be counted as 9, even though an
11669 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -070011670 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
11671 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
11672 # and time zone are either specified elsewhere or are not significant. The date
11673 # is relative to the Proleptic Gregorian Calendar. This can represent:
11674 #
11675 # * A full date, with non-zero year, month and day values
11676 # * A month and day value, with a zero year, e.g. an anniversary
11677 # * A year on its own, with zero month and day values
11678 # * A year and month value, with a zero day, e.g. a credit card expiration date
11679 #
11680 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
11681 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
11682 # a year.
11683 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
11684 # month and day.
11685 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
11686 # if specifying a year by itself or a year and month where the day is not
11687 # significant.
11688 },
11689 &quot;stringValue&quot;: &quot;A String&quot;, # string
11690 &quot;integerValue&quot;: &quot;A String&quot;, # integer
11691 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
11692 # or are specified elsewhere. An API may choose to allow leap seconds. Related
11693 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -070011694 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
11695 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
11696 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011697 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
11698 # allow the value 60 if it allows leap-seconds.
11699 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -070011700 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011701 &quot;booleanValue&quot;: True or False, # boolean
11702 &quot;floatValue&quot;: 3.14, # float
11703 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070011704 },
11705 },
Bu Sun Kim65020912020-05-20 12:08:20 -070011706 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
11707 # Bucketing transformation can provide all of this functionality,
11708 # but requires more configuration. This message is provided as a convenience to
11709 # the user for simple bucketing strategies.
11710 #
11711 # The transformed value will be a hyphenated string of
11712 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
11713 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
11714 #
11715 # This can be used on data of type: double, long.
11716 #
11717 # If the bound Value type differs from the type of data
11718 # being transformed, we will first attempt converting the type of the data to
11719 # be transformed to match the type of the bound before comparing.
11720 #
11721 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -070011722 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
11723 # grouped together into a single bucket; for example if `upper_bound` = 89,
11724 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
11725 # Note that for the purposes of inspection or transformation, the number
11726 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
11727 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
11728 # 123456789, the number of bytes would be counted as 9, even though an
11729 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -070011730 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
11731 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
11732 # and time zone are either specified elsewhere or are not significant. The date
11733 # is relative to the Proleptic Gregorian Calendar. This can represent:
11734 #
11735 # * A full date, with non-zero year, month and day values
11736 # * A month and day value, with a zero year, e.g. an anniversary
11737 # * A year on its own, with zero month and day values
11738 # * A year and month value, with a zero day, e.g. a credit card expiration date
11739 #
11740 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
11741 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
11742 # a year.
11743 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
11744 # month and day.
11745 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
11746 # if specifying a year by itself or a year and month where the day is not
11747 # significant.
11748 },
11749 &quot;stringValue&quot;: &quot;A String&quot;, # string
11750 &quot;integerValue&quot;: &quot;A String&quot;, # integer
11751 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
11752 # or are specified elsewhere. An API may choose to allow leap seconds. Related
11753 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -070011754 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
11755 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
11756 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011757 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
11758 # allow the value 60 if it allows leap-seconds.
11759 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -070011760 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011761 &quot;booleanValue&quot;: True or False, # boolean
11762 &quot;floatValue&quot;: 3.14, # float
11763 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070011764 },
11765 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
11766 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
11767 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
11768 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011769 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
11770 # grouped together into a single bucket; for example if `lower_bound` = 10,
11771 # then all values less than 10 are replaced with the value &quot;-10&quot;.
11772 # Note that for the purposes of inspection or transformation, the number
11773 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
11774 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
11775 # 123456789, the number of bytes would be counted as 9, even though an
11776 # int64 only holds up to 8 bytes of data.
11777 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
11778 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
11779 # and time zone are either specified elsewhere or are not significant. The date
11780 # is relative to the Proleptic Gregorian Calendar. This can represent:
11781 #
11782 # * A full date, with non-zero year, month and day values
11783 # * A month and day value, with a zero year, e.g. an anniversary
11784 # * A year on its own, with zero month and day values
11785 # * A year and month value, with a zero day, e.g. a credit card expiration date
11786 #
11787 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
11788 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
11789 # a year.
11790 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
11791 # month and day.
11792 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
11793 # if specifying a year by itself or a year and month where the day is not
11794 # significant.
11795 },
11796 &quot;stringValue&quot;: &quot;A String&quot;, # string
11797 &quot;integerValue&quot;: &quot;A String&quot;, # integer
11798 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
11799 # or are specified elsewhere. An API may choose to allow leap seconds. Related
11800 # types are google.type.Date and `google.protobuf.Timestamp`.
11801 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
11802 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
11803 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
11804 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
11805 # allow the value 60 if it allows leap-seconds.
11806 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
11807 },
11808 &quot;booleanValue&quot;: True or False, # boolean
11809 &quot;floatValue&quot;: 3.14, # float
11810 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
11811 },
11812 },
11813 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
11814 # fixed character. Masking can start from the beginning or end of the string.
11815 # This can be used on data of any type (numbers, longs, and so on) and when
11816 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
11817 # type. (This allows you to take a long like 123 and modify it to a string like
11818 # **3.
11819 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
11820 # characters. For example, if the input string is `555-555-5555` and you
11821 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
11822 # returns `***-**5-5555`.
11823 { # Characters to skip when doing deidentification of a value. These will be left
11824 # alone and skipped.
11825 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
11826 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
11827 # punctuation.
11828 },
11829 ],
11830 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
11831 # masked. Skipped characters do not count towards this tally.
11832 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
11833 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
11834 # code or credit card number. This string must have a length of 1. If not
11835 # supplied, this value defaults to `*` for strings, and `0` for digits.
11836 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
11837 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
11838 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
11839 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
11840 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -070011841 },
11842 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011843 &quot;infoTypes&quot;: [ # InfoTypes to apply the transformation to. An empty list will cause
11844 # this transformation to apply to all findings that correspond to
11845 # infoTypes that were requested in `InspectConfig`.
11846 { # Type of information detected by the API.
11847 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
11848 # creating a CustomInfoType, or one of the names listed
11849 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
11850 # a built-in type. InfoType names should conform to the pattern
11851 # `[a-zA-Z0-9_]{1,64}`.
11852 },
11853 ],
Bu Sun Kim65020912020-05-20 12:08:20 -070011854 },
11855 ],
11856 },
11857 &quot;primitiveTransformation&quot;: { # A rule for transforming a value. # Apply the transformation to the entire field.
11858 &quot;timePartConfig&quot;: { # For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a # Time extraction
11859 # portion of the value.
11860 &quot;partToExtract&quot;: &quot;A String&quot;, # The part of the time to keep.
11861 },
11862 &quot;dateShiftConfig&quot;: { # Shifts dates by random number of days, with option to be consistent for the # Date Shift
11863 # same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting
11864 # to learn more.
11865 &quot;context&quot;: { # General identifier of a data field in a storage service. # Points to the field that contains the context, for example, an entity id.
11866 # If set, must also set cryptoKey. If set, shift will be consistent for the
11867 # given context.
11868 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
11869 },
11870 &quot;upperBoundDays&quot;: 42, # Required. Range of shift in days. Actual shift will be selected at random within this
11871 # range (inclusive ends). Negative means shift to earlier in time. Must not
11872 # be more than 365250 days (1000 years) each direction.
11873 #
11874 # For example, 3 means shift date to at most 3 days into the future.
11875 &quot;lowerBoundDays&quot;: 42, # Required. For example, -5 means shift date to at most 5 days back in the past.
11876 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Causes the shift to be computed based on this key and the context. This
11877 # results in the same shift for the same context and crypto_key. If
11878 # set, must also set context. Can only be applied to table items.
11879 # a key encryption key (KEK) stored by KMS).
11880 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
11881 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
11882 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -070011883 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
11884 # leaking the key. Choose another type of key if possible.
11885 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
11886 },
11887 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
11888 # It will be discarded after the request finishes.
11889 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
11890 # This is an arbitrary string used to differentiate different keys.
11891 # A unique key is generated per name: two separate `TransientCryptoKey`
11892 # protos share the same generated key if their names are the same.
11893 # When the data crypto key is generated, this name is not used in any way
11894 # (repeating the api call will result in a different key being generated).
11895 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011896 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
11897 # The wrapped key must be a 128/192/256 bit key.
11898 # Authorization requires the following IAM permissions when sending a request
11899 # to perform a crypto transformation using a kms-wrapped crypto key:
11900 # dlp.kms.encrypt
11901 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
11902 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
11903 },
Bu Sun Kim65020912020-05-20 12:08:20 -070011904 },
11905 },
11906 &quot;replaceWithInfoTypeConfig&quot;: { # Replace each matching finding with the name of the info_type. # Replace with infotype
11907 },
11908 &quot;cryptoHashConfig&quot;: { # Pseudonymization method that generates surrogates via cryptographic hashing. # Crypto
11909 # Uses SHA-256.
11910 # The key size must be either 32 or 64 bytes.
11911 # Outputs a base64 encoded representation of the hashed output
11912 # (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
11913 # Currently, only string and integer values can be hashed.
11914 # See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
11915 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the hash function.
11916 # a key encryption key (KEK) stored by KMS).
11917 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
11918 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
11919 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -070011920 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
11921 # leaking the key. Choose another type of key if possible.
11922 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
11923 },
11924 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
11925 # It will be discarded after the request finishes.
11926 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
11927 # This is an arbitrary string used to differentiate different keys.
11928 # A unique key is generated per name: two separate `TransientCryptoKey`
11929 # protos share the same generated key if their names are the same.
11930 # When the data crypto key is generated, this name is not used in any way
11931 # (repeating the api call will result in a different key being generated).
11932 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070011933 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
11934 # The wrapped key must be a 128/192/256 bit key.
11935 # Authorization requires the following IAM permissions when sending a request
11936 # to perform a crypto transformation using a kms-wrapped crypto key:
11937 # dlp.kms.encrypt
11938 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
11939 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
11940 },
Bu Sun Kim65020912020-05-20 12:08:20 -070011941 },
11942 },
11943 &quot;cryptoReplaceFfxFpeConfig&quot;: { # Replaces an identifier with a surrogate using Format Preserving Encryption # Ffx-Fpe
11944 # (FPE) with the FFX mode of operation; however when used in the
11945 # `ReidentifyContent` API method, it serves the opposite function by reversing
11946 # the surrogate back into the original identifier. The identifier must be
11947 # encoded as ASCII. For a given crypto key and context, the same identifier
11948 # will be replaced with the same surrogate. Identifiers must be at least two
11949 # characters long. In the case that the identifier is the empty string, it will
11950 # be skipped. See https://cloud.google.com/dlp/docs/pseudonymization to learn
11951 # more.
11952 #
11953 # Note: We recommend using CryptoDeterministicConfig for all use cases which
11954 # do not require preserving the input alphabet space and size, plus warrant
11955 # referential integrity.
Bu Sun Kim65020912020-05-20 12:08:20 -070011956 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom infoType to annotate the surrogate with.
11957 # This annotation will be applied to the surrogate by prefixing it with
11958 # the name of the custom infoType followed by the number of
11959 # characters comprising the surrogate. The following scheme defines the
11960 # format: info_type_name(surrogate_character_count):surrogate
11961 #
11962 # For example, if the name of custom infoType is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
11963 # the surrogate is &#x27;abc&#x27;, the full replacement value
11964 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
11965 #
11966 # This annotation identifies the surrogate when inspecting content using the
11967 # custom infoType
11968 # [`SurrogateType`](/dlp/docs/reference/rest/v2/InspectConfig#surrogatetype).
11969 # This facilitates reversal of the surrogate when it occurs in free text.
11970 #
11971 # In order for inspection to work properly, the name of this infoType must
11972 # not occur naturally anywhere in your data; otherwise, inspection may
11973 # find a surrogate that does not correspond to an actual identifier.
11974 # Therefore, choose your custom infoType name carefully after considering
11975 # what your data looks like. One way to select a name that has a high chance
11976 # of yielding reliable detection is to include one or more unicode characters
11977 # that are highly improbable to exist in your data.
11978 # For example, assuming your data is entered from a regular ASCII keyboard,
11979 # the symbol with the hex code point 29DD might be used like so:
11980 # ⧝MY_TOKEN_TYPE
11981 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
11982 # creating a CustomInfoType, or one of the names listed
11983 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
11984 # a built-in type. InfoType names should conform to the pattern
11985 # `[a-zA-Z0-9_]{1,64}`.
11986 },
11987 &quot;context&quot;: { # General identifier of a data field in a storage service. # The &#x27;tweak&#x27;, a context may be used for higher security since the same
11988 # identifier in two different contexts won&#x27;t be given the same surrogate. If
11989 # the context is not set, a default tweak will be used.
11990 #
11991 # If the context is set but:
11992 #
11993 # 1. there is no record present when transforming a given value or
11994 # 1. the field is not present when transforming a given value,
11995 #
11996 # a default tweak will be used.
11997 #
11998 # Note that case (1) is expected when an `InfoTypeTransformation` is
11999 # applied to both structured and non-structured `ContentItem`s.
12000 # Currently, the referenced field may be of value type integer or string.
12001 #
12002 # The tweak is constructed as a sequence of bytes in big endian byte order
12003 # such that:
12004 #
12005 # - a 64 bit integer is encoded followed by a single byte of value 1
12006 # - a string is encoded in UTF-8 format followed by a single byte of value 2
12007 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
12008 },
12009 &quot;radix&quot;: 42, # The native way to select the alphabet. Must be in the range [2, 95].
12010 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # Required. The key used by the encryption algorithm.
12011 # a key encryption key (KEK) stored by KMS).
12012 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
12013 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
12014 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -070012015 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
12016 # leaking the key. Choose another type of key if possible.
12017 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
12018 },
12019 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
12020 # It will be discarded after the request finishes.
12021 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
12022 # This is an arbitrary string used to differentiate different keys.
12023 # A unique key is generated per name: two separate `TransientCryptoKey`
12024 # protos share the same generated key if their names are the same.
12025 # When the data crypto key is generated, this name is not used in any way
12026 # (repeating the api call will result in a different key being generated).
12027 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012028 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
12029 # The wrapped key must be a 128/192/256 bit key.
12030 # Authorization requires the following IAM permissions when sending a request
12031 # to perform a crypto transformation using a kms-wrapped crypto key:
12032 # dlp.kms.encrypt
12033 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
12034 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
12035 },
Bu Sun Kim65020912020-05-20 12:08:20 -070012036 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012037 &quot;customAlphabet&quot;: &quot;A String&quot;, # This is supported by mapping these to the alphanumeric characters
12038 # that the FFX mode natively supports. This happens before/after
12039 # encryption/decryption.
12040 # Each character listed must appear only once.
12041 # Number of characters must be in the range [2, 95].
12042 # This must be encoded as ASCII.
12043 # The order of characters does not matter.
12044 &quot;commonAlphabet&quot;: &quot;A String&quot;, # Common alphabets.
Bu Sun Kim65020912020-05-20 12:08:20 -070012045 },
12046 &quot;cryptoDeterministicConfig&quot;: { # Pseudonymization method that generates deterministic encryption for the given # Deterministic Crypto
12047 # input. Outputs a base64 encoded representation of the encrypted output.
12048 # Uses AES-SIV based on the RFC https://tools.ietf.org/html/rfc5297.
12049 &quot;surrogateInfoType&quot;: { # Type of information detected by the API. # The custom info type to annotate the surrogate with.
12050 # This annotation will be applied to the surrogate by prefixing it with
12051 # the name of the custom info type followed by the number of
12052 # characters comprising the surrogate. The following scheme defines the
12053 # format: {info type name}({surrogate character count}):{surrogate}
12054 #
12055 # For example, if the name of custom info type is &#x27;MY_TOKEN_INFO_TYPE&#x27; and
12056 # the surrogate is &#x27;abc&#x27;, the full replacement value
12057 # will be: &#x27;MY_TOKEN_INFO_TYPE(3):abc&#x27;
12058 #
12059 # This annotation identifies the surrogate when inspecting content using the
12060 # custom info type &#x27;Surrogate&#x27;. This facilitates reversal of the
12061 # surrogate when it occurs in free text.
12062 #
12063 # Note: For record transformations where the entire cell in a table is being
12064 # transformed, surrogates are not mandatory. Surrogates are used to denote
12065 # the location of the token and are necessary for re-identification in free
12066 # form text.
12067 #
12068 # In order for inspection to work properly, the name of this info type must
12069 # not occur naturally anywhere in your data; otherwise, inspection may either
12070 #
12071 # - reverse a surrogate that does not correspond to an actual identifier
12072 # - be unable to parse the surrogate and result in an error
12073 #
12074 # Therefore, choose your custom info type name carefully after considering
12075 # what your data looks like. One way to select a name that has a high chance
12076 # of yielding reliable detection is to include one or more unicode characters
12077 # that are highly improbable to exist in your data.
12078 # For example, assuming your data is entered from a regular ASCII keyboard,
12079 # the symbol with the hex code point 29DD might be used like so:
12080 # ⧝MY_TOKEN_TYPE.
12081 &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when
12082 # creating a CustomInfoType, or one of the names listed
12083 # at https://cloud.google.com/dlp/docs/infotypes-reference when specifying
12084 # a built-in type. InfoType names should conform to the pattern
12085 # `[a-zA-Z0-9_]{1,64}`.
12086 },
12087 &quot;context&quot;: { # General identifier of a data field in a storage service. # A context may be used for higher security and maintaining
12088 # referential integrity such that the same identifier in two different
12089 # contexts will be given a distinct surrogate. The context is appended to
12090 # plaintext value being encrypted. On decryption the provided context is
12091 # validated against the value used during encryption. If a context was
12092 # provided during encryption, same context must be provided during decryption
12093 # as well.
12094 #
12095 # If the context is not set, plaintext would be used as is for encryption.
12096 # If the context is set but:
12097 #
12098 # 1. there is no record present when transforming a given value or
12099 # 2. the field is not present when transforming a given value,
12100 #
12101 # plaintext would be used as is for encryption.
12102 #
12103 # Note that case (1) is expected when an `InfoTypeTransformation` is
12104 # applied to both structured and non-structured `ContentItem`s.
12105 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
12106 },
12107 &quot;cryptoKey&quot;: { # This is a data encryption key (DEK) (as opposed to # The key used by the encryption function.
12108 # a key encryption key (KEK) stored by KMS).
12109 # When using KMS to wrap/unwrap DEKs, be sure to set an appropriate
12110 # IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot
12111 # unwrap the data crypto key.
Bu Sun Kim65020912020-05-20 12:08:20 -070012112 &quot;unwrapped&quot;: { # Using raw keys is prone to security risks due to accidentally # Unwrapped crypto key
12113 # leaking the key. Choose another type of key if possible.
12114 &quot;key&quot;: &quot;A String&quot;, # Required. A 128/192/256 bit key.
12115 },
12116 &quot;transient&quot;: { # Use this to have a random data crypto key generated. # Transient crypto key
12117 # It will be discarded after the request finishes.
12118 &quot;name&quot;: &quot;A String&quot;, # Required. Name of the key.
12119 # This is an arbitrary string used to differentiate different keys.
12120 # A unique key is generated per name: two separate `TransientCryptoKey`
12121 # protos share the same generated key if their names are the same.
12122 # When the data crypto key is generated, this name is not used in any way
12123 # (repeating the api call will result in a different key being generated).
12124 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012125 &quot;kmsWrapped&quot;: { # Include to use an existing data crypto key wrapped by KMS. # Kms wrapped key
12126 # The wrapped key must be a 128/192/256 bit key.
12127 # Authorization requires the following IAM permissions when sending a request
12128 # to perform a crypto transformation using a kms-wrapped crypto key:
12129 # dlp.kms.encrypt
12130 &quot;cryptoKeyName&quot;: &quot;A String&quot;, # Required. The resource name of the KMS CryptoKey to use for unwrapping.
12131 &quot;wrappedKey&quot;: &quot;A String&quot;, # Required. The wrapped data crypto key.
12132 },
Bu Sun Kim65020912020-05-20 12:08:20 -070012133 },
12134 },
Bu Sun Kim65020912020-05-20 12:08:20 -070012135 &quot;bucketingConfig&quot;: { # Generalization function that buckets values based on ranges. The ranges and # Bucketing
12136 # replacement values are dynamically provided by the user for custom behavior,
12137 # such as 1-30 -&gt; LOW 31-65 -&gt; MEDIUM 66-100 -&gt; HIGH
12138 # This can be used on
12139 # data of type: number, long, string, timestamp.
12140 # If the bound `Value` type differs from the type of data being transformed, we
12141 # will first attempt converting the type of the data to be transformed to match
12142 # the type of the bound before comparing.
12143 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
12144 &quot;buckets&quot;: [ # Set of buckets. Ranges must be non-overlapping.
12145 { # Bucket is represented as a range, along with replacement values.
Bu Sun Kim65020912020-05-20 12:08:20 -070012146 &quot;replacementValue&quot;: { # Set of primitive values supported by the system. # Replacement value for this bucket. If not provided
12147 # the default behavior will be to hyphenate the min-max range.
12148 # Note that for the purposes of inspection or transformation, the number
12149 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
12150 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
12151 # 123456789, the number of bytes would be counted as 9, even though an
12152 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -070012153 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
12154 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
12155 # and time zone are either specified elsewhere or are not significant. The date
12156 # is relative to the Proleptic Gregorian Calendar. This can represent:
12157 #
12158 # * A full date, with non-zero year, month and day values
12159 # * A month and day value, with a zero year, e.g. an anniversary
12160 # * A year on its own, with zero month and day values
12161 # * A year and month value, with a zero day, e.g. a credit card expiration date
12162 #
12163 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
12164 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
12165 # a year.
12166 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
12167 # month and day.
12168 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
12169 # if specifying a year by itself or a year and month where the day is not
12170 # significant.
12171 },
12172 &quot;stringValue&quot;: &quot;A String&quot;, # string
12173 &quot;integerValue&quot;: &quot;A String&quot;, # integer
12174 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
12175 # or are specified elsewhere. An API may choose to allow leap seconds. Related
12176 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -070012177 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
12178 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
12179 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012180 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
12181 # allow the value 60 if it allows leap-seconds.
12182 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -070012183 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012184 &quot;booleanValue&quot;: True or False, # boolean
12185 &quot;floatValue&quot;: 3.14, # float
12186 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
12187 },
12188 &quot;min&quot;: { # Set of primitive values supported by the system. # Lower bound of the range, inclusive. Type should be the same as max if
12189 # used.
12190 # Note that for the purposes of inspection or transformation, the number
12191 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
12192 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
12193 # 123456789, the number of bytes would be counted as 9, even though an
12194 # int64 only holds up to 8 bytes of data.
12195 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
12196 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
12197 # and time zone are either specified elsewhere or are not significant. The date
12198 # is relative to the Proleptic Gregorian Calendar. This can represent:
12199 #
12200 # * A full date, with non-zero year, month and day values
12201 # * A month and day value, with a zero year, e.g. an anniversary
12202 # * A year on its own, with zero month and day values
12203 # * A year and month value, with a zero day, e.g. a credit card expiration date
12204 #
12205 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
12206 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
12207 # a year.
12208 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
12209 # month and day.
12210 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
12211 # if specifying a year by itself or a year and month where the day is not
12212 # significant.
12213 },
12214 &quot;stringValue&quot;: &quot;A String&quot;, # string
12215 &quot;integerValue&quot;: &quot;A String&quot;, # integer
12216 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
12217 # or are specified elsewhere. An API may choose to allow leap seconds. Related
12218 # types are google.type.Date and `google.protobuf.Timestamp`.
12219 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
12220 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
12221 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
12222 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
12223 # allow the value 60 if it allows leap-seconds.
12224 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
12225 },
12226 &quot;booleanValue&quot;: True or False, # boolean
12227 &quot;floatValue&quot;: 3.14, # float
12228 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
12229 },
12230 &quot;max&quot;: { # Set of primitive values supported by the system. # Upper bound of the range, exclusive; type must match min.
12231 # Note that for the purposes of inspection or transformation, the number
12232 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
12233 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
12234 # 123456789, the number of bytes would be counted as 9, even though an
12235 # int64 only holds up to 8 bytes of data.
12236 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
12237 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
12238 # and time zone are either specified elsewhere or are not significant. The date
12239 # is relative to the Proleptic Gregorian Calendar. This can represent:
12240 #
12241 # * A full date, with non-zero year, month and day values
12242 # * A month and day value, with a zero year, e.g. an anniversary
12243 # * A year on its own, with zero month and day values
12244 # * A year and month value, with a zero day, e.g. a credit card expiration date
12245 #
12246 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
12247 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
12248 # a year.
12249 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
12250 # month and day.
12251 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
12252 # if specifying a year by itself or a year and month where the day is not
12253 # significant.
12254 },
12255 &quot;stringValue&quot;: &quot;A String&quot;, # string
12256 &quot;integerValue&quot;: &quot;A String&quot;, # integer
12257 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
12258 # or are specified elsewhere. An API may choose to allow leap seconds. Related
12259 # types are google.type.Date and `google.protobuf.Timestamp`.
12260 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
12261 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
12262 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
12263 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
12264 # allow the value 60 if it allows leap-seconds.
12265 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
12266 },
12267 &quot;booleanValue&quot;: True or False, # boolean
12268 &quot;floatValue&quot;: 3.14, # float
12269 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070012270 },
12271 },
12272 ],
12273 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012274 &quot;redactConfig&quot;: { # Redact a given value. For example, if used with an `InfoTypeTransformation` # Redact
12275 # transforming PHONE_NUMBER, and input &#x27;My phone number is 206-555-0123&#x27;, the
12276 # output would be &#x27;My phone number is &#x27;.
12277 },
Bu Sun Kim65020912020-05-20 12:08:20 -070012278 &quot;replaceConfig&quot;: { # Replace each input value with a given `Value`. # Replace
12279 &quot;newValue&quot;: { # Set of primitive values supported by the system. # Value to replace it with.
12280 # Note that for the purposes of inspection or transformation, the number
12281 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
12282 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
12283 # 123456789, the number of bytes would be counted as 9, even though an
12284 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -070012285 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
12286 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
12287 # and time zone are either specified elsewhere or are not significant. The date
12288 # is relative to the Proleptic Gregorian Calendar. This can represent:
12289 #
12290 # * A full date, with non-zero year, month and day values
12291 # * A month and day value, with a zero year, e.g. an anniversary
12292 # * A year on its own, with zero month and day values
12293 # * A year and month value, with a zero day, e.g. a credit card expiration date
12294 #
12295 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
12296 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
12297 # a year.
12298 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
12299 # month and day.
12300 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
12301 # if specifying a year by itself or a year and month where the day is not
12302 # significant.
12303 },
12304 &quot;stringValue&quot;: &quot;A String&quot;, # string
12305 &quot;integerValue&quot;: &quot;A String&quot;, # integer
12306 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
12307 # or are specified elsewhere. An API may choose to allow leap seconds. Related
12308 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -070012309 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
12310 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
12311 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012312 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
12313 # allow the value 60 if it allows leap-seconds.
12314 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -070012315 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012316 &quot;booleanValue&quot;: True or False, # boolean
12317 &quot;floatValue&quot;: 3.14, # float
12318 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070012319 },
12320 },
Bu Sun Kim65020912020-05-20 12:08:20 -070012321 &quot;fixedSizeBucketingConfig&quot;: { # Buckets values based on fixed size ranges. The # Fixed size bucketing
12322 # Bucketing transformation can provide all of this functionality,
12323 # but requires more configuration. This message is provided as a convenience to
12324 # the user for simple bucketing strategies.
12325 #
12326 # The transformed value will be a hyphenated string of
12327 # {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20
12328 # all values that are within this bucket will be replaced with &quot;10-20&quot;.
12329 #
12330 # This can be used on data of type: double, long.
12331 #
12332 # If the bound Value type differs from the type of data
12333 # being transformed, we will first attempt converting the type of the data to
12334 # be transformed to match the type of the bound before comparing.
12335 #
12336 # See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.
Bu Sun Kim65020912020-05-20 12:08:20 -070012337 &quot;upperBound&quot;: { # Set of primitive values supported by the system. # Required. Upper bound value of buckets. All values greater than upper_bound are
12338 # grouped together into a single bucket; for example if `upper_bound` = 89,
12339 # then all values greater than 89 are replaced with the value &quot;89+&quot;.
12340 # Note that for the purposes of inspection or transformation, the number
12341 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
12342 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
12343 # 123456789, the number of bytes would be counted as 9, even though an
12344 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -070012345 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
12346 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
12347 # and time zone are either specified elsewhere or are not significant. The date
12348 # is relative to the Proleptic Gregorian Calendar. This can represent:
12349 #
12350 # * A full date, with non-zero year, month and day values
12351 # * A month and day value, with a zero year, e.g. an anniversary
12352 # * A year on its own, with zero month and day values
12353 # * A year and month value, with a zero day, e.g. a credit card expiration date
12354 #
12355 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
12356 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
12357 # a year.
12358 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
12359 # month and day.
12360 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
12361 # if specifying a year by itself or a year and month where the day is not
12362 # significant.
12363 },
12364 &quot;stringValue&quot;: &quot;A String&quot;, # string
12365 &quot;integerValue&quot;: &quot;A String&quot;, # integer
12366 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
12367 # or are specified elsewhere. An API may choose to allow leap seconds. Related
12368 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -070012369 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
12370 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
12371 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012372 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
12373 # allow the value 60 if it allows leap-seconds.
12374 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -070012375 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012376 &quot;booleanValue&quot;: True or False, # boolean
12377 &quot;floatValue&quot;: 3.14, # float
12378 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070012379 },
12380 &quot;bucketSize&quot;: 3.14, # Required. Size of each bucket (except for minimum and maximum buckets). So if
12381 # `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the
12382 # following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60,
12383 # 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012384 &quot;lowerBound&quot;: { # Set of primitive values supported by the system. # Required. Lower bound value of buckets. All values less than `lower_bound` are
12385 # grouped together into a single bucket; for example if `lower_bound` = 10,
12386 # then all values less than 10 are replaced with the value &quot;-10&quot;.
12387 # Note that for the purposes of inspection or transformation, the number
12388 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
12389 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
12390 # 123456789, the number of bytes would be counted as 9, even though an
12391 # int64 only holds up to 8 bytes of data.
12392 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
12393 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
12394 # and time zone are either specified elsewhere or are not significant. The date
12395 # is relative to the Proleptic Gregorian Calendar. This can represent:
12396 #
12397 # * A full date, with non-zero year, month and day values
12398 # * A month and day value, with a zero year, e.g. an anniversary
12399 # * A year on its own, with zero month and day values
12400 # * A year and month value, with a zero day, e.g. a credit card expiration date
12401 #
12402 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
12403 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
12404 # a year.
12405 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
12406 # month and day.
12407 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
12408 # if specifying a year by itself or a year and month where the day is not
12409 # significant.
12410 },
12411 &quot;stringValue&quot;: &quot;A String&quot;, # string
12412 &quot;integerValue&quot;: &quot;A String&quot;, # integer
12413 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
12414 # or are specified elsewhere. An API may choose to allow leap seconds. Related
12415 # types are google.type.Date and `google.protobuf.Timestamp`.
12416 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
12417 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
12418 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
12419 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
12420 # allow the value 60 if it allows leap-seconds.
12421 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
12422 },
12423 &quot;booleanValue&quot;: True or False, # boolean
12424 &quot;floatValue&quot;: 3.14, # float
12425 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
12426 },
12427 },
12428 &quot;characterMaskConfig&quot;: { # Partially mask a string by replacing a given number of characters with a # Mask
12429 # fixed character. Masking can start from the beginning or end of the string.
12430 # This can be used on data of any type (numbers, longs, and so on) and when
12431 # de-identifying structured data we&#x27;ll attempt to preserve the original data&#x27;s
12432 # type. (This allows you to take a long like 123 and modify it to a string like
12433 # **3.
12434 &quot;charactersToIgnore&quot;: [ # When masking a string, items in this list will be skipped when replacing
12435 # characters. For example, if the input string is `555-555-5555` and you
12436 # instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP
12437 # returns `***-**5-5555`.
12438 { # Characters to skip when doing deidentification of a value. These will be left
12439 # alone and skipped.
12440 &quot;charactersToSkip&quot;: &quot;A String&quot;, # Characters to not transform when masking.
12441 &quot;commonCharactersToIgnore&quot;: &quot;A String&quot;, # Common characters to not transform when masking. Useful to avoid removing
12442 # punctuation.
12443 },
12444 ],
12445 &quot;numberToMask&quot;: 42, # Number of characters to mask. If not set, all matching chars will be
12446 # masked. Skipped characters do not count towards this tally.
12447 &quot;maskingCharacter&quot;: &quot;A String&quot;, # Character to use to mask the sensitive values&amp;mdash;for example, `*` for an
12448 # alphabetic string such as a name, or `0` for a numeric string such as ZIP
12449 # code or credit card number. This string must have a length of 1. If not
12450 # supplied, this value defaults to `*` for strings, and `0` for digits.
12451 &quot;reverseOrder&quot;: True or False, # Mask characters in reverse order. For example, if `masking_character` is
12452 # `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the
12453 # input string `1234-5678-9012-3456` is masked as `00000000000000-3456`.
12454 # If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order`
12455 # is `true`, then the string `12345` is masked as `12***`.
Bu Sun Kim65020912020-05-20 12:08:20 -070012456 },
12457 },
12458 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # Only apply the transformation if the condition evaluates to true for the
12459 # given `RecordCondition`. The conditions are allowed to reference fields
12460 # that are not used in the actual transformation.
12461 #
12462 # Example Use Cases:
12463 #
12464 # - Apply a different bucket transformation to an age column if the zip code
12465 # column for the same record is within a specific range.
12466 # - Redact a field if the date of birth field is greater than 85.
12467 # a field.
12468 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
12469 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
12470 # only supported value is `AND`.
12471 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
12472 &quot;conditions&quot;: [ # A collection of conditions.
12473 { # The field type of `value` and `field` do not need to match to be
12474 # considered equal, but not all comparisons are possible.
12475 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
12476 # but all other comparisons are invalid with incompatible types.
12477 # A `value` of type:
12478 #
12479 # - `string` can be compared against all other types
12480 # - `boolean` can only be compared against other booleans
12481 # - `integer` can be compared against doubles or a string if the string value
12482 # can be parsed as an integer.
12483 # - `double` can be compared against integers or a string if the string can
12484 # be parsed as a double.
12485 # - `Timestamp` can be compared against strings in RFC 3339 date string
12486 # format.
12487 # - `TimeOfDay` can be compared against timestamps and strings in the format
12488 # of &#x27;HH:mm:ss&#x27;.
12489 #
12490 # If we fail to compare do to type mismatch, a warning will be given and
12491 # the condition will evaluate to false.
Bu Sun Kim65020912020-05-20 12:08:20 -070012492 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
12493 # Note that for the purposes of inspection or transformation, the number
12494 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
12495 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
12496 # 123456789, the number of bytes would be counted as 9, even though an
12497 # int64 only holds up to 8 bytes of data.
Bu Sun Kim65020912020-05-20 12:08:20 -070012498 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
12499 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
12500 # and time zone are either specified elsewhere or are not significant. The date
12501 # is relative to the Proleptic Gregorian Calendar. This can represent:
12502 #
12503 # * A full date, with non-zero year, month and day values
12504 # * A month and day value, with a zero year, e.g. an anniversary
12505 # * A year on its own, with zero month and day values
12506 # * A year and month value, with a zero day, e.g. a credit card expiration date
12507 #
12508 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
12509 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
12510 # a year.
12511 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
12512 # month and day.
12513 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
12514 # if specifying a year by itself or a year and month where the day is not
12515 # significant.
12516 },
12517 &quot;stringValue&quot;: &quot;A String&quot;, # string
12518 &quot;integerValue&quot;: &quot;A String&quot;, # integer
12519 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
12520 # or are specified elsewhere. An API may choose to allow leap seconds. Related
12521 # types are google.type.Date and `google.protobuf.Timestamp`.
Bu Sun Kim65020912020-05-20 12:08:20 -070012522 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
12523 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
12524 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012525 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
12526 # allow the value 60 if it allows leap-seconds.
12527 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
Bu Sun Kim65020912020-05-20 12:08:20 -070012528 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012529 &quot;booleanValue&quot;: True or False, # boolean
12530 &quot;floatValue&quot;: 3.14, # float
12531 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070012532 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012533 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
12534 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
12535 },
12536 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -070012537 },
12538 ],
12539 },
12540 },
12541 },
12542 },
12543 ],
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012544 &quot;recordSuppressions&quot;: [ # Configuration defining which records get suppressed entirely. Records that
12545 # match any suppression rule are omitted from the output.
12546 { # Configuration to suppress records whose suppression conditions evaluate to
12547 # true.
12548 &quot;condition&quot;: { # A condition for determining whether a transformation should be applied to # A condition that when it evaluates to true will result in the record being
12549 # evaluated to be suppressed from the transformed content.
12550 # a field.
12551 &quot;expressions&quot;: { # An expression, consisting or an operator and conditions. # An expression.
12552 &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the result of conditions. Default and currently
12553 # only supported value is `AND`.
12554 &quot;conditions&quot;: { # A collection of conditions. # Conditions to apply to the expression.
12555 &quot;conditions&quot;: [ # A collection of conditions.
12556 { # The field type of `value` and `field` do not need to match to be
12557 # considered equal, but not all comparisons are possible.
12558 # EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
12559 # but all other comparisons are invalid with incompatible types.
12560 # A `value` of type:
12561 #
12562 # - `string` can be compared against all other types
12563 # - `boolean` can only be compared against other booleans
12564 # - `integer` can be compared against doubles or a string if the string value
12565 # can be parsed as an integer.
12566 # - `double` can be compared against integers or a string if the string can
12567 # be parsed as a double.
12568 # - `Timestamp` can be compared against strings in RFC 3339 date string
12569 # format.
12570 # - `TimeOfDay` can be compared against timestamps and strings in the format
12571 # of &#x27;HH:mm:ss&#x27;.
12572 #
12573 # If we fail to compare do to type mismatch, a warning will be given and
12574 # the condition will evaluate to false.
12575 &quot;value&quot;: { # Set of primitive values supported by the system. # Value to compare against. [Mandatory, except for `EXISTS` tests.]
12576 # Note that for the purposes of inspection or transformation, the number
12577 # of bytes considered to comprise a &#x27;Value&#x27; is based on its representation
12578 # as a UTF-8 encoded string. For example, if &#x27;integer_value&#x27; is set to
12579 # 123456789, the number of bytes would be counted as 9, even though an
12580 # int64 only holds up to 8 bytes of data.
12581 &quot;timestampValue&quot;: &quot;A String&quot;, # timestamp
12582 &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day # date
12583 # and time zone are either specified elsewhere or are not significant. The date
12584 # is relative to the Proleptic Gregorian Calendar. This can represent:
12585 #
12586 # * A full date, with non-zero year, month and day values
12587 # * A month and day value, with a zero year, e.g. an anniversary
12588 # * A year on its own, with zero month and day values
12589 # * A year and month value, with a zero day, e.g. a credit card expiration date
12590 #
12591 # Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
12592 &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
12593 # a year.
12594 &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a
12595 # month and day.
12596 &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
12597 # if specifying a year by itself or a year and month where the day is not
12598 # significant.
12599 },
12600 &quot;stringValue&quot;: &quot;A String&quot;, # string
12601 &quot;integerValue&quot;: &quot;A String&quot;, # integer
12602 &quot;timeValue&quot;: { # Represents a time of day. The date and time zone are either not significant # time of day
12603 # or are specified elsewhere. An API may choose to allow leap seconds. Related
12604 # types are google.type.Date and `google.protobuf.Timestamp`.
12605 &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose
12606 # to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
12607 &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
12608 &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
12609 # allow the value 60 if it allows leap-seconds.
12610 &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
12611 },
12612 &quot;booleanValue&quot;: True or False, # boolean
12613 &quot;floatValue&quot;: 3.14, # float
12614 &quot;dayOfWeekValue&quot;: &quot;A String&quot;, # day of week
Bu Sun Kim65020912020-05-20 12:08:20 -070012615 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012616 &quot;field&quot;: { # General identifier of a data field in a storage service. # Required. Field within the record this condition is evaluated against.
12617 &quot;name&quot;: &quot;A String&quot;, # Name describing the field.
Bu Sun Kim65020912020-05-20 12:08:20 -070012618 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012619 &quot;operator&quot;: &quot;A String&quot;, # Required. Operator used to compare the field or infoType to the value.
Bu Sun Kim65020912020-05-20 12:08:20 -070012620 },
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -070012621 ],
Bu Sun Kim65020912020-05-20 12:08:20 -070012622 },
12623 },
Bu Sun Kim65020912020-05-20 12:08:20 -070012624 },
12625 },
12626 ],
12627 },
12628 },
12629 }</pre>
12630</div>
12631
12632</body></html>