---
title: Getting Started with Datadog
description: Datadog, the leading service for cloud-scale monitoring.
breadcrumbs: Docs > Infrastructure > Datadog Resource Catalog
---

# gcp_dlp_deidentify_template{% #gcp_dlp_deidentify_template %}

## `ancestors`{% #ancestors %}

**Type**: `UNORDERED_LIST_STRING`

## `create_time`{% #create_time %}

**Type**: `TIMESTAMP`**Provider name**: `createTime`**Description**: Output only. The creation timestamp of an inspectTemplate.

## `deidentify_config`{% #deidentify_config %}

**Type**: `STRUCT`**Provider name**: `deidentifyConfig`**Description**: The core content of the template.

- `image_transformations`**Type**: `STRUCT`**Provider name**: `imageTransformations`**Description**: Treat the dataset as an image and redact.
  - `transforms`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `transforms`**Description**: List of transforms to make.
    - `all_info_types`**Type**: `STRUCT`**Provider name**: `allInfoTypes`**Description**: Apply transformation to all findings not specified in other ImageTransformation's selected_info_types. Only one instance is allowed within the ImageTransformations message.

    - `all_text`**Type**: `STRUCT`**Provider name**: `allText`**Description**: Apply transformation to all text that doesn't match an infoType. Only one instance is allowed within the ImageTransformations message.

    - `redaction_color`**Type**: `STRUCT`**Provider name**: `redactionColor`**Description**: The color to use when redacting content from an image. If not specified, the default is black.

      - `blue`**Type**: `FLOAT`**Provider name**: `blue`**Description**: The amount of blue in the color as a value in the interval [0, 1].
      - `green`**Type**: `FLOAT`**Provider name**: `green`**Description**: The amount of green in the color as a value in the interval [0, 1].
      - `red`**Type**: `FLOAT`**Provider name**: `red`**Description**: The amount of red in the color as a value in the interval [0, 1].

    - `selected_info_types`**Type**: `STRUCT`**Provider name**: `selectedInfoTypes`**Description**: Apply transformation to the selected info_types.

      - `info_types`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `infoTypes`**Description**: Required. InfoTypes to apply the transformation to. Required. Provided InfoType must be unique within the ImageTransformations message.
        - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at [https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference](https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference) when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
        - `sensitivity_score`**Type**: `STRUCT`**Provider name**: `sensitivityScore`**Description**: Optional custom sensitivity for this InfoType. This only applies to data profiling.
          - `score`**Type**: `STRING`**Provider name**: `score`**Description**: The sensitivity score applied to the resource.**Possible values**:
            - `SENSITIVITY_SCORE_UNSPECIFIED` - Unused.
            - `SENSITIVITY_LOW` - No sensitive information detected. The resource isn't publicly accessible.
            - `SENSITIVITY_UNKNOWN` - Unable to determine sensitivity.
            - `SENSITIVITY_MODERATE` - Medium risk. Contains personally identifiable information (PII), potentially sensitive data, or fields with free-text data that are at a higher risk of having intermittent sensitive data. Consider limiting access.
            - `SENSITIVITY_HIGH` - High risk. Sensitive personally identifiable information (SPII) can be present. Exfiltration of data can lead to user data loss. Re-identification of users might be possible. Consider limiting usage and or removing SPII.
        - `version`**Type**: `STRING`**Provider name**: `version`**Description**: Optional version name for this InfoType.
- `info_type_transformations`**Type**: `STRUCT`**Provider name**: `infoTypeTransformations`**Description**: Treat the dataset as free-form text and apply the same free text transformation everywhere.
  - `transformations`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `transformations`**Description**: Required. Transformation for each infoType. Cannot specify more than one for a given infoType.
    - `info_types`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `infoTypes`**Description**: InfoTypes to apply the transformation to. An empty list will cause this transformation to apply to all findings that correspond to infoTypes that were requested in `InspectConfig`.
      - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at [https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference](https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference) when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
      - `sensitivity_score`**Type**: `STRUCT`**Provider name**: `sensitivityScore`**Description**: Optional custom sensitivity for this InfoType. This only applies to data profiling.
        - `score`**Type**: `STRING`**Provider name**: `score`**Description**: The sensitivity score applied to the resource.**Possible values**:
          - `SENSITIVITY_SCORE_UNSPECIFIED` - Unused.
          - `SENSITIVITY_LOW` - No sensitive information detected. The resource isn't publicly accessible.
          - `SENSITIVITY_UNKNOWN` - Unable to determine sensitivity.
          - `SENSITIVITY_MODERATE` - Medium risk. Contains personally identifiable information (PII), potentially sensitive data, or fields with free-text data that are at a higher risk of having intermittent sensitive data. Consider limiting access.
          - `SENSITIVITY_HIGH` - High risk. Sensitive personally identifiable information (SPII) can be present. Exfiltration of data can lead to user data loss. Re-identification of users might be possible. Consider limiting usage and or removing SPII.
      - `version`**Type**: `STRING`**Provider name**: `version`**Description**: Optional version name for this InfoType.
    - `primitive_transformation`**Type**: `STRUCT`**Provider name**: `primitiveTransformation`**Description**: Required. Primitive transformation to apply to the infoType.
      - `bucketing_config`**Type**: `STRUCT`**Provider name**: `bucketingConfig`**Description**: Bucketing

        - `buckets`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `buckets`**Description**: Set of buckets. Ranges must be non-overlapping.
          - `max`**Type**: `STRUCT`**Provider name**: `max`**Description**: Upper bound of the range, exclusive; type must match min.
            - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
            - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
              - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
              - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
              - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
            - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
              - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
              - `MONDAY` - Monday
              - `TUESDAY` - Tuesday
              - `WEDNESDAY` - Wednesday
              - `THURSDAY` - Thursday
              - `FRIDAY` - Friday
              - `SATURDAY` - Saturday
              - `SUNDAY` - Sunday
            - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
            - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
            - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
            - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
              - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
              - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
              - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
              - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
            - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp
          - `min`**Type**: `STRUCT`**Provider name**: `min`**Description**: Lower bound of the range, inclusive. Type should be the same as max if used.
            - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
            - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
              - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
              - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
              - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
            - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
              - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
              - `MONDAY` - Monday
              - `TUESDAY` - Tuesday
              - `WEDNESDAY` - Wednesday
              - `THURSDAY` - Thursday
              - `FRIDAY` - Friday
              - `SATURDAY` - Saturday
              - `SUNDAY` - Sunday
            - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
            - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
            - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
            - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
              - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
              - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
              - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
              - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
            - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp
          - `replacement_value`**Type**: `STRUCT`**Provider name**: `replacementValue`**Description**: Required. Replacement value for this bucket.
            - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
            - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
              - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
              - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
              - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
            - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
              - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
              - `MONDAY` - Monday
              - `TUESDAY` - Tuesday
              - `WEDNESDAY` - Wednesday
              - `THURSDAY` - Thursday
              - `FRIDAY` - Friday
              - `SATURDAY` - Saturday
              - `SUNDAY` - Sunday
            - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
            - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
            - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
            - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
              - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
              - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
              - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
              - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
            - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp

      - `character_mask_config`**Type**: `STRUCT`**Provider name**: `characterMaskConfig`**Description**: Mask

        - `characters_to_ignore`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `charactersToIgnore`**Description**: When masking a string, items in this list will be skipped when replacing characters. For example, if the input string is `555-555-5555` and you instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP returns `***-**5-5555`.
          - `characters_to_skip`**Type**: `STRING`**Provider name**: `charactersToSkip`**Description**: Characters to not transform when masking.
          - `common_characters_to_ignore`**Type**: `STRING`**Provider name**: `commonCharactersToIgnore`**Description**: Common characters to not transform when masking. Useful to avoid removing punctuation.**Possible values**:
            - `COMMON_CHARS_TO_IGNORE_UNSPECIFIED` - Unused.
            - `NUMERIC` - 0-9
            - `ALPHA_UPPER_CASE` - A-Z
            - `ALPHA_LOWER_CASE` - a-z
            - `PUNCTUATION` - US Punctuation, one of !'#$%&'()*+,-./:;<=>?@[\]^_`{|}~
            - `WHITESPACE` - Whitespace character, one of [ \t\n\x0B\f\r]
        - `masking_character`**Type**: `STRING`**Provider name**: `maskingCharacter`**Description**: Character to use to mask the sensitive values—for example, `*` for an alphabetic string such as a name, or `0` for a numeric string such as ZIP code or credit card number. This string must have a length of 1. If not supplied, this value defaults to `*` for strings, and `0` for digits.
        - `number_to_mask`**Type**: `INT32`**Provider name**: `numberToMask`**Description**: Number of characters to mask. If not set, all matching chars will be masked. Skipped characters do not count towards this tally. If `number_to_mask` is negative, this denotes inverse masking. Cloud DLP masks all but a number of characters. For example, suppose you have the following values: - `masking_character` is `*` - `number_to_mask` is `-4` - `reverse_order` is `false` - `CharsToIgnore` includes `-` - Input string is `1234-5678-9012-3456` The resulting de-identified string is `****-****-****-3456`. Cloud DLP masks all but the last four characters. If `reverse_order` is `true`, all but the first four characters are masked as `1234-****-****-****`.
        - `reverse_order`**Type**: `BOOLEAN`**Provider name**: `reverseOrder`**Description**: Mask characters in reverse order. For example, if `masking_character` is `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the input string `1234-5678-9012-3456` is masked as `00000000000000-3456`. If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order` is `true`, then the string `12345` is masked as `12***`.

      - `crypto_deterministic_config`**Type**: `STRUCT`**Provider name**: `cryptoDeterministicConfig`**Description**: Deterministic Crypto

        - `context`**Type**: `STRUCT`**Provider name**: `context`**Description**: A context may be used for higher security and maintaining referential integrity such that the same identifier in two different contexts will be given a distinct surrogate. The context is appended to plaintext value being encrypted. On decryption the provided context is validated against the value used during encryption. If a context was provided during encryption, same context must be provided during decryption as well. If the context is not set, plaintext would be used as is for encryption. If the context is set but: 1. there is no record present when transforming a given value or 2. the field is not present when transforming a given value, plaintext would be used as is for encryption. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and unstructured `ContentItem`s.
          - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
        - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: The key used by the encryption function. For deterministic encryption using AES-SIV, the provided key is internally expanded to 64 bytes prior to use.
          - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
            - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
          - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
            - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
          - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key
        - `surrogate_info_type`**Type**: `STRUCT`**Provider name**: `surrogateInfoType`**Description**: The custom info type to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme defines the format: {info type name}({surrogate character count}):{surrogate} For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom info type 'Surrogate'. This facilitates reversal of the surrogate when it occurs in free text. Note: For record transformations where the entire cell in a table is being transformed, surrogates are not mandatory. Surrogates are used to denote the location of the token and are necessary for re-identification in free form text. In order for inspection to work properly, the name of this info type must not occur naturally anywhere in your data; otherwise, inspection may either - reverse a surrogate that does not correspond to an actual identifier - be unable to parse the surrogate and result in an error Therefore, choose your custom info type name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: ⧝MY_TOKEN_TYPE.
          - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at [https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference](https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference) when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
          - `sensitivity_score`**Type**: `STRUCT`**Provider name**: `sensitivityScore`**Description**: Optional custom sensitivity for this InfoType. This only applies to data profiling.
            - `score`**Type**: `STRING`**Provider name**: `score`**Description**: The sensitivity score applied to the resource.**Possible values**:
              - `SENSITIVITY_SCORE_UNSPECIFIED` - Unused.
              - `SENSITIVITY_LOW` - No sensitive information detected. The resource isn't publicly accessible.
              - `SENSITIVITY_UNKNOWN` - Unable to determine sensitivity.
              - `SENSITIVITY_MODERATE` - Medium risk. Contains personally identifiable information (PII), potentially sensitive data, or fields with free-text data that are at a higher risk of having intermittent sensitive data. Consider limiting access.
              - `SENSITIVITY_HIGH` - High risk. Sensitive personally identifiable information (SPII) can be present. Exfiltration of data can lead to user data loss. Re-identification of users might be possible. Consider limiting usage and or removing SPII.
          - `version`**Type**: `STRING`**Provider name**: `version`**Description**: Optional version name for this InfoType.

      - `crypto_hash_config`**Type**: `STRUCT`**Provider name**: `cryptoHashConfig`**Description**: Crypto

        - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: The key used by the hash function.
          - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
            - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
          - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
            - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
          - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key

      - `crypto_replace_ffx_fpe_config`**Type**: `STRUCT`**Provider name**: `cryptoReplaceFfxFpeConfig`**Description**: Ffx-Fpe. Strongly discouraged, consider using CryptoDeterministicConfig instead. Fpe is computationally expensive incurring latency costs.

        - `common_alphabet`**Type**: `STRING`**Provider name**: `commonAlphabet`**Description**: Common alphabets.**Possible values**:
          - `FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED` - Unused.
          - `NUMERIC` - `[0-9]` (radix of 10)
          - `HEXADECIMAL` - `[0-9A-F]` (radix of 16)
          - `UPPER_CASE_ALPHA_NUMERIC` - `[0-9A-Z]` (radix of 36)
          - `ALPHA_NUMERIC` - `[0-9A-Za-z]` (radix of 62)
        - `context`**Type**: `STRUCT`**Provider name**: `context`**Description**: The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given the same surrogate. If the context is not set, a default tweak will be used. If the context is set but: 1. there is no record present when transforming a given value or 1. the field is not present when transforming a given value, a default tweak will be used. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and unstructured `ContentItem`s. Currently, the referenced field may be of value type integer or string. The tweak is constructed as a sequence of bytes in big endian byte order such that: - a 64 bit integer is encoded followed by a single byte of value 1 - a string is encoded in UTF-8 format followed by a single byte of value 2
          - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
        - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: Required. The key used by the encryption algorithm.
          - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
            - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
          - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
            - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
          - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key
        - `custom_alphabet`**Type**: `STRING`**Provider name**: `customAlphabet`**Description**: This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens before/after encryption/decryption. Each character listed must appear only once. Number of characters must be in the range [2, 95]. This must be encoded as ASCII. The order of characters does not matter. The full list of allowed characters is: `0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~`!@#$%^&*()_-+={[}]|\:;"'<,>.?/`
        - `radix`**Type**: `INT32`**Provider name**: `radix`**Description**: The native way to select the alphabet. Must be in the range [2, 95].
        - `surrogate_info_type`**Type**: `STRUCT`**Provider name**: `surrogateInfoType`**Description**: The custom infoType to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom infoType followed by the number of characters comprising the surrogate. The following scheme defines the format: info_type_name(surrogate_character_count):surrogate For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom infoType [`SurrogateType`](https://cloud.google.com/sensitive-data-protection/docs/reference/rest/v2/InspectConfig#surrogatetype). This facilitates reversal of the surrogate when it occurs in free text. In order for inspection to work properly, the name of this infoType must not occur naturally anywhere in your data; otherwise, inspection may find a surrogate that does not correspond to an actual identifier. Therefore, choose your custom infoType name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: ⧝MY_TOKEN_TYPE
          - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at [https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference](https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference) when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
          - `sensitivity_score`**Type**: `STRUCT`**Provider name**: `sensitivityScore`**Description**: Optional custom sensitivity for this InfoType. This only applies to data profiling.
            - `score`**Type**: `STRING`**Provider name**: `score`**Description**: The sensitivity score applied to the resource.**Possible values**:
              - `SENSITIVITY_SCORE_UNSPECIFIED` - Unused.
              - `SENSITIVITY_LOW` - No sensitive information detected. The resource isn't publicly accessible.
              - `SENSITIVITY_UNKNOWN` - Unable to determine sensitivity.
              - `SENSITIVITY_MODERATE` - Medium risk. Contains personally identifiable information (PII), potentially sensitive data, or fields with free-text data that are at a higher risk of having intermittent sensitive data. Consider limiting access.
              - `SENSITIVITY_HIGH` - High risk. Sensitive personally identifiable information (SPII) can be present. Exfiltration of data can lead to user data loss. Re-identification of users might be possible. Consider limiting usage and or removing SPII.
          - `version`**Type**: `STRING`**Provider name**: `version`**Description**: Optional version name for this InfoType.

      - `date_shift_config`**Type**: `STRUCT`**Provider name**: `dateShiftConfig`**Description**: Date Shift

        - `context`**Type**: `STRUCT`**Provider name**: `context`**Description**: Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will be consistent for the given context.
          - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
        - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: Causes the shift to be computed based on this key and the context. This results in the same shift for the same context and crypto_key. If set, must also set context. Can only be applied to table items.
          - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
            - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
          - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
            - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
          - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key
        - `lower_bound_days`**Type**: `INT32`**Provider name**: `lowerBoundDays`**Description**: Required. For example, -5 means shift date to at most 5 days back in the past.
        - `upper_bound_days`**Type**: `INT32`**Provider name**: `upperBoundDays`**Description**: Required. Range of shift in days. Actual shift will be selected at random within this range (inclusive ends). Negative means shift to earlier in time. Must not be more than 365250 days (1000 years) each direction. For example, 3 means shift date to at most 3 days into the future.

      - `fixed_size_bucketing_config`**Type**: `STRUCT`**Provider name**: `fixedSizeBucketingConfig`**Description**: Fixed size bucketing

        - `bucket_size`**Type**: `DOUBLE`**Provider name**: `bucketSize`**Description**: Required. Size of each bucket (except for minimum and maximum buckets). So if `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
        - `lower_bound`**Type**: `STRUCT`**Provider name**: `lowerBound`**Description**: Required. Lower bound value of buckets. All values less than `lower_bound` are grouped together into a single bucket; for example if `lower_bound` = 10, then all values less than 10 are replaced with the value "-10".
          - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
          - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
            - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
            - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
            - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
            - `MONDAY` - Monday
            - `TUESDAY` - Tuesday
            - `WEDNESDAY` - Wednesday
            - `THURSDAY` - Thursday
            - `FRIDAY` - Friday
            - `SATURDAY` - Saturday
            - `SUNDAY` - Sunday
          - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
          - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
          - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
          - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
            - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
            - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
            - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
            - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
          - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp
        - `upper_bound`**Type**: `STRUCT`**Provider name**: `upperBound`**Description**: Required. Upper bound value of buckets. All values greater than upper_bound are grouped together into a single bucket; for example if `upper_bound` = 89, then all values greater than 89 are replaced with the value "89+".
          - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
          - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
            - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
            - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
            - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
            - `MONDAY` - Monday
            - `TUESDAY` - Tuesday
            - `WEDNESDAY` - Wednesday
            - `THURSDAY` - Thursday
            - `FRIDAY` - Friday
            - `SATURDAY` - Saturday
            - `SUNDAY` - Sunday
          - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
          - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
          - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
          - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
            - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
            - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
            - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
            - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
          - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp

      - `redact_config`**Type**: `STRUCT`**Provider name**: `redactConfig`**Description**: Redact

      - `replace_config`**Type**: `STRUCT`**Provider name**: `replaceConfig`**Description**: Replace with a specified value.

        - `new_value`**Type**: `STRUCT`**Provider name**: `newValue`**Description**: Value to replace it with.
          - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
          - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
            - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
            - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
            - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
            - `MONDAY` - Monday
            - `TUESDAY` - Tuesday
            - `WEDNESDAY` - Wednesday
            - `THURSDAY` - Thursday
            - `FRIDAY` - Friday
            - `SATURDAY` - Saturday
            - `SUNDAY` - Sunday
          - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
          - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
          - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
          - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
            - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
            - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
            - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
            - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
          - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp

      - `replace_dictionary_config`**Type**: `STRUCT`**Provider name**: `replaceDictionaryConfig`**Description**: Replace with a value randomly drawn (with replacement) from a dictionary.

        - `word_list`**Type**: `STRUCT`**Provider name**: `wordList`**Description**: A list of words to select from for random replacement. The [limits](https://cloud.google.com/sensitive-data-protection/limits) page contains details about the size limits of dictionaries.
          - `words`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `words`**Description**: Words or phrases defining the dictionary. The dictionary must contain at least one phrase and every phrase must contain at least 2 characters that are letters or digits. [required]

      - `replace_with_info_type_config`**Type**: `STRUCT`**Provider name**: `replaceWithInfoTypeConfig`**Description**: Replace with infotype

      - `time_part_config`**Type**: `STRUCT`**Provider name**: `timePartConfig`**Description**: Time extraction

        - `part_to_extract`**Type**: `STRING`**Provider name**: `partToExtract`**Description**: The part of the time to keep.**Possible values**:
          - `TIME_PART_UNSPECIFIED` - Unused
          - `YEAR` - [0-9999]
          - `MONTH` - [1-12]
          - `DAY_OF_MONTH` - [1-31]
          - `DAY_OF_WEEK` - [1-7]
          - `WEEK_OF_YEAR` - [1-53]
          - `HOUR_OF_DAY` - [0-23]
- `record_transformations`**Type**: `STRUCT`**Provider name**: `recordTransformations`**Description**: Treat the dataset as structured. Transformations can be applied to specific locations within structured datasets, such as transforming a column within a table.
  - `field_transformations`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `fieldTransformations`**Description**: Transform the record by applying various field transformations.
    - `condition`**Type**: `STRUCT`**Provider name**: `condition`**Description**: Only apply the transformation if the condition evaluates to true for the given `RecordCondition`. The conditions are allowed to reference fields that are not used in the actual transformation. Example Use Cases: - Apply a different bucket transformation to an age column if the zip code column for the same record is within a specific range. - Redact a field if the date of birth field is greater than 85.
      - `expressions`**Type**: `STRUCT`**Provider name**: `expressions`**Description**: An expression.
        - `conditions`**Type**: `STRUCT`**Provider name**: `conditions`**Description**: Conditions to apply to the expression.
          - `conditions`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `conditions`**Description**: A collection of conditions.
            - `field`**Type**: `STRUCT`**Provider name**: `field`**Description**: Required. Field within the record this condition is evaluated against.
              - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
            - `operator`**Type**: `STRING`**Provider name**: `operator`**Description**: Required. Operator used to compare the field or infoType to the value.**Possible values**:
              - `RELATIONAL_OPERATOR_UNSPECIFIED` - Unused
              - `EQUAL_TO` - Equal. Attempts to match even with incompatible types.
              - `NOT_EQUAL_TO` - Not equal to. Attempts to match even with incompatible types.
              - `GREATER_THAN` - Greater than.
              - `LESS_THAN` - Less than.
              - `GREATER_THAN_OR_EQUALS` - Greater than or equals.
              - `LESS_THAN_OR_EQUALS` - Less than or equals.
              - `EXISTS` - Exists
            - `value`**Type**: `STRUCT`**Provider name**: `value`**Description**: Value to compare against. [Mandatory, except for `EXISTS` tests.]
              - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
              - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
                - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
                - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
                - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
              - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
                - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
                - `MONDAY` - Monday
                - `TUESDAY` - Tuesday
                - `WEDNESDAY` - Wednesday
                - `THURSDAY` - Thursday
                - `FRIDAY` - Friday
                - `SATURDAY` - Saturday
                - `SUNDAY` - Sunday
              - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
              - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
              - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
              - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
                - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
                - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
                - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
                - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
              - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp
        - `logical_operator`**Type**: `STRING`**Provider name**: `logicalOperator`**Description**: The operator to apply to the result of conditions. Default and currently only supported value is `AND`.**Possible values**:
          - `LOGICAL_OPERATOR_UNSPECIFIED` - Unused
          - `AND` - Conditional AND
    - `fields`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `fields`**Description**: Required. Input field(s) to apply the transformation to. When you have columns that reference their position within a list, omit the index from the FieldId. FieldId name matching ignores the index. For example, instead of "contact.nums[0].type", use "contact.nums.type".
      - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
    - `info_type_transformations`**Type**: `STRUCT`**Provider name**: `infoTypeTransformations`**Description**: Treat the contents of the field as free text, and selectively transform content that matches an `InfoType`.
      - `transformations`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `transformations`**Description**: Required. Transformation for each infoType. Cannot specify more than one for a given infoType.
        - `info_types`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `infoTypes`**Description**: InfoTypes to apply the transformation to. An empty list will cause this transformation to apply to all findings that correspond to infoTypes that were requested in `InspectConfig`.
          - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at [https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference](https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference) when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
          - `sensitivity_score`**Type**: `STRUCT`**Provider name**: `sensitivityScore`**Description**: Optional custom sensitivity for this InfoType. This only applies to data profiling.
            - `score`**Type**: `STRING`**Provider name**: `score`**Description**: The sensitivity score applied to the resource.**Possible values**:
              - `SENSITIVITY_SCORE_UNSPECIFIED` - Unused.
              - `SENSITIVITY_LOW` - No sensitive information detected. The resource isn't publicly accessible.
              - `SENSITIVITY_UNKNOWN` - Unable to determine sensitivity.
              - `SENSITIVITY_MODERATE` - Medium risk. Contains personally identifiable information (PII), potentially sensitive data, or fields with free-text data that are at a higher risk of having intermittent sensitive data. Consider limiting access.
              - `SENSITIVITY_HIGH` - High risk. Sensitive personally identifiable information (SPII) can be present. Exfiltration of data can lead to user data loss. Re-identification of users might be possible. Consider limiting usage and or removing SPII.
          - `version`**Type**: `STRING`**Provider name**: `version`**Description**: Optional version name for this InfoType.
        - `primitive_transformation`**Type**: `STRUCT`**Provider name**: `primitiveTransformation`**Description**: Required. Primitive transformation to apply to the infoType.
          - `bucketing_config`**Type**: `STRUCT`**Provider name**: `bucketingConfig`**Description**: Bucketing

            - `buckets`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `buckets`**Description**: Set of buckets. Ranges must be non-overlapping.
              - `max`**Type**: `STRUCT`**Provider name**: `max`**Description**: Upper bound of the range, exclusive; type must match min.
                - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
                - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
                  - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
                  - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
                  - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
                - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
                  - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
                  - `MONDAY` - Monday
                  - `TUESDAY` - Tuesday
                  - `WEDNESDAY` - Wednesday
                  - `THURSDAY` - Thursday
                  - `FRIDAY` - Friday
                  - `SATURDAY` - Saturday
                  - `SUNDAY` - Sunday
                - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
                - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
                - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
                - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
                  - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
                  - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
                  - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
                  - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
                - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp
              - `min`**Type**: `STRUCT`**Provider name**: `min`**Description**: Lower bound of the range, inclusive. Type should be the same as max if used.
                - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
                - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
                  - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
                  - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
                  - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
                - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
                  - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
                  - `MONDAY` - Monday
                  - `TUESDAY` - Tuesday
                  - `WEDNESDAY` - Wednesday
                  - `THURSDAY` - Thursday
                  - `FRIDAY` - Friday
                  - `SATURDAY` - Saturday
                  - `SUNDAY` - Sunday
                - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
                - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
                - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
                - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
                  - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
                  - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
                  - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
                  - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
                - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp
              - `replacement_value`**Type**: `STRUCT`**Provider name**: `replacementValue`**Description**: Required. Replacement value for this bucket.
                - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
                - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
                  - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
                  - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
                  - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
                - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
                  - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
                  - `MONDAY` - Monday
                  - `TUESDAY` - Tuesday
                  - `WEDNESDAY` - Wednesday
                  - `THURSDAY` - Thursday
                  - `FRIDAY` - Friday
                  - `SATURDAY` - Saturday
                  - `SUNDAY` - Sunday
                - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
                - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
                - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
                - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
                  - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
                  - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
                  - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
                  - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
                - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp

          - `character_mask_config`**Type**: `STRUCT`**Provider name**: `characterMaskConfig`**Description**: Mask

            - `characters_to_ignore`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `charactersToIgnore`**Description**: When masking a string, items in this list will be skipped when replacing characters. For example, if the input string is `555-555-5555` and you instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP returns `***-**5-5555`.
              - `characters_to_skip`**Type**: `STRING`**Provider name**: `charactersToSkip`**Description**: Characters to not transform when masking.
              - `common_characters_to_ignore`**Type**: `STRING`**Provider name**: `commonCharactersToIgnore`**Description**: Common characters to not transform when masking. Useful to avoid removing punctuation.**Possible values**:
                - `COMMON_CHARS_TO_IGNORE_UNSPECIFIED` - Unused.
                - `NUMERIC` - 0-9
                - `ALPHA_UPPER_CASE` - A-Z
                - `ALPHA_LOWER_CASE` - a-z
                - `PUNCTUATION` - US Punctuation, one of !'#$%&'()*+,-./:;<=>?@[\]^_`{|}~
                - `WHITESPACE` - Whitespace character, one of [ \t\n\x0B\f\r]
            - `masking_character`**Type**: `STRING`**Provider name**: `maskingCharacter`**Description**: Character to use to mask the sensitive values—for example, `*` for an alphabetic string such as a name, or `0` for a numeric string such as ZIP code or credit card number. This string must have a length of 1. If not supplied, this value defaults to `*` for strings, and `0` for digits.
            - `number_to_mask`**Type**: `INT32`**Provider name**: `numberToMask`**Description**: Number of characters to mask. If not set, all matching chars will be masked. Skipped characters do not count towards this tally. If `number_to_mask` is negative, this denotes inverse masking. Cloud DLP masks all but a number of characters. For example, suppose you have the following values: - `masking_character` is `*` - `number_to_mask` is `-4` - `reverse_order` is `false` - `CharsToIgnore` includes `-` - Input string is `1234-5678-9012-3456` The resulting de-identified string is `****-****-****-3456`. Cloud DLP masks all but the last four characters. If `reverse_order` is `true`, all but the first four characters are masked as `1234-****-****-****`.
            - `reverse_order`**Type**: `BOOLEAN`**Provider name**: `reverseOrder`**Description**: Mask characters in reverse order. For example, if `masking_character` is `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the input string `1234-5678-9012-3456` is masked as `00000000000000-3456`. If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order` is `true`, then the string `12345` is masked as `12***`.

          - `crypto_deterministic_config`**Type**: `STRUCT`**Provider name**: `cryptoDeterministicConfig`**Description**: Deterministic Crypto

            - `context`**Type**: `STRUCT`**Provider name**: `context`**Description**: A context may be used for higher security and maintaining referential integrity such that the same identifier in two different contexts will be given a distinct surrogate. The context is appended to plaintext value being encrypted. On decryption the provided context is validated against the value used during encryption. If a context was provided during encryption, same context must be provided during decryption as well. If the context is not set, plaintext would be used as is for encryption. If the context is set but: 1. there is no record present when transforming a given value or 2. the field is not present when transforming a given value, plaintext would be used as is for encryption. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and unstructured `ContentItem`s.
              - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
            - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: The key used by the encryption function. For deterministic encryption using AES-SIV, the provided key is internally expanded to 64 bytes prior to use.
              - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
                - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
              - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
                - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
              - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key
            - `surrogate_info_type`**Type**: `STRUCT`**Provider name**: `surrogateInfoType`**Description**: The custom info type to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme defines the format: {info type name}({surrogate character count}):{surrogate} For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom info type 'Surrogate'. This facilitates reversal of the surrogate when it occurs in free text. Note: For record transformations where the entire cell in a table is being transformed, surrogates are not mandatory. Surrogates are used to denote the location of the token and are necessary for re-identification in free form text. In order for inspection to work properly, the name of this info type must not occur naturally anywhere in your data; otherwise, inspection may either - reverse a surrogate that does not correspond to an actual identifier - be unable to parse the surrogate and result in an error Therefore, choose your custom info type name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: ⧝MY_TOKEN_TYPE.
              - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at [https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference](https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference) when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
              - `sensitivity_score`**Type**: `STRUCT`**Provider name**: `sensitivityScore`**Description**: Optional custom sensitivity for this InfoType. This only applies to data profiling.
                - `score`**Type**: `STRING`**Provider name**: `score`**Description**: The sensitivity score applied to the resource.**Possible values**:
                  - `SENSITIVITY_SCORE_UNSPECIFIED` - Unused.
                  - `SENSITIVITY_LOW` - No sensitive information detected. The resource isn't publicly accessible.
                  - `SENSITIVITY_UNKNOWN` - Unable to determine sensitivity.
                  - `SENSITIVITY_MODERATE` - Medium risk. Contains personally identifiable information (PII), potentially sensitive data, or fields with free-text data that are at a higher risk of having intermittent sensitive data. Consider limiting access.
                  - `SENSITIVITY_HIGH` - High risk. Sensitive personally identifiable information (SPII) can be present. Exfiltration of data can lead to user data loss. Re-identification of users might be possible. Consider limiting usage and or removing SPII.
              - `version`**Type**: `STRING`**Provider name**: `version`**Description**: Optional version name for this InfoType.

          - `crypto_hash_config`**Type**: `STRUCT`**Provider name**: `cryptoHashConfig`**Description**: Crypto

            - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: The key used by the hash function.
              - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
                - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
              - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
                - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
              - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key

          - `crypto_replace_ffx_fpe_config`**Type**: `STRUCT`**Provider name**: `cryptoReplaceFfxFpeConfig`**Description**: Ffx-Fpe. Strongly discouraged, consider using CryptoDeterministicConfig instead. Fpe is computationally expensive incurring latency costs.

            - `common_alphabet`**Type**: `STRING`**Provider name**: `commonAlphabet`**Description**: Common alphabets.**Possible values**:
              - `FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED` - Unused.
              - `NUMERIC` - `[0-9]` (radix of 10)
              - `HEXADECIMAL` - `[0-9A-F]` (radix of 16)
              - `UPPER_CASE_ALPHA_NUMERIC` - `[0-9A-Z]` (radix of 36)
              - `ALPHA_NUMERIC` - `[0-9A-Za-z]` (radix of 62)
            - `context`**Type**: `STRUCT`**Provider name**: `context`**Description**: The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given the same surrogate. If the context is not set, a default tweak will be used. If the context is set but: 1. there is no record present when transforming a given value or 1. the field is not present when transforming a given value, a default tweak will be used. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and unstructured `ContentItem`s. Currently, the referenced field may be of value type integer or string. The tweak is constructed as a sequence of bytes in big endian byte order such that: - a 64 bit integer is encoded followed by a single byte of value 1 - a string is encoded in UTF-8 format followed by a single byte of value 2
              - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
            - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: Required. The key used by the encryption algorithm.
              - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
                - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
              - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
                - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
              - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key
            - `custom_alphabet`**Type**: `STRING`**Provider name**: `customAlphabet`**Description**: This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens before/after encryption/decryption. Each character listed must appear only once. Number of characters must be in the range [2, 95]. This must be encoded as ASCII. The order of characters does not matter. The full list of allowed characters is: `0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~`!@#$%^&*()_-+={[}]|\:;"'<,>.?/`
            - `radix`**Type**: `INT32`**Provider name**: `radix`**Description**: The native way to select the alphabet. Must be in the range [2, 95].
            - `surrogate_info_type`**Type**: `STRUCT`**Provider name**: `surrogateInfoType`**Description**: The custom infoType to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom infoType followed by the number of characters comprising the surrogate. The following scheme defines the format: info_type_name(surrogate_character_count):surrogate For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom infoType [`SurrogateType`](https://cloud.google.com/sensitive-data-protection/docs/reference/rest/v2/InspectConfig#surrogatetype). This facilitates reversal of the surrogate when it occurs in free text. In order for inspection to work properly, the name of this infoType must not occur naturally anywhere in your data; otherwise, inspection may find a surrogate that does not correspond to an actual identifier. Therefore, choose your custom infoType name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: ⧝MY_TOKEN_TYPE
              - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at [https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference](https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference) when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
              - `sensitivity_score`**Type**: `STRUCT`**Provider name**: `sensitivityScore`**Description**: Optional custom sensitivity for this InfoType. This only applies to data profiling.
                - `score`**Type**: `STRING`**Provider name**: `score`**Description**: The sensitivity score applied to the resource.**Possible values**:
                  - `SENSITIVITY_SCORE_UNSPECIFIED` - Unused.
                  - `SENSITIVITY_LOW` - No sensitive information detected. The resource isn't publicly accessible.
                  - `SENSITIVITY_UNKNOWN` - Unable to determine sensitivity.
                  - `SENSITIVITY_MODERATE` - Medium risk. Contains personally identifiable information (PII), potentially sensitive data, or fields with free-text data that are at a higher risk of having intermittent sensitive data. Consider limiting access.
                  - `SENSITIVITY_HIGH` - High risk. Sensitive personally identifiable information (SPII) can be present. Exfiltration of data can lead to user data loss. Re-identification of users might be possible. Consider limiting usage and or removing SPII.
              - `version`**Type**: `STRING`**Provider name**: `version`**Description**: Optional version name for this InfoType.

          - `date_shift_config`**Type**: `STRUCT`**Provider name**: `dateShiftConfig`**Description**: Date Shift

            - `context`**Type**: `STRUCT`**Provider name**: `context`**Description**: Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will be consistent for the given context.
              - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
            - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: Causes the shift to be computed based on this key and the context. This results in the same shift for the same context and crypto_key. If set, must also set context. Can only be applied to table items.
              - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
                - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
              - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
                - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
              - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key
            - `lower_bound_days`**Type**: `INT32`**Provider name**: `lowerBoundDays`**Description**: Required. For example, -5 means shift date to at most 5 days back in the past.
            - `upper_bound_days`**Type**: `INT32`**Provider name**: `upperBoundDays`**Description**: Required. Range of shift in days. Actual shift will be selected at random within this range (inclusive ends). Negative means shift to earlier in time. Must not be more than 365250 days (1000 years) each direction. For example, 3 means shift date to at most 3 days into the future.

          - `fixed_size_bucketing_config`**Type**: `STRUCT`**Provider name**: `fixedSizeBucketingConfig`**Description**: Fixed size bucketing

            - `bucket_size`**Type**: `DOUBLE`**Provider name**: `bucketSize`**Description**: Required. Size of each bucket (except for minimum and maximum buckets). So if `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
            - `lower_bound`**Type**: `STRUCT`**Provider name**: `lowerBound`**Description**: Required. Lower bound value of buckets. All values less than `lower_bound` are grouped together into a single bucket; for example if `lower_bound` = 10, then all values less than 10 are replaced with the value "-10".
              - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
              - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
                - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
                - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
                - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
              - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
                - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
                - `MONDAY` - Monday
                - `TUESDAY` - Tuesday
                - `WEDNESDAY` - Wednesday
                - `THURSDAY` - Thursday
                - `FRIDAY` - Friday
                - `SATURDAY` - Saturday
                - `SUNDAY` - Sunday
              - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
              - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
              - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
              - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
                - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
                - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
                - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
                - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
              - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp
            - `upper_bound`**Type**: `STRUCT`**Provider name**: `upperBound`**Description**: Required. Upper bound value of buckets. All values greater than upper_bound are grouped together into a single bucket; for example if `upper_bound` = 89, then all values greater than 89 are replaced with the value "89+".
              - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
              - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
                - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
                - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
                - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
              - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
                - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
                - `MONDAY` - Monday
                - `TUESDAY` - Tuesday
                - `WEDNESDAY` - Wednesday
                - `THURSDAY` - Thursday
                - `FRIDAY` - Friday
                - `SATURDAY` - Saturday
                - `SUNDAY` - Sunday
              - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
              - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
              - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
              - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
                - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
                - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
                - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
                - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
              - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp

          - `redact_config`**Type**: `STRUCT`**Provider name**: `redactConfig`**Description**: Redact

          - `replace_config`**Type**: `STRUCT`**Provider name**: `replaceConfig`**Description**: Replace with a specified value.

            - `new_value`**Type**: `STRUCT`**Provider name**: `newValue`**Description**: Value to replace it with.
              - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
              - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
                - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
                - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
                - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
              - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
                - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
                - `MONDAY` - Monday
                - `TUESDAY` - Tuesday
                - `WEDNESDAY` - Wednesday
                - `THURSDAY` - Thursday
                - `FRIDAY` - Friday
                - `SATURDAY` - Saturday
                - `SUNDAY` - Sunday
              - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
              - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
              - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
              - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
                - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
                - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
                - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
                - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
              - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp

          - `replace_dictionary_config`**Type**: `STRUCT`**Provider name**: `replaceDictionaryConfig`**Description**: Replace with a value randomly drawn (with replacement) from a dictionary.

            - `word_list`**Type**: `STRUCT`**Provider name**: `wordList`**Description**: A list of words to select from for random replacement. The [limits](https://cloud.google.com/sensitive-data-protection/limits) page contains details about the size limits of dictionaries.
              - `words`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `words`**Description**: Words or phrases defining the dictionary. The dictionary must contain at least one phrase and every phrase must contain at least 2 characters that are letters or digits. [required]

          - `replace_with_info_type_config`**Type**: `STRUCT`**Provider name**: `replaceWithInfoTypeConfig`**Description**: Replace with infotype

          - `time_part_config`**Type**: `STRUCT`**Provider name**: `timePartConfig`**Description**: Time extraction

            - `part_to_extract`**Type**: `STRING`**Provider name**: `partToExtract`**Description**: The part of the time to keep.**Possible values**:
              - `TIME_PART_UNSPECIFIED` - Unused
              - `YEAR` - [0-9999]
              - `MONTH` - [1-12]
              - `DAY_OF_MONTH` - [1-31]
              - `DAY_OF_WEEK` - [1-7]
              - `WEEK_OF_YEAR` - [1-53]
              - `HOUR_OF_DAY` - [0-23]
    - `primitive_transformation`**Type**: `STRUCT`**Provider name**: `primitiveTransformation`**Description**: Apply the transformation to the entire field.
      - `bucketing_config`**Type**: `STRUCT`**Provider name**: `bucketingConfig`**Description**: Bucketing

        - `buckets`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `buckets`**Description**: Set of buckets. Ranges must be non-overlapping.
          - `max`**Type**: `STRUCT`**Provider name**: `max`**Description**: Upper bound of the range, exclusive; type must match min.
            - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
            - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
              - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
              - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
              - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
            - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
              - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
              - `MONDAY` - Monday
              - `TUESDAY` - Tuesday
              - `WEDNESDAY` - Wednesday
              - `THURSDAY` - Thursday
              - `FRIDAY` - Friday
              - `SATURDAY` - Saturday
              - `SUNDAY` - Sunday
            - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
            - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
            - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
            - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
              - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
              - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
              - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
              - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
            - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp
          - `min`**Type**: `STRUCT`**Provider name**: `min`**Description**: Lower bound of the range, inclusive. Type should be the same as max if used.
            - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
            - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
              - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
              - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
              - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
            - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
              - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
              - `MONDAY` - Monday
              - `TUESDAY` - Tuesday
              - `WEDNESDAY` - Wednesday
              - `THURSDAY` - Thursday
              - `FRIDAY` - Friday
              - `SATURDAY` - Saturday
              - `SUNDAY` - Sunday
            - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
            - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
            - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
            - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
              - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
              - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
              - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
              - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
            - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp
          - `replacement_value`**Type**: `STRUCT`**Provider name**: `replacementValue`**Description**: Required. Replacement value for this bucket.
            - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
            - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
              - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
              - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
              - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
            - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
              - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
              - `MONDAY` - Monday
              - `TUESDAY` - Tuesday
              - `WEDNESDAY` - Wednesday
              - `THURSDAY` - Thursday
              - `FRIDAY` - Friday
              - `SATURDAY` - Saturday
              - `SUNDAY` - Sunday
            - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
            - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
            - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
            - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
              - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
              - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
              - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
              - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
            - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp

      - `character_mask_config`**Type**: `STRUCT`**Provider name**: `characterMaskConfig`**Description**: Mask

        - `characters_to_ignore`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `charactersToIgnore`**Description**: When masking a string, items in this list will be skipped when replacing characters. For example, if the input string is `555-555-5555` and you instruct Cloud DLP to skip `-` and mask 5 characters with `*`, Cloud DLP returns `***-**5-5555`.
          - `characters_to_skip`**Type**: `STRING`**Provider name**: `charactersToSkip`**Description**: Characters to not transform when masking.
          - `common_characters_to_ignore`**Type**: `STRING`**Provider name**: `commonCharactersToIgnore`**Description**: Common characters to not transform when masking. Useful to avoid removing punctuation.**Possible values**:
            - `COMMON_CHARS_TO_IGNORE_UNSPECIFIED` - Unused.
            - `NUMERIC` - 0-9
            - `ALPHA_UPPER_CASE` - A-Z
            - `ALPHA_LOWER_CASE` - a-z
            - `PUNCTUATION` - US Punctuation, one of !'#$%&'()*+,-./:;<=>?@[\]^_`{|}~
            - `WHITESPACE` - Whitespace character, one of [ \t\n\x0B\f\r]
        - `masking_character`**Type**: `STRING`**Provider name**: `maskingCharacter`**Description**: Character to use to mask the sensitive values—for example, `*` for an alphabetic string such as a name, or `0` for a numeric string such as ZIP code or credit card number. This string must have a length of 1. If not supplied, this value defaults to `*` for strings, and `0` for digits.
        - `number_to_mask`**Type**: `INT32`**Provider name**: `numberToMask`**Description**: Number of characters to mask. If not set, all matching chars will be masked. Skipped characters do not count towards this tally. If `number_to_mask` is negative, this denotes inverse masking. Cloud DLP masks all but a number of characters. For example, suppose you have the following values: - `masking_character` is `*` - `number_to_mask` is `-4` - `reverse_order` is `false` - `CharsToIgnore` includes `-` - Input string is `1234-5678-9012-3456` The resulting de-identified string is `****-****-****-3456`. Cloud DLP masks all but the last four characters. If `reverse_order` is `true`, all but the first four characters are masked as `1234-****-****-****`.
        - `reverse_order`**Type**: `BOOLEAN`**Provider name**: `reverseOrder`**Description**: Mask characters in reverse order. For example, if `masking_character` is `0`, `number_to_mask` is `14`, and `reverse_order` is `false`, then the input string `1234-5678-9012-3456` is masked as `00000000000000-3456`. If `masking_character` is `*`, `number_to_mask` is `3`, and `reverse_order` is `true`, then the string `12345` is masked as `12***`.

      - `crypto_deterministic_config`**Type**: `STRUCT`**Provider name**: `cryptoDeterministicConfig`**Description**: Deterministic Crypto

        - `context`**Type**: `STRUCT`**Provider name**: `context`**Description**: A context may be used for higher security and maintaining referential integrity such that the same identifier in two different contexts will be given a distinct surrogate. The context is appended to plaintext value being encrypted. On decryption the provided context is validated against the value used during encryption. If a context was provided during encryption, same context must be provided during decryption as well. If the context is not set, plaintext would be used as is for encryption. If the context is set but: 1. there is no record present when transforming a given value or 2. the field is not present when transforming a given value, plaintext would be used as is for encryption. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and unstructured `ContentItem`s.
          - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
        - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: The key used by the encryption function. For deterministic encryption using AES-SIV, the provided key is internally expanded to 64 bytes prior to use.
          - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
            - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
          - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
            - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
          - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key
        - `surrogate_info_type`**Type**: `STRUCT`**Provider name**: `surrogateInfoType`**Description**: The custom info type to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme defines the format: {info type name}({surrogate character count}):{surrogate} For example, if the name of custom info type is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom info type 'Surrogate'. This facilitates reversal of the surrogate when it occurs in free text. Note: For record transformations where the entire cell in a table is being transformed, surrogates are not mandatory. Surrogates are used to denote the location of the token and are necessary for re-identification in free form text. In order for inspection to work properly, the name of this info type must not occur naturally anywhere in your data; otherwise, inspection may either - reverse a surrogate that does not correspond to an actual identifier - be unable to parse the surrogate and result in an error Therefore, choose your custom info type name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: ⧝MY_TOKEN_TYPE.
          - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at [https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference](https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference) when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
          - `sensitivity_score`**Type**: `STRUCT`**Provider name**: `sensitivityScore`**Description**: Optional custom sensitivity for this InfoType. This only applies to data profiling.
            - `score`**Type**: `STRING`**Provider name**: `score`**Description**: The sensitivity score applied to the resource.**Possible values**:
              - `SENSITIVITY_SCORE_UNSPECIFIED` - Unused.
              - `SENSITIVITY_LOW` - No sensitive information detected. The resource isn't publicly accessible.
              - `SENSITIVITY_UNKNOWN` - Unable to determine sensitivity.
              - `SENSITIVITY_MODERATE` - Medium risk. Contains personally identifiable information (PII), potentially sensitive data, or fields with free-text data that are at a higher risk of having intermittent sensitive data. Consider limiting access.
              - `SENSITIVITY_HIGH` - High risk. Sensitive personally identifiable information (SPII) can be present. Exfiltration of data can lead to user data loss. Re-identification of users might be possible. Consider limiting usage and or removing SPII.
          - `version`**Type**: `STRING`**Provider name**: `version`**Description**: Optional version name for this InfoType.

      - `crypto_hash_config`**Type**: `STRUCT`**Provider name**: `cryptoHashConfig`**Description**: Crypto

        - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: The key used by the hash function.
          - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
            - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
          - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
            - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
          - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key

      - `crypto_replace_ffx_fpe_config`**Type**: `STRUCT`**Provider name**: `cryptoReplaceFfxFpeConfig`**Description**: Ffx-Fpe. Strongly discouraged, consider using CryptoDeterministicConfig instead. Fpe is computationally expensive incurring latency costs.

        - `common_alphabet`**Type**: `STRING`**Provider name**: `commonAlphabet`**Description**: Common alphabets.**Possible values**:
          - `FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED` - Unused.
          - `NUMERIC` - `[0-9]` (radix of 10)
          - `HEXADECIMAL` - `[0-9A-F]` (radix of 16)
          - `UPPER_CASE_ALPHA_NUMERIC` - `[0-9A-Z]` (radix of 36)
          - `ALPHA_NUMERIC` - `[0-9A-Za-z]` (radix of 62)
        - `context`**Type**: `STRUCT`**Provider name**: `context`**Description**: The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given the same surrogate. If the context is not set, a default tweak will be used. If the context is set but: 1. there is no record present when transforming a given value or 1. the field is not present when transforming a given value, a default tweak will be used. Note that case (1) is expected when an `InfoTypeTransformation` is applied to both structured and unstructured `ContentItem`s. Currently, the referenced field may be of value type integer or string. The tweak is constructed as a sequence of bytes in big endian byte order such that: - a 64 bit integer is encoded followed by a single byte of value 1 - a string is encoded in UTF-8 format followed by a single byte of value 2
          - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
        - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: Required. The key used by the encryption algorithm.
          - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
            - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
          - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
            - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
          - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key
        - `custom_alphabet`**Type**: `STRING`**Provider name**: `customAlphabet`**Description**: This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens before/after encryption/decryption. Each character listed must appear only once. Number of characters must be in the range [2, 95]. This must be encoded as ASCII. The order of characters does not matter. The full list of allowed characters is: `0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~`!@#$%^&*()_-+={[}]|\:;"'<,>.?/`
        - `radix`**Type**: `INT32`**Provider name**: `radix`**Description**: The native way to select the alphabet. Must be in the range [2, 95].
        - `surrogate_info_type`**Type**: `STRUCT`**Provider name**: `surrogateInfoType`**Description**: The custom infoType to annotate the surrogate with. This annotation will be applied to the surrogate by prefixing it with the name of the custom infoType followed by the number of characters comprising the surrogate. The following scheme defines the format: info_type_name(surrogate_character_count):surrogate For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and the surrogate is 'abc', the full replacement value will be: 'MY_TOKEN_INFO_TYPE(3):abc' This annotation identifies the surrogate when inspecting content using the custom infoType [`SurrogateType`](https://cloud.google.com/sensitive-data-protection/docs/reference/rest/v2/InspectConfig#surrogatetype). This facilitates reversal of the surrogate when it occurs in free text. In order for inspection to work properly, the name of this infoType must not occur naturally anywhere in your data; otherwise, inspection may find a surrogate that does not correspond to an actual identifier. Therefore, choose your custom infoType name carefully after considering what your data looks like. One way to select a name that has a high chance of yielding reliable detection is to include one or more unicode characters that are highly improbable to exist in your data. For example, assuming your data is entered from a regular ASCII keyboard, the symbol with the hex code point 29DD might be used like so: ⧝MY_TOKEN_TYPE
          - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at [https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference](https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference) when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
          - `sensitivity_score`**Type**: `STRUCT`**Provider name**: `sensitivityScore`**Description**: Optional custom sensitivity for this InfoType. This only applies to data profiling.
            - `score`**Type**: `STRING`**Provider name**: `score`**Description**: The sensitivity score applied to the resource.**Possible values**:
              - `SENSITIVITY_SCORE_UNSPECIFIED` - Unused.
              - `SENSITIVITY_LOW` - No sensitive information detected. The resource isn't publicly accessible.
              - `SENSITIVITY_UNKNOWN` - Unable to determine sensitivity.
              - `SENSITIVITY_MODERATE` - Medium risk. Contains personally identifiable information (PII), potentially sensitive data, or fields with free-text data that are at a higher risk of having intermittent sensitive data. Consider limiting access.
              - `SENSITIVITY_HIGH` - High risk. Sensitive personally identifiable information (SPII) can be present. Exfiltration of data can lead to user data loss. Re-identification of users might be possible. Consider limiting usage and or removing SPII.
          - `version`**Type**: `STRING`**Provider name**: `version`**Description**: Optional version name for this InfoType.

      - `date_shift_config`**Type**: `STRUCT`**Provider name**: `dateShiftConfig`**Description**: Date Shift

        - `context`**Type**: `STRUCT`**Provider name**: `context`**Description**: Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will be consistent for the given context.
          - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
        - `crypto_key`**Type**: `STRUCT`**Provider name**: `cryptoKey`**Description**: Causes the shift to be computed based on this key and the context. This results in the same shift for the same context and crypto_key. If set, must also set context. Can only be applied to table items.
          - `kms_wrapped`**Type**: `STRUCT`**Provider name**: `kmsWrapped`**Description**: Key wrapped using Cloud KMS
            - `crypto_key_name`**Type**: `STRING`**Provider name**: `cryptoKeyName`**Description**: Required. The resource name of the KMS CryptoKey to use for unwrapping.
          - `transient`**Type**: `STRUCT`**Provider name**: `transient`**Description**: Transient crypto key
            - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the key. This is an arbitrary string used to differentiate different keys. A unique key is generated per name: two separate `TransientCryptoKey` protos share the same generated key if their names are the same. When the data crypto key is generated, this name is not used in any way (repeating the api call will result in a different key being generated).
          - `unwrapped`**Type**: `STRUCT`**Provider name**: `unwrapped`**Description**: Unwrapped crypto key
        - `lower_bound_days`**Type**: `INT32`**Provider name**: `lowerBoundDays`**Description**: Required. For example, -5 means shift date to at most 5 days back in the past.
        - `upper_bound_days`**Type**: `INT32`**Provider name**: `upperBoundDays`**Description**: Required. Range of shift in days. Actual shift will be selected at random within this range (inclusive ends). Negative means shift to earlier in time. Must not be more than 365250 days (1000 years) each direction. For example, 3 means shift date to at most 3 days into the future.

      - `fixed_size_bucketing_config`**Type**: `STRUCT`**Provider name**: `fixedSizeBucketingConfig`**Description**: Fixed size bucketing

        - `bucket_size`**Type**: `DOUBLE`**Provider name**: `bucketSize`**Description**: Required. Size of each bucket (except for minimum and maximum buckets). So if `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works.
        - `lower_bound`**Type**: `STRUCT`**Provider name**: `lowerBound`**Description**: Required. Lower bound value of buckets. All values less than `lower_bound` are grouped together into a single bucket; for example if `lower_bound` = 10, then all values less than 10 are replaced with the value "-10".
          - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
          - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
            - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
            - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
            - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
            - `MONDAY` - Monday
            - `TUESDAY` - Tuesday
            - `WEDNESDAY` - Wednesday
            - `THURSDAY` - Thursday
            - `FRIDAY` - Friday
            - `SATURDAY` - Saturday
            - `SUNDAY` - Sunday
          - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
          - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
          - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
          - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
            - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
            - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
            - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
            - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
          - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp
        - `upper_bound`**Type**: `STRUCT`**Provider name**: `upperBound`**Description**: Required. Upper bound value of buckets. All values greater than upper_bound are grouped together into a single bucket; for example if `upper_bound` = 89, then all values greater than 89 are replaced with the value "89+".
          - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
          - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
            - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
            - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
            - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
            - `MONDAY` - Monday
            - `TUESDAY` - Tuesday
            - `WEDNESDAY` - Wednesday
            - `THURSDAY` - Thursday
            - `FRIDAY` - Friday
            - `SATURDAY` - Saturday
            - `SUNDAY` - Sunday
          - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
          - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
          - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
          - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
            - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
            - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
            - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
            - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
          - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp

      - `redact_config`**Type**: `STRUCT`**Provider name**: `redactConfig`**Description**: Redact

      - `replace_config`**Type**: `STRUCT`**Provider name**: `replaceConfig`**Description**: Replace with a specified value.

        - `new_value`**Type**: `STRUCT`**Provider name**: `newValue`**Description**: Value to replace it with.
          - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
          - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
            - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
            - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
            - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
            - `MONDAY` - Monday
            - `TUESDAY` - Tuesday
            - `WEDNESDAY` - Wednesday
            - `THURSDAY` - Thursday
            - `FRIDAY` - Friday
            - `SATURDAY` - Saturday
            - `SUNDAY` - Sunday
          - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
          - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
          - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
          - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
            - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
            - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
            - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
            - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
          - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp

      - `replace_dictionary_config`**Type**: `STRUCT`**Provider name**: `replaceDictionaryConfig`**Description**: Replace with a value randomly drawn (with replacement) from a dictionary.

        - `word_list`**Type**: `STRUCT`**Provider name**: `wordList`**Description**: A list of words to select from for random replacement. The [limits](https://cloud.google.com/sensitive-data-protection/limits) page contains details about the size limits of dictionaries.
          - `words`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `words`**Description**: Words or phrases defining the dictionary. The dictionary must contain at least one phrase and every phrase must contain at least 2 characters that are letters or digits. [required]

      - `replace_with_info_type_config`**Type**: `STRUCT`**Provider name**: `replaceWithInfoTypeConfig`**Description**: Replace with infotype

      - `time_part_config`**Type**: `STRUCT`**Provider name**: `timePartConfig`**Description**: Time extraction

        - `part_to_extract`**Type**: `STRING`**Provider name**: `partToExtract`**Description**: The part of the time to keep.**Possible values**:
          - `TIME_PART_UNSPECIFIED` - Unused
          - `YEAR` - [0-9999]
          - `MONTH` - [1-12]
          - `DAY_OF_MONTH` - [1-31]
          - `DAY_OF_WEEK` - [1-7]
          - `WEEK_OF_YEAR` - [1-53]
          - `HOUR_OF_DAY` - [0-23]
  - `record_suppressions`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `recordSuppressions`**Description**: Configuration defining which records get suppressed entirely. Records that match any suppression rule are omitted from the output.
    - `condition`**Type**: `STRUCT`**Provider name**: `condition`**Description**: A condition that when it evaluates to true will result in the record being evaluated to be suppressed from the transformed content.
      - `expressions`**Type**: `STRUCT`**Provider name**: `expressions`**Description**: An expression.
        - `conditions`**Type**: `STRUCT`**Provider name**: `conditions`**Description**: Conditions to apply to the expression.
          - `conditions`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `conditions`**Description**: A collection of conditions.
            - `field`**Type**: `STRUCT`**Provider name**: `field`**Description**: Required. Field within the record this condition is evaluated against.
              - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Name describing the field.
            - `operator`**Type**: `STRING`**Provider name**: `operator`**Description**: Required. Operator used to compare the field or infoType to the value.**Possible values**:
              - `RELATIONAL_OPERATOR_UNSPECIFIED` - Unused
              - `EQUAL_TO` - Equal. Attempts to match even with incompatible types.
              - `NOT_EQUAL_TO` - Not equal to. Attempts to match even with incompatible types.
              - `GREATER_THAN` - Greater than.
              - `LESS_THAN` - Less than.
              - `GREATER_THAN_OR_EQUALS` - Greater than or equals.
              - `LESS_THAN_OR_EQUALS` - Less than or equals.
              - `EXISTS` - Exists
            - `value`**Type**: `STRUCT`**Provider name**: `value`**Description**: Value to compare against. [Mandatory, except for `EXISTS` tests.]
              - `boolean_value`**Type**: `BOOLEAN`**Provider name**: `booleanValue`**Description**: boolean
              - `date_value`**Type**: `STRUCT`**Provider name**: `dateValue`**Description**: date
                - `day`**Type**: `INT32`**Provider name**: `day`**Description**: Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
                - `month`**Type**: `INT32`**Provider name**: `month`**Description**: Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
                - `year`**Type**: `INT32`**Provider name**: `year`**Description**: Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
              - `day_of_week_value`**Type**: `STRING`**Provider name**: `dayOfWeekValue`**Description**: day of week**Possible values**:
                - `DAY_OF_WEEK_UNSPECIFIED` - The day of the week is unspecified.
                - `MONDAY` - Monday
                - `TUESDAY` - Tuesday
                - `WEDNESDAY` - Wednesday
                - `THURSDAY` - Thursday
                - `FRIDAY` - Friday
                - `SATURDAY` - Saturday
                - `SUNDAY` - Sunday
              - `float_value`**Type**: `DOUBLE`**Provider name**: `floatValue`**Description**: float
              - `integer_value`**Type**: `INT64`**Provider name**: `integerValue`**Description**: integer
              - `string_value`**Type**: `STRING`**Provider name**: `stringValue`**Description**: string
              - `time_value`**Type**: `STRUCT`**Provider name**: `timeValue`**Description**: time of day
                - `hours`**Type**: `INT32`**Provider name**: `hours`**Description**: Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
                - `minutes`**Type**: `INT32`**Provider name**: `minutes`**Description**: Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.
                - `nanos`**Type**: `INT32`**Provider name**: `nanos`**Description**: Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.
                - `seconds`**Type**: `INT32`**Provider name**: `seconds`**Description**: Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.
              - `timestamp_value`**Type**: `TIMESTAMP`**Provider name**: `timestampValue`**Description**: timestamp
        - `logical_operator`**Type**: `STRING`**Provider name**: `logicalOperator`**Description**: The operator to apply to the result of conditions. Default and currently only supported value is `AND`.**Possible values**:
          - `LOGICAL_OPERATOR_UNSPECIFIED` - Unused
          - `AND` - Conditional AND
- `transformation_error_handling`**Type**: `STRUCT`**Provider name**: `transformationErrorHandling`**Description**: Mode for handling transformation errors. If left unspecified, the default mode is `TransformationErrorHandling.ThrowError`.
  - `leave_untransformed`**Type**: `STRUCT`**Provider name**: `leaveUntransformed`**Description**: Ignore errors

  - `throw_error`**Type**: `STRUCT`**Provider name**: `throwError`**Description**: Throw an error

## `description`{% #description %}

**Type**: `STRING`**Provider name**: `description`**Description**: Short description (max 256 chars).

## `gcp_display_name`{% #gcp_display_name %}

**Type**: `STRING`**Provider name**: `displayName`**Description**: Display name (max 256 chars).

## `labels`{% #labels %}

**Type**: `UNORDERED_LIST_STRING`

## `name`{% #name %}

**Type**: `STRING`**Provider name**: `name`**Description**: Output only. The template name. The template will have one of the following formats: `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`

## `organization_id`{% #organization_id %}

**Type**: `STRING`

## `parent`{% #parent %}

**Type**: `STRING`

## `project_id`{% #project_id %}

**Type**: `STRING`

## `project_number`{% #project_number %}

**Type**: `STRING`

## `region_id`{% #region_id %}

**Type**: `STRING`

## `resource_name`{% #resource_name %}

**Type**: `STRING`

## `tags`{% #tags %}

**Type**: `UNORDERED_LIST_STRING`

## `update_time`{% #update_time %}

**Type**: `TIMESTAMP`**Provider name**: `updateTime`**Description**: Output only. The last update timestamp of an inspectTemplate.

## `zone_id`{% #zone_id %}

**Type**: `STRING`
