From 40c1473f8fefd082f2dca68c4c1dc2a96ba2b02f Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Wed, 29 Jan 2020 15:06:15 -0800 Subject: [PATCH] docs(dlp): standardize use of 'required', 'optional' in docstrings; add descriptions to enums (via synth) (#10103) --- .../cloud/dlp_v2/gapic/dlp_service_client.py | 94 +- dlp/google/cloud/dlp_v2/gapic/enums.py | 58 +- dlp/google/cloud/dlp_v2/proto/dlp.proto | 569 +-- dlp/google/cloud/dlp_v2/proto/dlp_pb2.py | 1477 ++++--- dlp/synth.metadata | 3425 +---------------- 5 files changed, 1297 insertions(+), 4326 deletions(-) diff --git a/dlp/google/cloud/dlp_v2/gapic/dlp_service_client.py b/dlp/google/cloud/dlp_v2/gapic/dlp_service_client.py index a12762b95b39..474de2ce8089 100644 --- a/dlp/google/cloud/dlp_v2/gapic/dlp_service_client.py +++ b/dlp/google/cloud/dlp_v2/gapic/dlp_service_client.py @@ -323,11 +323,11 @@ def inspect_content( If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dlp_v2.types.ContentItem` - inspect_template_name (str): Optional template to use. Any configuration directly specified in - inspect\_config will override those set in the template. Singular fields - that are set in this request will replace their corresponding fields in - the template. Repeated fields are appended. Singular sub-messages and - groups are recursively merged. + inspect_template_name (str): Template to use. Any configuration directly specified in inspect\_config + will override those set in the template. Singular fields that are set in + this request will replace their corresponding fields in the template. + Repeated fields are appended. Singular sub-messages and groups are + recursively merged. location_id (str): The geographic location to process content inspection. Reserved for future extensions. retry (Optional[google.api_core.retry.Retry]): A retry object used @@ -537,12 +537,12 @@ def deidentify_content( If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dlp_v2.types.ContentItem` - inspect_template_name (str): Optional template to use. Any configuration directly specified in - inspect\_config will override those set in the template. Singular fields - that are set in this request will replace their corresponding fields in - the template. Repeated fields are appended. Singular sub-messages and - groups are recursively merged. - deidentify_template_name (str): Optional template to use. Any configuration directly specified in + inspect_template_name (str): Template to use. Any configuration directly specified in inspect\_config + will override those set in the template. Singular fields that are set in + this request will replace their corresponding fields in the template. + Repeated fields are appended. Singular sub-messages and groups are + recursively merged. + deidentify_template_name (str): Template to use. Any configuration directly specified in deidentify\_config will override those set in the template. Singular fields that are set in this request will replace their corresponding fields in the template. Repeated fields are appended. Singular @@ -655,17 +655,17 @@ def reidentify_content( If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dlp_v2.types.ContentItem` - inspect_template_name (str): Optional template to use. Any configuration directly specified in + inspect_template_name (str): Template to use. Any configuration directly specified in + ``inspect_config`` will override those set in the template. Singular + fields that are set in this request will replace their corresponding + fields in the template. Repeated fields are appended. Singular + sub-messages and groups are recursively merged. + reidentify_template_name (str): Template to use. References an instance of ``DeidentifyTemplate``. Any + configuration directly specified in ``reidentify_config`` or ``inspect_config`` will override those set in the template. Singular fields that are set in this request will replace their corresponding fields in the template. Repeated fields are appended. Singular sub-messages and groups are recursively merged. - reidentify_template_name (str): Optional template to use. References an instance of - ``DeidentifyTemplate``. Any configuration directly specified in - ``reidentify_config`` or ``inspect_config`` will override those set in - the template. Singular fields that are set in this request will replace - their corresponding fields in the template. Repeated fields are - appended. Singular sub-messages and groups are recursively merged. location_id (str): The geographic location to process content reidentification. Reserved for future extensions. retry (Optional[google.api_core.retry.Retry]): A retry object used @@ -746,11 +746,11 @@ def list_info_types( >>> response = client.list_info_types() Args: - language_code (str): Optional BCP-47 language code for localized infoType friendly + language_code (str): BCP-47 language code for localized infoType friendly names. If omitted, or if localized strings are not available, en-US strings will be returned. - filter_ (str): Optional filter to only return infoTypes supported by certain parts of - the API. Defaults to supported\_by=INSPECT. + filter_ (str): filter to only return infoTypes supported by certain parts of the API. + Defaults to supported\_by=INSPECT. location_id (str): The geographic location to list info types. Reserved for future extensions. retry (Optional[google.api_core.retry.Retry]): A retry object used @@ -830,7 +830,7 @@ def create_inspect_template( Args: parent (str): Required. The parent resource name, for example projects/my-project-id or organizations/my-org-id. - inspect_template (Union[dict, ~google.cloud.dlp_v2.types.InspectTemplate]): The InspectTemplate to create. + inspect_template (Union[dict, ~google.cloud.dlp_v2.types.InspectTemplate]): Required. The InspectTemplate to create. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dlp_v2.types.InspectTemplate` @@ -1091,9 +1091,9 @@ def list_inspect_templates( resource, this parameter does not affect the return value. If page streaming is performed per-page, this determines the maximum number of resources in a page. - order_by (str): Optional comma separated list of fields to order by, followed by ``asc`` - or ``desc`` postfix. This list is case-insensitive, default sorting - order is ascending, redundant space characters are insignificant. + order_by (str): Comma separated list of fields to order by, followed by ``asc`` or + ``desc`` postfix. This list is case-insensitive, default sorting order + is ascending, redundant space characters are insignificant. Example: ``name asc,update_time, create_time desc`` @@ -1270,7 +1270,7 @@ def create_deidentify_template( Args: parent (str): Required. The parent resource name, for example projects/my-project-id or organizations/my-org-id. - deidentify_template (Union[dict, ~google.cloud.dlp_v2.types.DeidentifyTemplate]): The DeidentifyTemplate to create. + deidentify_template (Union[dict, ~google.cloud.dlp_v2.types.DeidentifyTemplate]): Required. The DeidentifyTemplate to create. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dlp_v2.types.DeidentifyTemplate` @@ -1541,9 +1541,9 @@ def list_deidentify_templates( resource, this parameter does not affect the return value. If page streaming is performed per-page, this determines the maximum number of resources in a page. - order_by (str): Optional comma separated list of fields to order by, followed by ``asc`` - or ``desc`` postfix. This list is case-insensitive, default sorting - order is ascending, redundant space characters are insignificant. + order_by (str): Comma separated list of fields to order by, followed by ``asc`` or + ``desc`` postfix. This list is case-insensitive, default sorting order + is ascending, redundant space characters are insignificant. Example: ``name asc,update_time, create_time desc`` @@ -1727,10 +1727,12 @@ def create_dlp_job( Args: parent (str): Required. The parent resource name, for example projects/my-project-id. - inspect_job (Union[dict, ~google.cloud.dlp_v2.types.InspectJobConfig]): + inspect_job (Union[dict, ~google.cloud.dlp_v2.types.InspectJobConfig]): Set to control what and how to inspect. + If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dlp_v2.types.InspectJobConfig` - risk_job (Union[dict, ~google.cloud.dlp_v2.types.RiskAnalysisJobConfig]): + risk_job (Union[dict, ~google.cloud.dlp_v2.types.RiskAnalysisJobConfig]): Set to choose what metric to calculate. + If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dlp_v2.types.RiskAnalysisJobConfig` job_id (str): The job id can contain uppercase and lowercase letters, numbers, and @@ -1839,14 +1841,14 @@ def list_dlp_jobs( Args: parent (str): Required. The parent resource name, for example projects/my-project-id. - filter_ (str): Optional. Allows filtering. + filter_ (str): Allows filtering. Supported syntax: - Filter expressions are made up of one or more restrictions. - Restrictions can be combined by ``AND`` or ``OR`` logical operators. A sequence of restrictions implicitly uses ``AND``. - - A restriction has the form of `` ``. + - A restriction has the form of ``{field} {operator} {value}``. - Supported fields/values for inspect jobs: - ``state`` - PENDING\|RUNNING\|CANCELED\|FINISHED\|FAILED @@ -1879,9 +1881,9 @@ def list_dlp_jobs( streaming is performed per-page, this determines the maximum number of resources in a page. type_ (~google.cloud.dlp_v2.types.DlpJobType): The type of job. Defaults to ``DlpJobType.INSPECT`` - order_by (str): Optional comma separated list of fields to order by, followed by ``asc`` - or ``desc`` postfix. This list is case-insensitive, default sorting - order is ascending, redundant space characters are insignificant. + order_by (str): Comma separated list of fields to order by, followed by ``asc`` or + ``desc`` postfix. This list is case-insensitive, default sorting order + is ascending, redundant space characters are insignificant. Example: ``name asc, end_time asc, create_time desc`` @@ -2217,9 +2219,9 @@ def list_job_triggers( resource, this parameter does not affect the return value. If page streaming is performed per-page, this determines the maximum number of resources in a page. - order_by (str): Optional comma separated list of triggeredJob fields to order by, - followed by ``asc`` or ``desc`` postfix. This list is case-insensitive, - default sorting order is ascending, redundant space characters are + order_by (str): Comma separated list of triggeredJob fields to order by, followed by + ``asc`` or ``desc`` postfix. This list is case-insensitive, default + sorting order is ascending, redundant space characters are insignificant. Example: ``name asc,update_time, create_time desc`` @@ -2232,14 +2234,14 @@ def list_job_triggers( - ``name``: corresponds to JobTrigger's name. - ``display_name``: corresponds to JobTrigger's display name. - ``status``: corresponds to JobTrigger's status. - filter_ (str): Optional. Allows filtering. + filter_ (str): Allows filtering. Supported syntax: - Filter expressions are made up of one or more restrictions. - Restrictions can be combined by ``AND`` or ``OR`` logical operators. A sequence of restrictions implicitly uses ``AND``. - - A restriction has the form of `` ``. + - A restriction has the form of ``{field} {operator} {value}``. - Supported fields/values for inspect jobs: - ``status`` - HEALTHY\|PAUSED\|CANCELLED @@ -2580,7 +2582,7 @@ def create_job_trigger( Args: parent (str): Required. The parent resource name, for example projects/my-project-id. - job_trigger (Union[dict, ~google.cloud.dlp_v2.types.JobTrigger]): The JobTrigger to create. + job_trigger (Union[dict, ~google.cloud.dlp_v2.types.JobTrigger]): Required. The JobTrigger to create. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dlp_v2.types.JobTrigger` @@ -2670,7 +2672,7 @@ def create_stored_info_type( Args: parent (str): Required. The parent resource name, for example projects/my-project-id or organizations/my-org-id. - config (Union[dict, ~google.cloud.dlp_v2.types.StoredInfoTypeConfig]): Configuration of the storedInfoType to create. + config (Union[dict, ~google.cloud.dlp_v2.types.StoredInfoTypeConfig]): Required. Configuration of the storedInfoType to create. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dlp_v2.types.StoredInfoTypeConfig` @@ -2939,9 +2941,9 @@ def list_stored_info_types( resource, this parameter does not affect the return value. If page streaming is performed per-page, this determines the maximum number of resources in a page. - order_by (str): Optional comma separated list of fields to order by, followed by ``asc`` - or ``desc`` postfix. This list is case-insensitive, default sorting - order is ascending, redundant space characters are insignificant. + order_by (str): Comma separated list of fields to order by, followed by ``asc`` or + ``desc`` postfix. This list is case-insensitive, default sorting order + is ascending, redundant space characters are insignificant. Example: ``name asc, display_name, create_time desc`` diff --git a/dlp/google/cloud/dlp_v2/gapic/enums.py b/dlp/google/cloud/dlp_v2/gapic/enums.py index 17e66af79356..02173104d93a 100644 --- a/dlp/google/cloud/dlp_v2/gapic/enums.py +++ b/dlp/google/cloud/dlp_v2/gapic/enums.py @@ -61,10 +61,10 @@ class DayOfWeek(enum.IntEnum): class DlpJobType(enum.IntEnum): """ - An enum to represent the various type of DLP jobs. + An enum to represent the various types of DLP jobs. Attributes: - DLP_JOB_TYPE_UNSPECIFIED (int) + DLP_JOB_TYPE_UNSPECIFIED (int): Unused INSPECT_JOB (int): The job inspected Google Cloud for sensitive data. RISK_ANALYSIS_JOB (int): The job executed a Risk Analysis computation. """ @@ -105,7 +105,7 @@ class InfoTypeSupportedBy(enum.IntEnum): Parts of the APIs which use certain infoTypes. Attributes: - ENUM_TYPE_UNSPECIFIED (int) + ENUM_TYPE_UNSPECIFIED (int): Unused. INSPECT (int): Supported by the inspect operations. RISK_ANALYSIS (int): Supported by the risk analysis operations. """ @@ -173,7 +173,7 @@ class RelationalOperator(enum.IntEnum): Operators available for comparing the value of fields. Attributes: - RELATIONAL_OPERATOR_UNSPECIFIED (int) + RELATIONAL_OPERATOR_UNSPECIFIED (int): Unused EQUAL_TO (int): Equal. Attempts to match even with incompatible types. NOT_EQUAL_TO (int): Not equal to. Attempts to match even with incompatible types. GREATER_THAN (int): Greater than. @@ -198,7 +198,7 @@ class StoredInfoTypeState(enum.IntEnum): State of a StoredInfoType version. Attributes: - STORED_INFO_TYPE_STATE_UNSPECIFIED (int) + STORED_INFO_TYPE_STATE_UNSPECIFIED (int): Unused PENDING (int): StoredInfoType version is being created. READY (int): StoredInfoType version is ready for use. FAILED (int): StoredInfoType creation failed. All relevant error messages are returned @@ -236,15 +236,17 @@ class SampleMethod(enum.IntEnum): class ByteContentItem(object): class BytesType(enum.IntEnum): """ + The type of data being sent to in data. + Attributes: - BYTES_TYPE_UNSPECIFIED (int) - IMAGE (int) - IMAGE_JPEG (int) - IMAGE_BMP (int) - IMAGE_PNG (int) - IMAGE_SVG (int) - TEXT_UTF8 (int) - AVRO (int) + BYTES_TYPE_UNSPECIFIED (int): Unused + IMAGE (int): Any image type. + IMAGE_JPEG (int): jpeg + IMAGE_BMP (int): bmp + IMAGE_PNG (int): png + IMAGE_SVG (int): svg + TEXT_UTF8 (int): plain text + AVRO (int): avro """ BYTES_TYPE_UNSPECIFIED = 0 @@ -260,8 +262,10 @@ class BytesType(enum.IntEnum): class CharsToIgnore(object): class CommonCharsToIgnore(enum.IntEnum): """ + Convenience enum for indication common characters to not transform. + Attributes: - COMMON_CHARS_TO_IGNORE_UNSPECIFIED (int) + COMMON_CHARS_TO_IGNORE_UNSPECIFIED (int): Unused. NUMERIC (int): 0-9 ALPHA_UPPER_CASE (int): A-Z ALPHA_LOWER_CASE (int): a-z @@ -304,7 +308,7 @@ class FfxCommonNativeAlphabet(enum.IntEnum): the "radix". Therefore each corresponds to particular radix. Attributes: - FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED (int) + FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED (int): Unused. NUMERIC (int): [0-9] (radix of 10) HEXADECIMAL (int): [0-9A-F] (radix of 16) UPPER_CASE_ALPHA_NUMERIC (int): [0-9A-Z] (radix of 36) @@ -334,8 +338,10 @@ class ExclusionType(enum.IntEnum): class DlpJob(object): class JobState(enum.IntEnum): """ + Possible states of a job. + Attributes: - JOB_STATE_UNSPECIFIED (int) + JOB_STATE_UNSPECIFIED (int): Unused. PENDING (int): The job has not yet started. RUNNING (int): The job is currently running. DONE (int): The job is no longer running. @@ -360,7 +366,7 @@ class Status(enum.IntEnum): status to HEALTHY after correcting user errors. Attributes: - STATUS_UNSPECIFIED (int) + STATUS_UNSPECIFIED (int): Unused. HEALTHY (int): Trigger is healthy. PAUSED (int): Trigger is temporarily paused. CANCELLED (int): Trigger is cancelled and can not be resumed. @@ -378,7 +384,7 @@ class OutputSchema(enum.IntEnum): Predefined schemas for storing findings. Attributes: - OUTPUT_SCHEMA_UNSPECIFIED (int) + OUTPUT_SCHEMA_UNSPECIFIED (int): Unused. BASIC_COLUMNS (int): Basic schema including only ``info_type``, ``quote``, ``certainty``, and ``timestamp``. GCS_COLUMNS (int): Schema tailored to findings from scanning Google Cloud Storage. @@ -399,9 +405,11 @@ class RecordCondition(object): class Expressions(object): class LogicalOperator(enum.IntEnum): """ + Logical operators for conditional checks. + Attributes: - LOGICAL_OPERATOR_UNSPECIFIED (int) - AND (int) + LOGICAL_OPERATOR_UNSPECIFIED (int): Unused + AND (int): Conditional AND """ LOGICAL_OPERATOR_UNSPECIFIED = 0 @@ -411,8 +419,10 @@ class LogicalOperator(enum.IntEnum): class TimePartConfig(object): class TimePart(enum.IntEnum): """ + Components that make up time. + Attributes: - TIME_PART_UNSPECIFIED (int) + TIME_PART_UNSPECIFIED (int): Unused YEAR (int): [0-9999] MONTH (int): [1-12] DAY_OF_MONTH (int): [1-31] @@ -436,9 +446,9 @@ class TransformationResultCode(enum.IntEnum): Possible outcomes of transformations. Attributes: - TRANSFORMATION_RESULT_CODE_UNSPECIFIED (int) - SUCCESS (int) - ERROR (int) + TRANSFORMATION_RESULT_CODE_UNSPECIFIED (int): Unused + SUCCESS (int): Transformation completed without an error. + ERROR (int): Transformation had an error. """ TRANSFORMATION_RESULT_CODE_UNSPECIFIED = 0 diff --git a/dlp/google/cloud/dlp_v2/proto/dlp.proto b/dlp/google/cloud/dlp_v2/proto/dlp.proto index ece44c6f79f4..0dc4119b8adf 100644 --- a/dlp/google/cloud/dlp_v2/proto/dlp.proto +++ b/dlp/google/cloud/dlp_v2/proto/dlp.proto @@ -18,6 +18,7 @@ syntax = "proto3"; package google.privacy.dlp.v2; import "google/api/annotations.proto"; +import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/privacy/dlp/v2/storage.proto"; @@ -29,7 +30,6 @@ import "google/rpc/status.proto"; import "google/type/date.proto"; import "google/type/dayofweek.proto"; import "google/type/timeofday.proto"; -import "google/api/client.proto"; option csharp_namespace = "Google.Cloud.Dlp.V2"; option go_package = "google.golang.org/genproto/googleapis/privacy/dlp/v2;dlp"; @@ -134,6 +134,7 @@ service DlpService { get: "/v2/locations/{location_id}/infoTypes" } }; + option (google.api.method_signature) = "location_id"; } // Creates an InspectTemplate for re-using frequently used configuration @@ -156,6 +157,8 @@ service DlpService { body: "*" } }; + option (google.api.method_signature) = "parent,inspect_template"; + option (google.api.method_signature) = "parent,inspect_template,location_id"; } // Updates the InspectTemplate. @@ -177,6 +180,7 @@ service DlpService { body: "*" } }; + option (google.api.method_signature) = "name,inspect_template,update_mask"; } // Gets an InspectTemplate. @@ -194,6 +198,7 @@ service DlpService { get: "/v2/{name=projects/*/locations/*/inspectTemplates/*}" } }; + option (google.api.method_signature) = "name"; } // Lists InspectTemplates. @@ -211,6 +216,7 @@ service DlpService { get: "/v2/{parent=projects/*}/locations/{location_id}/inspectTemplates" } }; + option (google.api.method_signature) = "parent"; } // Deletes an InspectTemplate. @@ -228,6 +234,7 @@ service DlpService { delete: "/v2/{name=projects/*/locations/*/inspectTemplates/*}" } }; + option (google.api.method_signature) = "name"; } // Creates a DeidentifyTemplate for re-using frequently used configuration @@ -251,6 +258,8 @@ service DlpService { body: "*" } }; + option (google.api.method_signature) = "parent,deidentify_template"; + option (google.api.method_signature) = "parent,deidentify_template,location_id"; } // Updates the DeidentifyTemplate. @@ -273,6 +282,7 @@ service DlpService { body: "*" } }; + option (google.api.method_signature) = "name,deidentify_template,update_mask"; } // Gets a DeidentifyTemplate. @@ -291,6 +301,7 @@ service DlpService { get: "/v2/{name=projects/*/locations/*/deidentifyTemplates/*}" } }; + option (google.api.method_signature) = "name"; } // Lists DeidentifyTemplates. @@ -309,6 +320,7 @@ service DlpService { get: "/v2/{parent=projects/*}/locations/{location_id}/deidentifyTemplates" } }; + option (google.api.method_signature) = "parent"; } // Deletes a DeidentifyTemplate. @@ -327,6 +339,7 @@ service DlpService { delete: "/v2/{name=projects/*/locations/*/deidentifyTemplates/*}" } }; + option (google.api.method_signature) = "name"; } // Creates a job trigger to run DLP actions such as scanning storage for @@ -341,6 +354,8 @@ service DlpService { body: "*" } }; + option (google.api.method_signature) = "parent,job_trigger"; + option (google.api.method_signature) = "parent,job_trigger,location_id"; } // Updates a job trigger. @@ -354,6 +369,7 @@ service DlpService { body: "*" } }; + option (google.api.method_signature) = "name,job_trigger,update_mask"; } // Gets a job trigger. @@ -365,6 +381,7 @@ service DlpService { get: "/v2/{name=projects/*/locations/*/jobTriggers/*}" } }; + option (google.api.method_signature) = "name"; } // Lists job triggers. @@ -376,6 +393,7 @@ service DlpService { get: "/v2/{parent=projects/*}/locations/{location_id}/jobTriggers" } }; + option (google.api.method_signature) = "parent"; } // Deletes a job trigger. @@ -387,6 +405,7 @@ service DlpService { delete: "/v2/{name=projects/*/locations/*/jobTriggers/*}" } }; + option (google.api.method_signature) = "name"; } // Activate a job trigger. Causes the immediate execute of a trigger @@ -418,6 +437,10 @@ service DlpService { body: "*" } }; + option (google.api.method_signature) = "parent,inspect_job"; + option (google.api.method_signature) = "parent,inspect_job,location_id"; + option (google.api.method_signature) = "parent,risk_job"; + option (google.api.method_signature) = "parent,risk_job,location_id"; } // Lists DlpJobs that match the specified filter in the request. @@ -430,6 +453,7 @@ service DlpService { get: "/v2/{parent=projects/*}/locations/{location_id}/dlpJobs" } }; + option (google.api.method_signature) = "parent"; } // Gets the latest state of a long-running DlpJob. @@ -442,6 +466,7 @@ service DlpService { get: "/v2/{name=projects/*/locations/*/dlpJobs/*}" } }; + option (google.api.method_signature) = "name"; } // Deletes a long-running DlpJob. This method indicates that the client is @@ -456,6 +481,7 @@ service DlpService { delete: "/v2/{name=projects/*/locations/*/dlpJobs/*}" } }; + option (google.api.method_signature) = "name"; } // Starts asynchronous cancellation on a long-running DlpJob. The server @@ -494,6 +520,8 @@ service DlpService { body: "*" } }; + option (google.api.method_signature) = "parent,config"; + option (google.api.method_signature) = "parent,config,location_id"; } // Updates the stored infoType by creating a new version. The existing version @@ -517,6 +545,7 @@ service DlpService { body: "*" } }; + option (google.api.method_signature) = "name,config,update_mask"; } // Gets a stored infoType. @@ -535,6 +564,7 @@ service DlpService { get: "/v2/{name=projects/*/locations/*/storedInfoTypes/*}" } }; + option (google.api.method_signature) = "name"; } // Lists stored infoTypes. @@ -553,6 +583,7 @@ service DlpService { get: "/v2/{parent=projects/*}/locations/{location_id}/storedInfoTypes" } }; + option (google.api.method_signature) = "parent"; } // Deletes a stored infoType. @@ -571,6 +602,7 @@ service DlpService { delete: "/v2/{name=projects/*/locations/*/storedInfoTypes/*}" } }; + option (google.api.method_signature) = "name"; } } @@ -590,6 +622,7 @@ message ExcludeInfoTypes { // The rule that specifies conditions when findings of infoTypes specified in // `InspectionRuleSet` are removed from results. message ExclusionRule { + // Exclusion rule types. oneof type { // Dictionary which defines the rule. CustomInfoType.Dictionary dictionary = 1; @@ -605,21 +638,10 @@ message ExclusionRule { MatchingType matching_type = 4; } -// Options describing which parts of the provided content should be scanned. -enum ContentOption { - // Includes entire content of a file or a data stream. - CONTENT_UNSPECIFIED = 0; - - // Text content within the data, excluding any metadata. - CONTENT_TEXT = 1; - - // Images found in the data. - CONTENT_IMAGE = 2; -} - // A single inspection rule to be applied to infoTypes, specified in // `InspectionRuleSet`. message InspectionRule { + // Inspection rule types. oneof type { // Hotword-based detection rule. CustomInfoType.DetectionRule.HotwordRule hotword_rule = 1; @@ -643,6 +665,7 @@ message InspectionRuleSet { // When used with redactContent only info_types and min_likelihood are currently // used. message InspectConfig { + // Configuration to control the number of findings returned. message FindingLimits { // Max findings configuration per infoType, per content item or long // running DlpJob. @@ -690,6 +713,7 @@ message InspectConfig { // See https://cloud.google.com/dlp/docs/likelihood to learn more. Likelihood min_likelihood = 2; + // Configuration to control the number of findings returned. FindingLimits limits = 3; // When true, a contextual quote from the data that triggered a finding is @@ -715,21 +739,30 @@ message InspectConfig { // Container for bytes to inspect or redact. message ByteContentItem { + // The type of data being sent to in data. enum BytesType { + // Unused BYTES_TYPE_UNSPECIFIED = 0; + // Any image type. IMAGE = 6; + // jpeg IMAGE_JPEG = 1; + // bmp IMAGE_BMP = 2; + // png IMAGE_PNG = 3; + // svg IMAGE_SVG = 4; + // plain text TEXT_UTF8 = 5; + // avro AVRO = 11; } @@ -761,12 +794,16 @@ message ContentItem { // See https://cloud.google.com/dlp/docs/inspecting-text#inspecting_a_table to // learn more. message Table { + // Values of the row. message Row { + // Individual cells. repeated Value values = 1; } + // Headers of the table. repeated FieldId headers = 1; + // Rows of the table. repeated Row rows = 2; } @@ -831,44 +868,15 @@ message Location { repeated ContentLocation content_locations = 7; } -// Type of the match which can be applied to different ways of matching, like -// Dictionary, regular expression and intersecting with findings of another -// info type. -enum MatchingType { - // Invalid. - MATCHING_TYPE_UNSPECIFIED = 0; - - // Full match. - // - // - Dictionary: join of Dictionary results matched complete finding quote - // - Regex: all regex matches fill a finding quote start to end - // - Exclude info type: completely inside affecting info types findings - MATCHING_TYPE_FULL_MATCH = 1; - - // Partial match. - // - // - Dictionary: at least one of the tokens in the finding matches - // - Regex: substring of the finding matches - // - Exclude info type: intersects with affecting info types findings - MATCHING_TYPE_PARTIAL_MATCH = 2; - - // Inverse match. - // - // - Dictionary: no tokens in the finding match the dictionary - // - Regex: finding doesn't match the regex - // - Exclude info type: no intersection with affecting info types findings - MATCHING_TYPE_INVERSE_MATCH = 3; -} - // Findings container location data. message ContentLocation { // Name of the container where the finding is located. // The top level name is the source file name or table name. Names of some // common storage containers are formatted as follows: // - // * BigQuery tables: `:.` - // * Cloud Storage files: `gs:///` - // * Datastore namespace: + // * BigQuery tables: `{project_id}:{dataset_id}.{table_id}` + // * Cloud Storage files: `gs://{bucket}/{path}` + // * Datastore namespace: {namespace} // // Nested names could be absent if the embedded object has no string // identifier (for an example an image contained within a document). @@ -1044,14 +1052,14 @@ message DeidentifyContentRequest { // The item to de-identify. Will be treated as text. ContentItem item = 4; - // Optional template to use. Any configuration directly specified in + // Template to use. Any configuration directly specified in // inspect_config will override those set in the template. Singular fields // that are set in this request will replace their corresponding fields in the // template. Repeated fields are appended. Singular sub-messages and groups // are recursively merged. string inspect_template_name = 5; - // Optional template to use. Any configuration directly specified in + // Template to use. Any configuration directly specified in // deidentify_config will override those set in the template. Singular fields // that are set in this request will replace their corresponding fields in the // template. Repeated fields are appended. Singular sub-messages and groups @@ -1100,14 +1108,14 @@ message ReidentifyContentRequest { // The item to re-identify. Will be treated as text. ContentItem item = 4; - // Optional template to use. Any configuration directly specified in + // Template to use. Any configuration directly specified in // `inspect_config` will override those set in the template. Singular fields // that are set in this request will replace their corresponding fields in the // template. Repeated fields are appended. Singular sub-messages and groups // are recursively merged. string inspect_template_name = 5; - // Optional template to use. References an instance of `DeidentifyTemplate`. + // Template to use. References an instance of `DeidentifyTemplate`. // Any configuration directly specified in `reidentify_config` or // `inspect_config` will override those set in the template. Singular fields // that are set in this request will replace their corresponding fields in the @@ -1143,7 +1151,7 @@ message InspectContentRequest { // The item to inspect. ContentItem item = 3; - // Optional template to use. Any configuration directly specified in + // Template to use. Any configuration directly specified in // inspect_config will override those set in the template. Singular fields // that are set in this request will replace their corresponding fields in the // template. Repeated fields are appended. Singular sub-messages and groups @@ -1165,6 +1173,7 @@ message InspectContentResponse { message OutputStorageConfig { // Predefined schemas for storing findings. enum OutputSchema { + // Unused. OUTPUT_SCHEMA_UNSPECIFIED = 0; // Basic schema including only `info_type`, `quote`, `certainty`, and @@ -1184,6 +1193,7 @@ message OutputStorageConfig { ALL_COLUMNS = 5; } + // Output storage types. oneof type { // Store findings in an existing table or a new table in an existing // dataset. If table_id is not set a new one will be generated @@ -1225,11 +1235,13 @@ message InfoTypeStats { // The results of an inspect DataSource job. message InspectDataSourceDetails { + // Snapshot of the inspection configuration. message RequestedOptions { // If run with an InspectTemplate, a snapshot of its state at the time of // this run. InspectTemplate snapshot_inspect_template = 1; + // Inspect config. InspectJobConfig job_config = 3; } @@ -1271,12 +1283,12 @@ message InfoTypeDescription { // Request for the list of infoTypes. message ListInfoTypesRequest { - // Optional BCP-47 language code for localized infoType friendly + // BCP-47 language code for localized infoType friendly // names. If omitted, or if localized strings are not available, // en-US strings will be returned. string language_code = 1; - // Optional filter to only return infoTypes supported by certain parts of the + // filter to only return infoTypes supported by certain parts of the // API. Defaults to supported_by=INSPECT. string filter = 2; @@ -1307,8 +1319,8 @@ message RiskAnalysisJobConfig { // A column with a semantic tag attached. message QuasiId { - // Identifies the column. [required] - FieldId field = 1; + // Required. Identifies the column. + FieldId field = 1 [(google.api.field_behavior) = REQUIRED]; // Semantic tag that identifies what a column contains, to determine which // statistical model to use to estimate the reidentifiability of each @@ -1343,21 +1355,24 @@ message StatisticalTable { // A quasi-identifier column has a custom_tag, used to know which column // in the data corresponds to which column in the statistical model. message QuasiIdentifierField { + // Identifies the column. FieldId field = 1; + // A column can be tagged with a custom tag. In this case, the user must + // indicate an auxiliary table that contains statistical information on + // the possible values of this column (below). string custom_tag = 2; } - // Auxiliary table location. [required] - BigQueryTable table = 3; + // Required. Auxiliary table location. + BigQueryTable table = 3 [(google.api.field_behavior) = REQUIRED]; - // Quasi-identifier columns. [required] - repeated QuasiIdentifierField quasi_ids = 1; + // Required. Quasi-identifier columns. + repeated QuasiIdentifierField quasi_ids = 1 [(google.api.field_behavior) = REQUIRED]; - // The relative frequency column must contain a floating-point number + // Required. The relative frequency column must contain a floating-point number // between 0 and 1 (inclusive). Null values are assumed to be zero. - // [required] - FieldId relative_frequency = 2; + FieldId relative_frequency = 2 [(google.api.field_behavior) = REQUIRED]; } // Privacy metric to compute for reidentification risk analysis. @@ -1389,7 +1404,7 @@ message PrivacyMetric { // a repeated field. repeated FieldId quasi_ids = 1; - // Optional message indicating that multiple rows might be associated to a + // Message indicating that multiple rows might be associated to a // single individual. If the same entity_id is associated to multiple // quasi-identifier tuples over distinct rows, we consider the entire // collection of tuples as the composite quasi-identifier. This collection @@ -1419,11 +1434,11 @@ message PrivacyMetric { // using publicly available data (like the US Census), or using a custom // statistical model (indicated as one or several BigQuery tables), or by // extrapolating from the distribution of values in the input dataset. - // A column with a semantic tag attached. message KMapEstimationConfig { + // A column with a semantic tag attached. message TaggedField { - // Identifies the column. [required] - FieldId field = 1; + // Required. Identifies the column. + FieldId field = 1 [(google.api.field_behavior) = REQUIRED]; // Semantic tag that identifies what a column contains, to determine which // statistical model to use to estimate the reidentifiability of each @@ -1458,29 +1473,30 @@ message PrivacyMetric { // A quasi-identifier column has a custom_tag, used to know which column // in the data corresponds to which column in the statistical model. message QuasiIdField { + // Identifies the column. FieldId field = 1; + // A auxiliary field. string custom_tag = 2; } - // Auxiliary table location. [required] - BigQueryTable table = 3; + // Required. Auxiliary table location. + BigQueryTable table = 3 [(google.api.field_behavior) = REQUIRED]; - // Quasi-identifier columns. [required] - repeated QuasiIdField quasi_ids = 1; + // Required. Quasi-identifier columns. + repeated QuasiIdField quasi_ids = 1 [(google.api.field_behavior) = REQUIRED]; - // The relative frequency column must contain a floating-point number + // Required. The relative frequency column must contain a floating-point number // between 0 and 1 (inclusive). Null values are assumed to be zero. - // [required] - FieldId relative_frequency = 2; + FieldId relative_frequency = 2 [(google.api.field_behavior) = REQUIRED]; } - // Fields considered to be quasi-identifiers. No two columns can have the - // same tag. [required] - repeated TaggedField quasi_ids = 1; + // Required. Fields considered to be quasi-identifiers. No two columns can have the + // same tag. + repeated TaggedField quasi_ids = 1 [(google.api.field_behavior) = REQUIRED]; // ISO 3166-1 alpha-2 region code to use in the statistical modeling. - // Required if no column is tagged with a region-specific InfoType (like + // Set if no column is tagged with a region-specific InfoType (like // US_ZIP_5) or a region code. string region_code = 2; @@ -1495,12 +1511,12 @@ message PrivacyMetric { // Similarly to the k-map metric, we cannot compute δ-presence exactly without // knowing the attack dataset, so we use a statistical model instead. message DeltaPresenceEstimationConfig { - // Fields considered to be quasi-identifiers. No two fields can have the - // same tag. [required] - repeated QuasiId quasi_ids = 1; + // Required. Fields considered to be quasi-identifiers. No two fields can have the + // same tag. + repeated QuasiId quasi_ids = 1 [(google.api.field_behavior) = REQUIRED]; // ISO 3166-1 alpha-2 region code to use in the statistical modeling. - // Required if no column is tagged with a region-specific InfoType (like + // Set if no column is tagged with a region-specific InfoType (like // US_ZIP_5) or a region code. string region_code = 2; @@ -1510,17 +1526,24 @@ message PrivacyMetric { repeated StatisticalTable auxiliary_tables = 3; } + // Types of analysis. oneof type { + // Numerical stats NumericalStatsConfig numerical_stats_config = 1; + // Categorical stats CategoricalStatsConfig categorical_stats_config = 2; + // K-anonymity KAnonymityConfig k_anonymity_config = 3; + // l-diversity LDiversityConfig l_diversity_config = 4; + // k-map KMapEstimationConfig k_map_estimation_config = 5; + // delta-presence DeltaPresenceEstimationConfig delta_presence_estimation_config = 6; } } @@ -1542,6 +1565,7 @@ message AnalyzeDataSourceRiskDetails { // Result of the categorical stats computation. message CategoricalStatsResult { + // Histogram of value frequencies in the column. message CategoricalStatsHistogramBucket { // Lower bound on the value frequency of the values in this bucket. int64 value_frequency_lower_bound = 1; @@ -1578,6 +1602,7 @@ message AnalyzeDataSourceRiskDetails { int64 equivalence_class_size = 2; } + // Histogram of k-anonymity equivalence classes. message KAnonymityHistogramBucket { // Lower bound on the size of the equivalence classes in this bucket. int64 equivalence_class_size_lower_bound = 1; @@ -1618,6 +1643,7 @@ message AnalyzeDataSourceRiskDetails { repeated ValueFrequency top_sensitive_values = 4; } + // Histogram of l-diversity equivalence class sensitive value frequencies. message LDiversityHistogramBucket { // Lower bound on the sensitive value frequencies of the equivalence // classes in this bucket. @@ -1756,16 +1782,22 @@ message AnalyzeDataSourceRiskDetails { // Values associated with this metric. oneof result { + // Numerical stats result NumericalStatsResult numerical_stats_result = 3; + // Categorical stats result CategoricalStatsResult categorical_stats_result = 4; + // K-anonymity result KAnonymityResult k_anonymity_result = 5; + // L-divesity result LDiversityResult l_diversity_result = 6; + // K-map result KMapEstimationResult k_map_estimation_result = 7; + // Delta-presence result DeltaPresenceEstimationResult delta_presence_estimation_result = 9; } } @@ -1786,21 +1818,30 @@ message ValueFrequency { // 123456789, the number of bytes would be counted as 9, even though an // int64 only holds up to 8 bytes of data. message Value { + // Value types oneof type { + // integer int64 integer_value = 1; + // float double float_value = 2; + // string string string_value = 3; + // boolean bool boolean_value = 4; + // timestamp google.protobuf.Timestamp timestamp_value = 5; + // time of day google.type.TimeOfDay time_value = 6; + // date google.type.Date date_value = 7; + // day of week google.type.DayOfWeek day_of_week_value = 8; } } @@ -1817,20 +1858,24 @@ message QuoteInfo { // Message for a date time object. // e.g. 2018-01-01, 5th August. message DateTime { + // Time zone of the date time object. message TimeZone { // Set only if the offset can be determined. Positive for time ahead of UTC. // E.g. For "UTC-9", this value is -540. int32 offset_minutes = 1; } - // One or more of the following must be set. All fields are optional, but - // when set must be valid date or time values. + // One or more of the following must be set. + // Must be a valid date or time value. google.type.Date date = 1; + // Day of week google.type.DayOfWeek day_of_week = 2; + // Time of day google.type.TimeOfDay time = 3; + // Time zone TimeZone time_zone = 4; } @@ -1851,26 +1896,37 @@ message DeidentifyConfig { // A rule for transforming a value. message PrimitiveTransformation { oneof transformation { + // Replace ReplaceValueConfig replace_config = 1; + // Redact RedactConfig redact_config = 2; + // Mask CharacterMaskConfig character_mask_config = 3; + // Ffx-Fpe CryptoReplaceFfxFpeConfig crypto_replace_ffx_fpe_config = 4; + // Fixed size bucketing FixedSizeBucketingConfig fixed_size_bucketing_config = 5; + // Bucketing BucketingConfig bucketing_config = 6; + // Replace with infotype ReplaceWithInfoTypeConfig replace_with_info_type_config = 7; + // Time extraction TimePartConfig time_part_config = 8; + // Crypto CryptoHashConfig crypto_hash_config = 9; + // Date Shift DateShiftConfig date_shift_config = 11; + // Deterministic Crypto CryptoDeterministicConfig crypto_deterministic_config = 12; } } @@ -1878,7 +1934,9 @@ message PrimitiveTransformation { // For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a // portion of the value. message TimePartConfig { + // Components that make up time. enum TimePart { + // Unused TIME_PART_UNSPECIFIED = 0; // [0-9999] @@ -1900,6 +1958,7 @@ message TimePartConfig { HOUR_OF_DAY = 6; } + // The part of the time to keep. TimePart part_to_extract = 1; } @@ -1926,7 +1985,7 @@ message CryptoDeterministicConfig { // 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: (): + // 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 @@ -1937,7 +1996,7 @@ message CryptoDeterministicConfig { // surrogate when it occurs in free text. // // Note: For record transformations where the entire cell in a table is being - // transformed, surrogates are optional to use. Surrogates are used to denote + // 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. // @@ -1956,7 +2015,7 @@ message CryptoDeterministicConfig { // ⧝MY_TOKEN_TYPE. InfoType surrogate_info_type = 2; - // Optional. A context may be used for higher security and maintaining + // 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 @@ -1998,7 +2057,9 @@ message RedactConfig { // Characters to skip when doing deidentification of a value. These will be left // alone and skipped. message CharsToIgnore { + // Convenience enum for indication common characters to not transform. enum CommonCharsToIgnore { + // Unused. COMMON_CHARS_TO_IGNORE_UNSPECIFIED = 0; // 0-9 @@ -2018,8 +2079,11 @@ message CharsToIgnore { } oneof characters { + // Characters to not transform when masking. string characters_to_skip = 1; + // Common characters to not transform when masking. Useful to avoid removing + // punctuation. CommonCharsToIgnore common_characters_to_ignore = 2; } } @@ -2061,7 +2125,7 @@ message CharacterMaskConfig { // the user for simple bucketing strategies. // // The transformed value will be a hyphenated string of -// -, i.e if lower_bound = 10 and upper_bound = 20 +// {lower_bound}-{upper_bound}, i.e if lower_bound = 10 and upper_bound = 20 // all values that are within this bucket will be replaced with "10-20". // // This can be used on data of type: double, long. @@ -2072,22 +2136,21 @@ message CharacterMaskConfig { // // See https://cloud.google.com/dlp/docs/concepts-bucketing to learn more. message FixedSizeBucketingConfig { - // Lower bound value of buckets. All values less than `lower_bound` are + // 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”. [Required]. - Value lower_bound = 1; + // then all values less than 10 are replaced with the value “-10”. + Value lower_bound = 1 [(google.api.field_behavior) = REQUIRED]; - // Upper bound value of buckets. All values greater than upper_bound are + // 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+”. - // [Required]. - Value upper_bound = 2; + Value upper_bound = 2 [(google.api.field_behavior) = REQUIRED]; - // Size of each bucket (except for minimum and maximum buckets). So if + // 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. [Required]. - double bucket_size = 3; + // 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works. + double bucket_size = 3 [(google.api.field_behavior) = REQUIRED]; } // Generalization function that buckets values based on ranges. The ranges and @@ -2136,6 +2199,7 @@ message CryptoReplaceFfxFpeConfig { // natively supports. In the algorithm, the alphabet is selected using // the "radix". Therefore each corresponds to particular radix. enum FfxCommonNativeAlphabet { + // Unused. FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED = 0; // [0-9] (radix of 10) @@ -2151,8 +2215,8 @@ message CryptoReplaceFfxFpeConfig { ALPHA_NUMERIC = 4; } - // The key used by the encryption algorithm. [required] - CryptoKey crypto_key = 1; + // Required. The key used by the encryption algorithm. + CryptoKey crypto_key = 1 [(google.api.field_behavior) = REQUIRED]; // 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 @@ -2176,7 +2240,9 @@ message CryptoReplaceFfxFpeConfig { // - a string is encoded in UTF-8 format followed by a single byte of value 2 FieldId context = 2; + // Choose an alphabet which the data being transformed will be made up of. oneof alphabet { + // Common alphabets. FfxCommonNativeAlphabet common_alphabet = 4; // This is supported by mapping these to the alphanumeric characters @@ -2226,11 +2292,15 @@ message CryptoReplaceFfxFpeConfig { // IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot // unwrap the data crypto key. message CryptoKey { + // Sources of crypto keys. oneof source { + // Transient crypto key TransientCryptoKey transient = 1; + // Unwrapped crypto key UnwrappedCryptoKey unwrapped = 2; + // Kms wrapped key KmsWrappedCryptoKey kms_wrapped = 3; } } @@ -2238,31 +2308,20 @@ message CryptoKey { // Use this to have a random data crypto key generated. // It will be discarded after the request finishes. message TransientCryptoKey { - // Name of the key. [required] + // 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). - string name = 1; + string name = 1 [(google.api.field_behavior) = REQUIRED]; } // Using raw keys is prone to security risks due to accidentally // leaking the key. Choose another type of key if possible. message UnwrappedCryptoKey { - // A 128/192/256 bit key. [required] - bytes key = 1; -} - -// Parts of the APIs which use certain infoTypes. -enum InfoTypeSupportedBy { - ENUM_TYPE_UNSPECIFIED = 0; - - // Supported by the inspect operations. - INSPECT = 1; - - // Supported by the risk analysis operations. - RISK_ANALYSIS = 2; + // Required. A 128/192/256 bit key. + bytes key = 1 [(google.api.field_behavior) = REQUIRED]; } // Include to use an existing data crypto key wrapped by KMS. @@ -2271,28 +2330,26 @@ enum InfoTypeSupportedBy { // to perform a crypto transformation using a kms-wrapped crypto key: // dlp.kms.encrypt message KmsWrappedCryptoKey { - // The wrapped data crypto key. [required] - bytes wrapped_key = 1; + // Required. The wrapped data crypto key. + bytes wrapped_key = 1 [(google.api.field_behavior) = REQUIRED]; - // The resource name of the KMS CryptoKey to use for unwrapping. [required] - string crypto_key_name = 2; + // Required. The resource name of the KMS CryptoKey to use for unwrapping. + string crypto_key_name = 2 [(google.api.field_behavior) = REQUIRED]; } // Shifts dates by random number of days, with option to be consistent for the // same context. See https://cloud.google.com/dlp/docs/concepts-date-shifting // to learn more. message DateShiftConfig { - // Range of shift in days. Actual shift will be selected at random within this + // 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. - // [Required] - int32 upper_bound_days = 1; + int32 upper_bound_days = 1 [(google.api.field_behavior) = REQUIRED]; - // For example, -5 means shift date to at most 5 days back in the past. - // [Required] - int32 lower_bound_days = 2; + // Required. For example, -5 means shift date to at most 5 days back in the past. + int32 lower_bound_days = 2 [(google.api.field_behavior) = REQUIRED]; // 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 @@ -2322,23 +2379,23 @@ message InfoTypeTransformations { // infoTypes that were requested in `InspectConfig`. repeated InfoType info_types = 1; - // Primitive transformation to apply to the infoType. [required] - PrimitiveTransformation primitive_transformation = 2; + // Required. Primitive transformation to apply to the infoType. + PrimitiveTransformation primitive_transformation = 2 [(google.api.field_behavior) = REQUIRED]; } - // Transformation for each infoType. Cannot specify more than one - // for a given infoType. [required] - repeated InfoTypeTransformation transformations = 1; + // Required. Transformation for each infoType. Cannot specify more than one + // for a given infoType. + repeated InfoTypeTransformation transformations = 1 [(google.api.field_behavior) = REQUIRED]; } // The transformation to apply to the field. message FieldTransformation { - // Input field(s) to apply the transformation to. [required] - repeated FieldId fields = 1; + // Required. Input field(s) to apply the transformation to. + repeated FieldId fields = 1 [(google.api.field_behavior) = REQUIRED]; // Only apply the transformation if the condition evaluates to true for the // given `RecordCondition`. The conditions are allowed to reference fields - // that are not used in the actual transformation. [optional] + // that are not used in the actual transformation. // // Example Use Cases: // @@ -2365,7 +2422,7 @@ message RecordTransformations { repeated FieldTransformation field_transformations = 1; // Configuration defining which records get suppressed entirely. Records that - // match any suppression rule are omitted from the output [optional]. + // match any suppression rule are omitted from the output. repeated RecordSuppression record_suppressions = 2; } @@ -2400,26 +2457,30 @@ message RecordCondition { // If we fail to compare do to type mismatch, a warning will be given and // the condition will evaluate to false. message Condition { - // Field within the record this condition is evaluated against. [required] - FieldId field = 1; + // Required. Field within the record this condition is evaluated against. + FieldId field = 1 [(google.api.field_behavior) = REQUIRED]; - // Operator used to compare the field or infoType to the value. [required] - RelationalOperator operator = 3; + // Required. Operator used to compare the field or infoType to the value. + RelationalOperator operator = 3 [(google.api.field_behavior) = REQUIRED]; - // Value to compare against. [Required, except for `EXISTS` tests.] + // Value to compare against. [Mandatory, except for `EXISTS` tests.] Value value = 4; } // A collection of conditions. message Conditions { + // A collection of conditions. repeated Condition conditions = 1; } // An expression, consisting or an operator and conditions. message Expressions { + // Logical operators for conditional checks. enum LogicalOperator { + // Unused LOGICAL_OPERATOR_UNSPECIFIED = 0; + // Conditional AND AND = 1; } @@ -2427,7 +2488,9 @@ message RecordCondition { // only supported value is `AND`. LogicalOperator logical_operator = 1; + // Expression types. oneof type { + // Conditions to apply to the expression. Conditions conditions = 3; } } @@ -2452,8 +2515,10 @@ message TransformationSummary { // A collection that informs the user the number of times a particular // `TransformationResultCode` and error details occurred. message SummaryResult { + // Number of transformations counted by this result. int64 count = 1; + // Outcome of the transformation. TransformationResultCode code = 2; // A place for warnings or errors to show up if a transformation didn't @@ -2463,10 +2528,13 @@ message TransformationSummary { // Possible outcomes of transformations. enum TransformationResultCode { + // Unused TRANSFORMATION_RESULT_CODE_UNSPECIFIED = 0; + // Transformation completed without an error. SUCCESS = 1; + // Transformation had an error. ERROR = 2; } @@ -2487,6 +2555,7 @@ message TransformationSummary { // The specific suppression option these stats apply to. RecordSuppression record_suppress = 6; + // Collection of all transformations that took place or had an error. repeated SummaryResult results = 4; // Total size in bytes that were transformed in some way. @@ -2519,12 +2588,12 @@ message InspectTemplate { pattern: "projects/{project}/inspectTemplates/{inspect_template}" }; - // The template name. Output only. + // Output only. The template name. // // The template will have one of the following formats: // `projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID` OR - // `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID` - string name = 1; + // `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID`; + string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Display name (max 256 chars). string display_name = 2; @@ -2532,11 +2601,11 @@ message InspectTemplate { // Short description (max 256 chars). string description = 3; - // The creation timestamp of an inspectTemplate, output only field. - google.protobuf.Timestamp create_time = 4; + // Output only. The creation timestamp of an inspectTemplate. + google.protobuf.Timestamp create_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; - // The last update timestamp of an inspectTemplate, output only field. - google.protobuf.Timestamp update_time = 5; + // Output only. The last update timestamp of an inspectTemplate. + google.protobuf.Timestamp update_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // The core content of the template. Configuration of the scanning process. InspectConfig inspect_config = 6; @@ -2551,12 +2620,12 @@ message DeidentifyTemplate { pattern: "projects/{project}/deidentifyTemplates/{deidentify_template}" }; - // The template name. Output only. + // 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` - string name = 1; + string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Display name (max 256 chars). string display_name = 2; @@ -2564,11 +2633,11 @@ message DeidentifyTemplate { // Short description (max 256 chars). string description = 3; - // The creation timestamp of an inspectTemplate, output only field. - google.protobuf.Timestamp create_time = 4; + // Output only. The creation timestamp of an inspectTemplate. + google.protobuf.Timestamp create_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; - // The last update timestamp of an inspectTemplate, output only field. - google.protobuf.Timestamp update_time = 5; + // Output only. The last update timestamp of an inspectTemplate. + google.protobuf.Timestamp update_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // ///////////// // The core content of the template // /////////////// DeidentifyConfig deidentify_config = 6; @@ -2576,8 +2645,8 @@ message DeidentifyTemplate { // Details information about an error encountered during job execution or // the results of an unsuccessful activation of the JobTrigger. -// Output only field. message Error { + // Detailed error codes and messages. google.rpc.Status details = 1; // The times the error occurred. @@ -2605,6 +2674,7 @@ message JobTrigger { // pause triggers experiencing frequent errors. To restart a job, set the // status to HEALTHY after correcting user errors. enum Status { + // Unused. STATUS_UNSPECIFIED = 0; // Trigger is healthy. @@ -2630,6 +2700,7 @@ message JobTrigger { // The configuration details for the specific type of job to run. oneof job { + // For inspect jobs, a snapshot of the configuration. InspectJobConfig inspect_job = 4; } @@ -2638,23 +2709,23 @@ message JobTrigger { // a single Schedule trigger and must have at least one object. repeated Trigger triggers = 5; - // A stream of errors encountered when the trigger was activated. Repeated + // Output only. A stream of errors encountered when the trigger was activated. Repeated // errors may result in the JobTrigger automatically being paused. // Will return the last 100 errors. Whenever the JobTrigger is modified - // this list will be cleared. Output only field. - repeated Error errors = 6; + // this list will be cleared. + repeated Error errors = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; - // The creation timestamp of a triggeredJob, output only field. - google.protobuf.Timestamp create_time = 7; + // Output only. The creation timestamp of a triggeredJob. + google.protobuf.Timestamp create_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; - // The last update timestamp of a triggeredJob, output only field. - google.protobuf.Timestamp update_time = 8; + // Output only. The last update timestamp of a triggeredJob. + google.protobuf.Timestamp update_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; - // The timestamp of the last time this trigger executed, output only field. - google.protobuf.Timestamp last_run_time = 9; + // Output only. The timestamp of the last time this trigger executed. + google.protobuf.Timestamp last_run_time = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; - // A status for this trigger. [required] - Status status = 10; + // Required. A status for this trigger. + Status status = 10 [(google.api.field_behavior) = REQUIRED]; } // A task to execute on the completion of a job. @@ -2665,6 +2736,7 @@ message Action { // specified. // Compatible with: Inspect, Risk message SaveFindings { + // Location to store findings outside of DLP. OutputStorageConfig output_config = 1; } @@ -2736,7 +2808,7 @@ message Action { // Publish findings to Cloud Datahub. PublishFindingsToCloudDataCatalog publish_findings_to_cloud_data_catalog = 5; - // Enable email notification to project owners and editors on job's + // Enable email notification for project owners and editors on job's // completion/failure. JobNotificationEmails job_notification_emails = 8; @@ -2756,8 +2828,8 @@ message CreateInspectTemplateRequest { } ]; - // The InspectTemplate to create. - InspectTemplate inspect_template = 2; + // Required. The InspectTemplate to create. + InspectTemplate inspect_template = 2 [(google.api.field_behavior) = REQUIRED]; // The template id can contain uppercase and lowercase letters, // numbers, and hyphens; that is, it must match the regular @@ -2813,15 +2885,15 @@ message ListInspectTemplatesRequest { } ]; - // Optional page token to continue retrieval. Comes from previous call + // Page token to continue retrieval. Comes from previous call // to `ListInspectTemplates`. string page_token = 2; - // Optional size of the page, can be limited by server. If zero server returns + // Size of the page, can be limited by server. If zero server returns // a page of max size 100. int32 page_size = 3; - // Optional comma separated list of fields to order by, + // Comma separated list of fields to order by, // followed by `asc` or `desc` postfix. This list is case-insensitive, // default sorting order is ascending, redundant space characters are // insignificant. @@ -2874,8 +2946,8 @@ message CreateJobTriggerRequest { } ]; - // The JobTrigger to create. - JobTrigger job_trigger = 2; + // Required. The JobTrigger to create. + JobTrigger job_trigger = 2 [(google.api.field_behavior) = REQUIRED]; // The trigger id can contain uppercase and lowercase letters, // numbers, and hyphens; that is, it must match the regular @@ -2944,8 +3016,10 @@ message CreateDlpJobRequest { // The configuration details for the specific type of job to run. oneof job { + // Set to control what and how to inspect. InspectJobConfig inspect_job = 2; + // Set to choose what metric to calculate. RiskAnalysisJobConfig risk_job = 3; } @@ -2970,15 +3044,15 @@ message ListJobTriggersRequest { } ]; - // Optional page token to continue retrieval. Comes from previous call + // Page token to continue retrieval. Comes from previous call // to ListJobTriggers. `order_by` field must not // change for subsequent calls. string page_token = 2; - // Optional size of the page, can be limited by a server. + // Size of the page, can be limited by a server. int32 page_size = 3; - // Optional comma separated list of triggeredJob fields to order by, + // Comma separated list of triggeredJob fields to order by, // followed by `asc` or `desc` postfix. This list is case-insensitive, // default sorting order is ascending, redundant space characters are // insignificant. @@ -2995,14 +3069,14 @@ message ListJobTriggersRequest { // - `status`: corresponds to JobTrigger's status. string order_by = 4; - // Optional. Allows filtering. + // Allows filtering. // // Supported syntax: // // * Filter expressions are made up of one or more restrictions. // * Restrictions can be combined by `AND` or `OR` logical operators. A // sequence of restrictions implicitly uses `AND`. - // * A restriction has the form of ` `. + // * A restriction has the form of `{field} {operator} {value}`. // * Supported fields/values for inspect jobs: // - `status` - HEALTHY|PAUSED|CANCELLED // - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY @@ -3048,6 +3122,7 @@ message DeleteJobTriggerRequest { ]; } +// Controls what and how to inspect for findings. message InspectJobConfig { // The data to scan. StorageConfig storage_config = 1; @@ -3071,7 +3146,9 @@ message DlpJob { pattern: "projects/{project}/dlpJobs/{dlp_job}" }; + // Possible states of a job. enum JobState { + // Unused. JOB_STATE_UNSPECIFIED = 0; // The job has not yet started. @@ -3145,14 +3222,14 @@ message ListDlpJobsRequest { } ]; - // Optional. Allows filtering. + // Allows filtering. // // Supported syntax: // // * Filter expressions are made up of one or more restrictions. // * Restrictions can be combined by `AND` or `OR` logical operators. A // sequence of restrictions implicitly uses `AND`. - // * A restriction has the form of ` `. + // * A restriction has the form of `{field} {operator} {value}`. // * Supported fields/values for inspect jobs: // - `state` - PENDING|RUNNING|CANCELED|FINISHED|FAILED // - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY @@ -3184,7 +3261,7 @@ message ListDlpJobsRequest { // The type of job. Defaults to `DlpJobType.INSPECT` DlpJobType type = 5; - // Optional comma separated list of fields to order by, + // Comma separated list of fields to order by, // followed by `asc` or `desc` postfix. This list is case-insensitive, // default sorting order is ascending, redundant space characters are // insignificant. @@ -3204,32 +3281,6 @@ message ListDlpJobsRequest { string location_id = 7; } -// Operators available for comparing the value of fields. -enum RelationalOperator { - RELATIONAL_OPERATOR_UNSPECIFIED = 0; - - // Equal. Attempts to match even with incompatible types. - EQUAL_TO = 1; - - // Not equal to. Attempts to match even with incompatible types. - NOT_EQUAL_TO = 2; - - // Greater than. - GREATER_THAN = 3; - - // Less than. - LESS_THAN = 4; - - // Greater than or equals. - GREATER_THAN_OR_EQUALS = 5; - - // Less than or equals. - LESS_THAN_OR_EQUALS = 6; - - // Exists - EXISTS = 7; -} - // The response message for listing DLP jobs. message ListDlpJobsResponse { // A list of DlpJobs that matches the specified filter in the request. @@ -3272,8 +3323,8 @@ message CreateDeidentifyTemplateRequest { } ]; - // The DeidentifyTemplate to create. - DeidentifyTemplate deidentify_template = 2; + // Required. The DeidentifyTemplate to create. + DeidentifyTemplate deidentify_template = 2 [(google.api.field_behavior) = REQUIRED]; // The template id can contain uppercase and lowercase letters, // numbers, and hyphens; that is, it must match the regular @@ -3329,15 +3380,15 @@ message ListDeidentifyTemplatesRequest { } ]; - // Optional page token to continue retrieval. Comes from previous call + // Page token to continue retrieval. Comes from previous call // to `ListDeidentifyTemplates`. string page_token = 2; - // Optional size of the page, can be limited by server. If zero server returns + // Size of the page, can be limited by server. If zero server returns // a page of max size 100. int32 page_size = 3; - // Optional comma separated list of fields to order by, + // Comma separated list of fields to order by, // followed by `asc` or `desc` postfix. This list is case-insensitive, // default sorting order is ascending, redundant space characters are // insignificant. @@ -3419,6 +3470,7 @@ message StoredInfoTypeConfig { // Description of the StoredInfoType (max 256 characters). string description = 2; + // Stored infotype types. oneof type { // StoredInfoType where findings are defined by a dictionary of phrases. LargeCustomDictionaryConfig large_custom_dictionary = 3; @@ -3427,6 +3479,7 @@ message StoredInfoTypeConfig { // Statistics for a StoredInfoType. message StoredInfoTypeStats { + // Stat types oneof type { // StoredInfoType where findings are defined by a dictionary of phrases. LargeCustomDictionaryStats large_custom_dictionary = 1; @@ -3451,10 +3504,12 @@ message StoredInfoTypeVersion { // anomalies detected in the storedInfoType data that render it unusable. Only // the five most recent errors will be displayed, with the most recent error // appearing first. - //

For example, some of the data for stored custom dictionaries is put in + // + // For example, some of the data for stored custom dictionaries is put in // the user's Google Cloud Storage bucket, and if this data is modified or // deleted by the user or another system, the dictionary becomes invalid. - //

If any errors occur, fix the problem indicated by the error message and + // + // If any errors occur, fix the problem indicated by the error message and // use the UpdateStoredInfoType API method to create another version of the // storedInfoType to continue using it, reusing the same `config` if it was // not the source of the error. @@ -3495,8 +3550,8 @@ message CreateStoredInfoTypeRequest { } ]; - // Configuration of the storedInfoType to create. - StoredInfoTypeConfig config = 2; + // Required. Configuration of the storedInfoType to create. + StoredInfoTypeConfig config = 2 [(google.api.field_behavior) = REQUIRED]; // The storedInfoType ID can contain uppercase and lowercase letters, // numbers, and hyphens; that is, it must match the regular @@ -3554,15 +3609,15 @@ message ListStoredInfoTypesRequest { } ]; - // Optional page token to continue retrieval. Comes from previous call + // Page token to continue retrieval. Comes from previous call // to `ListStoredInfoTypes`. string page_token = 2; - // Optional size of the page, can be limited by server. If zero server returns + // Size of the page, can be limited by server. If zero server returns // a page of max size 100. int32 page_size = 3; - // Optional comma separated list of fields to order by, + // Comma separated list of fields to order by, // followed by `asc` or `desc` postfix. This list is case-insensitive, // default sorting order is ascending, redundant space characters are // insignificant. @@ -3606,8 +3661,89 @@ message DeleteStoredInfoTypeRequest { ]; } -// An enum to represent the various type of DLP jobs. +// Operators available for comparing the value of fields. +enum RelationalOperator { + // Unused + RELATIONAL_OPERATOR_UNSPECIFIED = 0; + + // Equal. Attempts to match even with incompatible types. + EQUAL_TO = 1; + + // Not equal to. Attempts to match even with incompatible types. + NOT_EQUAL_TO = 2; + + // Greater than. + GREATER_THAN = 3; + + // Less than. + LESS_THAN = 4; + + // Greater than or equals. + GREATER_THAN_OR_EQUALS = 5; + + // Less than or equals. + LESS_THAN_OR_EQUALS = 6; + + // Exists + EXISTS = 7; +} + +// Type of the match which can be applied to different ways of matching, like +// Dictionary, regular expression and intersecting with findings of another +// info type. +enum MatchingType { + // Invalid. + MATCHING_TYPE_UNSPECIFIED = 0; + + // Full match. + // + // - Dictionary: join of Dictionary results matched complete finding quote + // - Regex: all regex matches fill a finding quote start to end + // - Exclude info type: completely inside affecting info types findings + MATCHING_TYPE_FULL_MATCH = 1; + + // Partial match. + // + // - Dictionary: at least one of the tokens in the finding matches + // - Regex: substring of the finding matches + // - Exclude info type: intersects with affecting info types findings + MATCHING_TYPE_PARTIAL_MATCH = 2; + + // Inverse match. + // + // - Dictionary: no tokens in the finding match the dictionary + // - Regex: finding doesn't match the regex + // - Exclude info type: no intersection with affecting info types findings + MATCHING_TYPE_INVERSE_MATCH = 3; +} + +// Options describing which parts of the provided content should be scanned. +enum ContentOption { + // Includes entire content of a file or a data stream. + CONTENT_UNSPECIFIED = 0; + + // Text content within the data, excluding any metadata. + CONTENT_TEXT = 1; + + // Images found in the data. + CONTENT_IMAGE = 2; +} + +// Parts of the APIs which use certain infoTypes. +enum InfoTypeSupportedBy { + // Unused. + ENUM_TYPE_UNSPECIFIED = 0; + + // Supported by the inspect operations. + INSPECT = 1; + + // Supported by the risk analysis operations. + RISK_ANALYSIS = 2; +} + +// An enum to represent the various types of DLP jobs. enum DlpJobType { + // Unused DLP_JOB_TYPE_UNSPECIFIED = 0; // The job inspected Google Cloud for sensitive data. @@ -3619,6 +3755,7 @@ enum DlpJobType { // State of a StoredInfoType version. enum StoredInfoTypeState { + // Unused STORED_INFO_TYPE_STATE_UNSPECIFIED = 0; // StoredInfoType version is being created. diff --git a/dlp/google/cloud/dlp_v2/proto/dlp_pb2.py b/dlp/google/cloud/dlp_v2/proto/dlp_pb2.py index 8ff717d4b193..41a349be141d 100644 --- a/dlp/google/cloud/dlp_v2/proto/dlp_pb2.py +++ b/dlp/google/cloud/dlp_v2/proto/dlp_pb2.py @@ -18,6 +18,7 @@ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import client_pb2 as google_dot_api_dot_client__pb2 from google.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2 from google.api import resource_pb2 as google_dot_api_dot_resource__pb2 from google.cloud.dlp_v2.proto import ( @@ -31,7 +32,6 @@ from google.type import date_pb2 as google_dot_type_dot_date__pb2 from google.type import dayofweek_pb2 as google_dot_type_dot_dayofweek__pb2 from google.type import timeofday_pb2 as google_dot_type_dot_timeofday__pb2 -from google.api import client_pb2 as google_dot_api_dot_client__pb2 DESCRIPTOR = _descriptor.FileDescriptor( @@ -42,10 +42,11 @@ "\n\031com.google.privacy.dlp.v2B\010DlpProtoP\001Z8google.golang.org/genproto/googleapis/privacy/dlp/v2;dlp\252\002\023Google.Cloud.Dlp.V2\312\002\023Google\\Cloud\\Dlp\\V2" ), serialized_pb=_b( - '\n+google/cloud/privacy/dlp_v2/proto/dlp.proto\x12\x15google.privacy.dlp.v2\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a/google/cloud/privacy/dlp_v2/proto/storage.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x16google/type/date.proto\x1a\x1bgoogle/type/dayofweek.proto\x1a\x1bgoogle/type/timeofday.proto\x1a\x17google/api/client.proto"G\n\x10\x45xcludeInfoTypes\x12\x33\n\ninfo_types\x18\x01 \x03(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType"\xa0\x02\n\rExclusionRule\x12\x46\n\ndictionary\x18\x01 \x01(\x0b\x32\x30.google.privacy.dlp.v2.CustomInfoType.DictionaryH\x00\x12<\n\x05regex\x18\x02 \x01(\x0b\x32+.google.privacy.dlp.v2.CustomInfoType.RegexH\x00\x12\x45\n\x12\x65xclude_info_types\x18\x03 \x01(\x0b\x32\'.google.privacy.dlp.v2.ExcludeInfoTypesH\x00\x12:\n\rmatching_type\x18\x04 \x01(\x0e\x32#.google.privacy.dlp.v2.MatchingTypeB\x06\n\x04type"\xb1\x01\n\x0eInspectionRule\x12W\n\x0chotword_rule\x18\x01 \x01(\x0b\x32?.google.privacy.dlp.v2.CustomInfoType.DetectionRule.HotwordRuleH\x00\x12>\n\x0e\x65xclusion_rule\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.ExclusionRuleH\x00\x42\x06\n\x04type"~\n\x11InspectionRuleSet\x12\x33\n\ninfo_types\x18\x01 \x03(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12\x34\n\x05rules\x18\x02 \x03(\x0b\x32%.google.privacy.dlp.v2.InspectionRule"\xc7\x05\n\rInspectConfig\x12\x33\n\ninfo_types\x18\x01 \x03(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12\x39\n\x0emin_likelihood\x18\x02 \x01(\x0e\x32!.google.privacy.dlp.v2.Likelihood\x12\x42\n\x06limits\x18\x03 \x01(\x0b\x32\x32.google.privacy.dlp.v2.InspectConfig.FindingLimits\x12\x15\n\rinclude_quote\x18\x04 \x01(\x08\x12\x1a\n\x12\x65xclude_info_types\x18\x05 \x01(\x08\x12@\n\x11\x63ustom_info_types\x18\x06 \x03(\x0b\x32%.google.privacy.dlp.v2.CustomInfoType\x12=\n\x0f\x63ontent_options\x18\x08 \x03(\x0e\x32$.google.privacy.dlp.v2.ContentOption\x12:\n\x08rule_set\x18\n \x03(\x0b\x32(.google.privacy.dlp.v2.InspectionRuleSet\x1a\x91\x02\n\rFindingLimits\x12\x1d\n\x15max_findings_per_item\x18\x01 \x01(\x05\x12 \n\x18max_findings_per_request\x18\x02 \x01(\x05\x12\x64\n\x1amax_findings_per_info_type\x18\x03 \x03(\x0b\x32@.google.privacy.dlp.v2.InspectConfig.FindingLimits.InfoTypeLimit\x1aY\n\rInfoTypeLimit\x12\x32\n\tinfo_type\x18\x01 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12\x14\n\x0cmax_findings\x18\x02 \x01(\x05"\xea\x01\n\x0f\x42yteContentItem\x12>\n\x04type\x18\x01 \x01(\x0e\x32\x30.google.privacy.dlp.v2.ByteContentItem.BytesType\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c"\x88\x01\n\tBytesType\x12\x1a\n\x16\x42YTES_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05IMAGE\x10\x06\x12\x0e\n\nIMAGE_JPEG\x10\x01\x12\r\n\tIMAGE_BMP\x10\x02\x12\r\n\tIMAGE_PNG\x10\x03\x12\r\n\tIMAGE_SVG\x10\x04\x12\r\n\tTEXT_UTF8\x10\x05\x12\x08\n\x04\x41VRO\x10\x0b"\x97\x01\n\x0b\x43ontentItem\x12\x0f\n\x05value\x18\x03 \x01(\tH\x00\x12-\n\x05table\x18\x04 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.TableH\x00\x12;\n\tbyte_item\x18\x05 \x01(\x0b\x32&.google.privacy.dlp.v2.ByteContentItemH\x00\x42\x0b\n\tdata_item"\x9d\x01\n\x05Table\x12/\n\x07headers\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12.\n\x04rows\x18\x02 \x03(\x0b\x32 .google.privacy.dlp.v2.Table.Row\x1a\x33\n\x03Row\x12,\n\x06values\x18\x01 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value"]\n\rInspectResult\x12\x30\n\x08\x66indings\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.Finding\x12\x1a\n\x12\x66indings_truncated\x18\x02 \x01(\x08"\x9d\x02\n\x07\x46inding\x12\r\n\x05quote\x18\x01 \x01(\t\x12\x32\n\tinfo_type\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12\x35\n\nlikelihood\x18\x03 \x01(\x0e\x32!.google.privacy.dlp.v2.Likelihood\x12\x31\n\x08location\x18\x04 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.Location\x12/\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\nquote_info\x18\x07 \x01(\x0b\x32 .google.privacy.dlp.v2.QuoteInfo"\xb6\x01\n\x08Location\x12\x30\n\nbyte_range\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Range\x12\x35\n\x0f\x63odepoint_range\x18\x02 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Range\x12\x41\n\x11\x63ontent_locations\x18\x07 \x03(\x0b\x32&.google.privacy.dlp.v2.ContentLocation"\xd1\x02\n\x0f\x43ontentLocation\x12\x16\n\x0e\x63ontainer_name\x18\x01 \x01(\t\x12@\n\x0frecord_location\x18\x02 \x01(\x0b\x32%.google.privacy.dlp.v2.RecordLocationH\x00\x12>\n\x0eimage_location\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.ImageLocationH\x00\x12\x44\n\x11\x64ocument_location\x18\x05 \x01(\x0b\x32\'.google.privacy.dlp.v2.DocumentLocationH\x00\x12\x37\n\x13\x63ontainer_timestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x19\n\x11\x63ontainer_version\x18\x07 \x01(\tB\n\n\x08location"\'\n\x10\x44ocumentLocation\x12\x13\n\x0b\x66ile_offset\x18\x01 \x01(\x03"\xb6\x01\n\x0eRecordLocation\x12\x34\n\nrecord_key\x18\x01 \x01(\x0b\x32 .google.privacy.dlp.v2.RecordKey\x12\x30\n\x08\x66ield_id\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12<\n\x0etable_location\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.TableLocation""\n\rTableLocation\x12\x11\n\trow_index\x18\x01 \x01(\x03"#\n\x05Range\x12\r\n\x05start\x18\x01 \x01(\x03\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x03"K\n\rImageLocation\x12:\n\x0e\x62ounding_boxes\x18\x01 \x03(\x0b\x32".google.privacy.dlp.v2.BoundingBox"G\n\x0b\x42oundingBox\x12\x0b\n\x03top\x18\x01 \x01(\x05\x12\x0c\n\x04left\x18\x02 \x01(\x05\x12\r\n\x05width\x18\x03 \x01(\x05\x12\x0e\n\x06height\x18\x04 \x01(\x05"\x8a\x04\n\x12RedactImageRequest\x12@\n\x06parent\x18\x01 \x01(\tB0\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x13\n\x0blocation_id\x18\x08 \x01(\t\x12<\n\x0einspect_config\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig\x12_\n\x17image_redaction_configs\x18\x05 \x03(\x0b\x32>.google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig\x12\x18\n\x10include_findings\x18\x06 \x01(\x08\x12\x39\n\tbyte_item\x18\x07 \x01(\x0b\x32&.google.privacy.dlp.v2.ByteContentItem\x1a\xa8\x01\n\x14ImageRedactionConfig\x12\x34\n\tinfo_type\x18\x01 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoTypeH\x00\x12\x19\n\x0fredact_all_text\x18\x02 \x01(\x08H\x00\x12\x35\n\x0fredaction_color\x18\x03 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.ColorB\x08\n\x06target"1\n\x05\x43olor\x12\x0b\n\x03red\x18\x01 \x01(\x02\x12\r\n\x05green\x18\x02 \x01(\x02\x12\x0c\n\x04\x62lue\x18\x03 \x01(\x02"\x83\x01\n\x13RedactImageResponse\x12\x16\n\x0eredacted_image\x18\x01 \x01(\x0c\x12\x16\n\x0e\x65xtracted_text\x18\x02 \x01(\t\x12<\n\x0einspect_result\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectResult"\xe6\x02\n\x18\x44\x65identifyContentRequest\x12@\n\x06parent\x18\x01 \x01(\tB0\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x42\n\x11\x64\x65identify_config\x18\x02 \x01(\x0b\x32\'.google.privacy.dlp.v2.DeidentifyConfig\x12<\n\x0einspect_config\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig\x12\x30\n\x04item\x18\x04 \x01(\x0b\x32".google.privacy.dlp.v2.ContentItem\x12\x1d\n\x15inspect_template_name\x18\x05 \x01(\t\x12 \n\x18\x64\x65identify_template_name\x18\x06 \x01(\t\x12\x13\n\x0blocation_id\x18\x07 \x01(\t"\x8e\x01\n\x19\x44\x65identifyContentResponse\x12\x30\n\x04item\x18\x01 \x01(\x0b\x32".google.privacy.dlp.v2.ContentItem\x12?\n\x08overview\x18\x02 \x01(\x0b\x32-.google.privacy.dlp.v2.TransformationOverview"\xe9\x02\n\x18ReidentifyContentRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x42\n\x11reidentify_config\x18\x02 \x01(\x0b\x32\'.google.privacy.dlp.v2.DeidentifyConfig\x12<\n\x0einspect_config\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig\x12\x30\n\x04item\x18\x04 \x01(\x0b\x32".google.privacy.dlp.v2.ContentItem\x12\x1d\n\x15inspect_template_name\x18\x05 \x01(\t\x12 \n\x18reidentify_template_name\x18\x06 \x01(\t\x12\x13\n\x0blocation_id\x18\x07 \x01(\t"\x8e\x01\n\x19ReidentifyContentResponse\x12\x30\n\x04item\x18\x01 \x01(\x0b\x32".google.privacy.dlp.v2.ContentItem\x12?\n\x08overview\x18\x02 \x01(\x0b\x32-.google.privacy.dlp.v2.TransformationOverview"\xfd\x01\n\x15InspectContentRequest\x12@\n\x06parent\x18\x01 \x01(\tB0\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12<\n\x0einspect_config\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig\x12\x30\n\x04item\x18\x03 \x01(\x0b\x32".google.privacy.dlp.v2.ContentItem\x12\x1d\n\x15inspect_template_name\x18\x04 \x01(\t\x12\x13\n\x0blocation_id\x18\x05 \x01(\t"N\n\x16InspectContentResponse\x12\x34\n\x06result\x18\x01 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectResult"\xb7\x02\n\x13OutputStorageConfig\x12\x35\n\x05table\x18\x01 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryTableH\x00\x12N\n\routput_schema\x18\x03 \x01(\x0e\x32\x37.google.privacy.dlp.v2.OutputStorageConfig.OutputSchema"\x90\x01\n\x0cOutputSchema\x12\x1d\n\x19OUTPUT_SCHEMA_UNSPECIFIED\x10\x00\x12\x11\n\rBASIC_COLUMNS\x10\x01\x12\x0f\n\x0bGCS_COLUMNS\x10\x02\x12\x15\n\x11\x44\x41TASTORE_COLUMNS\x10\x03\x12\x15\n\x11\x42IG_QUERY_COLUMNS\x10\x04\x12\x0f\n\x0b\x41LL_COLUMNS\x10\x05\x42\x06\n\x04type"R\n\rInfoTypeStats\x12\x32\n\tinfo_type\x18\x01 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12\r\n\x05\x63ount\x18\x02 \x01(\x03"\xdd\x03\n\x18InspectDataSourceDetails\x12[\n\x11requested_options\x18\x02 \x01(\x0b\x32@.google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions\x12\x46\n\x06result\x18\x03 \x01(\x0b\x32\x36.google.privacy.dlp.v2.InspectDataSourceDetails.Result\x1a\x9a\x01\n\x10RequestedOptions\x12I\n\x19snapshot_inspect_template\x18\x01 \x01(\x0b\x32&.google.privacy.dlp.v2.InspectTemplate\x12;\n\njob_config\x18\x03 \x01(\x0b\x32\'.google.privacy.dlp.v2.InspectJobConfig\x1a\x7f\n\x06Result\x12\x17\n\x0fprocessed_bytes\x18\x01 \x01(\x03\x12\x1d\n\x15total_estimated_bytes\x18\x02 \x01(\x03\x12=\n\x0finfo_type_stats\x18\x03 \x03(\x0b\x32$.google.privacy.dlp.v2.InfoTypeStats"\x90\x01\n\x13InfoTypeDescription\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12@\n\x0csupported_by\x18\x03 \x03(\x0e\x32*.google.privacy.dlp.v2.InfoTypeSupportedBy\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t"R\n\x14ListInfoTypesRequest\x12\x15\n\rlanguage_code\x18\x01 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x13\n\x0blocation_id\x18\x03 \x01(\t"W\n\x15ListInfoTypesResponse\x12>\n\ninfo_types\x18\x01 \x03(\x0b\x32*.google.privacy.dlp.v2.InfoTypeDescription"\xc1\x01\n\x15RiskAnalysisJobConfig\x12<\n\x0eprivacy_metric\x18\x01 \x01(\x0b\x32$.google.privacy.dlp.v2.PrivacyMetric\x12:\n\x0csource_table\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryTable\x12.\n\x07\x61\x63tions\x18\x03 \x03(\x0b\x32\x1d.google.privacy.dlp.v2.Action"\xb7\x01\n\x07QuasiId\x12-\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x34\n\tinfo_type\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoTypeH\x00\x12\x14\n\ncustom_tag\x18\x03 \x01(\tH\x00\x12*\n\x08inferred\x18\x04 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\x05\n\x03tag"\xaf\x02\n\x10StatisticalTable\x12\x33\n\x05table\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryTable\x12O\n\tquasi_ids\x18\x01 \x03(\x0b\x32<.google.privacy.dlp.v2.StatisticalTable.QuasiIdentifierField\x12:\n\x12relative_frequency\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x1aY\n\x14QuasiIdentifierField\x12-\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x12\n\ncustom_tag\x18\x02 \x01(\t"\xf5\x0e\n\rPrivacyMetric\x12[\n\x16numerical_stats_config\x18\x01 \x01(\x0b\x32\x39.google.privacy.dlp.v2.PrivacyMetric.NumericalStatsConfigH\x00\x12_\n\x18\x63\x61tegorical_stats_config\x18\x02 \x01(\x0b\x32;.google.privacy.dlp.v2.PrivacyMetric.CategoricalStatsConfigH\x00\x12S\n\x12k_anonymity_config\x18\x03 \x01(\x0b\x32\x35.google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfigH\x00\x12S\n\x12l_diversity_config\x18\x04 \x01(\x0b\x32\x35.google.privacy.dlp.v2.PrivacyMetric.LDiversityConfigH\x00\x12\\\n\x17k_map_estimation_config\x18\x05 \x01(\x0b\x32\x39.google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfigH\x00\x12n\n delta_presence_estimation_config\x18\x06 \x01(\x0b\x32\x42.google.privacy.dlp.v2.PrivacyMetric.DeltaPresenceEstimationConfigH\x00\x1a\x45\n\x14NumericalStatsConfig\x12-\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x1aG\n\x16\x43\x61tegoricalStatsConfig\x12-\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x1ay\n\x10KAnonymityConfig\x12\x31\n\tquasi_ids\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x32\n\tentity_id\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.EntityId\x1a\x82\x01\n\x10LDiversityConfig\x12\x31\n\tquasi_ids\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12;\n\x13sensitive_attribute\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x1a\xe8\x05\n\x14KMapEstimationConfig\x12X\n\tquasi_ids\x18\x01 \x03(\x0b\x32\x45.google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField\x12\x13\n\x0bregion_code\x18\x02 \x01(\t\x12\x62\n\x10\x61uxiliary_tables\x18\x03 \x03(\x0b\x32H.google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable\x1a\xbb\x01\n\x0bTaggedField\x12-\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x34\n\tinfo_type\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoTypeH\x00\x12\x14\n\ncustom_tag\x18\x03 \x01(\tH\x00\x12*\n\x08inferred\x18\x04 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\x05\n\x03tag\x1a\xbe\x02\n\x0e\x41uxiliaryTable\x12\x33\n\x05table\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryTable\x12h\n\tquasi_ids\x18\x01 \x03(\x0b\x32U.google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdField\x12:\n\x12relative_frequency\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x1aQ\n\x0cQuasiIdField\x12-\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x12\n\ncustom_tag\x18\x02 \x01(\t\x1a\xaa\x01\n\x1d\x44\x65ltaPresenceEstimationConfig\x12\x31\n\tquasi_ids\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.QuasiId\x12\x13\n\x0bregion_code\x18\x02 \x01(\t\x12\x41\n\x10\x61uxiliary_tables\x18\x03 \x03(\x0b\x32\'.google.privacy.dlp.v2.StatisticalTableB\x06\n\x04type"\xf2\x1d\n\x1c\x41nalyzeDataSourceRiskDetails\x12\x46\n\x18requested_privacy_metric\x18\x01 \x01(\x0b\x32$.google.privacy.dlp.v2.PrivacyMetric\x12\x44\n\x16requested_source_table\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryTable\x12j\n\x16numerical_stats_result\x18\x03 \x01(\x0b\x32H.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResultH\x00\x12n\n\x18\x63\x61tegorical_stats_result\x18\x04 \x01(\x0b\x32J.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResultH\x00\x12\x62\n\x12k_anonymity_result\x18\x05 \x01(\x0b\x32\x44.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResultH\x00\x12\x62\n\x12l_diversity_result\x18\x06 \x01(\x0b\x32\x44.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResultH\x00\x12k\n\x17k_map_estimation_result\x18\x07 \x01(\x0b\x32H.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResultH\x00\x12}\n delta_presence_estimation_result\x18\t \x01(\x0b\x32Q.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResultH\x00\x1a\xaf\x01\n\x14NumericalStatsResult\x12/\n\tmin_value\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12/\n\tmax_value\x18\x02 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x35\n\x0fquantile_values\x18\x04 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x1a\x8d\x03\n\x16\x43\x61tegoricalStatsResult\x12\x95\x01\n!value_frequency_histogram_buckets\x18\x05 \x03(\x0b\x32j.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket\x1a\xda\x01\n\x1f\x43\x61tegoricalStatsHistogramBucket\x12#\n\x1bvalue_frequency_lower_bound\x18\x01 \x01(\x03\x12#\n\x1bvalue_frequency_upper_bound\x18\x02 \x01(\x03\x12\x13\n\x0b\x62ucket_size\x18\x03 \x01(\x03\x12<\n\rbucket_values\x18\x04 \x03(\x0b\x32%.google.privacy.dlp.v2.ValueFrequency\x12\x1a\n\x12\x62ucket_value_count\x18\x05 \x01(\x03\x1a\xb5\x04\n\x10KAnonymityResult\x12\x8b\x01\n#equivalence_class_histogram_buckets\x18\x05 \x03(\x0b\x32^.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket\x1at\n\x1aKAnonymityEquivalenceClass\x12\x36\n\x10quasi_ids_values\x18\x01 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x1e\n\x16\x65quivalence_class_size\x18\x02 \x01(\x03\x1a\x9c\x02\n\x19KAnonymityHistogramBucket\x12*\n"equivalence_class_size_lower_bound\x18\x01 \x01(\x03\x12*\n"equivalence_class_size_upper_bound\x18\x02 \x01(\x03\x12\x13\n\x0b\x62ucket_size\x18\x03 \x01(\x03\x12v\n\rbucket_values\x18\x04 \x03(\x0b\x32_.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass\x12\x1a\n\x12\x62ucket_value_count\x18\x05 \x01(\x03\x1a\xb0\x05\n\x10LDiversityResult\x12\x93\x01\n+sensitive_value_frequency_histogram_buckets\x18\x05 \x03(\x0b\x32^.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket\x1a\xe0\x01\n\x1aLDiversityEquivalenceClass\x12\x36\n\x10quasi_ids_values\x18\x01 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x1e\n\x16\x65quivalence_class_size\x18\x02 \x01(\x03\x12%\n\x1dnum_distinct_sensitive_values\x18\x03 \x01(\x03\x12\x43\n\x14top_sensitive_values\x18\x04 \x03(\x0b\x32%.google.privacy.dlp.v2.ValueFrequency\x1a\xa2\x02\n\x19LDiversityHistogramBucket\x12-\n%sensitive_value_frequency_lower_bound\x18\x01 \x01(\x03\x12-\n%sensitive_value_frequency_upper_bound\x18\x02 \x01(\x03\x12\x13\n\x0b\x62ucket_size\x18\x03 \x01(\x03\x12v\n\rbucket_values\x18\x04 \x03(\x0b\x32_.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass\x12\x1a\n\x12\x62ucket_value_count\x18\x05 \x01(\x03\x1a\x95\x04\n\x14KMapEstimationResult\x12\x8a\x01\n\x1ak_map_estimation_histogram\x18\x01 \x03(\x0b\x32\x66.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket\x1ar\n\x1bKMapEstimationQuasiIdValues\x12\x36\n\x10quasi_ids_values\x18\x01 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x1b\n\x13\x65stimated_anonymity\x18\x02 \x01(\x03\x1a\xfb\x01\n\x1dKMapEstimationHistogramBucket\x12\x15\n\rmin_anonymity\x18\x01 \x01(\x03\x12\x15\n\rmax_anonymity\x18\x02 \x01(\x03\x12\x13\n\x0b\x62ucket_size\x18\x05 \x01(\x03\x12{\n\rbucket_values\x18\x06 \x03(\x0b\x32\x64.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues\x12\x1a\n\x12\x62ucket_value_count\x18\x07 \x01(\x03\x1a\xe4\x04\n\x1d\x44\x65ltaPresenceEstimationResult\x12\xa5\x01\n#delta_presence_estimation_histogram\x18\x01 \x03(\x0b\x32x.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationHistogramBucket\x1a}\n$DeltaPresenceEstimationQuasiIdValues\x12\x36\n\x10quasi_ids_values\x18\x01 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x1d\n\x15\x65stimated_probability\x18\x02 \x01(\x01\x1a\x9b\x02\n&DeltaPresenceEstimationHistogramBucket\x12\x17\n\x0fmin_probability\x18\x01 \x01(\x01\x12\x17\n\x0fmax_probability\x18\x02 \x01(\x01\x12\x13\n\x0b\x62ucket_size\x18\x05 \x01(\x03\x12\x8d\x01\n\rbucket_values\x18\x06 \x03(\x0b\x32v.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationQuasiIdValues\x12\x1a\n\x12\x62ucket_value_count\x18\x07 \x01(\x03\x42\x08\n\x06result"L\n\x0eValueFrequency\x12+\n\x05value\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\r\n\x05\x63ount\x18\x02 \x01(\x03"\xb3\x02\n\x05Value\x12\x17\n\rinteger_value\x18\x01 \x01(\x03H\x00\x12\x15\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x03 \x01(\tH\x00\x12\x17\n\rboolean_value\x18\x04 \x01(\x08H\x00\x12\x35\n\x0ftimestamp_value\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12,\n\ntime_value\x18\x06 \x01(\x0b\x32\x16.google.type.TimeOfDayH\x00\x12\'\n\ndate_value\x18\x07 \x01(\x0b\x32\x11.google.type.DateH\x00\x12\x33\n\x11\x64\x61y_of_week_value\x18\x08 \x01(\x0e\x32\x16.google.type.DayOfWeekH\x00\x42\x06\n\x04type"Q\n\tQuoteInfo\x12\x34\n\tdate_time\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.DateTimeH\x00\x42\x0e\n\x0cparsed_quote"\xdf\x01\n\x08\x44\x61teTime\x12\x1f\n\x04\x64\x61te\x18\x01 \x01(\x0b\x32\x11.google.type.Date\x12+\n\x0b\x64\x61y_of_week\x18\x02 \x01(\x0e\x32\x16.google.type.DayOfWeek\x12$\n\x04time\x18\x03 \x01(\x0b\x32\x16.google.type.TimeOfDay\x12;\n\ttime_zone\x18\x04 \x01(\x0b\x32(.google.privacy.dlp.v2.DateTime.TimeZone\x1a"\n\x08TimeZone\x12\x16\n\x0eoffset_minutes\x18\x01 \x01(\x05"\xc9\x01\n\x10\x44\x65identifyConfig\x12S\n\x19info_type_transformations\x18\x01 \x01(\x0b\x32..google.privacy.dlp.v2.InfoTypeTransformationsH\x00\x12N\n\x16record_transformations\x18\x02 \x01(\x0b\x32,.google.privacy.dlp.v2.RecordTransformationsH\x00\x42\x10\n\x0etransformation"\xf5\x06\n\x17PrimitiveTransformation\x12\x43\n\x0ereplace_config\x18\x01 \x01(\x0b\x32).google.privacy.dlp.v2.ReplaceValueConfigH\x00\x12<\n\rredact_config\x18\x02 \x01(\x0b\x32#.google.privacy.dlp.v2.RedactConfigH\x00\x12K\n\x15\x63haracter_mask_config\x18\x03 \x01(\x0b\x32*.google.privacy.dlp.v2.CharacterMaskConfigH\x00\x12Y\n\x1d\x63rypto_replace_ffx_fpe_config\x18\x04 \x01(\x0b\x32\x30.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfigH\x00\x12V\n\x1b\x66ixed_size_bucketing_config\x18\x05 \x01(\x0b\x32/.google.privacy.dlp.v2.FixedSizeBucketingConfigH\x00\x12\x42\n\x10\x62ucketing_config\x18\x06 \x01(\x0b\x32&.google.privacy.dlp.v2.BucketingConfigH\x00\x12Y\n\x1dreplace_with_info_type_config\x18\x07 \x01(\x0b\x32\x30.google.privacy.dlp.v2.ReplaceWithInfoTypeConfigH\x00\x12\x41\n\x10time_part_config\x18\x08 \x01(\x0b\x32%.google.privacy.dlp.v2.TimePartConfigH\x00\x12\x45\n\x12\x63rypto_hash_config\x18\t \x01(\x0b\x32\'.google.privacy.dlp.v2.CryptoHashConfigH\x00\x12\x43\n\x11\x64\x61te_shift_config\x18\x0b \x01(\x0b\x32&.google.privacy.dlp.v2.DateShiftConfigH\x00\x12W\n\x1b\x63rypto_deterministic_config\x18\x0c \x01(\x0b\x32\x30.google.privacy.dlp.v2.CryptoDeterministicConfigH\x00\x42\x10\n\x0etransformation"\xdc\x01\n\x0eTimePartConfig\x12G\n\x0fpart_to_extract\x18\x01 \x01(\x0e\x32..google.privacy.dlp.v2.TimePartConfig.TimePart"\x80\x01\n\x08TimePart\x12\x19\n\x15TIME_PART_UNSPECIFIED\x10\x00\x12\x08\n\x04YEAR\x10\x01\x12\t\n\x05MONTH\x10\x02\x12\x10\n\x0c\x44\x41Y_OF_MONTH\x10\x03\x12\x0f\n\x0b\x44\x41Y_OF_WEEK\x10\x04\x12\x10\n\x0cWEEK_OF_YEAR\x10\x05\x12\x0f\n\x0bHOUR_OF_DAY\x10\x06"H\n\x10\x43ryptoHashConfig\x12\x34\n\ncrypto_key\x18\x01 \x01(\x0b\x32 .google.privacy.dlp.v2.CryptoKey"\xc0\x01\n\x19\x43ryptoDeterministicConfig\x12\x34\n\ncrypto_key\x18\x01 \x01(\x0b\x32 .google.privacy.dlp.v2.CryptoKey\x12<\n\x13surrogate_info_type\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12/\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId"E\n\x12ReplaceValueConfig\x12/\n\tnew_value\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value"\x1b\n\x19ReplaceWithInfoTypeConfig"\x0e\n\x0cRedactConfig"\xb6\x02\n\rCharsToIgnore\x12\x1c\n\x12\x63haracters_to_skip\x18\x01 \x01(\tH\x00\x12_\n\x1b\x63ommon_characters_to_ignore\x18\x02 \x01(\x0e\x32\x38.google.privacy.dlp.v2.CharsToIgnore.CommonCharsToIgnoreH\x00"\x97\x01\n\x13\x43ommonCharsToIgnore\x12&\n"COMMON_CHARS_TO_IGNORE_UNSPECIFIED\x10\x00\x12\x0b\n\x07NUMERIC\x10\x01\x12\x14\n\x10\x41LPHA_UPPER_CASE\x10\x02\x12\x14\n\x10\x41LPHA_LOWER_CASE\x10\x03\x12\x0f\n\x0bPUNCTUATION\x10\x04\x12\x0e\n\nWHITESPACE\x10\x05\x42\x0c\n\ncharacters"\xa3\x01\n\x13\x43haracterMaskConfig\x12\x19\n\x11masking_character\x18\x01 \x01(\t\x12\x16\n\x0enumber_to_mask\x18\x02 \x01(\x05\x12\x15\n\rreverse_order\x18\x03 \x01(\x08\x12\x42\n\x14\x63haracters_to_ignore\x18\x04 \x03(\x0b\x32$.google.privacy.dlp.v2.CharsToIgnore"\x95\x01\n\x18\x46ixedSizeBucketingConfig\x12\x31\n\x0blower_bound\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x31\n\x0bupper_bound\x18\x02 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x13\n\x0b\x62ucket_size\x18\x03 \x01(\x01"\xeb\x01\n\x0f\x42ucketingConfig\x12>\n\x07\x62uckets\x18\x01 \x03(\x0b\x32-.google.privacy.dlp.v2.BucketingConfig.Bucket\x1a\x97\x01\n\x06\x42ucket\x12)\n\x03min\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12)\n\x03max\x18\x02 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x37\n\x11replacement_value\x18\x03 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value"\xf4\x03\n\x19\x43ryptoReplaceFfxFpeConfig\x12\x34\n\ncrypto_key\x18\x01 \x01(\x0b\x32 .google.privacy.dlp.v2.CryptoKey\x12/\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x63\n\x0f\x63ommon_alphabet\x18\x04 \x01(\x0e\x32H.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabetH\x00\x12\x19\n\x0f\x63ustom_alphabet\x18\x05 \x01(\tH\x00\x12\x0f\n\x05radix\x18\x06 \x01(\x05H\x00\x12<\n\x13surrogate_info_type\x18\x08 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType"\x94\x01\n\x17\x46\x66xCommonNativeAlphabet\x12*\n&FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED\x10\x00\x12\x0b\n\x07NUMERIC\x10\x01\x12\x0f\n\x0bHEXADECIMAL\x10\x02\x12\x1c\n\x18UPPER_CASE_ALPHA_NUMERIC\x10\x03\x12\x11\n\rALPHA_NUMERIC\x10\x04\x42\n\n\x08\x61lphabet"\xd8\x01\n\tCryptoKey\x12>\n\ttransient\x18\x01 \x01(\x0b\x32).google.privacy.dlp.v2.TransientCryptoKeyH\x00\x12>\n\tunwrapped\x18\x02 \x01(\x0b\x32).google.privacy.dlp.v2.UnwrappedCryptoKeyH\x00\x12\x41\n\x0bkms_wrapped\x18\x03 \x01(\x0b\x32*.google.privacy.dlp.v2.KmsWrappedCryptoKeyH\x00\x42\x08\n\x06source""\n\x12TransientCryptoKey\x12\x0c\n\x04name\x18\x01 \x01(\t"!\n\x12UnwrappedCryptoKey\x12\x0b\n\x03key\x18\x01 \x01(\x0c"C\n\x13KmsWrappedCryptoKey\x12\x13\n\x0bwrapped_key\x18\x01 \x01(\x0c\x12\x17\n\x0f\x63rypto_key_name\x18\x02 \x01(\t"\xb8\x01\n\x0f\x44\x61teShiftConfig\x12\x18\n\x10upper_bound_days\x18\x01 \x01(\x05\x12\x18\n\x10lower_bound_days\x18\x02 \x01(\x05\x12/\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x36\n\ncrypto_key\x18\x04 \x01(\x0b\x32 .google.privacy.dlp.v2.CryptoKeyH\x00\x42\x08\n\x06method"\x9b\x02\n\x17InfoTypeTransformations\x12^\n\x0ftransformations\x18\x01 \x03(\x0b\x32\x45.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation\x1a\x9f\x01\n\x16InfoTypeTransformation\x12\x33\n\ninfo_types\x18\x01 \x03(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12P\n\x18primitive_transformation\x18\x02 \x01(\x0b\x32..google.privacy.dlp.v2.PrimitiveTransformation"\xbb\x02\n\x13\x46ieldTransformation\x12.\n\x06\x66ields\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x39\n\tcondition\x18\x03 \x01(\x0b\x32&.google.privacy.dlp.v2.RecordCondition\x12R\n\x18primitive_transformation\x18\x04 \x01(\x0b\x32..google.privacy.dlp.v2.PrimitiveTransformationH\x00\x12S\n\x19info_type_transformations\x18\x05 \x01(\x0b\x32..google.privacy.dlp.v2.InfoTypeTransformationsH\x00\x42\x10\n\x0etransformation"\xa9\x01\n\x15RecordTransformations\x12I\n\x15\x66ield_transformations\x18\x01 \x03(\x0b\x32*.google.privacy.dlp.v2.FieldTransformation\x12\x45\n\x13record_suppressions\x18\x02 \x03(\x0b\x32(.google.privacy.dlp.v2.RecordSuppression"N\n\x11RecordSuppression\x12\x39\n\tcondition\x18\x01 \x01(\x0b\x32&.google.privacy.dlp.v2.RecordCondition"\xd2\x04\n\x0fRecordCondition\x12G\n\x0b\x65xpressions\x18\x03 \x01(\x0b\x32\x32.google.privacy.dlp.v2.RecordCondition.Expressions\x1a\xa4\x01\n\tCondition\x12-\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12;\n\x08operator\x18\x03 \x01(\x0e\x32).google.privacy.dlp.v2.RelationalOperator\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x1aR\n\nConditions\x12\x44\n\nconditions\x18\x01 \x03(\x0b\x32\x30.google.privacy.dlp.v2.RecordCondition.Condition\x1a\xfa\x01\n\x0b\x45xpressions\x12\\\n\x10logical_operator\x18\x01 \x01(\x0e\x32\x42.google.privacy.dlp.v2.RecordCondition.Expressions.LogicalOperator\x12G\n\nconditions\x18\x03 \x01(\x0b\x32\x31.google.privacy.dlp.v2.RecordCondition.ConditionsH\x00"<\n\x0fLogicalOperator\x12 \n\x1cLOGICAL_OPERATOR_UNSPECIFIED\x10\x00\x12\x07\n\x03\x41ND\x10\x01\x42\x06\n\x04type"\x83\x01\n\x16TransformationOverview\x12\x19\n\x11transformed_bytes\x18\x02 \x01(\x03\x12N\n\x18transformation_summaries\x18\x03 \x03(\x0b\x32,.google.privacy.dlp.v2.TransformationSummary"\x9f\x05\n\x15TransformationSummary\x12\x32\n\tinfo_type\x18\x01 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12-\n\x05\x66ield\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x46\n\x0etransformation\x18\x03 \x01(\x0b\x32..google.privacy.dlp.v2.PrimitiveTransformation\x12I\n\x15\x66ield_transformations\x18\x05 \x03(\x0b\x32*.google.privacy.dlp.v2.FieldTransformation\x12\x41\n\x0frecord_suppress\x18\x06 \x01(\x0b\x32(.google.privacy.dlp.v2.RecordSuppression\x12K\n\x07results\x18\x04 \x03(\x0b\x32:.google.privacy.dlp.v2.TransformationSummary.SummaryResult\x12\x19\n\x11transformed_bytes\x18\x07 \x01(\x03\x1a\x84\x01\n\rSummaryResult\x12\r\n\x05\x63ount\x18\x01 \x01(\x03\x12S\n\x04\x63ode\x18\x02 \x01(\x0e\x32\x45.google.privacy.dlp.v2.TransformationSummary.TransformationResultCode\x12\x0f\n\x07\x64\x65tails\x18\x03 \x01(\t"^\n\x18TransformationResultCode\x12*\n&TRANSFORMATION_RESULT_CODE_UNSPECIFIED\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\t\n\x05\x45RROR\x10\x02"U\n\x08Schedule\x12?\n\x1arecurrence_period_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x42\x08\n\x06option"\x8f\x03\n\x0fInspectTemplate\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12/\n\x0b\x63reate_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12<\n\x0einspect_config\x18\x06 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig:\xa2\x01\xea\x41\x9e\x01\n"dlp.googleapis.com/InspectTemplate\x12@organizations/{organization}/inspectTemplates/{inspect_template}\x12\x36projects/{project}/inspectTemplates/{inspect_template}"\xa7\x03\n\x12\x44\x65identifyTemplate\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12/\n\x0b\x63reate_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x42\n\x11\x64\x65identify_config\x18\x06 \x01(\x0b\x32\'.google.privacy.dlp.v2.DeidentifyConfig:\xb1\x01\xea\x41\xad\x01\n%dlp.googleapis.com/DeidentifyTemplate\x12\x46organizations/{organization}/deidentifyTemplates/{deidentify_template}\x12\n\x0binspect_job\x18\x04 \x01(\x0b\x32\'.google.privacy.dlp.v2.InspectJobConfigH\x00\x12;\n\x08triggers\x18\x05 \x03(\x0b\x32).google.privacy.dlp.v2.JobTrigger.Trigger\x12,\n\x06\x65rrors\x18\x06 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Error\x12/\n\x0b\x63reate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\rlast_run_time\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x06status\x18\n \x01(\x0e\x32(.google.privacy.dlp.v2.JobTrigger.Status\x1aI\n\x07Trigger\x12\x33\n\x08schedule\x18\x01 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.ScheduleH\x00\x42\t\n\x07trigger"H\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x0b\n\x07HEALTHY\x10\x01\x12\n\n\x06PAUSED\x10\x02\x12\r\n\tCANCELLED\x10\x03:P\xea\x41M\n\x1d\x64lp.googleapis.com/JobTrigger\x12,projects/{project}/jobTriggers/{job_trigger}B\x05\n\x03job"\xf4\x05\n\x06\x41\x63tion\x12\x43\n\rsave_findings\x18\x01 \x01(\x0b\x32*.google.privacy.dlp.v2.Action.SaveFindingsH\x00\x12@\n\x07pub_sub\x18\x02 \x01(\x0b\x32-.google.privacy.dlp.v2.Action.PublishToPubSubH\x00\x12U\n\x17publish_summary_to_cscc\x18\x03 \x01(\x0b\x32\x32.google.privacy.dlp.v2.Action.PublishSummaryToCsccH\x00\x12q\n&publish_findings_to_cloud_data_catalog\x18\x05 \x01(\x0b\x32?.google.privacy.dlp.v2.Action.PublishFindingsToCloudDataCatalogH\x00\x12V\n\x17job_notification_emails\x18\x08 \x01(\x0b\x32\x33.google.privacy.dlp.v2.Action.JobNotificationEmailsH\x00\x12T\n\x16publish_to_stackdriver\x18\t \x01(\x0b\x32\x32.google.privacy.dlp.v2.Action.PublishToStackdriverH\x00\x1aQ\n\x0cSaveFindings\x12\x41\n\routput_config\x18\x01 \x01(\x0b\x32*.google.privacy.dlp.v2.OutputStorageConfig\x1a \n\x0fPublishToPubSub\x12\r\n\x05topic\x18\x01 \x01(\t\x1a\x16\n\x14PublishSummaryToCscc\x1a#\n!PublishFindingsToCloudDataCatalog\x1a\x17\n\x15JobNotificationEmails\x1a\x16\n\x14PublishToStackdriverB\x08\n\x06\x61\x63tion"\xc6\x01\n\x1c\x43reateInspectTemplateRequest\x12:\n\x06parent\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\x12"dlp.googleapis.com/InspectTemplate\x12@\n\x10inspect_template\x18\x02 \x01(\x0b\x32&.google.privacy.dlp.v2.InspectTemplate\x12\x13\n\x0btemplate_id\x18\x03 \x01(\t\x12\x13\n\x0blocation_id\x18\x04 \x01(\t"\xcb\x01\n\x1cUpdateInspectTemplateRequest\x12\x38\n\x04name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n"dlp.googleapis.com/InspectTemplate\x12@\n\x10inspect_template\x18\x02 \x01(\x0b\x32&.google.privacy.dlp.v2.InspectTemplate\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"U\n\x19GetInspectTemplateRequest\x12\x38\n\x04name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n"dlp.googleapis.com/InspectTemplate"\xa7\x01\n\x1bListInspectTemplatesRequest\x12:\n\x06parent\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\x12"dlp.googleapis.com/InspectTemplate\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x10\n\x08order_by\x18\x04 \x01(\t\x12\x13\n\x0blocation_id\x18\x05 \x01(\t"z\n\x1cListInspectTemplatesResponse\x12\x41\n\x11inspect_templates\x18\x01 \x03(\x0b\x32&.google.privacy.dlp.v2.InspectTemplate\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"X\n\x1c\x44\x65leteInspectTemplateRequest\x12\x38\n\x04name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n"dlp.googleapis.com/InspectTemplate"\xbf\x01\n\x17\x43reateJobTriggerRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x36\n\x0bjob_trigger\x18\x02 \x01(\x0b\x32!.google.privacy.dlp.v2.JobTrigger\x12\x12\n\ntrigger_id\x18\x03 \x01(\t\x12\x13\n\x0blocation_id\x18\x04 \x01(\t"P\n\x19\x41\x63tivateJobTriggerRequest\x12\x33\n\x04name\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1d\x64lp.googleapis.com/JobTrigger"\xb7\x01\n\x17UpdateJobTriggerRequest\x12\x33\n\x04name\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1d\x64lp.googleapis.com/JobTrigger\x12\x36\n\x0bjob_trigger\x18\x02 \x01(\x0b\x32!.google.privacy.dlp.v2.JobTrigger\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"K\n\x14GetJobTriggerRequest\x12\x33\n\x04name\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1d\x64lp.googleapis.com/JobTrigger"\x88\x02\n\x13\x43reateDlpJobRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12>\n\x0binspect_job\x18\x02 \x01(\x0b\x32\'.google.privacy.dlp.v2.InspectJobConfigH\x00\x12@\n\x08risk_job\x18\x03 \x01(\x0b\x32,.google.privacy.dlp.v2.RiskAnalysisJobConfigH\x00\x12\x0e\n\x06job_id\x18\x04 \x01(\t\x12\x13\n\x0blocation_id\x18\x05 \x01(\tB\x05\n\x03job"\xbb\x01\n\x16ListJobTriggersRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x10\n\x08order_by\x18\x04 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x05 \x01(\t\x12\x13\n\x0blocation_id\x18\x07 \x01(\t"k\n\x17ListJobTriggersResponse\x12\x37\n\x0cjob_triggers\x18\x01 \x03(\x0b\x32!.google.privacy.dlp.v2.JobTrigger\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"N\n\x17\x44\x65leteJobTriggerRequest\x12\x33\n\x04name\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1d\x64lp.googleapis.com/JobTrigger"\xdd\x01\n\x10InspectJobConfig\x12<\n\x0estorage_config\x18\x01 \x01(\x0b\x32$.google.privacy.dlp.v2.StorageConfig\x12<\n\x0einspect_config\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig\x12\x1d\n\x15inspect_template_name\x18\x03 \x01(\t\x12.\n\x07\x61\x63tions\x18\x04 \x03(\x0b\x32\x1d.google.privacy.dlp.v2.Action"\xa4\x05\n\x06\x44lpJob\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\x04type\x18\x02 \x01(\x0e\x32!.google.privacy.dlp.v2.DlpJobType\x12\x35\n\x05state\x18\x03 \x01(\x0e\x32&.google.privacy.dlp.v2.DlpJob.JobState\x12K\n\x0crisk_details\x18\x04 \x01(\x0b\x32\x33.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetailsH\x00\x12J\n\x0finspect_details\x18\x05 \x01(\x0b\x32/.google.privacy.dlp.v2.InspectDataSourceDetailsH\x00\x12/\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nstart_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x18\n\x10job_trigger_name\x18\n \x01(\t\x12,\n\x06\x65rrors\x18\x0b \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Error"c\n\x08JobState\x12\x19\n\x15JOB_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\x12\x08\n\x04\x44ONE\x10\x03\x12\x0c\n\x08\x43\x41NCELED\x10\x04\x12\n\n\x06\x46\x41ILED\x10\x05:D\xea\x41\x41\n\x19\x64lp.googleapis.com/DlpJob\x12$projects/{project}/dlpJobs/{dlp_job}B\t\n\x07\x64\x65tails"C\n\x10GetDlpJobRequest\x12/\n\x04name\x18\x01 \x01(\tB!\xe0\x41\x02\xfa\x41\x1b\n\x19\x64lp.googleapis.com/DlpJob"\xe8\x01\n\x12ListDlpJobsRequest\x12\x43\n\x06parent\x18\x04 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x0e\n\x06\x66ilter\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\x12/\n\x04type\x18\x05 \x01(\x0e\x32!.google.privacy.dlp.v2.DlpJobType\x12\x10\n\x08order_by\x18\x06 \x01(\t\x12\x13\n\x0blocation_id\x18\x07 \x01(\t"[\n\x13ListDlpJobsResponse\x12+\n\x04jobs\x18\x01 \x03(\x0b\x32\x1d.google.privacy.dlp.v2.DlpJob\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"F\n\x13\x43\x61ncelDlpJobRequest\x12/\n\x04name\x18\x01 \x01(\tB!\xe0\x41\x02\xfa\x41\x1b\n\x19\x64lp.googleapis.com/DlpJob"F\n\x13\x44\x65leteDlpJobRequest\x12/\n\x04name\x18\x01 \x01(\tB!\xe0\x41\x02\xfa\x41\x1b\n\x19\x64lp.googleapis.com/DlpJob"\xd2\x01\n\x1f\x43reateDeidentifyTemplateRequest\x12=\n\x06parent\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\x12%dlp.googleapis.com/DeidentifyTemplate\x12\x46\n\x13\x64\x65identify_template\x18\x02 \x01(\x0b\x32).google.privacy.dlp.v2.DeidentifyTemplate\x12\x13\n\x0btemplate_id\x18\x03 \x01(\t\x12\x13\n\x0blocation_id\x18\x04 \x01(\t"\xd7\x01\n\x1fUpdateDeidentifyTemplateRequest\x12;\n\x04name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%dlp.googleapis.com/DeidentifyTemplate\x12\x46\n\x13\x64\x65identify_template\x18\x02 \x01(\x0b\x32).google.privacy.dlp.v2.DeidentifyTemplate\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"[\n\x1cGetDeidentifyTemplateRequest\x12;\n\x04name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%dlp.googleapis.com/DeidentifyTemplate"\xad\x01\n\x1eListDeidentifyTemplatesRequest\x12=\n\x06parent\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\x12%dlp.googleapis.com/DeidentifyTemplate\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x10\n\x08order_by\x18\x04 \x01(\t\x12\x13\n\x0blocation_id\x18\x05 \x01(\t"\x83\x01\n\x1fListDeidentifyTemplatesResponse\x12G\n\x14\x64\x65identify_templates\x18\x01 \x03(\x0b\x32).google.privacy.dlp.v2.DeidentifyTemplate\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"^\n\x1f\x44\x65leteDeidentifyTemplateRequest\x12;\n\x04name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%dlp.googleapis.com/DeidentifyTemplate"\xf4\x01\n\x1bLargeCustomDictionaryConfig\x12<\n\x0boutput_path\x18\x01 \x01(\x0b\x32\'.google.privacy.dlp.v2.CloudStoragePath\x12L\n\x16\x63loud_storage_file_set\x18\x02 \x01(\x0b\x32*.google.privacy.dlp.v2.CloudStorageFileSetH\x00\x12?\n\x0f\x62ig_query_field\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryFieldH\x00\x42\x08\n\x06source"8\n\x1aLargeCustomDictionaryStats\x12\x1a\n\x12\x61pprox_num_phrases\x18\x01 \x01(\x03"\xa0\x01\n\x14StoredInfoTypeConfig\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12U\n\x17large_custom_dictionary\x18\x03 \x01(\x0b\x32\x32.google.privacy.dlp.v2.LargeCustomDictionaryConfigH\x00\x42\x06\n\x04type"s\n\x13StoredInfoTypeStats\x12T\n\x17large_custom_dictionary\x18\x01 \x01(\x0b\x32\x31.google.privacy.dlp.v2.LargeCustomDictionaryStatsH\x00\x42\x06\n\x04type"\xa9\x02\n\x15StoredInfoTypeVersion\x12;\n\x06\x63onfig\x18\x01 \x01(\x0b\x32+.google.privacy.dlp.v2.StoredInfoTypeConfig\x12/\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x39\n\x05state\x18\x03 \x01(\x0e\x32*.google.privacy.dlp.v2.StoredInfoTypeState\x12,\n\x06\x65rrors\x18\x04 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Error\x12\x39\n\x05stats\x18\x05 \x01(\x0b\x32*.google.privacy.dlp.v2.StoredInfoTypeStats"\xcf\x02\n\x0eStoredInfoType\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x45\n\x0f\x63urrent_version\x18\x02 \x01(\x0b\x32,.google.privacy.dlp.v2.StoredInfoTypeVersion\x12\x46\n\x10pending_versions\x18\x03 \x03(\x0b\x32,.google.privacy.dlp.v2.StoredInfoTypeVersion:\x9f\x01\xea\x41\x9b\x01\n!dlp.googleapis.com/StoredInfoType\x12?organizations/{organization}/storedInfoTypes/{stored_info_type}\x12\x35projects/{project}/storedInfoTypes/{stored_info_type}"\xc7\x01\n\x1b\x43reateStoredInfoTypeRequest\x12\x39\n\x06parent\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\x12!dlp.googleapis.com/StoredInfoType\x12;\n\x06\x63onfig\x18\x02 \x01(\x0b\x32+.google.privacy.dlp.v2.StoredInfoTypeConfig\x12\x1b\n\x13stored_info_type_id\x18\x03 \x01(\t\x12\x13\n\x0blocation_id\x18\x04 \x01(\t"\xc4\x01\n\x1bUpdateStoredInfoTypeRequest\x12\x37\n\x04name\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\n!dlp.googleapis.com/StoredInfoType\x12;\n\x06\x63onfig\x18\x02 \x01(\x0b\x32+.google.privacy.dlp.v2.StoredInfoTypeConfig\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"S\n\x18GetStoredInfoTypeRequest\x12\x37\n\x04name\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\n!dlp.googleapis.com/StoredInfoType"\xa5\x01\n\x1aListStoredInfoTypesRequest\x12\x39\n\x06parent\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\x12!dlp.googleapis.com/StoredInfoType\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x10\n\x08order_by\x18\x04 \x01(\t\x12\x13\n\x0blocation_id\x18\x05 \x01(\t"x\n\x1bListStoredInfoTypesResponse\x12@\n\x11stored_info_types\x18\x01 \x03(\x0b\x32%.google.privacy.dlp.v2.StoredInfoType\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"V\n\x1b\x44\x65leteStoredInfoTypeRequest\x12\x37\n\x04name\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\n!dlp.googleapis.com/StoredInfoType*M\n\rContentOption\x12\x17\n\x13\x43ONTENT_UNSPECIFIED\x10\x00\x12\x10\n\x0c\x43ONTENT_TEXT\x10\x01\x12\x11\n\rCONTENT_IMAGE\x10\x02*\x8d\x01\n\x0cMatchingType\x12\x1d\n\x19MATCHING_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n\x18MATCHING_TYPE_FULL_MATCH\x10\x01\x12\x1f\n\x1bMATCHING_TYPE_PARTIAL_MATCH\x10\x02\x12\x1f\n\x1bMATCHING_TYPE_INVERSE_MATCH\x10\x03*P\n\x13InfoTypeSupportedBy\x12\x19\n\x15\x45NUM_TYPE_UNSPECIFIED\x10\x00\x12\x0b\n\x07INSPECT\x10\x01\x12\x11\n\rRISK_ANALYSIS\x10\x02*\xbb\x01\n\x12RelationalOperator\x12#\n\x1fRELATIONAL_OPERATOR_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x45QUAL_TO\x10\x01\x12\x10\n\x0cNOT_EQUAL_TO\x10\x02\x12\x10\n\x0cGREATER_THAN\x10\x03\x12\r\n\tLESS_THAN\x10\x04\x12\x1a\n\x16GREATER_THAN_OR_EQUALS\x10\x05\x12\x17\n\x13LESS_THAN_OR_EQUALS\x10\x06\x12\n\n\x06\x45XISTS\x10\x07*R\n\nDlpJobType\x12\x1c\n\x18\x44LP_JOB_TYPE_UNSPECIFIED\x10\x00\x12\x0f\n\x0bINSPECT_JOB\x10\x01\x12\x15\n\x11RISK_ANALYSIS_JOB\x10\x02*n\n\x13StoredInfoTypeState\x12&\n"STORED_INFO_TYPE_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\t\n\x05READY\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\x12\x0b\n\x07INVALID\x10\x04\x32\x85\x44\n\nDlpService\x12\xe7\x01\n\x0eInspectContent\x12,.google.privacy.dlp.v2.InspectContentRequest\x1a-.google.privacy.dlp.v2.InspectContentResponse"x\x82\xd3\xe4\x93\x02r"\'/v2/{parent=projects/*}/content:inspect:\x01*ZD"?/v2/{parent=projects/*}/locations/{location_id}/content:inspect:\x01*\x12\xd8\x01\n\x0bRedactImage\x12).google.privacy.dlp.v2.RedactImageRequest\x1a*.google.privacy.dlp.v2.RedactImageResponse"r\x82\xd3\xe4\x93\x02l"$/v2/{parent=projects/*}/image:redact:\x01*ZA"\x82\xd3\xe4\x93\x02\x38\x12\r/v2/infoTypesZ\'\x12%/v2/locations/{location_id}/infoTypes\x12\xf2\x02\n\x15\x43reateInspectTemplate\x12\x33.google.privacy.dlp.v2.CreateInspectTemplateRequest\x1a&.google.privacy.dlp.v2.InspectTemplate"\xfb\x01\x82\xd3\xe4\x93\x02\xf4\x01"-/v2/{parent=organizations/*}/inspectTemplates:\x01*ZJ"E/v2/{parent=organizations/*}/locations/{location_id}/inspectTemplates:\x01*Z-"(/v2/{parent=projects/*}/inspectTemplates:\x01*ZE"@/v2/{parent=projects/*}/locations/{location_id}/inspectTemplates:\x01*\x12\xda\x02\n\x15UpdateInspectTemplate\x12\x33.google.privacy.dlp.v2.UpdateInspectTemplateRequest\x1a&.google.privacy.dlp.v2.InspectTemplate"\xe3\x01\x82\xd3\xe4\x93\x02\xdc\x01\x32-/v2/{name=organizations/*/inspectTemplates/*}:\x01*Z>29/v2/{name=organizations/*/locations/*/inspectTemplates/*}:\x01*Z-2(/v2/{name=projects/*/inspectTemplates/*}:\x01*Z924/v2/{name=projects/*/locations/*/inspectTemplates/*}:\x01*\x12\xc8\x02\n\x12GetInspectTemplate\x12\x30.google.privacy.dlp.v2.GetInspectTemplateRequest\x1a&.google.privacy.dlp.v2.InspectTemplate"\xd7\x01\x82\xd3\xe4\x93\x02\xd0\x01\x12-/v2/{name=organizations/*/inspectTemplates/*}Z;\x12\x39/v2/{name=organizations/*/locations/*/inspectTemplates/*}Z*\x12(/v2/{name=projects/*/inspectTemplates/*}Z6\x12\x34/v2/{name=projects/*/locations/*/inspectTemplates/*}\x12\xf1\x02\n\x14ListInspectTemplates\x12\x32.google.privacy.dlp.v2.ListInspectTemplatesRequest\x1a\x33.google.privacy.dlp.v2.ListInspectTemplatesResponse"\xef\x01\x82\xd3\xe4\x93\x02\xe8\x01\x12-/v2/{parent=organizations/*}/inspectTemplatesZG\x12\x45/v2/{parent=organizations/*}/locations/{location_id}/inspectTemplatesZ*\x12(/v2/{parent=projects/*}/inspectTemplatesZB\x12@/v2/{parent=projects/*}/locations/{location_id}/inspectTemplates\x12\xbe\x02\n\x15\x44\x65leteInspectTemplate\x12\x33.google.privacy.dlp.v2.DeleteInspectTemplateRequest\x1a\x16.google.protobuf.Empty"\xd7\x01\x82\xd3\xe4\x93\x02\xd0\x01*-/v2/{name=organizations/*/inspectTemplates/*}Z;*9/v2/{name=organizations/*/locations/*/inspectTemplates/*}Z**(/v2/{name=projects/*/inspectTemplates/*}Z6*4/v2/{name=projects/*/locations/*/inspectTemplates/*}\x12\x87\x03\n\x18\x43reateDeidentifyTemplate\x12\x36.google.privacy.dlp.v2.CreateDeidentifyTemplateRequest\x1a).google.privacy.dlp.v2.DeidentifyTemplate"\x87\x02\x82\xd3\xe4\x93\x02\x80\x02"0/v2/{parent=organizations/*}/deidentifyTemplates:\x01*ZM"H/v2/{parent=organizations/*}/locations/{location_id}/deidentifyTemplates:\x01*Z0"+/v2/{parent=projects/*}/deidentifyTemplates:\x01*ZH"C/v2/{parent=projects/*}/locations/{location_id}/deidentifyTemplates:\x01*\x12\xef\x02\n\x18UpdateDeidentifyTemplate\x12\x36.google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest\x1a).google.privacy.dlp.v2.DeidentifyTemplate"\xef\x01\x82\xd3\xe4\x93\x02\xe8\x01\x32\x30/v2/{name=organizations/*/deidentifyTemplates/*}:\x01*ZA2\x12*\n\x0e\x65xclusion_rule\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.ExclusionRuleH\x00\x42\x06\n\x04type"~\n\x11InspectionRuleSet\x12\x33\n\ninfo_types\x18\x01 \x03(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12\x34\n\x05rules\x18\x02 \x03(\x0b\x32%.google.privacy.dlp.v2.InspectionRule"\xc7\x05\n\rInspectConfig\x12\x33\n\ninfo_types\x18\x01 \x03(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12\x39\n\x0emin_likelihood\x18\x02 \x01(\x0e\x32!.google.privacy.dlp.v2.Likelihood\x12\x42\n\x06limits\x18\x03 \x01(\x0b\x32\x32.google.privacy.dlp.v2.InspectConfig.FindingLimits\x12\x15\n\rinclude_quote\x18\x04 \x01(\x08\x12\x1a\n\x12\x65xclude_info_types\x18\x05 \x01(\x08\x12@\n\x11\x63ustom_info_types\x18\x06 \x03(\x0b\x32%.google.privacy.dlp.v2.CustomInfoType\x12=\n\x0f\x63ontent_options\x18\x08 \x03(\x0e\x32$.google.privacy.dlp.v2.ContentOption\x12:\n\x08rule_set\x18\n \x03(\x0b\x32(.google.privacy.dlp.v2.InspectionRuleSet\x1a\x91\x02\n\rFindingLimits\x12\x1d\n\x15max_findings_per_item\x18\x01 \x01(\x05\x12 \n\x18max_findings_per_request\x18\x02 \x01(\x05\x12\x64\n\x1amax_findings_per_info_type\x18\x03 \x03(\x0b\x32@.google.privacy.dlp.v2.InspectConfig.FindingLimits.InfoTypeLimit\x1aY\n\rInfoTypeLimit\x12\x32\n\tinfo_type\x18\x01 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12\x14\n\x0cmax_findings\x18\x02 \x01(\x05"\xea\x01\n\x0f\x42yteContentItem\x12>\n\x04type\x18\x01 \x01(\x0e\x32\x30.google.privacy.dlp.v2.ByteContentItem.BytesType\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c"\x88\x01\n\tBytesType\x12\x1a\n\x16\x42YTES_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05IMAGE\x10\x06\x12\x0e\n\nIMAGE_JPEG\x10\x01\x12\r\n\tIMAGE_BMP\x10\x02\x12\r\n\tIMAGE_PNG\x10\x03\x12\r\n\tIMAGE_SVG\x10\x04\x12\r\n\tTEXT_UTF8\x10\x05\x12\x08\n\x04\x41VRO\x10\x0b"\x97\x01\n\x0b\x43ontentItem\x12\x0f\n\x05value\x18\x03 \x01(\tH\x00\x12-\n\x05table\x18\x04 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.TableH\x00\x12;\n\tbyte_item\x18\x05 \x01(\x0b\x32&.google.privacy.dlp.v2.ByteContentItemH\x00\x42\x0b\n\tdata_item"\x9d\x01\n\x05Table\x12/\n\x07headers\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12.\n\x04rows\x18\x02 \x03(\x0b\x32 .google.privacy.dlp.v2.Table.Row\x1a\x33\n\x03Row\x12,\n\x06values\x18\x01 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value"]\n\rInspectResult\x12\x30\n\x08\x66indings\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.Finding\x12\x1a\n\x12\x66indings_truncated\x18\x02 \x01(\x08"\x9d\x02\n\x07\x46inding\x12\r\n\x05quote\x18\x01 \x01(\t\x12\x32\n\tinfo_type\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12\x35\n\nlikelihood\x18\x03 \x01(\x0e\x32!.google.privacy.dlp.v2.Likelihood\x12\x31\n\x08location\x18\x04 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.Location\x12/\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\nquote_info\x18\x07 \x01(\x0b\x32 .google.privacy.dlp.v2.QuoteInfo"\xb6\x01\n\x08Location\x12\x30\n\nbyte_range\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Range\x12\x35\n\x0f\x63odepoint_range\x18\x02 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Range\x12\x41\n\x11\x63ontent_locations\x18\x07 \x03(\x0b\x32&.google.privacy.dlp.v2.ContentLocation"\xd1\x02\n\x0f\x43ontentLocation\x12\x16\n\x0e\x63ontainer_name\x18\x01 \x01(\t\x12@\n\x0frecord_location\x18\x02 \x01(\x0b\x32%.google.privacy.dlp.v2.RecordLocationH\x00\x12>\n\x0eimage_location\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.ImageLocationH\x00\x12\x44\n\x11\x64ocument_location\x18\x05 \x01(\x0b\x32\'.google.privacy.dlp.v2.DocumentLocationH\x00\x12\x37\n\x13\x63ontainer_timestamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x19\n\x11\x63ontainer_version\x18\x07 \x01(\tB\n\n\x08location"\'\n\x10\x44ocumentLocation\x12\x13\n\x0b\x66ile_offset\x18\x01 \x01(\x03"\xb6\x01\n\x0eRecordLocation\x12\x34\n\nrecord_key\x18\x01 \x01(\x0b\x32 .google.privacy.dlp.v2.RecordKey\x12\x30\n\x08\x66ield_id\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12<\n\x0etable_location\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.TableLocation""\n\rTableLocation\x12\x11\n\trow_index\x18\x01 \x01(\x03"#\n\x05Range\x12\r\n\x05start\x18\x01 \x01(\x03\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x03"K\n\rImageLocation\x12:\n\x0e\x62ounding_boxes\x18\x01 \x03(\x0b\x32".google.privacy.dlp.v2.BoundingBox"G\n\x0b\x42oundingBox\x12\x0b\n\x03top\x18\x01 \x01(\x05\x12\x0c\n\x04left\x18\x02 \x01(\x05\x12\r\n\x05width\x18\x03 \x01(\x05\x12\x0e\n\x06height\x18\x04 \x01(\x05"\x8a\x04\n\x12RedactImageRequest\x12@\n\x06parent\x18\x01 \x01(\tB0\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x13\n\x0blocation_id\x18\x08 \x01(\t\x12<\n\x0einspect_config\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig\x12_\n\x17image_redaction_configs\x18\x05 \x03(\x0b\x32>.google.privacy.dlp.v2.RedactImageRequest.ImageRedactionConfig\x12\x18\n\x10include_findings\x18\x06 \x01(\x08\x12\x39\n\tbyte_item\x18\x07 \x01(\x0b\x32&.google.privacy.dlp.v2.ByteContentItem\x1a\xa8\x01\n\x14ImageRedactionConfig\x12\x34\n\tinfo_type\x18\x01 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoTypeH\x00\x12\x19\n\x0fredact_all_text\x18\x02 \x01(\x08H\x00\x12\x35\n\x0fredaction_color\x18\x03 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.ColorB\x08\n\x06target"1\n\x05\x43olor\x12\x0b\n\x03red\x18\x01 \x01(\x02\x12\r\n\x05green\x18\x02 \x01(\x02\x12\x0c\n\x04\x62lue\x18\x03 \x01(\x02"\x83\x01\n\x13RedactImageResponse\x12\x16\n\x0eredacted_image\x18\x01 \x01(\x0c\x12\x16\n\x0e\x65xtracted_text\x18\x02 \x01(\t\x12<\n\x0einspect_result\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectResult"\xe6\x02\n\x18\x44\x65identifyContentRequest\x12@\n\x06parent\x18\x01 \x01(\tB0\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x42\n\x11\x64\x65identify_config\x18\x02 \x01(\x0b\x32\'.google.privacy.dlp.v2.DeidentifyConfig\x12<\n\x0einspect_config\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig\x12\x30\n\x04item\x18\x04 \x01(\x0b\x32".google.privacy.dlp.v2.ContentItem\x12\x1d\n\x15inspect_template_name\x18\x05 \x01(\t\x12 \n\x18\x64\x65identify_template_name\x18\x06 \x01(\t\x12\x13\n\x0blocation_id\x18\x07 \x01(\t"\x8e\x01\n\x19\x44\x65identifyContentResponse\x12\x30\n\x04item\x18\x01 \x01(\x0b\x32".google.privacy.dlp.v2.ContentItem\x12?\n\x08overview\x18\x02 \x01(\x0b\x32-.google.privacy.dlp.v2.TransformationOverview"\xe9\x02\n\x18ReidentifyContentRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x42\n\x11reidentify_config\x18\x02 \x01(\x0b\x32\'.google.privacy.dlp.v2.DeidentifyConfig\x12<\n\x0einspect_config\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig\x12\x30\n\x04item\x18\x04 \x01(\x0b\x32".google.privacy.dlp.v2.ContentItem\x12\x1d\n\x15inspect_template_name\x18\x05 \x01(\t\x12 \n\x18reidentify_template_name\x18\x06 \x01(\t\x12\x13\n\x0blocation_id\x18\x07 \x01(\t"\x8e\x01\n\x19ReidentifyContentResponse\x12\x30\n\x04item\x18\x01 \x01(\x0b\x32".google.privacy.dlp.v2.ContentItem\x12?\n\x08overview\x18\x02 \x01(\x0b\x32-.google.privacy.dlp.v2.TransformationOverview"\xfd\x01\n\x15InspectContentRequest\x12@\n\x06parent\x18\x01 \x01(\tB0\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12<\n\x0einspect_config\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig\x12\x30\n\x04item\x18\x03 \x01(\x0b\x32".google.privacy.dlp.v2.ContentItem\x12\x1d\n\x15inspect_template_name\x18\x04 \x01(\t\x12\x13\n\x0blocation_id\x18\x05 \x01(\t"N\n\x16InspectContentResponse\x12\x34\n\x06result\x18\x01 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectResult"\xb7\x02\n\x13OutputStorageConfig\x12\x35\n\x05table\x18\x01 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryTableH\x00\x12N\n\routput_schema\x18\x03 \x01(\x0e\x32\x37.google.privacy.dlp.v2.OutputStorageConfig.OutputSchema"\x90\x01\n\x0cOutputSchema\x12\x1d\n\x19OUTPUT_SCHEMA_UNSPECIFIED\x10\x00\x12\x11\n\rBASIC_COLUMNS\x10\x01\x12\x0f\n\x0bGCS_COLUMNS\x10\x02\x12\x15\n\x11\x44\x41TASTORE_COLUMNS\x10\x03\x12\x15\n\x11\x42IG_QUERY_COLUMNS\x10\x04\x12\x0f\n\x0b\x41LL_COLUMNS\x10\x05\x42\x06\n\x04type"R\n\rInfoTypeStats\x12\x32\n\tinfo_type\x18\x01 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12\r\n\x05\x63ount\x18\x02 \x01(\x03"\xdd\x03\n\x18InspectDataSourceDetails\x12[\n\x11requested_options\x18\x02 \x01(\x0b\x32@.google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions\x12\x46\n\x06result\x18\x03 \x01(\x0b\x32\x36.google.privacy.dlp.v2.InspectDataSourceDetails.Result\x1a\x9a\x01\n\x10RequestedOptions\x12I\n\x19snapshot_inspect_template\x18\x01 \x01(\x0b\x32&.google.privacy.dlp.v2.InspectTemplate\x12;\n\njob_config\x18\x03 \x01(\x0b\x32\'.google.privacy.dlp.v2.InspectJobConfig\x1a\x7f\n\x06Result\x12\x17\n\x0fprocessed_bytes\x18\x01 \x01(\x03\x12\x1d\n\x15total_estimated_bytes\x18\x02 \x01(\x03\x12=\n\x0finfo_type_stats\x18\x03 \x03(\x0b\x32$.google.privacy.dlp.v2.InfoTypeStats"\x90\x01\n\x13InfoTypeDescription\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12@\n\x0csupported_by\x18\x03 \x03(\x0e\x32*.google.privacy.dlp.v2.InfoTypeSupportedBy\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t"R\n\x14ListInfoTypesRequest\x12\x15\n\rlanguage_code\x18\x01 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x13\n\x0blocation_id\x18\x03 \x01(\t"W\n\x15ListInfoTypesResponse\x12>\n\ninfo_types\x18\x01 \x03(\x0b\x32*.google.privacy.dlp.v2.InfoTypeDescription"\xc1\x01\n\x15RiskAnalysisJobConfig\x12<\n\x0eprivacy_metric\x18\x01 \x01(\x0b\x32$.google.privacy.dlp.v2.PrivacyMetric\x12:\n\x0csource_table\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryTable\x12.\n\x07\x61\x63tions\x18\x03 \x03(\x0b\x32\x1d.google.privacy.dlp.v2.Action"\xbc\x01\n\x07QuasiId\x12\x32\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldIdB\x03\xe0\x41\x02\x12\x34\n\tinfo_type\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoTypeH\x00\x12\x14\n\ncustom_tag\x18\x03 \x01(\tH\x00\x12*\n\x08inferred\x18\x04 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\x05\n\x03tag"\xbe\x02\n\x10StatisticalTable\x12\x38\n\x05table\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryTableB\x03\xe0\x41\x02\x12T\n\tquasi_ids\x18\x01 \x03(\x0b\x32<.google.privacy.dlp.v2.StatisticalTable.QuasiIdentifierFieldB\x03\xe0\x41\x02\x12?\n\x12relative_frequency\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldIdB\x03\xe0\x41\x02\x1aY\n\x14QuasiIdentifierField\x12-\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x12\n\ncustom_tag\x18\x02 \x01(\t"\x93\x0f\n\rPrivacyMetric\x12[\n\x16numerical_stats_config\x18\x01 \x01(\x0b\x32\x39.google.privacy.dlp.v2.PrivacyMetric.NumericalStatsConfigH\x00\x12_\n\x18\x63\x61tegorical_stats_config\x18\x02 \x01(\x0b\x32;.google.privacy.dlp.v2.PrivacyMetric.CategoricalStatsConfigH\x00\x12S\n\x12k_anonymity_config\x18\x03 \x01(\x0b\x32\x35.google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfigH\x00\x12S\n\x12l_diversity_config\x18\x04 \x01(\x0b\x32\x35.google.privacy.dlp.v2.PrivacyMetric.LDiversityConfigH\x00\x12\\\n\x17k_map_estimation_config\x18\x05 \x01(\x0b\x32\x39.google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfigH\x00\x12n\n delta_presence_estimation_config\x18\x06 \x01(\x0b\x32\x42.google.privacy.dlp.v2.PrivacyMetric.DeltaPresenceEstimationConfigH\x00\x1a\x45\n\x14NumericalStatsConfig\x12-\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x1aG\n\x16\x43\x61tegoricalStatsConfig\x12-\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x1ay\n\x10KAnonymityConfig\x12\x31\n\tquasi_ids\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x32\n\tentity_id\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.EntityId\x1a\x82\x01\n\x10LDiversityConfig\x12\x31\n\tquasi_ids\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12;\n\x13sensitive_attribute\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x1a\x81\x06\n\x14KMapEstimationConfig\x12]\n\tquasi_ids\x18\x01 \x03(\x0b\x32\x45.google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedFieldB\x03\xe0\x41\x02\x12\x13\n\x0bregion_code\x18\x02 \x01(\t\x12\x62\n\x10\x61uxiliary_tables\x18\x03 \x03(\x0b\x32H.google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable\x1a\xc0\x01\n\x0bTaggedField\x12\x32\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldIdB\x03\xe0\x41\x02\x12\x34\n\tinfo_type\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoTypeH\x00\x12\x14\n\ncustom_tag\x18\x03 \x01(\tH\x00\x12*\n\x08inferred\x18\x04 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\x05\n\x03tag\x1a\xcd\x02\n\x0e\x41uxiliaryTable\x12\x38\n\x05table\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryTableB\x03\xe0\x41\x02\x12m\n\tquasi_ids\x18\x01 \x03(\x0b\x32U.google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdFieldB\x03\xe0\x41\x02\x12?\n\x12relative_frequency\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldIdB\x03\xe0\x41\x02\x1aQ\n\x0cQuasiIdField\x12-\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x12\n\ncustom_tag\x18\x02 \x01(\t\x1a\xaf\x01\n\x1d\x44\x65ltaPresenceEstimationConfig\x12\x36\n\tquasi_ids\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.QuasiIdB\x03\xe0\x41\x02\x12\x13\n\x0bregion_code\x18\x02 \x01(\t\x12\x41\n\x10\x61uxiliary_tables\x18\x03 \x03(\x0b\x32\'.google.privacy.dlp.v2.StatisticalTableB\x06\n\x04type"\xf2\x1d\n\x1c\x41nalyzeDataSourceRiskDetails\x12\x46\n\x18requested_privacy_metric\x18\x01 \x01(\x0b\x32$.google.privacy.dlp.v2.PrivacyMetric\x12\x44\n\x16requested_source_table\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryTable\x12j\n\x16numerical_stats_result\x18\x03 \x01(\x0b\x32H.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.NumericalStatsResultH\x00\x12n\n\x18\x63\x61tegorical_stats_result\x18\x04 \x01(\x0b\x32J.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResultH\x00\x12\x62\n\x12k_anonymity_result\x18\x05 \x01(\x0b\x32\x44.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResultH\x00\x12\x62\n\x12l_diversity_result\x18\x06 \x01(\x0b\x32\x44.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResultH\x00\x12k\n\x17k_map_estimation_result\x18\x07 \x01(\x0b\x32H.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResultH\x00\x12}\n delta_presence_estimation_result\x18\t \x01(\x0b\x32Q.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResultH\x00\x1a\xaf\x01\n\x14NumericalStatsResult\x12/\n\tmin_value\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12/\n\tmax_value\x18\x02 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x35\n\x0fquantile_values\x18\x04 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x1a\x8d\x03\n\x16\x43\x61tegoricalStatsResult\x12\x95\x01\n!value_frequency_histogram_buckets\x18\x05 \x03(\x0b\x32j.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket\x1a\xda\x01\n\x1f\x43\x61tegoricalStatsHistogramBucket\x12#\n\x1bvalue_frequency_lower_bound\x18\x01 \x01(\x03\x12#\n\x1bvalue_frequency_upper_bound\x18\x02 \x01(\x03\x12\x13\n\x0b\x62ucket_size\x18\x03 \x01(\x03\x12<\n\rbucket_values\x18\x04 \x03(\x0b\x32%.google.privacy.dlp.v2.ValueFrequency\x12\x1a\n\x12\x62ucket_value_count\x18\x05 \x01(\x03\x1a\xb5\x04\n\x10KAnonymityResult\x12\x8b\x01\n#equivalence_class_histogram_buckets\x18\x05 \x03(\x0b\x32^.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket\x1at\n\x1aKAnonymityEquivalenceClass\x12\x36\n\x10quasi_ids_values\x18\x01 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x1e\n\x16\x65quivalence_class_size\x18\x02 \x01(\x03\x1a\x9c\x02\n\x19KAnonymityHistogramBucket\x12*\n"equivalence_class_size_lower_bound\x18\x01 \x01(\x03\x12*\n"equivalence_class_size_upper_bound\x18\x02 \x01(\x03\x12\x13\n\x0b\x62ucket_size\x18\x03 \x01(\x03\x12v\n\rbucket_values\x18\x04 \x03(\x0b\x32_.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass\x12\x1a\n\x12\x62ucket_value_count\x18\x05 \x01(\x03\x1a\xb0\x05\n\x10LDiversityResult\x12\x93\x01\n+sensitive_value_frequency_histogram_buckets\x18\x05 \x03(\x0b\x32^.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket\x1a\xe0\x01\n\x1aLDiversityEquivalenceClass\x12\x36\n\x10quasi_ids_values\x18\x01 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x1e\n\x16\x65quivalence_class_size\x18\x02 \x01(\x03\x12%\n\x1dnum_distinct_sensitive_values\x18\x03 \x01(\x03\x12\x43\n\x14top_sensitive_values\x18\x04 \x03(\x0b\x32%.google.privacy.dlp.v2.ValueFrequency\x1a\xa2\x02\n\x19LDiversityHistogramBucket\x12-\n%sensitive_value_frequency_lower_bound\x18\x01 \x01(\x03\x12-\n%sensitive_value_frequency_upper_bound\x18\x02 \x01(\x03\x12\x13\n\x0b\x62ucket_size\x18\x03 \x01(\x03\x12v\n\rbucket_values\x18\x04 \x03(\x0b\x32_.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass\x12\x1a\n\x12\x62ucket_value_count\x18\x05 \x01(\x03\x1a\x95\x04\n\x14KMapEstimationResult\x12\x8a\x01\n\x1ak_map_estimation_histogram\x18\x01 \x03(\x0b\x32\x66.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket\x1ar\n\x1bKMapEstimationQuasiIdValues\x12\x36\n\x10quasi_ids_values\x18\x01 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x1b\n\x13\x65stimated_anonymity\x18\x02 \x01(\x03\x1a\xfb\x01\n\x1dKMapEstimationHistogramBucket\x12\x15\n\rmin_anonymity\x18\x01 \x01(\x03\x12\x15\n\rmax_anonymity\x18\x02 \x01(\x03\x12\x13\n\x0b\x62ucket_size\x18\x05 \x01(\x03\x12{\n\rbucket_values\x18\x06 \x03(\x0b\x32\x64.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues\x12\x1a\n\x12\x62ucket_value_count\x18\x07 \x01(\x03\x1a\xe4\x04\n\x1d\x44\x65ltaPresenceEstimationResult\x12\xa5\x01\n#delta_presence_estimation_histogram\x18\x01 \x03(\x0b\x32x.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationHistogramBucket\x1a}\n$DeltaPresenceEstimationQuasiIdValues\x12\x36\n\x10quasi_ids_values\x18\x01 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x1d\n\x15\x65stimated_probability\x18\x02 \x01(\x01\x1a\x9b\x02\n&DeltaPresenceEstimationHistogramBucket\x12\x17\n\x0fmin_probability\x18\x01 \x01(\x01\x12\x17\n\x0fmax_probability\x18\x02 \x01(\x01\x12\x13\n\x0b\x62ucket_size\x18\x05 \x01(\x03\x12\x8d\x01\n\rbucket_values\x18\x06 \x03(\x0b\x32v.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails.DeltaPresenceEstimationResult.DeltaPresenceEstimationQuasiIdValues\x12\x1a\n\x12\x62ucket_value_count\x18\x07 \x01(\x03\x42\x08\n\x06result"L\n\x0eValueFrequency\x12+\n\x05value\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\r\n\x05\x63ount\x18\x02 \x01(\x03"\xb3\x02\n\x05Value\x12\x17\n\rinteger_value\x18\x01 \x01(\x03H\x00\x12\x15\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x03 \x01(\tH\x00\x12\x17\n\rboolean_value\x18\x04 \x01(\x08H\x00\x12\x35\n\x0ftimestamp_value\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12,\n\ntime_value\x18\x06 \x01(\x0b\x32\x16.google.type.TimeOfDayH\x00\x12\'\n\ndate_value\x18\x07 \x01(\x0b\x32\x11.google.type.DateH\x00\x12\x33\n\x11\x64\x61y_of_week_value\x18\x08 \x01(\x0e\x32\x16.google.type.DayOfWeekH\x00\x42\x06\n\x04type"Q\n\tQuoteInfo\x12\x34\n\tdate_time\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.DateTimeH\x00\x42\x0e\n\x0cparsed_quote"\xdf\x01\n\x08\x44\x61teTime\x12\x1f\n\x04\x64\x61te\x18\x01 \x01(\x0b\x32\x11.google.type.Date\x12+\n\x0b\x64\x61y_of_week\x18\x02 \x01(\x0e\x32\x16.google.type.DayOfWeek\x12$\n\x04time\x18\x03 \x01(\x0b\x32\x16.google.type.TimeOfDay\x12;\n\ttime_zone\x18\x04 \x01(\x0b\x32(.google.privacy.dlp.v2.DateTime.TimeZone\x1a"\n\x08TimeZone\x12\x16\n\x0eoffset_minutes\x18\x01 \x01(\x05"\xc9\x01\n\x10\x44\x65identifyConfig\x12S\n\x19info_type_transformations\x18\x01 \x01(\x0b\x32..google.privacy.dlp.v2.InfoTypeTransformationsH\x00\x12N\n\x16record_transformations\x18\x02 \x01(\x0b\x32,.google.privacy.dlp.v2.RecordTransformationsH\x00\x42\x10\n\x0etransformation"\xf5\x06\n\x17PrimitiveTransformation\x12\x43\n\x0ereplace_config\x18\x01 \x01(\x0b\x32).google.privacy.dlp.v2.ReplaceValueConfigH\x00\x12<\n\rredact_config\x18\x02 \x01(\x0b\x32#.google.privacy.dlp.v2.RedactConfigH\x00\x12K\n\x15\x63haracter_mask_config\x18\x03 \x01(\x0b\x32*.google.privacy.dlp.v2.CharacterMaskConfigH\x00\x12Y\n\x1d\x63rypto_replace_ffx_fpe_config\x18\x04 \x01(\x0b\x32\x30.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfigH\x00\x12V\n\x1b\x66ixed_size_bucketing_config\x18\x05 \x01(\x0b\x32/.google.privacy.dlp.v2.FixedSizeBucketingConfigH\x00\x12\x42\n\x10\x62ucketing_config\x18\x06 \x01(\x0b\x32&.google.privacy.dlp.v2.BucketingConfigH\x00\x12Y\n\x1dreplace_with_info_type_config\x18\x07 \x01(\x0b\x32\x30.google.privacy.dlp.v2.ReplaceWithInfoTypeConfigH\x00\x12\x41\n\x10time_part_config\x18\x08 \x01(\x0b\x32%.google.privacy.dlp.v2.TimePartConfigH\x00\x12\x45\n\x12\x63rypto_hash_config\x18\t \x01(\x0b\x32\'.google.privacy.dlp.v2.CryptoHashConfigH\x00\x12\x43\n\x11\x64\x61te_shift_config\x18\x0b \x01(\x0b\x32&.google.privacy.dlp.v2.DateShiftConfigH\x00\x12W\n\x1b\x63rypto_deterministic_config\x18\x0c \x01(\x0b\x32\x30.google.privacy.dlp.v2.CryptoDeterministicConfigH\x00\x42\x10\n\x0etransformation"\xdc\x01\n\x0eTimePartConfig\x12G\n\x0fpart_to_extract\x18\x01 \x01(\x0e\x32..google.privacy.dlp.v2.TimePartConfig.TimePart"\x80\x01\n\x08TimePart\x12\x19\n\x15TIME_PART_UNSPECIFIED\x10\x00\x12\x08\n\x04YEAR\x10\x01\x12\t\n\x05MONTH\x10\x02\x12\x10\n\x0c\x44\x41Y_OF_MONTH\x10\x03\x12\x0f\n\x0b\x44\x41Y_OF_WEEK\x10\x04\x12\x10\n\x0cWEEK_OF_YEAR\x10\x05\x12\x0f\n\x0bHOUR_OF_DAY\x10\x06"H\n\x10\x43ryptoHashConfig\x12\x34\n\ncrypto_key\x18\x01 \x01(\x0b\x32 .google.privacy.dlp.v2.CryptoKey"\xc0\x01\n\x19\x43ryptoDeterministicConfig\x12\x34\n\ncrypto_key\x18\x01 \x01(\x0b\x32 .google.privacy.dlp.v2.CryptoKey\x12<\n\x13surrogate_info_type\x18\x02 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12/\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId"E\n\x12ReplaceValueConfig\x12/\n\tnew_value\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value"\x1b\n\x19ReplaceWithInfoTypeConfig"\x0e\n\x0cRedactConfig"\xb6\x02\n\rCharsToIgnore\x12\x1c\n\x12\x63haracters_to_skip\x18\x01 \x01(\tH\x00\x12_\n\x1b\x63ommon_characters_to_ignore\x18\x02 \x01(\x0e\x32\x38.google.privacy.dlp.v2.CharsToIgnore.CommonCharsToIgnoreH\x00"\x97\x01\n\x13\x43ommonCharsToIgnore\x12&\n"COMMON_CHARS_TO_IGNORE_UNSPECIFIED\x10\x00\x12\x0b\n\x07NUMERIC\x10\x01\x12\x14\n\x10\x41LPHA_UPPER_CASE\x10\x02\x12\x14\n\x10\x41LPHA_LOWER_CASE\x10\x03\x12\x0f\n\x0bPUNCTUATION\x10\x04\x12\x0e\n\nWHITESPACE\x10\x05\x42\x0c\n\ncharacters"\xa3\x01\n\x13\x43haracterMaskConfig\x12\x19\n\x11masking_character\x18\x01 \x01(\t\x12\x16\n\x0enumber_to_mask\x18\x02 \x01(\x05\x12\x15\n\rreverse_order\x18\x03 \x01(\x08\x12\x42\n\x14\x63haracters_to_ignore\x18\x04 \x03(\x0b\x32$.google.privacy.dlp.v2.CharsToIgnore"\xa4\x01\n\x18\x46ixedSizeBucketingConfig\x12\x36\n\x0blower_bound\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.ValueB\x03\xe0\x41\x02\x12\x36\n\x0bupper_bound\x18\x02 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.ValueB\x03\xe0\x41\x02\x12\x18\n\x0b\x62ucket_size\x18\x03 \x01(\x01\x42\x03\xe0\x41\x02"\xeb\x01\n\x0f\x42ucketingConfig\x12>\n\x07\x62uckets\x18\x01 \x03(\x0b\x32-.google.privacy.dlp.v2.BucketingConfig.Bucket\x1a\x97\x01\n\x06\x42ucket\x12)\n\x03min\x18\x01 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12)\n\x03max\x18\x02 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x12\x37\n\x11replacement_value\x18\x03 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value"\xf9\x03\n\x19\x43ryptoReplaceFfxFpeConfig\x12\x39\n\ncrypto_key\x18\x01 \x01(\x0b\x32 .google.privacy.dlp.v2.CryptoKeyB\x03\xe0\x41\x02\x12/\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x63\n\x0f\x63ommon_alphabet\x18\x04 \x01(\x0e\x32H.google.privacy.dlp.v2.CryptoReplaceFfxFpeConfig.FfxCommonNativeAlphabetH\x00\x12\x19\n\x0f\x63ustom_alphabet\x18\x05 \x01(\tH\x00\x12\x0f\n\x05radix\x18\x06 \x01(\x05H\x00\x12<\n\x13surrogate_info_type\x18\x08 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType"\x94\x01\n\x17\x46\x66xCommonNativeAlphabet\x12*\n&FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED\x10\x00\x12\x0b\n\x07NUMERIC\x10\x01\x12\x0f\n\x0bHEXADECIMAL\x10\x02\x12\x1c\n\x18UPPER_CASE_ALPHA_NUMERIC\x10\x03\x12\x11\n\rALPHA_NUMERIC\x10\x04\x42\n\n\x08\x61lphabet"\xd8\x01\n\tCryptoKey\x12>\n\ttransient\x18\x01 \x01(\x0b\x32).google.privacy.dlp.v2.TransientCryptoKeyH\x00\x12>\n\tunwrapped\x18\x02 \x01(\x0b\x32).google.privacy.dlp.v2.UnwrappedCryptoKeyH\x00\x12\x41\n\x0bkms_wrapped\x18\x03 \x01(\x0b\x32*.google.privacy.dlp.v2.KmsWrappedCryptoKeyH\x00\x42\x08\n\x06source"\'\n\x12TransientCryptoKey\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02"&\n\x12UnwrappedCryptoKey\x12\x10\n\x03key\x18\x01 \x01(\x0c\x42\x03\xe0\x41\x02"M\n\x13KmsWrappedCryptoKey\x12\x18\n\x0bwrapped_key\x18\x01 \x01(\x0c\x42\x03\xe0\x41\x02\x12\x1c\n\x0f\x63rypto_key_name\x18\x02 \x01(\tB\x03\xe0\x41\x02"\xc2\x01\n\x0f\x44\x61teShiftConfig\x12\x1d\n\x10upper_bound_days\x18\x01 \x01(\x05\x42\x03\xe0\x41\x02\x12\x1d\n\x10lower_bound_days\x18\x02 \x01(\x05\x42\x03\xe0\x41\x02\x12/\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x36\n\ncrypto_key\x18\x04 \x01(\x0b\x32 .google.privacy.dlp.v2.CryptoKeyH\x00\x42\x08\n\x06method"\xa5\x02\n\x17InfoTypeTransformations\x12\x63\n\x0ftransformations\x18\x01 \x03(\x0b\x32\x45.google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformationB\x03\xe0\x41\x02\x1a\xa4\x01\n\x16InfoTypeTransformation\x12\x33\n\ninfo_types\x18\x01 \x03(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12U\n\x18primitive_transformation\x18\x02 \x01(\x0b\x32..google.privacy.dlp.v2.PrimitiveTransformationB\x03\xe0\x41\x02"\xc0\x02\n\x13\x46ieldTransformation\x12\x33\n\x06\x66ields\x18\x01 \x03(\x0b\x32\x1e.google.privacy.dlp.v2.FieldIdB\x03\xe0\x41\x02\x12\x39\n\tcondition\x18\x03 \x01(\x0b\x32&.google.privacy.dlp.v2.RecordCondition\x12R\n\x18primitive_transformation\x18\x04 \x01(\x0b\x32..google.privacy.dlp.v2.PrimitiveTransformationH\x00\x12S\n\x19info_type_transformations\x18\x05 \x01(\x0b\x32..google.privacy.dlp.v2.InfoTypeTransformationsH\x00\x42\x10\n\x0etransformation"\xa9\x01\n\x15RecordTransformations\x12I\n\x15\x66ield_transformations\x18\x01 \x03(\x0b\x32*.google.privacy.dlp.v2.FieldTransformation\x12\x45\n\x13record_suppressions\x18\x02 \x03(\x0b\x32(.google.privacy.dlp.v2.RecordSuppression"N\n\x11RecordSuppression\x12\x39\n\tcondition\x18\x01 \x01(\x0b\x32&.google.privacy.dlp.v2.RecordCondition"\xdc\x04\n\x0fRecordCondition\x12G\n\x0b\x65xpressions\x18\x03 \x01(\x0b\x32\x32.google.privacy.dlp.v2.RecordCondition.Expressions\x1a\xae\x01\n\tCondition\x12\x32\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldIdB\x03\xe0\x41\x02\x12@\n\x08operator\x18\x03 \x01(\x0e\x32).google.privacy.dlp.v2.RelationalOperatorB\x03\xe0\x41\x02\x12+\n\x05value\x18\x04 \x01(\x0b\x32\x1c.google.privacy.dlp.v2.Value\x1aR\n\nConditions\x12\x44\n\nconditions\x18\x01 \x03(\x0b\x32\x30.google.privacy.dlp.v2.RecordCondition.Condition\x1a\xfa\x01\n\x0b\x45xpressions\x12\\\n\x10logical_operator\x18\x01 \x01(\x0e\x32\x42.google.privacy.dlp.v2.RecordCondition.Expressions.LogicalOperator\x12G\n\nconditions\x18\x03 \x01(\x0b\x32\x31.google.privacy.dlp.v2.RecordCondition.ConditionsH\x00"<\n\x0fLogicalOperator\x12 \n\x1cLOGICAL_OPERATOR_UNSPECIFIED\x10\x00\x12\x07\n\x03\x41ND\x10\x01\x42\x06\n\x04type"\x83\x01\n\x16TransformationOverview\x12\x19\n\x11transformed_bytes\x18\x02 \x01(\x03\x12N\n\x18transformation_summaries\x18\x03 \x03(\x0b\x32,.google.privacy.dlp.v2.TransformationSummary"\x9f\x05\n\x15TransformationSummary\x12\x32\n\tinfo_type\x18\x01 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.InfoType\x12-\n\x05\x66ield\x18\x02 \x01(\x0b\x32\x1e.google.privacy.dlp.v2.FieldId\x12\x46\n\x0etransformation\x18\x03 \x01(\x0b\x32..google.privacy.dlp.v2.PrimitiveTransformation\x12I\n\x15\x66ield_transformations\x18\x05 \x03(\x0b\x32*.google.privacy.dlp.v2.FieldTransformation\x12\x41\n\x0frecord_suppress\x18\x06 \x01(\x0b\x32(.google.privacy.dlp.v2.RecordSuppression\x12K\n\x07results\x18\x04 \x03(\x0b\x32:.google.privacy.dlp.v2.TransformationSummary.SummaryResult\x12\x19\n\x11transformed_bytes\x18\x07 \x01(\x03\x1a\x84\x01\n\rSummaryResult\x12\r\n\x05\x63ount\x18\x01 \x01(\x03\x12S\n\x04\x63ode\x18\x02 \x01(\x0e\x32\x45.google.privacy.dlp.v2.TransformationSummary.TransformationResultCode\x12\x0f\n\x07\x64\x65tails\x18\x03 \x01(\t"^\n\x18TransformationResultCode\x12*\n&TRANSFORMATION_RESULT_CODE_UNSPECIFIED\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\t\n\x05\x45RROR\x10\x02"U\n\x08Schedule\x12?\n\x1arecurrence_period_duration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x42\x08\n\x06option"\x9e\x03\n\x0fInspectTemplate\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x03\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x34\n\x0b\x63reate_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x34\n\x0bupdate_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12<\n\x0einspect_config\x18\x06 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig:\xa2\x01\xea\x41\x9e\x01\n"dlp.googleapis.com/InspectTemplate\x12@organizations/{organization}/inspectTemplates/{inspect_template}\x12\x36projects/{project}/inspectTemplates/{inspect_template}"\xb6\x03\n\x12\x44\x65identifyTemplate\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x03\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x34\n\x0b\x63reate_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x34\n\x0bupdate_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x42\n\x11\x64\x65identify_config\x18\x06 \x01(\x0b\x32\'.google.privacy.dlp.v2.DeidentifyConfig:\xb1\x01\xea\x41\xad\x01\n%dlp.googleapis.com/DeidentifyTemplate\x12\x46organizations/{organization}/deidentifyTemplates/{deidentify_template}\x12\n\x0binspect_job\x18\x04 \x01(\x0b\x32\'.google.privacy.dlp.v2.InspectJobConfigH\x00\x12;\n\x08triggers\x18\x05 \x03(\x0b\x32).google.privacy.dlp.v2.JobTrigger.Trigger\x12\x31\n\x06\x65rrors\x18\x06 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.ErrorB\x03\xe0\x41\x03\x12\x34\n\x0b\x63reate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x34\n\x0bupdate_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x36\n\rlast_run_time\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12=\n\x06status\x18\n \x01(\x0e\x32(.google.privacy.dlp.v2.JobTrigger.StatusB\x03\xe0\x41\x02\x1aI\n\x07Trigger\x12\x33\n\x08schedule\x18\x01 \x01(\x0b\x32\x1f.google.privacy.dlp.v2.ScheduleH\x00\x42\t\n\x07trigger"H\n\x06Status\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\x0b\n\x07HEALTHY\x10\x01\x12\n\n\x06PAUSED\x10\x02\x12\r\n\tCANCELLED\x10\x03:P\xea\x41M\n\x1d\x64lp.googleapis.com/JobTrigger\x12,projects/{project}/jobTriggers/{job_trigger}B\x05\n\x03job"\xf4\x05\n\x06\x41\x63tion\x12\x43\n\rsave_findings\x18\x01 \x01(\x0b\x32*.google.privacy.dlp.v2.Action.SaveFindingsH\x00\x12@\n\x07pub_sub\x18\x02 \x01(\x0b\x32-.google.privacy.dlp.v2.Action.PublishToPubSubH\x00\x12U\n\x17publish_summary_to_cscc\x18\x03 \x01(\x0b\x32\x32.google.privacy.dlp.v2.Action.PublishSummaryToCsccH\x00\x12q\n&publish_findings_to_cloud_data_catalog\x18\x05 \x01(\x0b\x32?.google.privacy.dlp.v2.Action.PublishFindingsToCloudDataCatalogH\x00\x12V\n\x17job_notification_emails\x18\x08 \x01(\x0b\x32\x33.google.privacy.dlp.v2.Action.JobNotificationEmailsH\x00\x12T\n\x16publish_to_stackdriver\x18\t \x01(\x0b\x32\x32.google.privacy.dlp.v2.Action.PublishToStackdriverH\x00\x1aQ\n\x0cSaveFindings\x12\x41\n\routput_config\x18\x01 \x01(\x0b\x32*.google.privacy.dlp.v2.OutputStorageConfig\x1a \n\x0fPublishToPubSub\x12\r\n\x05topic\x18\x01 \x01(\t\x1a\x16\n\x14PublishSummaryToCscc\x1a#\n!PublishFindingsToCloudDataCatalog\x1a\x17\n\x15JobNotificationEmails\x1a\x16\n\x14PublishToStackdriverB\x08\n\x06\x61\x63tion"\xcb\x01\n\x1c\x43reateInspectTemplateRequest\x12:\n\x06parent\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\x12"dlp.googleapis.com/InspectTemplate\x12\x45\n\x10inspect_template\x18\x02 \x01(\x0b\x32&.google.privacy.dlp.v2.InspectTemplateB\x03\xe0\x41\x02\x12\x13\n\x0btemplate_id\x18\x03 \x01(\t\x12\x13\n\x0blocation_id\x18\x04 \x01(\t"\xcb\x01\n\x1cUpdateInspectTemplateRequest\x12\x38\n\x04name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n"dlp.googleapis.com/InspectTemplate\x12@\n\x10inspect_template\x18\x02 \x01(\x0b\x32&.google.privacy.dlp.v2.InspectTemplate\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"U\n\x19GetInspectTemplateRequest\x12\x38\n\x04name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n"dlp.googleapis.com/InspectTemplate"\xa7\x01\n\x1bListInspectTemplatesRequest\x12:\n\x06parent\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\x12"dlp.googleapis.com/InspectTemplate\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x10\n\x08order_by\x18\x04 \x01(\t\x12\x13\n\x0blocation_id\x18\x05 \x01(\t"z\n\x1cListInspectTemplatesResponse\x12\x41\n\x11inspect_templates\x18\x01 \x03(\x0b\x32&.google.privacy.dlp.v2.InspectTemplate\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"X\n\x1c\x44\x65leteInspectTemplateRequest\x12\x38\n\x04name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n"dlp.googleapis.com/InspectTemplate"\xc4\x01\n\x17\x43reateJobTriggerRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12;\n\x0bjob_trigger\x18\x02 \x01(\x0b\x32!.google.privacy.dlp.v2.JobTriggerB\x03\xe0\x41\x02\x12\x12\n\ntrigger_id\x18\x03 \x01(\t\x12\x13\n\x0blocation_id\x18\x04 \x01(\t"P\n\x19\x41\x63tivateJobTriggerRequest\x12\x33\n\x04name\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1d\x64lp.googleapis.com/JobTrigger"\xb7\x01\n\x17UpdateJobTriggerRequest\x12\x33\n\x04name\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1d\x64lp.googleapis.com/JobTrigger\x12\x36\n\x0bjob_trigger\x18\x02 \x01(\x0b\x32!.google.privacy.dlp.v2.JobTrigger\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"K\n\x14GetJobTriggerRequest\x12\x33\n\x04name\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1d\x64lp.googleapis.com/JobTrigger"\x88\x02\n\x13\x43reateDlpJobRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12>\n\x0binspect_job\x18\x02 \x01(\x0b\x32\'.google.privacy.dlp.v2.InspectJobConfigH\x00\x12@\n\x08risk_job\x18\x03 \x01(\x0b\x32,.google.privacy.dlp.v2.RiskAnalysisJobConfigH\x00\x12\x0e\n\x06job_id\x18\x04 \x01(\t\x12\x13\n\x0blocation_id\x18\x05 \x01(\tB\x05\n\x03job"\xbb\x01\n\x16ListJobTriggersRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x10\n\x08order_by\x18\x04 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x05 \x01(\t\x12\x13\n\x0blocation_id\x18\x07 \x01(\t"k\n\x17ListJobTriggersResponse\x12\x37\n\x0cjob_triggers\x18\x01 \x03(\x0b\x32!.google.privacy.dlp.v2.JobTrigger\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"N\n\x17\x44\x65leteJobTriggerRequest\x12\x33\n\x04name\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1d\x64lp.googleapis.com/JobTrigger"\xdd\x01\n\x10InspectJobConfig\x12<\n\x0estorage_config\x18\x01 \x01(\x0b\x32$.google.privacy.dlp.v2.StorageConfig\x12<\n\x0einspect_config\x18\x02 \x01(\x0b\x32$.google.privacy.dlp.v2.InspectConfig\x12\x1d\n\x15inspect_template_name\x18\x03 \x01(\t\x12.\n\x07\x61\x63tions\x18\x04 \x03(\x0b\x32\x1d.google.privacy.dlp.v2.Action"\xa4\x05\n\x06\x44lpJob\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\x04type\x18\x02 \x01(\x0e\x32!.google.privacy.dlp.v2.DlpJobType\x12\x35\n\x05state\x18\x03 \x01(\x0e\x32&.google.privacy.dlp.v2.DlpJob.JobState\x12K\n\x0crisk_details\x18\x04 \x01(\x0b\x32\x33.google.privacy.dlp.v2.AnalyzeDataSourceRiskDetailsH\x00\x12J\n\x0finspect_details\x18\x05 \x01(\x0b\x32/.google.privacy.dlp.v2.InspectDataSourceDetailsH\x00\x12/\n\x0b\x63reate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nstart_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x18\n\x10job_trigger_name\x18\n \x01(\t\x12,\n\x06\x65rrors\x18\x0b \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Error"c\n\x08JobState\x12\x19\n\x15JOB_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\x12\x08\n\x04\x44ONE\x10\x03\x12\x0c\n\x08\x43\x41NCELED\x10\x04\x12\n\n\x06\x46\x41ILED\x10\x05:D\xea\x41\x41\n\x19\x64lp.googleapis.com/DlpJob\x12$projects/{project}/dlpJobs/{dlp_job}B\t\n\x07\x64\x65tails"C\n\x10GetDlpJobRequest\x12/\n\x04name\x18\x01 \x01(\tB!\xe0\x41\x02\xfa\x41\x1b\n\x19\x64lp.googleapis.com/DlpJob"\xe8\x01\n\x12ListDlpJobsRequest\x12\x43\n\x06parent\x18\x04 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x0e\n\x06\x66ilter\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\x12/\n\x04type\x18\x05 \x01(\x0e\x32!.google.privacy.dlp.v2.DlpJobType\x12\x10\n\x08order_by\x18\x06 \x01(\t\x12\x13\n\x0blocation_id\x18\x07 \x01(\t"[\n\x13ListDlpJobsResponse\x12+\n\x04jobs\x18\x01 \x03(\x0b\x32\x1d.google.privacy.dlp.v2.DlpJob\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"F\n\x13\x43\x61ncelDlpJobRequest\x12/\n\x04name\x18\x01 \x01(\tB!\xe0\x41\x02\xfa\x41\x1b\n\x19\x64lp.googleapis.com/DlpJob"F\n\x13\x44\x65leteDlpJobRequest\x12/\n\x04name\x18\x01 \x01(\tB!\xe0\x41\x02\xfa\x41\x1b\n\x19\x64lp.googleapis.com/DlpJob"\xd7\x01\n\x1f\x43reateDeidentifyTemplateRequest\x12=\n\x06parent\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\x12%dlp.googleapis.com/DeidentifyTemplate\x12K\n\x13\x64\x65identify_template\x18\x02 \x01(\x0b\x32).google.privacy.dlp.v2.DeidentifyTemplateB\x03\xe0\x41\x02\x12\x13\n\x0btemplate_id\x18\x03 \x01(\t\x12\x13\n\x0blocation_id\x18\x04 \x01(\t"\xd7\x01\n\x1fUpdateDeidentifyTemplateRequest\x12;\n\x04name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%dlp.googleapis.com/DeidentifyTemplate\x12\x46\n\x13\x64\x65identify_template\x18\x02 \x01(\x0b\x32).google.privacy.dlp.v2.DeidentifyTemplate\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"[\n\x1cGetDeidentifyTemplateRequest\x12;\n\x04name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%dlp.googleapis.com/DeidentifyTemplate"\xad\x01\n\x1eListDeidentifyTemplatesRequest\x12=\n\x06parent\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\x12%dlp.googleapis.com/DeidentifyTemplate\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x10\n\x08order_by\x18\x04 \x01(\t\x12\x13\n\x0blocation_id\x18\x05 \x01(\t"\x83\x01\n\x1fListDeidentifyTemplatesResponse\x12G\n\x14\x64\x65identify_templates\x18\x01 \x03(\x0b\x32).google.privacy.dlp.v2.DeidentifyTemplate\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"^\n\x1f\x44\x65leteDeidentifyTemplateRequest\x12;\n\x04name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%dlp.googleapis.com/DeidentifyTemplate"\xf4\x01\n\x1bLargeCustomDictionaryConfig\x12<\n\x0boutput_path\x18\x01 \x01(\x0b\x32\'.google.privacy.dlp.v2.CloudStoragePath\x12L\n\x16\x63loud_storage_file_set\x18\x02 \x01(\x0b\x32*.google.privacy.dlp.v2.CloudStorageFileSetH\x00\x12?\n\x0f\x62ig_query_field\x18\x03 \x01(\x0b\x32$.google.privacy.dlp.v2.BigQueryFieldH\x00\x42\x08\n\x06source"8\n\x1aLargeCustomDictionaryStats\x12\x1a\n\x12\x61pprox_num_phrases\x18\x01 \x01(\x03"\xa0\x01\n\x14StoredInfoTypeConfig\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12U\n\x17large_custom_dictionary\x18\x03 \x01(\x0b\x32\x32.google.privacy.dlp.v2.LargeCustomDictionaryConfigH\x00\x42\x06\n\x04type"s\n\x13StoredInfoTypeStats\x12T\n\x17large_custom_dictionary\x18\x01 \x01(\x0b\x32\x31.google.privacy.dlp.v2.LargeCustomDictionaryStatsH\x00\x42\x06\n\x04type"\xa9\x02\n\x15StoredInfoTypeVersion\x12;\n\x06\x63onfig\x18\x01 \x01(\x0b\x32+.google.privacy.dlp.v2.StoredInfoTypeConfig\x12/\n\x0b\x63reate_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x39\n\x05state\x18\x03 \x01(\x0e\x32*.google.privacy.dlp.v2.StoredInfoTypeState\x12,\n\x06\x65rrors\x18\x04 \x03(\x0b\x32\x1c.google.privacy.dlp.v2.Error\x12\x39\n\x05stats\x18\x05 \x01(\x0b\x32*.google.privacy.dlp.v2.StoredInfoTypeStats"\xcf\x02\n\x0eStoredInfoType\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x45\n\x0f\x63urrent_version\x18\x02 \x01(\x0b\x32,.google.privacy.dlp.v2.StoredInfoTypeVersion\x12\x46\n\x10pending_versions\x18\x03 \x03(\x0b\x32,.google.privacy.dlp.v2.StoredInfoTypeVersion:\x9f\x01\xea\x41\x9b\x01\n!dlp.googleapis.com/StoredInfoType\x12?organizations/{organization}/storedInfoTypes/{stored_info_type}\x12\x35projects/{project}/storedInfoTypes/{stored_info_type}"\xcc\x01\n\x1b\x43reateStoredInfoTypeRequest\x12\x39\n\x06parent\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\x12!dlp.googleapis.com/StoredInfoType\x12@\n\x06\x63onfig\x18\x02 \x01(\x0b\x32+.google.privacy.dlp.v2.StoredInfoTypeConfigB\x03\xe0\x41\x02\x12\x1b\n\x13stored_info_type_id\x18\x03 \x01(\t\x12\x13\n\x0blocation_id\x18\x04 \x01(\t"\xc4\x01\n\x1bUpdateStoredInfoTypeRequest\x12\x37\n\x04name\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\n!dlp.googleapis.com/StoredInfoType\x12;\n\x06\x63onfig\x18\x02 \x01(\x0b\x32+.google.privacy.dlp.v2.StoredInfoTypeConfig\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"S\n\x18GetStoredInfoTypeRequest\x12\x37\n\x04name\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\n!dlp.googleapis.com/StoredInfoType"\xa5\x01\n\x1aListStoredInfoTypesRequest\x12\x39\n\x06parent\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\x12!dlp.googleapis.com/StoredInfoType\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05\x12\x10\n\x08order_by\x18\x04 \x01(\t\x12\x13\n\x0blocation_id\x18\x05 \x01(\t"x\n\x1bListStoredInfoTypesResponse\x12@\n\x11stored_info_types\x18\x01 \x03(\x0b\x32%.google.privacy.dlp.v2.StoredInfoType\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"V\n\x1b\x44\x65leteStoredInfoTypeRequest\x12\x37\n\x04name\x18\x01 \x01(\tB)\xe0\x41\x02\xfa\x41#\n!dlp.googleapis.com/StoredInfoType*\xbb\x01\n\x12RelationalOperator\x12#\n\x1fRELATIONAL_OPERATOR_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x45QUAL_TO\x10\x01\x12\x10\n\x0cNOT_EQUAL_TO\x10\x02\x12\x10\n\x0cGREATER_THAN\x10\x03\x12\r\n\tLESS_THAN\x10\x04\x12\x1a\n\x16GREATER_THAN_OR_EQUALS\x10\x05\x12\x17\n\x13LESS_THAN_OR_EQUALS\x10\x06\x12\n\n\x06\x45XISTS\x10\x07*\x8d\x01\n\x0cMatchingType\x12\x1d\n\x19MATCHING_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n\x18MATCHING_TYPE_FULL_MATCH\x10\x01\x12\x1f\n\x1bMATCHING_TYPE_PARTIAL_MATCH\x10\x02\x12\x1f\n\x1bMATCHING_TYPE_INVERSE_MATCH\x10\x03*M\n\rContentOption\x12\x17\n\x13\x43ONTENT_UNSPECIFIED\x10\x00\x12\x10\n\x0c\x43ONTENT_TEXT\x10\x01\x12\x11\n\rCONTENT_IMAGE\x10\x02*P\n\x13InfoTypeSupportedBy\x12\x19\n\x15\x45NUM_TYPE_UNSPECIFIED\x10\x00\x12\x0b\n\x07INSPECT\x10\x01\x12\x11\n\rRISK_ANALYSIS\x10\x02*R\n\nDlpJobType\x12\x1c\n\x18\x44LP_JOB_TYPE_UNSPECIFIED\x10\x00\x12\x0f\n\x0bINSPECT_JOB\x10\x01\x12\x15\n\x11RISK_ANALYSIS_JOB\x10\x02*n\n\x13StoredInfoTypeState\x12&\n"STORED_INFO_TYPE_STATE_UNSPECIFIED\x10\x00\x12\x0b\n\x07PENDING\x10\x01\x12\t\n\x05READY\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\x12\x0b\n\x07INVALID\x10\x04\x32\xdbH\n\nDlpService\x12\xe7\x01\n\x0eInspectContent\x12,.google.privacy.dlp.v2.InspectContentRequest\x1a-.google.privacy.dlp.v2.InspectContentResponse"x\x82\xd3\xe4\x93\x02r"\'/v2/{parent=projects/*}/content:inspect:\x01*ZD"?/v2/{parent=projects/*}/locations/{location_id}/content:inspect:\x01*\x12\xd8\x01\n\x0bRedactImage\x12).google.privacy.dlp.v2.RedactImageRequest\x1a*.google.privacy.dlp.v2.RedactImageResponse"r\x82\xd3\xe4\x93\x02l"$/v2/{parent=projects/*}/image:redact:\x01*ZA"29/v2/{name=organizations/*/locations/*/inspectTemplates/*}:\x01*Z-2(/v2/{name=projects/*/inspectTemplates/*}:\x01*Z924/v2/{name=projects/*/locations/*/inspectTemplates/*}:\x01*\xda\x41!name,inspect_template,update_mask\x12\xcf\x02\n\x12GetInspectTemplate\x12\x30.google.privacy.dlp.v2.GetInspectTemplateRequest\x1a&.google.privacy.dlp.v2.InspectTemplate"\xde\x01\x82\xd3\xe4\x93\x02\xd0\x01\x12-/v2/{name=organizations/*/inspectTemplates/*}Z;\x12\x39/v2/{name=organizations/*/locations/*/inspectTemplates/*}Z*\x12(/v2/{name=projects/*/inspectTemplates/*}Z6\x12\x34/v2/{name=projects/*/locations/*/inspectTemplates/*}\xda\x41\x04name\x12\xfa\x02\n\x14ListInspectTemplates\x12\x32.google.privacy.dlp.v2.ListInspectTemplatesRequest\x1a\x33.google.privacy.dlp.v2.ListInspectTemplatesResponse"\xf8\x01\x82\xd3\xe4\x93\x02\xe8\x01\x12-/v2/{parent=organizations/*}/inspectTemplatesZG\x12\x45/v2/{parent=organizations/*}/locations/{location_id}/inspectTemplatesZ*\x12(/v2/{parent=projects/*}/inspectTemplatesZB\x12@/v2/{parent=projects/*}/locations/{location_id}/inspectTemplates\xda\x41\x06parent\x12\xc5\x02\n\x15\x44\x65leteInspectTemplate\x12\x33.google.privacy.dlp.v2.DeleteInspectTemplateRequest\x1a\x16.google.protobuf.Empty"\xde\x01\x82\xd3\xe4\x93\x02\xd0\x01*-/v2/{name=organizations/*/inspectTemplates/*}Z;*9/v2/{name=organizations/*/locations/*/inspectTemplates/*}Z**(/v2/{name=projects/*/inspectTemplates/*}Z6*4/v2/{name=projects/*/locations/*/inspectTemplates/*}\xda\x41\x04name\x12\xcd\x03\n\x18\x43reateDeidentifyTemplate\x12\x36.google.privacy.dlp.v2.CreateDeidentifyTemplateRequest\x1a).google.privacy.dlp.v2.DeidentifyTemplate"\xcd\x02\x82\xd3\xe4\x93\x02\x80\x02"0/v2/{parent=organizations/*}/deidentifyTemplates:\x01*ZM"H/v2/{parent=organizations/*}/locations/{location_id}/deidentifyTemplates:\x01*Z0"+/v2/{parent=projects/*}/deidentifyTemplates:\x01*ZH"C/v2/{parent=projects/*}/locations/{location_id}/deidentifyTemplates:\x01*\xda\x41\x1aparent,deidentify_template\xda\x41&parent,deidentify_template,location_id\x12\x96\x03\n\x18UpdateDeidentifyTemplate\x12\x36.google.privacy.dlp.v2.UpdateDeidentifyTemplateRequest\x1a).google.privacy.dlp.v2.DeidentifyTemplate"\x96\x02\x82\xd3\xe4\x93\x02\xe8\x01\x32\x30/v2/{name=organizations/*/deidentifyTemplates/*}:\x01*ZA2\x12*:.`` - - Cloud Storage files: ``gs:///`` - Datastore - namespace: Nested names could be absent if the embedded - object has no string identifier (for an example an image - contained within a document). + BigQuery tables: ``{project_id}:{dataset_id}.{table_id}`` - + Cloud Storage files: ``gs://{bucket}/{path}`` - Datastore + namespace: {namespace} Nested names could be absent if the + embedded object has no string identifier (for an example an + image contained within a document). location: Type of the container within the file with location of the finding. @@ -14386,15 +14408,15 @@ item: The item to de-identify. Will be treated as text. inspect_template_name: - Optional template to use. Any configuration directly specified - in inspect\_config will override those set in the template. + Template to use. Any configuration directly specified in + inspect\_config will override those set in the template. Singular fields that are set in this request will replace their corresponding fields in the template. Repeated fields are appended. Singular sub-messages and groups are recursively merged. deidentify_template_name: - Optional template to use. Any configuration directly specified - in deidentify\_config will override those set in the template. + Template to use. Any configuration directly specified in + deidentify\_config will override those set in the template. Singular fields that are set in this request will replace their corresponding fields in the template. Repeated fields are appended. Singular sub-messages and groups are recursively @@ -14455,14 +14477,14 @@ item: The item to re-identify. Will be treated as text. inspect_template_name: - Optional template to use. Any configuration directly specified - in ``inspect_config`` will override those set in the template. + Template to use. Any configuration directly specified in + ``inspect_config`` will override those set in the template. Singular fields that are set in this request will replace their corresponding fields in the template. Repeated fields are appended. Singular sub-messages and groups are recursively merged. reidentify_template_name: - Optional template to use. References an instance of + Template to use. References an instance of ``DeidentifyTemplate``. Any configuration directly specified in ``reidentify_config`` or ``inspect_config`` will override those set in the template. Singular fields that are set in @@ -14517,8 +14539,8 @@ item: The item to inspect. inspect_template_name: - Optional template to use. Any configuration directly specified - in inspect\_config will override those set in the template. + Template to use. Any configuration directly specified in + inspect\_config will override those set in the template. Singular fields that are set in this request will replace their corresponding fields in the template. Repeated fields are appended. Singular sub-messages and groups are recursively @@ -14560,6 +14582,8 @@ Attributes: + type: + Output storage types. table: Store findings in an existing table or a new table in an existing dataset. If table\_id is not set a new one will be @@ -14620,11 +14644,15 @@ dict( DESCRIPTOR=_INSPECTDATASOURCEDETAILS_REQUESTEDOPTIONS, __module__="google.cloud.dlp_v2.proto.dlp_pb2", - __doc=""" + __doc__="""Snapshot of the inspection configuration. + + Attributes: snapshot_inspect_template: \ If run with an InspectTemplate, a snapshot of its state at the \ time of this run. + job_config: + Inspect config. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.InspectDataSourceDetails.RequestedOptions) ), @@ -14705,12 +14733,12 @@ Attributes: language_code: - Optional BCP-47 language code for localized infoType friendly - names. If omitted, or if localized strings are not available, - en-US strings will be returned. + BCP-47 language code for localized infoType friendly names. If + omitted, or if localized strings are not available, en-US + strings will be returned. filter: - Optional filter to only return infoTypes supported by certain - parts of the API. Defaults to supported\_by=INSPECT. + filter to only return infoTypes supported by certain parts of + the API. Defaults to supported\_by=INSPECT. location_id: The geographic location to list info types. Reserved for future extensions. @@ -14773,7 +14801,7 @@ Attributes: field: - Identifies the column. [required] + Required. Identifies the column. tag: Semantic tag that identifies what a column contains, to determine which statistical model to use to estimate the @@ -14811,6 +14839,16 @@ __module__="google.cloud.dlp_v2.proto.dlp_pb2", __doc__="""A quasi-identifier column has a custom\_tag, used to know which column in the data corresponds to which column in the statistical model. + + + Attributes: + field: + Identifies the column. + custom_tag: + A column can be tagged with a custom tag. In this case, the + user must indicate an auxiliary table that contains + statistical information on the possible values of this column + (below). """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.StatisticalTable.QuasiIdentifierField) ), @@ -14828,13 +14866,13 @@ Attributes: table: - Auxiliary table location. [required] + Required. Auxiliary table location. quasi_ids: - Quasi-identifier columns. [required] + Required. Quasi-identifier columns. relative_frequency: - The relative frequency column must contain a floating-point - number between 0 and 1 (inclusive). Null values are assumed to - be zero. [required] + Required. The relative frequency column must contain a + floating-point number between 0 and 1 (inclusive). Null values + are assumed to be zero. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.StatisticalTable) ), @@ -14901,16 +14939,16 @@ however, nested fields are supported so long as they are not structs themselves or nested within a repeated field. entity_id: - Optional message indicating that multiple rows might be - associated to a single individual. If the same entity\_id is - associated to multiple quasi-identifier tuples over distinct - rows, we consider the entire collection of tuples as the - composite quasi-identifier. This collection is a multiset: the - order in which the different tuples appear in the dataset is - ignored, but their frequency is taken into account. Important - note: a maximum of 1000 rows can be associated to a single - entity ID. If more rows are associated with the same entity - ID, some might be ignored. + Message indicating that multiple rows might be associated to a + single individual. If the same entity\_id is associated to + multiple quasi-identifier tuples over distinct rows, we + consider the entire collection of tuples as the composite + quasi-identifier. This collection is a multiset: the order in + which the different tuples appear in the dataset is ignored, + but their frequency is taken into account. Important note: a + maximum of 1000 rows can be associated to a single entity ID. + If more rows are associated with the same entity ID, some + might be ignored. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.PrivacyMetric.KAnonymityConfig) ), @@ -14946,28 +14984,30 @@ dict( DESCRIPTOR=_PRIVACYMETRIC_KMAPESTIMATIONCONFIG_TAGGEDFIELD, __module__="google.cloud.dlp_v2.proto.dlp_pb2", - __doc=""" - Attributes: - field: \ - Identifies the column. [required] - tag: \ - Semantic tag that identifies what a column contains, to \ - determine which statistical model to use to estimate the \ - reidentifiability of each value. [required] \ - info_type: \ - A column can be tagged with a InfoType to use the relevant \ - public dataset as a statistical model of population, if \ - available. We currently support US ZIP codes, region codes, \ - ages and genders. To programmatically obtain the list of \ - supported InfoTypes, use ListInfoTypes with the \ + __doc__="""A column with a semantic tag attached. + + + Attributes: + field: + Required. Identifies the column. + tag: + Semantic tag that identifies what a column contains, to + determine which statistical model to use to estimate the + reidentifiability of each value. [required] + info_type: + A column can be tagged with a InfoType to use the relevant + public dataset as a statistical model of population, if + available. We currently support US ZIP codes, region codes, + ages and genders. To programmatically obtain the list of + supported InfoTypes, use ListInfoTypes with the supported\_by=RISK\_ANALYSIS filter. - custom_tag: \ - A column can be tagged with a custom tag. In this case, the \ - user must indicate an auxiliary table that contains \ - statistical information on the possible values of this column \ + custom_tag: + A column can be tagged with a custom tag. In this case, the + user must indicate an auxiliary table that contains + statistical information on the possible values of this column (below). - inferred: \ - If no semantic tag is indicated, we infer the statistical \ + inferred: + If no semantic tag is indicated, we infer the statistical model from the distribution of values in the input data """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.TaggedField) @@ -14985,6 +15025,13 @@ __module__="google.cloud.dlp_v2.proto.dlp_pb2", __doc__="""A quasi-identifier column has a custom\_tag, used to know which column in the data corresponds to which column in the statistical model. + + + Attributes: + field: + Identifies the column. + custom_tag: + A auxiliary field. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdField) ), @@ -15002,13 +15049,13 @@ Attributes: table: - Auxiliary table location. [required] + Required. Auxiliary table location. quasi_ids: - Quasi-identifier columns. [required] + Required. Quasi-identifier columns. relative_frequency: - The relative frequency column must contain a floating-point - number between 0 and 1 (inclusive). Null values are assumed to - be zero. [required] + Required. The relative frequency column must contain a + floating-point number between 0 and 1 (inclusive). Null values + are assumed to be zero. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable) ), @@ -15021,17 +15068,17 @@ can be done using publicly available data (like the US Census), or using a custom statistical model (indicated as one or several BigQuery tables), or by extrapolating from the distribution of values in the - input dataset. A column with a semantic tag attached. + input dataset. Attributes: quasi_ids: - Fields considered to be quasi-identifiers. No two columns can - have the same tag. [required] + Required. Fields considered to be quasi-identifiers. No two + columns can have the same tag. region_code: ISO 3166-1 alpha-2 region code to use in the statistical - modeling. Required if no column is tagged with a region- - specific InfoType (like US\_ZIP\_5) or a region code. + modeling. Set if no column is tagged with a region-specific + InfoType (like US\_ZIP\_5) or a region code. auxiliary_tables: Several auxiliary tables can be used in the analysis. Each custom\_tag used to tag a quasi-identifiers column must appear @@ -15055,12 +15102,12 @@ Attributes: quasi_ids: - Fields considered to be quasi-identifiers. No two fields can - have the same tag. [required] + Required. Fields considered to be quasi-identifiers. No two + fields can have the same tag. region_code: ISO 3166-1 alpha-2 region code to use in the statistical - modeling. Required if no column is tagged with a region- - specific InfoType (like US\_ZIP\_5) or a region code. + modeling. Set if no column is tagged with a region-specific + InfoType (like US\_ZIP\_5) or a region code. auxiliary_tables: Several auxiliary tables can be used in the analysis. Each custom\_tag used to tag a quasi-identifiers field must appear @@ -15072,6 +15119,23 @@ DESCRIPTOR=_PRIVACYMETRIC, __module__="google.cloud.dlp_v2.proto.dlp_pb2", __doc__="""Privacy metric to compute for reidentification risk analysis. + + + Attributes: + type: + Types of analysis. + numerical_stats_config: + Numerical stats + categorical_stats_config: + Categorical stats + k_anonymity_config: + K-anonymity + l_diversity_config: + l-diversity + k_map_estimation_config: + k-map + delta_presence_estimation_config: + delta-presence """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.PrivacyMetric) ), @@ -15122,8 +15186,10 @@ dict( DESCRIPTOR=_ANALYZEDATASOURCERISKDETAILS_CATEGORICALSTATSRESULT_CATEGORICALSTATSHISTOGRAMBUCKET, __module__="google.cloud.dlp_v2.proto.dlp_pb2", - __doc=""" - Attributes: + __doc__="""Histogram of value frequencies in the column. + + + Attributes: value_frequency_lower_bound: Lower bound on the value frequency of the values in this bucket. value_frequency_upper_bound: Upper bound on the value frequency of the values in this bucket. bucket_size: Total number of values in this bucket. @@ -15176,8 +15242,10 @@ dict( DESCRIPTOR=_ANALYZEDATASOURCERISKDETAILS_KANONYMITYRESULT_KANONYMITYHISTOGRAMBUCKET, __module__="google.cloud.dlp_v2.proto.dlp_pb2", - __doc=""" - Attributes: + __doc__="""Histogram of k-anonymity equivalence classes. + + + Attributes: equivalence_class_size_lower_bound: \ Lower bound on the size of the equivalence classes in this \ bucket. @@ -15240,8 +15308,10 @@ dict( DESCRIPTOR=_ANALYZEDATASOURCERISKDETAILS_LDIVERSITYRESULT_LDIVERSITYHISTOGRAMBUCKET, __module__="google.cloud.dlp_v2.proto.dlp_pb2", - __doc=""" - Attributes: + __doc__="""Histogram of l-diversity equivalence class sensitive value frequencies. + + + Attributes: sensitive_value_frequency_lower_bound: \ Lower bound on the sensitive value frequencies of the \ equivalence classes in this bucket. @@ -15438,6 +15508,18 @@ Input dataset to compute metrics over. result: Values associated with this metric. + numerical_stats_result: + Numerical stats result + categorical_stats_result: + Categorical stats result + k_anonymity_result: + K-anonymity result + l_diversity_result: + L-divesity result + k_map_estimation_result: + K-map result + delta_presence_estimation_result: + Delta-presence result """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.AnalyzeDataSourceRiskDetails) ), @@ -15509,6 +15591,27 @@ string. For example, if 'integer\_value' is set to 123456789, the number of bytes would be counted as 9, even though an int64 only holds up to 8 bytes of data. + + + Attributes: + type: + Value types + integer_value: + integer + float_value: + float + string_value: + string + boolean_value: + boolean + timestamp_value: + timestamp + time_value: + time of day + date_value: + date + day_of_week_value: + day of week """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.Value) ), @@ -15545,7 +15648,9 @@ dict( DESCRIPTOR=_DATETIME_TIMEZONE, __module__="google.cloud.dlp_v2.proto.dlp_pb2", - __doc=""" + __doc__="""Time zone of the date time object. + + Attributes: offset_minutes: \ Set only if the offset can be determined. Positive for time \ @@ -15561,8 +15666,14 @@ Attributes: date: - One or more of the following must be set. All fields are - optional, but when set must be valid date or time values. + One or more of the following must be set. Must be a valid date + or time value. + day_of_week: + Day of week + time: + Time of day + time_zone: + Time zone """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.DateTime) ), @@ -15600,6 +15711,31 @@ DESCRIPTOR=_PRIMITIVETRANSFORMATION, __module__="google.cloud.dlp_v2.proto.dlp_pb2", __doc__="""A rule for transforming a value. + + + Attributes: + replace_config: + Replace + redact_config: + Redact + character_mask_config: + Mask + crypto_replace_ffx_fpe_config: + Ffx-Fpe + fixed_size_bucketing_config: + Fixed size bucketing + bucketing_config: + Bucketing + replace_with_info_type_config: + Replace with infotype + time_part_config: + Time extraction + crypto_hash_config: + Crypto + date_shift_config: + Date Shift + crypto_deterministic_config: + Deterministic Crypto """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.PrimitiveTransformation) ), @@ -15614,6 +15750,11 @@ __module__="google.cloud.dlp_v2.proto.dlp_pb2", __doc__="""For use with ``Date``, ``Timestamp``, and ``TimeOfDay``, extract or preserve a portion of the value. + + + Attributes: + part_to_extract: + The part of the time to keep. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.TimePartConfig) ), @@ -15663,15 +15804,16 @@ annotation will be applied to the surrogate by prefixing it with the name of the custom info type followed by the number of characters comprising the surrogate. The following scheme - defines the format: (): For example, if the name of custom - info type is 'MY\_TOKEN\_INFO\_TYPE' and the surrogate is - 'abc', the full replacement value will be: + 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 optional to use. Surrogates are used to denote + 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 @@ -15687,21 +15829,20 @@ ASCII keyboard, the symbol with the hex code point 29DD might be used like so: ⧝MY\_TOKEN\_TYPE. context: - Optional. A context may be used for higher security and - maintaining referential integrity such that the same - identifier in two different contexts will be given a distinct - surrogate. The context is appended to plaintext value being - encrypted. On decryption the provided context is validated - against the value used during encryption. If a context was - provided during encryption, same context must be provided - during decryption as well. If the context is not set, - plaintext would be used as is for encryption. If the context - is set but: 1. there is no record present when transforming a - given value or 2. the field is not present when transforming a - given value, plaintext would be used as is for encryption. - Note that case (1) is expected when an - ``InfoTypeTransformation`` is applied to both structured and - non-structured ``ContentItem``\ s. + A context may be used for higher security and maintaining + referential integrity such that the same identifier in two + different contexts will be given a distinct surrogate. The + context is appended to plaintext value being encrypted. On + decryption the provided context is validated against the value + used during encryption. If a context was provided during + encryption, same context must be provided during decryption as + well. If the context is not set, plaintext would be used as + is for encryption. If the context is set but: 1. there is no + record present when transforming a given value or 2. the field + is not present when transforming a given value, plaintext + would be used as is for encryption. Note that case (1) is + expected when an ``InfoTypeTransformation`` is applied to both + structured and non-structured ``ContentItem``\ s. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.CryptoDeterministicConfig) ), @@ -15763,6 +15904,14 @@ __module__="google.cloud.dlp_v2.proto.dlp_pb2", __doc__="""Characters to skip when doing deidentification of a value. These will be left alone and skipped. + + + Attributes: + characters_to_skip: + Characters to not transform when masking. + common_characters_to_ignore: + Common characters to not transform when masking. Useful to + avoid removing punctuation. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.CharsToIgnore) ), @@ -15825,9 +15974,10 @@ This message is provided as a convenience to the user for simple bucketing strategies. - The transformed value will be a hyphenated string of -, i.e if - lower\_bound = 10 and upper\_bound = 20 all values that are within this - bucket will be replaced with "10-20". + The transformed value will be a hyphenated string of + {lower\_bound}-{upper\_bound}, i.e if lower\_bound = 10 and upper\_bound + = 20 all values that are within this bucket will be replaced with + "10-20". This can be used on data of type: double, long. @@ -15840,21 +15990,21 @@ Attributes: lower_bound: - Lower bound value of buckets. All values less than + 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”. [Required]. + are replaced with the value “-10”. upper_bound: - Upper bound value of buckets. All values greater than - upper\_bound are grouped together into a single bucket; for - example if ``upper_bound`` = 89, then all values greater than - 89 are replaced with the value “89+”. [Required]. + 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+”. bucket_size: - 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 + 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. [Required]. + 80-89, 89+. Precision up to 2 decimals works. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.FixedSizeBucketingConfig) ), @@ -15932,7 +16082,7 @@ Attributes: crypto_key: - The key used by the encryption algorithm. [required] + Required. The key used by the encryption algorithm. context: The 'tweak', a context may be used for higher security since the same identifier in two different contexts won't be given @@ -15948,6 +16098,11 @@ 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 + alphabet: + Choose an alphabet which the data being transformed will be + made up of. + common_alphabet: + Common alphabets. custom_alphabet: This is supported by mapping these to the alphanumeric characters that the FFX mode natively supports. This happens @@ -15999,6 +16154,17 @@ (KEK) stored by KMS). When using KMS to wrap/unwrap DEKs, be sure to set an appropriate IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot unwrap the data crypto key. + + + Attributes: + source: + Sources of crypto keys. + transient: + Transient crypto key + unwrapped: + Unwrapped crypto key + kms_wrapped: + Kms wrapped key """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.CryptoKey) ), @@ -16017,8 +16183,8 @@ Attributes: name: - Name of the key. [required] This is an arbitrary string used - to differentiate different keys. A unique key is generated per + 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 @@ -16042,7 +16208,7 @@ Attributes: key: - A 128/192/256 bit key. [required] + Required. A 128/192/256 bit key. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.UnwrappedCryptoKey) ), @@ -16063,10 +16229,10 @@ Attributes: wrapped_key: - The wrapped data crypto key. [required] + Required. The wrapped data crypto key. crypto_key_name: - The resource name of the KMS CryptoKey to use for unwrapping. - [required] + Required. The resource name of the KMS CryptoKey to use for + unwrapping. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.KmsWrappedCryptoKey) ), @@ -16086,14 +16252,14 @@ Attributes: upper_bound_days: - Range of shift in days. Actual shift will be selected at - random within this range (inclusive ends). Negative means - shift to earlier in time. Must not be more than 365250 days - (1000 years) each direction. For example, 3 means shift date - to at most 3 days into the future. [Required] + 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. lower_bound_days: - For example, -5 means shift date to at most 5 days back in the - past. [Required] + Required. For example, -5 means shift date to at most 5 days + back in the past. context: Points to the field that contains the context, for example, an entity id. If set, must also set cryptoKey. If set, shift will @@ -16134,7 +16300,7 @@ correspond to infoTypes that were requested in ``InspectConfig``. primitive_transformation: - Primitive transformation to apply to the infoType. [required] + Required. Primitive transformation to apply to the infoType. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.InfoTypeTransformations.InfoTypeTransformation) ), @@ -16149,8 +16315,8 @@ Attributes: transformations: - Transformation for each infoType. Cannot specify more than one - for a given infoType. [required] + Required. Transformation for each infoType. Cannot specify + more than one for a given infoType. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.InfoTypeTransformations) ), @@ -16169,14 +16335,14 @@ Attributes: fields: - Input field(s) to apply the transformation to. [required] + Required. Input field(s) to apply the transformation to. condition: Only apply the transformation if the condition evaluates to true for the given ``RecordCondition``. The conditions are allowed to reference fields that are not used in the actual - transformation. [optional] Example Use Cases: - Apply a - different bucket transformation to an age column if the zip - code column for the same record is within a specific range. - + 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. transformation: Transformation to apply. [required] @@ -16208,7 +16374,7 @@ record_suppressions: Configuration defining which records get suppressed entirely. Records that match any suppression rule are omitted from the - output [optional]. + output. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.RecordTransformations) ), @@ -16256,6 +16422,11 @@ DESCRIPTOR=_RECORDCONDITION_CONDITIONS, __module__="google.cloud.dlp_v2.proto.dlp_pb2", __doc__="""A collection of conditions. + + + Attributes: + conditions: + A collection of conditions. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.RecordCondition.Conditions) ), @@ -16273,6 +16444,10 @@ logical_operator: The operator to apply to the result of conditions. Default and currently only supported value is ``AND``. + type: + Expression types. + conditions: + Conditions to apply to the expression. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.RecordCondition.Expressions) ), @@ -16302,13 +16477,13 @@ Attributes: field: - Field within the record this condition is evaluated against. - [required] + Required. Field within the record this condition is evaluated + against. operator: - Operator used to compare the field or infoType to the value. - [required] + Required. Operator used to compare the field or infoType to + the value. value: - Value to compare against. [Required, except for ``EXISTS`` + Value to compare against. [Mandatory, except for ``EXISTS`` tests.] expressions: An expression. @@ -16356,6 +16531,10 @@ Attributes: + count: + Number of transformations counted by this result. + code: + Outcome of the transformation. details: A place for warnings or errors to show up if a transformation didn't work as expected. @@ -16382,6 +16561,9 @@ will contain all of them; otherwise, only one is supplied. record_suppress: The specific suppression option these stats apply to. + results: + Collection of all transformations that took place or had an + error. transformed_bytes: Total size in bytes that were transformed in some way. """, @@ -16428,20 +16610,18 @@ Attributes: name: - The template name. Output only. The template will have one of + Output only. The template name. The template will have one of the following formats: - ``projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID`` OR - ``organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID`` + ``projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID`` OR ``orga + nizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID``; display_name: Display name (max 256 chars). description: Short description (max 256 chars). create_time: - The creation timestamp of an inspectTemplate, output only - field. + Output only. The creation timestamp of an inspectTemplate. update_time: - The last update timestamp of an inspectTemplate, output only - field. + Output only. The last update timestamp of an inspectTemplate. inspect_config: The core content of the template. Configuration of the scanning process. @@ -16463,7 +16643,7 @@ Attributes: name: - The template name. Output only. The template will have one of + Output only. The template name. The template will have one of the following formats: ``projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID`` OR ``o rganizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID`` @@ -16472,11 +16652,9 @@ description: Short description (max 256 chars). create_time: - The creation timestamp of an inspectTemplate, output only - field. + Output only. The creation timestamp of an inspectTemplate. update_time: - The last update timestamp of an inspectTemplate, output only - field. + Output only. The last update timestamp of an inspectTemplate. deidentify_config: ///////////// // The core content of the template // /////////////// """, @@ -16492,11 +16670,12 @@ DESCRIPTOR=_ERROR, __module__="google.cloud.dlp_v2.proto.dlp_pb2", __doc__="""Details information about an error encountered during job execution or - the results of an unsuccessful activation of the JobTrigger. Output only - field. + the results of an unsuccessful activation of the JobTrigger. Attributes: + details: + Detailed error codes and messages. timestamps: The times the error occurred. """, @@ -16536,27 +16715,27 @@ User provided description (max 256 chars) job: The configuration details for the specific type of job to run. + inspect_job: + For inspect jobs, a snapshot of the configuration. triggers: A list of triggers which will be OR'ed together. Only one in the list needs to trigger for a job to be started. The list may contain only a single Schedule trigger and must have at least one object. errors: - A stream of errors encountered when the trigger was activated. - Repeated errors may result in the JobTrigger automatically - being paused. Will return the last 100 errors. Whenever the - JobTrigger is modified this list will be cleared. Output only - field. + Output only. A stream of errors encountered when the trigger + was activated. Repeated errors may result in the JobTrigger + automatically being paused. Will return the last 100 errors. + Whenever the JobTrigger is modified this list will be cleared. create_time: - The creation timestamp of a triggeredJob, output only field. + Output only. The creation timestamp of a triggeredJob. update_time: - The last update timestamp of a triggeredJob, output only - field. + Output only. The last update timestamp of a triggeredJob. last_run_time: - The timestamp of the last time this trigger executed, output - only field. + Output only. The timestamp of the last time this trigger + executed. status: - A status for this trigger. [required] + Required. A status for this trigger. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.JobTrigger) ), @@ -16577,6 +16756,11 @@ __doc__="""If set, the detailed findings will be persisted to the specified OutputStorageConfig. Only a single instance of this action can be specified. Compatible with: Inspect, Risk + + + Attributes: + output_config: + Location to store findings outside of DLP. """, # @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.Action.SaveFindings) ), @@ -16684,7 +16868,7 @@ publish_findings_to_cloud_data_catalog: Publish findings to Cloud Datahub. job_notification_emails: - Enable email notification to project owners and editors on + Enable email notification for project owners and editors on job's completion/failure. publish_to_stackdriver: Enable Stackdriver metric dlp.googleapis.com/finding\_count. @@ -16714,7 +16898,7 @@ Required. The parent resource name, for example projects/my- project-id or organizations/my-org-id. inspect_template: - The InspectTemplate to create. + Required. The InspectTemplate to create. template_id: The template id can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular @@ -16789,14 +16973,14 @@ Required. The parent resource name, for example projects/my- project-id or organizations/my-org-id. page_token: - Optional page token to continue retrieval. Comes from previous - call to ``ListInspectTemplates``. + Page token to continue retrieval. Comes from previous call to + ``ListInspectTemplates``. page_size: - Optional size of the page, can be limited by server. If zero - server returns a page of max size 100. + Size of the page, can be limited by server. If zero server + returns a page of max size 100. order_by: - Optional comma separated list of fields to order by, followed - by ``asc`` or ``desc`` postfix. This list is case-insensitive, + Comma separated list of fields to order by, followed by + ``asc`` or ``desc`` postfix. This list is case-insensitive, default sorting order is ascending, redundant space characters are insignificant. Example: ``name asc,update_time, create_time desc`` Supported fields are: - ``create_time``: @@ -16871,7 +17055,7 @@ Required. The parent resource name, for example projects/my- project-id. job_trigger: - The JobTrigger to create. + Required. The JobTrigger to create. trigger_id: The trigger id can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular @@ -16966,6 +17150,10 @@ project-id. job: The configuration details for the specific type of job to run. + inspect_job: + Set to control what and how to inspect. + risk_job: + Set to choose what metric to calculate. job_id: The job id can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular @@ -16994,16 +17182,16 @@ Required. The parent resource name, for example ``projects/my- project-id``. page_token: - Optional page token to continue retrieval. Comes from previous - call to ListJobTriggers. ``order_by`` field must not change - for subsequent calls. + Page token to continue retrieval. Comes from previous call to + ListJobTriggers. ``order_by`` field must not change for + subsequent calls. page_size: - Optional size of the page, can be limited by a server. + Size of the page, can be limited by a server. order_by: - Optional comma separated list of triggeredJob fields to order - by, followed by ``asc`` or ``desc`` postfix. This list is - case-insensitive, default sorting order is ascending, - redundant space characters are insignificant. Example: ``name + Comma separated list of triggeredJob fields to order by, + followed by ``asc`` or ``desc`` postfix. This list is case- + insensitive, default sorting order is ascending, redundant + space characters are insignificant. Example: ``name asc,update_time, create_time desc`` Supported fields are: - ``create_time``: corresponds to time the JobTrigger was created. - ``update_time``: corresponds to time the @@ -17013,19 +17201,19 @@ JobTrigger's display name. - ``status``: corresponds to JobTrigger's status. filter: - Optional. Allows filtering. Supported syntax: - Filter - expressions are made up of one or more restrictions. - - Restrictions can be combined by ``AND`` or ``OR`` logical - operators. A sequence of restrictions implicitly uses - ``AND``. - A restriction has the form of `` - ``. - Supported fields/values for inspect jobs: - - ``status`` - HEALTHY\|PAUSED\|CANCELLED - - ``inspected_storage`` - DATASTORE\|CLOUD\_STORAGE\|BIGQUERY - - 'last\_run\_time\` - RFC 3339 formatted timestamp, - surrounded by quotation marks. Nanoseconds are ignored. - - 'error\_count' - Number of errors that have occurred while - running. - The operator must be ``=`` or ``!=`` for status - and inspected\_storage. Examples: - inspected\_storage = + Allows filtering. Supported syntax: - Filter expressions + are made up of one or more restrictions. - Restrictions can + be combined by ``AND`` or ``OR`` logical operators. A + sequence of restrictions implicitly uses ``AND``. - A + restriction has the form of ``{field} {operator} {value}``. - + Supported fields/values for inspect jobs: - ``status`` - + HEALTHY\|PAUSED\|CANCELLED - ``inspected_storage`` - + DATASTORE\|CLOUD\_STORAGE\|BIGQUERY - 'last\_run\_time\` - + RFC 3339 formatted timestamp, surrounded by quotation + marks. Nanoseconds are ignored. - 'error\_count' - Number + of errors that have occurred while running. - The + operator must be ``=`` or ``!=`` for status and + inspected\_storage. Examples: - inspected\_storage = cloud\_storage AND status = HEALTHY - inspected\_storage = cloud\_storage OR inspected\_storage = bigquery - inspected\_storage = cloud\_storage AND (state = PAUSED OR @@ -17090,8 +17278,10 @@ dict( DESCRIPTOR=_INSPECTJOBCONFIG, __module__="google.cloud.dlp_v2.proto.dlp_pb2", - __doc=""" - Attributes: + __doc__="""Controls what and how to inspect for findings. + + + Attributes: storage_config: \ The data to scan. inspect_config: \ @@ -17177,13 +17367,13 @@ Required. The parent resource name, for example projects/my- project-id. filter: - Optional. Allows filtering. Supported syntax: - Filter - expressions are made up of one or more restrictions. - - Restrictions can be combined by ``AND`` or ``OR`` logical - operators. A sequence of restrictions implicitly uses - ``AND``. - A restriction has the form of `` - ``. - Supported fields/values for inspect jobs: - - ``state`` - PENDING\|RUNNING\|CANCELED\|FINISHED\|FAILED - + Allows filtering. Supported syntax: - Filter expressions + are made up of one or more restrictions. - Restrictions can + be combined by ``AND`` or ``OR`` logical operators. A + sequence of restrictions implicitly uses ``AND``. - A + restriction has the form of ``{field} {operator} {value}``. - + Supported fields/values for inspect jobs: - ``state`` - + PENDING\|RUNNING\|CANCELED\|FINISHED\|FAILED - ``inspected_storage`` - DATASTORE\|CLOUD\_STORAGE\|BIGQUERY - ``trigger_name`` - The resource name of the trigger that created job. - 'end\_time\` - Corresponds to time @@ -17206,8 +17396,8 @@ type: The type of job. Defaults to ``DlpJobType.INSPECT`` order_by: - Optional comma separated list of fields to order by, followed - by ``asc`` or ``desc`` postfix. This list is case-insensitive, + Comma separated list of fields to order by, followed by + ``asc`` or ``desc`` postfix. This list is case-insensitive, default sorting order is ascending, redundant space characters are insignificant. Example: ``name asc, end_time asc, create_time desc`` Supported fields are: - ``create_time``: @@ -17294,7 +17484,7 @@ Required. The parent resource name, for example projects/my- project-id or organizations/my-org-id. deidentify_template: - The DeidentifyTemplate to create. + Required. The DeidentifyTemplate to create. template_id: The template id can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the regular @@ -17369,14 +17559,14 @@ Required. The parent resource name, for example projects/my- project-id or organizations/my-org-id. page_token: - Optional page token to continue retrieval. Comes from previous - call to ``ListDeidentifyTemplates``. + Page token to continue retrieval. Comes from previous call to + ``ListDeidentifyTemplates``. page_size: - Optional size of the page, can be limited by server. If zero - server returns a page of max size 100. + Size of the page, can be limited by server. If zero server + returns a page of max size 100. order_by: - Optional comma separated list of fields to order by, followed - by ``asc`` or ``desc`` postfix. This list is case-insensitive, + Comma separated list of fields to order by, followed by + ``asc`` or ``desc`` postfix. This list is case-insensitive, default sorting order is ascending, redundant space characters are insignificant. Example: ``name asc,update_time, create_time desc`` Supported fields are: - ``create_time``: @@ -17503,6 +17693,8 @@ Display name of the StoredInfoType (max 256 characters). description: Description of the StoredInfoType (max 256 characters). + type: + Stored infotype types. large_custom_dictionary: StoredInfoType where findings are defined by a dictionary of phrases. @@ -17522,6 +17714,8 @@ Attributes: + type: + Stat types large_custom_dictionary: StoredInfoType where findings are defined by a dictionary of phrases. @@ -17554,16 +17748,15 @@ Errors that occurred when creating this storedInfoType version, or anomalies detected in the storedInfoType data that render it unusable. Only the five most recent errors will be - displayed, with the most recent error appearing first. .. - raw:: html

For example, some of the data for stored - custom dictionaries is put in the user's Google Cloud Storage - bucket, and if this data is modified or deleted by the user or - another system, the dictionary becomes invalid. .. raw:: html -

If any errors occur, fix the problem indicated by the - error message and use the UpdateStoredInfoType API method to - create another version of the storedInfoType to continue using - it, reusing the same ``config`` if it was not the source of - the error. + displayed, with the most recent error appearing first. For + example, some of the data for stored custom dictionaries is + put in the user's Google Cloud Storage bucket, and if this + data is modified or deleted by the user or another system, the + dictionary becomes invalid. If any errors occur, fix the + problem indicated by the error message and use the + UpdateStoredInfoType API method to create another version of + the storedInfoType to continue using it, reusing the same + ``config`` if it was not the source of the error. stats: Statistics about this storedInfoType version. """, @@ -17610,7 +17803,7 @@ Required. The parent resource name, for example projects/my- project-id or organizations/my-org-id. config: - Configuration of the storedInfoType to create. + Required. Configuration of the storedInfoType to create. stored_info_type_id: The storedInfoType ID can contain uppercase and lowercase letters, numbers, and hyphens; that is, it must match the @@ -17688,14 +17881,14 @@ Required. The parent resource name, for example projects/my- project-id or organizations/my-org-id. page_token: - Optional page token to continue retrieval. Comes from previous - call to ``ListStoredInfoTypes``. + Page token to continue retrieval. Comes from previous call to + ``ListStoredInfoTypes``. page_size: - Optional size of the page, can be limited by server. If zero - server returns a page of max size 100. + Size of the page, can be limited by server. If zero server + returns a page of max size 100. order_by: - Optional comma separated list of fields to order by, followed - by ``asc`` or ``desc`` postfix. This list is case-insensitive, + Comma separated list of fields to order by, followed by + ``asc`` or ``desc`` postfix. This list is case-insensitive, default sorting order is ascending, redundant space characters are insignificant. Example: ``name asc, display_name, create_time desc`` Supported fields are: - ``create_time``: @@ -17762,15 +17955,61 @@ _DEIDENTIFYCONTENTREQUEST.fields_by_name["parent"]._options = None _REIDENTIFYCONTENTREQUEST.fields_by_name["parent"]._options = None _INSPECTCONTENTREQUEST.fields_by_name["parent"]._options = None +_QUASIID.fields_by_name["field"]._options = None +_STATISTICALTABLE.fields_by_name["table"]._options = None +_STATISTICALTABLE.fields_by_name["quasi_ids"]._options = None +_STATISTICALTABLE.fields_by_name["relative_frequency"]._options = None +_PRIVACYMETRIC_KMAPESTIMATIONCONFIG_TAGGEDFIELD.fields_by_name["field"]._options = None +_PRIVACYMETRIC_KMAPESTIMATIONCONFIG_AUXILIARYTABLE.fields_by_name[ + "table" +]._options = None +_PRIVACYMETRIC_KMAPESTIMATIONCONFIG_AUXILIARYTABLE.fields_by_name[ + "quasi_ids" +]._options = None +_PRIVACYMETRIC_KMAPESTIMATIONCONFIG_AUXILIARYTABLE.fields_by_name[ + "relative_frequency" +]._options = None +_PRIVACYMETRIC_KMAPESTIMATIONCONFIG.fields_by_name["quasi_ids"]._options = None +_PRIVACYMETRIC_DELTAPRESENCEESTIMATIONCONFIG.fields_by_name["quasi_ids"]._options = None +_FIXEDSIZEBUCKETINGCONFIG.fields_by_name["lower_bound"]._options = None +_FIXEDSIZEBUCKETINGCONFIG.fields_by_name["upper_bound"]._options = None +_FIXEDSIZEBUCKETINGCONFIG.fields_by_name["bucket_size"]._options = None +_CRYPTOREPLACEFFXFPECONFIG.fields_by_name["crypto_key"]._options = None +_TRANSIENTCRYPTOKEY.fields_by_name["name"]._options = None +_UNWRAPPEDCRYPTOKEY.fields_by_name["key"]._options = None +_KMSWRAPPEDCRYPTOKEY.fields_by_name["wrapped_key"]._options = None +_KMSWRAPPEDCRYPTOKEY.fields_by_name["crypto_key_name"]._options = None +_DATESHIFTCONFIG.fields_by_name["upper_bound_days"]._options = None +_DATESHIFTCONFIG.fields_by_name["lower_bound_days"]._options = None +_INFOTYPETRANSFORMATIONS_INFOTYPETRANSFORMATION.fields_by_name[ + "primitive_transformation" +]._options = None +_INFOTYPETRANSFORMATIONS.fields_by_name["transformations"]._options = None +_FIELDTRANSFORMATION.fields_by_name["fields"]._options = None +_RECORDCONDITION_CONDITION.fields_by_name["field"]._options = None +_RECORDCONDITION_CONDITION.fields_by_name["operator"]._options = None +_INSPECTTEMPLATE.fields_by_name["name"]._options = None +_INSPECTTEMPLATE.fields_by_name["create_time"]._options = None +_INSPECTTEMPLATE.fields_by_name["update_time"]._options = None _INSPECTTEMPLATE._options = None +_DEIDENTIFYTEMPLATE.fields_by_name["name"]._options = None +_DEIDENTIFYTEMPLATE.fields_by_name["create_time"]._options = None +_DEIDENTIFYTEMPLATE.fields_by_name["update_time"]._options = None _DEIDENTIFYTEMPLATE._options = None +_JOBTRIGGER.fields_by_name["errors"]._options = None +_JOBTRIGGER.fields_by_name["create_time"]._options = None +_JOBTRIGGER.fields_by_name["update_time"]._options = None +_JOBTRIGGER.fields_by_name["last_run_time"]._options = None +_JOBTRIGGER.fields_by_name["status"]._options = None _JOBTRIGGER._options = None _CREATEINSPECTTEMPLATEREQUEST.fields_by_name["parent"]._options = None +_CREATEINSPECTTEMPLATEREQUEST.fields_by_name["inspect_template"]._options = None _UPDATEINSPECTTEMPLATEREQUEST.fields_by_name["name"]._options = None _GETINSPECTTEMPLATEREQUEST.fields_by_name["name"]._options = None _LISTINSPECTTEMPLATESREQUEST.fields_by_name["parent"]._options = None _DELETEINSPECTTEMPLATEREQUEST.fields_by_name["name"]._options = None _CREATEJOBTRIGGERREQUEST.fields_by_name["parent"]._options = None +_CREATEJOBTRIGGERREQUEST.fields_by_name["job_trigger"]._options = None _ACTIVATEJOBTRIGGERREQUEST.fields_by_name["name"]._options = None _UPDATEJOBTRIGGERREQUEST.fields_by_name["name"]._options = None _GETJOBTRIGGERREQUEST.fields_by_name["name"]._options = None @@ -17783,12 +18022,14 @@ _CANCELDLPJOBREQUEST.fields_by_name["name"]._options = None _DELETEDLPJOBREQUEST.fields_by_name["name"]._options = None _CREATEDEIDENTIFYTEMPLATEREQUEST.fields_by_name["parent"]._options = None +_CREATEDEIDENTIFYTEMPLATEREQUEST.fields_by_name["deidentify_template"]._options = None _UPDATEDEIDENTIFYTEMPLATEREQUEST.fields_by_name["name"]._options = None _GETDEIDENTIFYTEMPLATEREQUEST.fields_by_name["name"]._options = None _LISTDEIDENTIFYTEMPLATESREQUEST.fields_by_name["parent"]._options = None _DELETEDEIDENTIFYTEMPLATEREQUEST.fields_by_name["name"]._options = None _STOREDINFOTYPE._options = None _CREATESTOREDINFOTYPEREQUEST.fields_by_name["parent"]._options = None +_CREATESTOREDINFOTYPEREQUEST.fields_by_name["config"]._options = None _UPDATESTOREDINFOTYPEREQUEST.fields_by_name["name"]._options = None _GETSTOREDINFOTYPEREQUEST.fields_by_name["name"]._options = None _LISTSTOREDINFOTYPESREQUEST.fields_by_name["parent"]._options = None @@ -17802,8 +18043,8 @@ serialized_options=_b( "\312A\022dlp.googleapis.com\322A.https://www.googleapis.com/auth/cloud-platform" ), - serialized_start=29699, - serialized_end=38408, + serialized_start=29899, + serialized_end=39206, methods=[ _descriptor.MethodDescriptor( name="InspectContent", @@ -17857,7 +18098,7 @@ input_type=_LISTINFOTYPESREQUEST, output_type=_LISTINFOTYPESRESPONSE, serialized_options=_b( - "\202\323\344\223\0028\022\r/v2/infoTypesZ'\022%/v2/locations/{location_id}/infoTypes" + "\202\323\344\223\0028\022\r/v2/infoTypesZ'\022%/v2/locations/{location_id}/infoTypes\332A\013location_id" ), ), _descriptor.MethodDescriptor( @@ -17868,7 +18109,7 @@ input_type=_CREATEINSPECTTEMPLATEREQUEST, output_type=_INSPECTTEMPLATE, serialized_options=_b( - '\202\323\344\223\002\364\001"-/v2/{parent=organizations/*}/inspectTemplates:\001*ZJ"E/v2/{parent=organizations/*}/locations/{location_id}/inspectTemplates:\001*Z-"(/v2/{parent=projects/*}/inspectTemplates:\001*ZE"@/v2/{parent=projects/*}/locations/{location_id}/inspectTemplates:\001*' + '\202\323\344\223\002\364\001"-/v2/{parent=organizations/*}/inspectTemplates:\001*ZJ"E/v2/{parent=organizations/*}/locations/{location_id}/inspectTemplates:\001*Z-"(/v2/{parent=projects/*}/inspectTemplates:\001*ZE"@/v2/{parent=projects/*}/locations/{location_id}/inspectTemplates:\001*\332A\027parent,inspect_template\332A#parent,inspect_template,location_id' ), ), _descriptor.MethodDescriptor( @@ -17879,7 +18120,7 @@ input_type=_UPDATEINSPECTTEMPLATEREQUEST, output_type=_INSPECTTEMPLATE, serialized_options=_b( - "\202\323\344\223\002\334\0012-/v2/{name=organizations/*/inspectTemplates/*}:\001*Z>29/v2/{name=organizations/*/locations/*/inspectTemplates/*}:\001*Z-2(/v2/{name=projects/*/inspectTemplates/*}:\001*Z924/v2/{name=projects/*/locations/*/inspectTemplates/*}:\001*" + "\202\323\344\223\002\334\0012-/v2/{name=organizations/*/inspectTemplates/*}:\001*Z>29/v2/{name=organizations/*/locations/*/inspectTemplates/*}:\001*Z-2(/v2/{name=projects/*/inspectTemplates/*}:\001*Z924/v2/{name=projects/*/locations/*/inspectTemplates/*}:\001*\332A!name,inspect_template,update_mask" ), ), _descriptor.MethodDescriptor( @@ -17890,7 +18131,7 @@ input_type=_GETINSPECTTEMPLATEREQUEST, output_type=_INSPECTTEMPLATE, serialized_options=_b( - "\202\323\344\223\002\320\001\022-/v2/{name=organizations/*/inspectTemplates/*}Z;\0229/v2/{name=organizations/*/locations/*/inspectTemplates/*}Z*\022(/v2/{name=projects/*/inspectTemplates/*}Z6\0224/v2/{name=projects/*/locations/*/inspectTemplates/*}" + "\202\323\344\223\002\320\001\022-/v2/{name=organizations/*/inspectTemplates/*}Z;\0229/v2/{name=organizations/*/locations/*/inspectTemplates/*}Z*\022(/v2/{name=projects/*/inspectTemplates/*}Z6\0224/v2/{name=projects/*/locations/*/inspectTemplates/*}\332A\004name" ), ), _descriptor.MethodDescriptor( @@ -17901,7 +18142,7 @@ input_type=_LISTINSPECTTEMPLATESREQUEST, output_type=_LISTINSPECTTEMPLATESRESPONSE, serialized_options=_b( - "\202\323\344\223\002\350\001\022-/v2/{parent=organizations/*}/inspectTemplatesZG\022E/v2/{parent=organizations/*}/locations/{location_id}/inspectTemplatesZ*\022(/v2/{parent=projects/*}/inspectTemplatesZB\022@/v2/{parent=projects/*}/locations/{location_id}/inspectTemplates" + "\202\323\344\223\002\350\001\022-/v2/{parent=organizations/*}/inspectTemplatesZG\022E/v2/{parent=organizations/*}/locations/{location_id}/inspectTemplatesZ*\022(/v2/{parent=projects/*}/inspectTemplatesZB\022@/v2/{parent=projects/*}/locations/{location_id}/inspectTemplates\332A\006parent" ), ), _descriptor.MethodDescriptor( @@ -17912,7 +18153,7 @@ input_type=_DELETEINSPECTTEMPLATEREQUEST, output_type=google_dot_protobuf_dot_empty__pb2._EMPTY, serialized_options=_b( - "\202\323\344\223\002\320\001*-/v2/{name=organizations/*/inspectTemplates/*}Z;*9/v2/{name=organizations/*/locations/*/inspectTemplates/*}Z**(/v2/{name=projects/*/inspectTemplates/*}Z6*4/v2/{name=projects/*/locations/*/inspectTemplates/*}" + "\202\323\344\223\002\320\001*-/v2/{name=organizations/*/inspectTemplates/*}Z;*9/v2/{name=organizations/*/locations/*/inspectTemplates/*}Z**(/v2/{name=projects/*/inspectTemplates/*}Z6*4/v2/{name=projects/*/locations/*/inspectTemplates/*}\332A\004name" ), ), _descriptor.MethodDescriptor( @@ -17923,7 +18164,7 @@ input_type=_CREATEDEIDENTIFYTEMPLATEREQUEST, output_type=_DEIDENTIFYTEMPLATE, serialized_options=_b( - '\202\323\344\223\002\200\002"0/v2/{parent=organizations/*}/deidentifyTemplates:\001*ZM"H/v2/{parent=organizations/*}/locations/{location_id}/deidentifyTemplates:\001*Z0"+/v2/{parent=projects/*}/deidentifyTemplates:\001*ZH"C/v2/{parent=projects/*}/locations/{location_id}/deidentifyTemplates:\001*' + '\202\323\344\223\002\200\002"0/v2/{parent=organizations/*}/deidentifyTemplates:\001*ZM"H/v2/{parent=organizations/*}/locations/{location_id}/deidentifyTemplates:\001*Z0"+/v2/{parent=projects/*}/deidentifyTemplates:\001*ZH"C/v2/{parent=projects/*}/locations/{location_id}/deidentifyTemplates:\001*\332A\032parent,deidentify_template\332A&parent,deidentify_template,location_id' ), ), _descriptor.MethodDescriptor( @@ -17934,7 +18175,7 @@ input_type=_UPDATEDEIDENTIFYTEMPLATEREQUEST, output_type=_DEIDENTIFYTEMPLATE, serialized_options=_b( - "\202\323\344\223\002\350\00120/v2/{name=organizations/*/deidentifyTemplates/*}:\001*ZA2\022\022**