<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="dlp_v2.html">Sensitive Data Protection (DLP)</a> . <a href="dlp_v2.projects.html">projects</a> . <a href="dlp_v2.projects.locations.html">locations</a> . <a href="dlp_v2.projects.locations.tableDataProfiles.html">tableDataProfiles</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Delete a TableDataProfile. Will not prevent the profile from being regenerated if the table is still included in a discovery configuration.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a table data profile.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists table data profiles for an organization.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Delete a TableDataProfile. Will not prevent the profile from being regenerated if the table is still included in a discovery configuration.

Args:
  name: string, Required. Resource name of the table data profile. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets a table data profile.

Args:
  name: string, Required. Resource name, for example `organizations/12345/locations/us/tableDataProfiles/53234423`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The profile for a scanned table.
  &quot;configSnapshot&quot;: { # Snapshot of the configurations used to generate the profile. # The snapshot of the configurations used to generate the profile.
    &quot;dataProfileJob&quot;: { # Configuration for setting up a job to scan resources for profile generation. Only one data profile configuration may exist per organization, folder, or project. The generated data profiles are retained according to the [data retention policy] (https://cloud.google.com/sensitive-data-protection/docs/data-profiles#retention). # A copy of the configuration used to generate this profile. This is deprecated, and the DiscoveryConfig field is preferred moving forward. DataProfileJobConfig will still be written here for Discovery in BigQuery for backwards compatibility, but will not be updated with new fields, while DiscoveryConfig will.
      &quot;dataProfileActions&quot;: [ # Actions to execute at the completion of the job.
        { # A task to execute when a data profile has been generated.
          &quot;exportData&quot;: { # If set, the detailed data profiles will be persisted to the location of your choice whenever updated. # Export data profiles into a provided location.
            &quot;profileTable&quot;: { # Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`. # Store all profiles to BigQuery. * The system will create a new dataset and table for you if none are are provided. The dataset will be named `sensitive_data_protection_discovery` and table will be named `discovery_profiles`. This table will be placed in the same project as the container project running the scan. After the first profile is generated and the dataset and table are created, the discovery scan configuration will be updated with the dataset and table names. * See [Analyze data profiles stored in BigQuery](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles). * See [Sample queries for your BigQuery table](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles#sample_sql_queries). * Data is inserted using [streaming insert](https://cloud.google.com/blog/products/bigquery/life-of-a-bigquery-streaming-insert) and so data may be in the buffer for a period of time after the profile has finished. * The Pub/Sub notification is sent before the streaming buffer is guaranteed to be written, so data may not be instantly visible to queries by the time your topic receives the Pub/Sub notification. * The best practice is to use the same table for an entire organization so that you can take advantage of the [provided Looker reports](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles#use_a_premade_report). If you use VPC Service Controls to define security perimeters, then you must use a separate table for each boundary.
              &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
              &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, project ID is inferred from the API call.
              &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
            },
            &quot;sampleFindingsTable&quot;: { # Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`. # Store sample data profile findings in an existing table or a new table in an existing dataset. Each regeneration will result in new rows in BigQuery. Data is inserted using [streaming insert](https://cloud.google.com/blog/products/bigquery/life-of-a-bigquery-streaming-insert) and so data may be in the buffer for a period of time after the profile has finished.
              &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
              &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, project ID is inferred from the API call.
              &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
            },
          },
          &quot;pubSubNotification&quot;: { # Send a Pub/Sub message into the given Pub/Sub topic to connect other systems to data profile generation. The message payload data will be the byte serialization of `DataProfilePubSubMessage`. # Publish a message into the Pub/Sub topic.
            &quot;detailOfMessage&quot;: &quot;A String&quot;, # How much data to include in the Pub/Sub message. If the user wishes to limit the size of the message, they can use resource_name and fetch the profile fields they wish to. Per table profile (not per column).
            &quot;event&quot;: &quot;A String&quot;, # The type of event that triggers a Pub/Sub. At most one `PubSubNotification` per EventType is permitted.
            &quot;pubsubCondition&quot;: { # A condition for determining whether a Pub/Sub should be triggered. # Conditions (e.g., data risk or sensitivity level) for triggering a Pub/Sub.
              &quot;expressions&quot;: { # An expression, consisting of an operator and conditions. # An expression.
                &quot;conditions&quot;: [ # Conditions to apply to the expression.
                  { # A condition consisting of a value.
                    &quot;minimumRiskScore&quot;: &quot;A String&quot;, # The minimum data risk score that triggers the condition.
                    &quot;minimumSensitivityScore&quot;: &quot;A String&quot;, # The minimum sensitivity level that triggers the condition.
                  },
                ],
                &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the collection of conditions.
              },
            },
            &quot;topic&quot;: &quot;A String&quot;, # Cloud Pub/Sub topic to send notifications to. Format is projects/{project}/topics/{topic}.
          },
          &quot;publishToChronicle&quot;: { # Message expressing intention to publish to Google Security Operations. # Publishes generated data profiles to Google Security Operations. For more information, see [Use Sensitive Data Protection data in context-aware analytics](https://cloud.google.com/chronicle/docs/detection/usecase-dlp-high-risk-user-download).
          },
          &quot;publishToDataplexCatalog&quot;: { # Create Dataplex Universal Catalog aspects for profiled resources with the aspect type Sensitive Data Protection Profile. To learn more about aspects, see https://cloud.google.com/sensitive-data-protection/docs/add-aspects. # Publishes a portion of each profile to Dataplex Universal Catalog with the aspect type Sensitive Data Protection Profile.
            &quot;lowerDataRiskToLow&quot;: True or False, # Whether creating a Dataplex Universal Catalog aspect for a profiled resource should lower the risk of the profile for that resource. This also lowers the data risk of resources at the lower levels of the resource hierarchy. For example, reducing the data risk of a table data profile also reduces the data risk of the constituent column data profiles.
          },
          &quot;publishToScc&quot;: { # If set, a summary finding will be created or updated in Security Command Center for each profile. # Publishes findings to Security Command Center for each data profile.
          },
          &quot;tagResources&quot;: { # If set, attaches the [tags] (https://cloud.google.com/resource-manager/docs/tags/tags-overview) provided to profiled resources. Tags support [access control](https://cloud.google.com/iam/docs/tags-access-control). You can conditionally grant or deny access to a resource based on whether the resource has a specific tag. # Tags the profiled resources with the specified tag values.
            &quot;lowerDataRiskToLow&quot;: True or False, # Whether applying a tag to a resource should lower the risk of the profile for that resource. For example, in conjunction with an [IAM deny policy](https://cloud.google.com/iam/docs/deny-overview), you can deny all principals a permission if a tag value is present, mitigating the risk of the resource. This also lowers the data risk of resources at the lower levels of the resource hierarchy. For example, reducing the data risk of a table data profile also reduces the data risk of the constituent column data profiles.
            &quot;profileGenerationsToTag&quot;: [ # The profile generations for which the tag should be attached to resources. If you attach a tag to only new profiles, then if the sensitivity score of a profile subsequently changes, its tag doesn&#x27;t change. By default, this field includes only new profiles. To include both new and updated profiles for tagging, this field should explicitly include both `PROFILE_GENERATION_NEW` and `PROFILE_GENERATION_UPDATE`.
              &quot;A String&quot;,
            ],
            &quot;tagConditions&quot;: [ # The tags to associate with different conditions.
              { # The tag to attach to profiles matching the condition. At most one `TagCondition` can be specified per sensitivity level.
                &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Conditions attaching the tag to a resource on its profile having this sensitivity score.
                  &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
                },
                &quot;tag&quot;: { # A value of a tag. # The tag value to attach to resources.
                  &quot;namespacedValue&quot;: &quot;A String&quot;, # The namespaced name for the tag value to attach to resources. Must be in the format `{parent_id}/{tag_key_short_name}/{short_name}`, for example, &quot;123456/environment/prod&quot; for an organization parent, or &quot;my-project/environment/prod&quot; for a project parent.
                },
              },
            ],
          },
        },
      ],
      &quot;inspectTemplates&quot;: [ # Detection logic for profile generation. Not all template features are used by profiles. FindingLimits, include_quote and exclude_info_types have no impact on data profiling. Multiple templates may be provided if there is data in multiple regions. At most one template must be specified per-region (including &quot;global&quot;). Each region is scanned using the applicable template. If no region-specific template is specified, but a &quot;global&quot; template is specified, it will be copied to that region and used instead. If no global or region-specific template is provided for a region with data, that region&#x27;s data will not be scanned. For more information, see https://cloud.google.com/sensitive-data-protection/docs/data-profiles#data-residency.
        &quot;A String&quot;,
      ],
      &quot;location&quot;: { # The data that will be profiled. # The data to scan.
        &quot;folderId&quot;: &quot;A String&quot;, # The ID of the folder within an organization to scan.
        &quot;organizationId&quot;: &quot;A String&quot;, # The ID of an organization to scan.
      },
      &quot;otherCloudStartingLocation&quot;: { # The other cloud starting location for discovery. # Must be set only when scanning other clouds.
        &quot;awsLocation&quot;: { # The AWS starting location for discovery. # The AWS starting location for discovery.
          &quot;accountId&quot;: &quot;A String&quot;, # The AWS account ID that this discovery config applies to. Within an AWS organization, you can find the AWS account ID inside an AWS account ARN. Example: arn:{partition}:organizations::{management_account_id}:account/{org_id}/{account_id}
          &quot;allAssetInventoryAssets&quot;: True or False, # All AWS assets stored in Asset Inventory that didn&#x27;t match other AWS discovery configs.
        },
      },
      &quot;projectId&quot;: &quot;A String&quot;, # The project that will run the scan. The DLP service account that exists within this project must have access to all resources that are profiled, and the DLP API must be enabled.
    },
    &quot;discoveryConfig&quot;: { # Configuration for discovery to scan resources for profile generation. Only one discovery configuration may exist per organization, folder, or project. The generated data profiles are retained according to the [data retention policy] (https://cloud.google.com/sensitive-data-protection/docs/data-profiles#retention). # A copy of the configuration used to generate this profile.
      &quot;actions&quot;: [ # Actions to execute at the completion of scanning.
        { # A task to execute when a data profile has been generated.
          &quot;exportData&quot;: { # If set, the detailed data profiles will be persisted to the location of your choice whenever updated. # Export data profiles into a provided location.
            &quot;profileTable&quot;: { # Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`. # Store all profiles to BigQuery. * The system will create a new dataset and table for you if none are are provided. The dataset will be named `sensitive_data_protection_discovery` and table will be named `discovery_profiles`. This table will be placed in the same project as the container project running the scan. After the first profile is generated and the dataset and table are created, the discovery scan configuration will be updated with the dataset and table names. * See [Analyze data profiles stored in BigQuery](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles). * See [Sample queries for your BigQuery table](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles#sample_sql_queries). * Data is inserted using [streaming insert](https://cloud.google.com/blog/products/bigquery/life-of-a-bigquery-streaming-insert) and so data may be in the buffer for a period of time after the profile has finished. * The Pub/Sub notification is sent before the streaming buffer is guaranteed to be written, so data may not be instantly visible to queries by the time your topic receives the Pub/Sub notification. * The best practice is to use the same table for an entire organization so that you can take advantage of the [provided Looker reports](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles#use_a_premade_report). If you use VPC Service Controls to define security perimeters, then you must use a separate table for each boundary.
              &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
              &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, project ID is inferred from the API call.
              &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
            },
            &quot;sampleFindingsTable&quot;: { # Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`. # Store sample data profile findings in an existing table or a new table in an existing dataset. Each regeneration will result in new rows in BigQuery. Data is inserted using [streaming insert](https://cloud.google.com/blog/products/bigquery/life-of-a-bigquery-streaming-insert) and so data may be in the buffer for a period of time after the profile has finished.
              &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
              &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, project ID is inferred from the API call.
              &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
            },
          },
          &quot;pubSubNotification&quot;: { # Send a Pub/Sub message into the given Pub/Sub topic to connect other systems to data profile generation. The message payload data will be the byte serialization of `DataProfilePubSubMessage`. # Publish a message into the Pub/Sub topic.
            &quot;detailOfMessage&quot;: &quot;A String&quot;, # How much data to include in the Pub/Sub message. If the user wishes to limit the size of the message, they can use resource_name and fetch the profile fields they wish to. Per table profile (not per column).
            &quot;event&quot;: &quot;A String&quot;, # The type of event that triggers a Pub/Sub. At most one `PubSubNotification` per EventType is permitted.
            &quot;pubsubCondition&quot;: { # A condition for determining whether a Pub/Sub should be triggered. # Conditions (e.g., data risk or sensitivity level) for triggering a Pub/Sub.
              &quot;expressions&quot;: { # An expression, consisting of an operator and conditions. # An expression.
                &quot;conditions&quot;: [ # Conditions to apply to the expression.
                  { # A condition consisting of a value.
                    &quot;minimumRiskScore&quot;: &quot;A String&quot;, # The minimum data risk score that triggers the condition.
                    &quot;minimumSensitivityScore&quot;: &quot;A String&quot;, # The minimum sensitivity level that triggers the condition.
                  },
                ],
                &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the collection of conditions.
              },
            },
            &quot;topic&quot;: &quot;A String&quot;, # Cloud Pub/Sub topic to send notifications to. Format is projects/{project}/topics/{topic}.
          },
          &quot;publishToChronicle&quot;: { # Message expressing intention to publish to Google Security Operations. # Publishes generated data profiles to Google Security Operations. For more information, see [Use Sensitive Data Protection data in context-aware analytics](https://cloud.google.com/chronicle/docs/detection/usecase-dlp-high-risk-user-download).
          },
          &quot;publishToDataplexCatalog&quot;: { # Create Dataplex Universal Catalog aspects for profiled resources with the aspect type Sensitive Data Protection Profile. To learn more about aspects, see https://cloud.google.com/sensitive-data-protection/docs/add-aspects. # Publishes a portion of each profile to Dataplex Universal Catalog with the aspect type Sensitive Data Protection Profile.
            &quot;lowerDataRiskToLow&quot;: True or False, # Whether creating a Dataplex Universal Catalog aspect for a profiled resource should lower the risk of the profile for that resource. This also lowers the data risk of resources at the lower levels of the resource hierarchy. For example, reducing the data risk of a table data profile also reduces the data risk of the constituent column data profiles.
          },
          &quot;publishToScc&quot;: { # If set, a summary finding will be created or updated in Security Command Center for each profile. # Publishes findings to Security Command Center for each data profile.
          },
          &quot;tagResources&quot;: { # If set, attaches the [tags] (https://cloud.google.com/resource-manager/docs/tags/tags-overview) provided to profiled resources. Tags support [access control](https://cloud.google.com/iam/docs/tags-access-control). You can conditionally grant or deny access to a resource based on whether the resource has a specific tag. # Tags the profiled resources with the specified tag values.
            &quot;lowerDataRiskToLow&quot;: True or False, # Whether applying a tag to a resource should lower the risk of the profile for that resource. For example, in conjunction with an [IAM deny policy](https://cloud.google.com/iam/docs/deny-overview), you can deny all principals a permission if a tag value is present, mitigating the risk of the resource. This also lowers the data risk of resources at the lower levels of the resource hierarchy. For example, reducing the data risk of a table data profile also reduces the data risk of the constituent column data profiles.
            &quot;profileGenerationsToTag&quot;: [ # The profile generations for which the tag should be attached to resources. If you attach a tag to only new profiles, then if the sensitivity score of a profile subsequently changes, its tag doesn&#x27;t change. By default, this field includes only new profiles. To include both new and updated profiles for tagging, this field should explicitly include both `PROFILE_GENERATION_NEW` and `PROFILE_GENERATION_UPDATE`.
              &quot;A String&quot;,
            ],
            &quot;tagConditions&quot;: [ # The tags to associate with different conditions.
              { # The tag to attach to profiles matching the condition. At most one `TagCondition` can be specified per sensitivity level.
                &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Conditions attaching the tag to a resource on its profile having this sensitivity score.
                  &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
                },
                &quot;tag&quot;: { # A value of a tag. # The tag value to attach to resources.
                  &quot;namespacedValue&quot;: &quot;A String&quot;, # The namespaced name for the tag value to attach to resources. Must be in the format `{parent_id}/{tag_key_short_name}/{short_name}`, for example, &quot;123456/environment/prod&quot; for an organization parent, or &quot;my-project/environment/prod&quot; for a project parent.
                },
              },
            ],
          },
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of a DiscoveryConfig.
      &quot;displayName&quot;: &quot;A String&quot;, # Display name (max 100 chars)
      &quot;errors&quot;: [ # Output only. A stream of errors encountered when the config was activated. Repeated errors may result in the config automatically being paused. Output only field. Will return the last 100 errors. Whenever the config is modified this list will be cleared.
        { # Details information about an error encountered during job execution or the results of an unsuccessful activation of the JobTrigger.
          &quot;details&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Detailed error codes and messages.
            &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
            &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
            &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
          },
          &quot;extraInfo&quot;: &quot;A String&quot;, # Additional information about the error.
          &quot;timestamps&quot;: [ # The times the error occurred. List includes the oldest timestamp and the last 9 timestamps.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;inspectTemplates&quot;: [ # Detection logic for profile generation. Not all template features are used by Discovery. FindingLimits, include_quote and exclude_info_types have no impact on Discovery. Multiple templates may be provided if there is data in multiple regions. At most one template must be specified per-region (including &quot;global&quot;). Each region is scanned using the applicable template. If no region-specific template is specified, but a &quot;global&quot; template is specified, it will be copied to that region and used instead. If no global or region-specific template is provided for a region with data, that region&#x27;s data will not be scanned. For more information, see https://cloud.google.com/sensitive-data-protection/docs/data-profiles#data-residency.
        &quot;A String&quot;,
      ],
      &quot;lastRunTime&quot;: &quot;A String&quot;, # Output only. The timestamp of the last time this config was executed.
      &quot;name&quot;: &quot;A String&quot;, # Unique resource name for the DiscoveryConfig, assigned by the service when the DiscoveryConfig is created, for example `projects/dlp-test-project/locations/global/discoveryConfigs/53234423`.
      &quot;orgConfig&quot;: { # Project and scan location information. Only set when the parent is an org. # Only set when the parent is an org.
        &quot;location&quot;: { # The location to begin a discovery scan. Denotes an organization ID or folder ID within an organization. # The data to scan: folder, org, or project
          &quot;folderId&quot;: &quot;A String&quot;, # The ID of the folder within an organization to be scanned.
          &quot;organizationId&quot;: &quot;A String&quot;, # The ID of an organization to scan.
        },
        &quot;projectId&quot;: &quot;A String&quot;, # The project that will run the scan. The DLP service account that exists within this project must have access to all resources that are profiled, and the DLP API must be enabled.
      },
      &quot;otherCloudStartingLocation&quot;: { # The other cloud starting location for discovery. # Must be set only when scanning other clouds.
        &quot;awsLocation&quot;: { # The AWS starting location for discovery. # The AWS starting location for discovery.
          &quot;accountId&quot;: &quot;A String&quot;, # The AWS account ID that this discovery config applies to. Within an AWS organization, you can find the AWS account ID inside an AWS account ARN. Example: arn:{partition}:organizations::{management_account_id}:account/{org_id}/{account_id}
          &quot;allAssetInventoryAssets&quot;: True or False, # All AWS assets stored in Asset Inventory that didn&#x27;t match other AWS discovery configs.
        },
      },
      &quot;processingLocation&quot;: { # Configure processing location for discovery and inspection. For example, image OCR is only provided in limited regions but configuring ProcessingLocation will redirect OCR to a location where OCR is provided. # Optional. Processing location configuration. Vertex AI dataset scanning will set processing_location.image_fallback_type to MultiRegionProcessing by default.
        &quot;documentFallbackLocation&quot;: { # Configure document processing to fall back to any of the following processing options if document processing is unavailable in the original request location. # Document processing falls back using this configuration.
          &quot;globalProcessing&quot;: { # Processing occurs in the global region. # Processing occurs in the global region.
          },
          &quot;multiRegionProcessing&quot;: { # Processing occurs in a multi-region that contains the current region if available. # Processing occurs in a multi-region that contains the current region if available.
          },
        },
        &quot;imageFallbackLocation&quot;: { # Configure image processing to fall back to any of the following processing options if image processing is unavailable in the original request location. # Image processing falls back using this configuration.
          &quot;globalProcessing&quot;: { # Processing occurs in the global region. # Processing occurs in the global region.
          },
          &quot;multiRegionProcessing&quot;: { # Processing occurs in a multi-region that contains the current region if available. # Processing occurs in a multi-region that contains the current region if available.
          },
        },
      },
      &quot;status&quot;: &quot;A String&quot;, # Required. A status for this configuration.
      &quot;targets&quot;: [ # Target to match against for determining what to scan and how frequently.
        { # Target used to match against for Discovery.
          &quot;bigQueryTarget&quot;: { # Target used to match against for discovery with BigQuery tables # BigQuery target for Discovery. The first target to match a table will be the one applied.
            &quot;cadence&quot;: { # What must take place for a profile to be updated and how frequently it should occur. New tables are scanned as quickly as possible depending on system capacity. # How often and when to update profiles. New tables that match both the filter and conditions are scanned as quickly as possible depending on system capacity.
              &quot;inspectTemplateModifiedCadence&quot;: { # The cadence at which to update data profiles when the inspection rules defined by the `InspectTemplate` change. # Governs when to update data profiles when the inspection rules defined by the `InspectTemplate` change. If not set, changing the template will not cause a data profile to update.
                &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when the template is modified. Defaults to never.
              },
              &quot;refreshFrequency&quot;: &quot;A String&quot;, # Frequency at which profiles should be updated, regardless of whether the underlying resource has changed. Defaults to never.
              &quot;schemaModifiedCadence&quot;: { # The cadence at which to update data profiles when a schema is modified. # Governs when to update data profiles when a schema is modified.
                &quot;frequency&quot;: &quot;A String&quot;, # How frequently profiles may be updated when schemas are modified. Defaults to monthly.
                &quot;types&quot;: [ # The type of events to consider when deciding if the table&#x27;s schema has been modified and should have the profile updated. Defaults to NEW_COLUMNS.
                  &quot;A String&quot;,
                ],
              },
              &quot;tableModifiedCadence&quot;: { # The cadence at which to update data profiles when a table is modified. # Governs when to update data profiles when a table is modified.
                &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when tables are modified. Defaults to never.
                &quot;types&quot;: [ # The type of events to consider when deciding if the table has been modified and should have the profile updated. Defaults to MODIFIED_TIMESTAMP.
                  &quot;A String&quot;,
                ],
              },
            },
            &quot;conditions&quot;: { # Requirements that must be true before a table is scanned in discovery for the first time. There is an AND relationship between the top-level attributes. Additionally, minimum conditions with an OR relationship that must be met before Cloud DLP scans a table can be set (like a minimum row count or a minimum table age). # In addition to matching the filter, these conditions must be true before a profile is generated.
              &quot;createdAfter&quot;: &quot;A String&quot;, # BigQuery table must have been created after this date. Used to avoid backfilling.
              &quot;orConditions&quot;: { # There is an OR relationship between these attributes. They are used to determine if a table should be scanned or not in Discovery. # At least one of the conditions must be true for a table to be scanned.
                &quot;minAge&quot;: &quot;A String&quot;, # Minimum age a table must have before Cloud DLP can profile it. Value must be 1 hour or greater.
                &quot;minRowCount&quot;: 42, # Minimum number of rows that should be present before Cloud DLP profiles a table
              },
              &quot;typeCollection&quot;: &quot;A String&quot;, # Restrict discovery to categories of table types.
              &quot;types&quot;: { # The types of BigQuery tables supported by Cloud DLP. # Restrict discovery to specific table types.
                &quot;types&quot;: [ # A set of BigQuery table types.
                  &quot;A String&quot;,
                ],
              },
            },
            &quot;disabled&quot;: { # Do not profile the tables. # Tables that match this filter will not have profiles created.
            },
            &quot;filter&quot;: { # Determines what tables will have profiles generated within an organization or project. Includes the ability to filter by regular expression patterns on project ID, dataset ID, and table ID. # Required. The tables the discovery cadence applies to. The first target with a matching filter will be the one to apply to a table.
              &quot;otherTables&quot;: { # Catch-all for all other tables not specified by other filters. Should always be last, except for single-table configurations, which will only have a TableReference target. # Catch-all. This should always be the last filter in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically.
              },
              &quot;tableReference&quot;: { # Message defining the location of a BigQuery table with the projectId inferred from the parent project. # The table to scan. Discovery configurations including this can only include one DiscoveryTarget (the DiscoveryTarget with this TableReference).
                &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
                &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, the project ID is inferred from the parent project. This field is required if the parent resource is an organization.
                &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
              },
              &quot;tables&quot;: { # Specifies a collection of BigQuery tables. Used for Discovery. # A specific set of tables for this filter to apply to. A table collection must be specified in only one filter per config. If a table id or dataset is empty, Cloud DLP assumes all tables in that collection must be profiled. Must specify a project ID.
                &quot;includeRegexes&quot;: { # A collection of regular expressions to determine what tables to match against. # A collection of regular expressions to match a BigQuery table against.
                  &quot;patterns&quot;: [ # A single BigQuery regular expression pattern to match against one or more tables, datasets, or projects that contain BigQuery tables.
                    { # A pattern to match against one or more tables, datasets, or projects that contain BigQuery tables. At least one pattern must be specified. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub.
                      &quot;datasetIdRegex&quot;: &quot;A String&quot;, # If unset, this property matches all datasets.
                      &quot;projectIdRegex&quot;: &quot;A String&quot;, # For organizations, if unset, will match all projects. Has no effect for data profile configurations created within a project.
                      &quot;tableIdRegex&quot;: &quot;A String&quot;, # If unset, this property matches all tables.
                    },
                  ],
                },
              },
            },
          },
          &quot;cloudSqlTarget&quot;: { # Target used to match against for discovery with Cloud SQL tables. # Cloud SQL target for Discovery. The first target to match a table will be the one applied.
            &quot;conditions&quot;: { # Requirements that must be true before a table is profiled for the first time. # In addition to matching the filter, these conditions must be true before a profile is generated.
              &quot;databaseEngines&quot;: [ # Optional. Database engines that should be profiled. Optional. Defaults to ALL_SUPPORTED_DATABASE_ENGINES if unspecified.
                &quot;A String&quot;,
              ],
              &quot;types&quot;: [ # Data profiles will only be generated for the database resource types specified in this field. If not specified, defaults to [DATABASE_RESOURCE_TYPE_ALL_SUPPORTED_TYPES].
                &quot;A String&quot;,
              ],
            },
            &quot;disabled&quot;: { # Do not profile the tables. # Disable profiling for database resources that match this filter.
            },
            &quot;filter&quot;: { # Determines what tables will have profiles generated within an organization or project. Includes the ability to filter by regular expression patterns on project ID, location, instance, database, and database resource name. # Required. The tables the discovery cadence applies to. The first target with a matching filter will be the one to apply to a table.
              &quot;collection&quot;: { # Match database resources using regex filters. Examples of database resources are tables, views, and stored procedures. # A specific set of database resources for this filter to apply to.
                &quot;includeRegexes&quot;: { # A collection of regular expressions to determine what database resources to match against. # A collection of regular expressions to match a database resource against.
                  &quot;patterns&quot;: [ # A group of regular expression patterns to match against one or more database resources. Maximum of 100 entries. The sum of all regular expression&#x27;s length can&#x27;t exceed 10 KiB.
                    { # A pattern to match against one or more database resources. At least one pattern must be specified. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub.
                      &quot;databaseRegex&quot;: &quot;A String&quot;, # Regex to test the database name against. If empty, all databases match.
                      &quot;databaseResourceNameRegex&quot;: &quot;A String&quot;, # Regex to test the database resource&#x27;s name against. An example of a database resource name is a table&#x27;s name. Other database resource names like view names could be included in the future. If empty, all database resources match.
                      &quot;instanceRegex&quot;: &quot;A String&quot;, # Regex to test the instance name against. If empty, all instances match.
                      &quot;projectIdRegex&quot;: &quot;A String&quot;, # For organizations, if unset, will match all projects. Has no effect for configurations created within a project.
                    },
                  ],
                },
              },
              &quot;databaseResourceReference&quot;: { # Identifies a single database resource, like a table within a database. # The database resource to scan. Targets including this can only include one target (the target with this database resource reference).
                &quot;database&quot;: &quot;A String&quot;, # Required. Name of a database within the instance.
                &quot;databaseResource&quot;: &quot;A String&quot;, # Required. Name of a database resource, for example, a table within the database.
                &quot;instance&quot;: &quot;A String&quot;, # Required. The instance where this resource is located. For example: Cloud SQL instance ID.
                &quot;projectId&quot;: &quot;A String&quot;, # Required. If within a project-level config, then this must match the config&#x27;s project ID.
              },
              &quot;others&quot;: { # Match database resources not covered by any other filter. # Catch-all. This should always be the last target in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically.
              },
            },
            &quot;generationCadence&quot;: { # How often existing tables should have their profiles refreshed. New tables are scanned as quickly as possible depending on system capacity. # How often and when to update profiles. New tables that match both the filter and conditions are scanned as quickly as possible depending on system capacity.
              &quot;inspectTemplateModifiedCadence&quot;: { # The cadence at which to update data profiles when the inspection rules defined by the `InspectTemplate` change. # Governs when to update data profiles when the inspection rules defined by the `InspectTemplate` change. If not set, changing the template will not cause a data profile to update.
                &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when the template is modified. Defaults to never.
              },
              &quot;refreshFrequency&quot;: &quot;A String&quot;, # Data changes (non-schema changes) in Cloud SQL tables can&#x27;t trigger reprofiling. If you set this field, profiles are refreshed at this frequency regardless of whether the underlying tables have changed. Defaults to never.
              &quot;schemaModifiedCadence&quot;: { # How frequently to modify the profile when the table&#x27;s schema is modified. # When to reprofile if the schema has changed.
                &quot;frequency&quot;: &quot;A String&quot;, # Frequency to regenerate data profiles when the schema is modified. Defaults to monthly.
                &quot;types&quot;: [ # The types of schema modifications to consider. Defaults to NEW_COLUMNS.
                  &quot;A String&quot;,
                ],
              },
            },
          },
          &quot;cloudStorageTarget&quot;: { # Target used to match against for discovery with Cloud Storage buckets. # Cloud Storage target for Discovery. The first target to match a table will be the one applied.
            &quot;conditions&quot;: { # Requirements that must be true before a file store is scanned in discovery for the first time. There is an AND relationship between the top-level attributes. # Optional. In addition to matching the filter, these conditions must be true before a profile is generated.
              &quot;cloudStorageConditions&quot;: { # Requirements that must be true before a Cloud Storage bucket or object is scanned in discovery for the first time. There is an AND relationship between the top-level attributes. # Optional. Cloud Storage conditions.
                &quot;includedBucketAttributes&quot;: [ # Required. Only objects with the specified attributes will be scanned. Defaults to [ALL_SUPPORTED_BUCKETS] if unset.
                  &quot;A String&quot;,
                ],
                &quot;includedObjectAttributes&quot;: [ # Required. Only objects with the specified attributes will be scanned. If an object has one of the specified attributes but is inside an excluded bucket, it will not be scanned. Defaults to [ALL_SUPPORTED_OBJECTS]. A profile will be created even if no objects match the included_object_attributes.
                  &quot;A String&quot;,
                ],
              },
              &quot;createdAfter&quot;: &quot;A String&quot;, # Optional. File store must have been created after this date. Used to avoid backfilling.
              &quot;minAge&quot;: &quot;A String&quot;, # Optional. Minimum age a file store must have. If set, the value must be 1 hour or greater.
            },
            &quot;disabled&quot;: { # Do not profile the tables. # Optional. Disable profiling for buckets that match this filter.
            },
            &quot;filter&quot;: { # Determines which buckets will have profiles generated within an organization or project. Includes the ability to filter by regular expression patterns on project ID and bucket name. # Required. The buckets the generation_cadence applies to. The first target with a matching filter will be the one to apply to a bucket.
              &quot;cloudStorageResourceReference&quot;: { # Identifies a single Cloud Storage bucket. # Optional. The bucket to scan. Targets including this can only include one target (the target with this bucket). This enables profiling the contents of a single bucket, while the other options allow for easy profiling of many bucets within a project or an organization.
                &quot;bucketName&quot;: &quot;A String&quot;, # Required. The bucket to scan.
                &quot;projectId&quot;: &quot;A String&quot;, # Required. If within a project-level config, then this must match the config&#x27;s project id.
              },
              &quot;collection&quot;: { # Match file stores (e.g. buckets) using filters. # Optional. A specific set of buckets for this filter to apply to.
                &quot;includeRegexes&quot;: { # A collection of regular expressions to determine what file store to match against. # Optional. A collection of regular expressions to match a file store against.
                  &quot;patterns&quot;: [ # Required. The group of regular expression patterns to match against one or more file stores. Maximum of 100 entries. The sum of all regular expression&#x27;s length can&#x27;t exceed 10 KiB.
                    { # A pattern to match against one or more file stores.
                      &quot;cloudStorageRegex&quot;: { # A pattern to match against one or more file stores. At least one pattern must be specified. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub. # Optional. Regex for Cloud Storage.
                        &quot;bucketNameRegex&quot;: &quot;A String&quot;, # Optional. Regex to test the bucket name against. If empty, all buckets match. Example: &quot;marketing2021&quot; or &quot;(marketing)\d{4}&quot; will both match the bucket gs://marketing2021
                        &quot;projectIdRegex&quot;: &quot;A String&quot;, # Optional. For organizations, if unset, will match all projects.
                      },
                    },
                  ],
                },
                &quot;includeTags&quot;: { # Tags to match against for filtering. # Optional. To be included in the collection, a resource must meet all of the following requirements: - If tag filters are provided, match all provided tag filters. - If one or more patterns are specified, match at least one pattern. For a resource to match the tag filters, the resource must have all of the provided tags attached. Tags refer to Resource Manager tags bound to the resource or its ancestors. For more information, see [Manage schedules](https://cloud.google.com/sensitive-data-protection/docs/profile-project-cloud-storage#manage-schedules).
                  &quot;tagFilters&quot;: [ # Required. A resource must match ALL of the specified tag filters to be included in the collection.
                    { # A single tag to filter against.
                      &quot;namespacedTagKey&quot;: &quot;A String&quot;, # The namespaced name for the tag key. Must be in the format `{parent_id}/{tag_key_short_name}`, for example, &quot;123456/sensitive&quot; for an organization parent, or &quot;my-project/sensitive&quot; for a project parent.
                      &quot;namespacedTagValue&quot;: &quot;A String&quot;, # The namespaced name for the tag value. Must be in the format `{parent_id}/{tag_key_short_name}/{short_name}`, for example, &quot;123456/environment/prod&quot; for an organization parent, or &quot;my-project/environment/prod&quot; for a project parent.
                    },
                  ],
                },
              },
              &quot;others&quot;: { # Match discovery resources not covered by any other filter. # Optional. Catch-all. This should always be the last target in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically.
              },
            },
            &quot;generationCadence&quot;: { # How often existing buckets should have their profiles refreshed. New buckets are scanned as quickly as possible depending on system capacity. # Optional. How often and when to update profiles. New buckets that match both the filter and conditions are scanned as quickly as possible depending on system capacity.
              &quot;inspectTemplateModifiedCadence&quot;: { # The cadence at which to update data profiles when the inspection rules defined by the `InspectTemplate` change. # Optional. Governs when to update data profiles when the inspection rules defined by the `InspectTemplate` change. If not set, changing the template will not cause a data profile to update.
                &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when the template is modified. Defaults to never.
              },
              &quot;refreshFrequency&quot;: &quot;A String&quot;, # Optional. Data changes in Cloud Storage can&#x27;t trigger reprofiling. If you set this field, profiles are refreshed at this frequency regardless of whether the underlying buckets have changed. Defaults to never.
            },
          },
          &quot;otherCloudTarget&quot;: { # Target used to match against for discovery of resources from other clouds. An [AWS connector in Security Command Center (Enterprise](https://cloud.google.com/security-command-center/docs/connect-scc-to-aws) is required to use this feature. # Other clouds target for discovery. The first target to match a resource will be the one applied.
            &quot;conditions&quot;: { # Requirements that must be true before a resource is profiled for the first time. # Optional. In addition to matching the filter, these conditions must be true before a profile is generated.
              &quot;amazonS3BucketConditions&quot;: { # Amazon S3 bucket conditions. # Amazon S3 bucket conditions.
                &quot;bucketTypes&quot;: [ # Optional. Bucket types that should be profiled. Optional. Defaults to TYPE_ALL_SUPPORTED if unspecified.
                  &quot;A String&quot;,
                ],
                &quot;objectStorageClasses&quot;: [ # Optional. Object classes that should be profiled. Optional. Defaults to ALL_SUPPORTED_CLASSES if unspecified.
                  &quot;A String&quot;,
                ],
              },
              &quot;minAge&quot;: &quot;A String&quot;, # Minimum age a resource must be before Cloud DLP can profile it. Value must be 1 hour or greater.
            },
            &quot;dataSourceType&quot;: { # Message used to identify the type of resource being profiled. # Required. The type of data profiles generated by this discovery target. Supported values are: * aws/s3/bucket
              &quot;dataSource&quot;: &quot;A String&quot;, # An identifying string to the type of resource being profiled. Current values: * google/bigquery/table * google/project * google/sql/table * google/gcs/bucket
            },
            &quot;disabled&quot;: { # Do not profile the tables. # Disable profiling for resources that match this filter.
            },
            &quot;filter&quot;: { # Determines which resources from the other cloud will have profiles generated. Includes the ability to filter by resource names. # Required. The resources that the discovery cadence applies to. The first target with a matching filter will be the one to apply to a resource.
              &quot;collection&quot;: { # Match resources using regex filters. # A collection of resources for this filter to apply to.
                &quot;includeRegexes&quot;: { # A collection of regular expressions to determine what resources to match against. # A collection of regular expressions to match a resource against.
                  &quot;patterns&quot;: [ # A group of regular expression patterns to match against one or more resources. Maximum of 100 entries. The sum of all regular expression&#x27;s length can&#x27;t exceed 10 KiB.
                    { # A pattern to match against one or more resources. At least one pattern must be specified. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub.
                      &quot;amazonS3BucketRegex&quot;: { # Amazon S3 bucket regex. # Regex for Amazon S3 buckets.
                        &quot;awsAccountRegex&quot;: { # AWS account regex. # The AWS account regex.
                          &quot;accountIdRegex&quot;: &quot;A String&quot;, # Optional. Regex to test the AWS account ID against. If empty, all accounts match.
                        },
                        &quot;bucketNameRegex&quot;: &quot;A String&quot;, # Optional. Regex to test the bucket name against. If empty, all buckets match.
                      },
                    },
                  ],
                },
              },
              &quot;others&quot;: { # Match discovery resources not covered by any other filter. # Optional. Catch-all. This should always be the last target in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically.
              },
              &quot;singleResource&quot;: { # Identifies a single resource, like a single Amazon S3 bucket. # The resource to scan. Configs using this filter can only have one target (the target with this single resource reference).
                &quot;amazonS3Bucket&quot;: { # Amazon S3 bucket. # Amazon S3 bucket.
                  &quot;awsAccount&quot;: { # AWS account. # The AWS account.
                    &quot;accountId&quot;: &quot;A String&quot;, # Required. AWS account ID.
                  },
                  &quot;bucketName&quot;: &quot;A String&quot;, # Required. The bucket name.
                },
              },
            },
            &quot;generationCadence&quot;: { # How often existing resources should have their profiles refreshed. New resources are scanned as quickly as possible depending on system capacity. # How often and when to update data profiles. New resources that match both the filter and conditions are scanned as quickly as possible depending on system capacity.
              &quot;inspectTemplateModifiedCadence&quot;: { # The cadence at which to update data profiles when the inspection rules defined by the `InspectTemplate` change. # Optional. Governs when to update data profiles when the inspection rules defined by the `InspectTemplate` change. If not set, changing the template will not cause a data profile to update.
                &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when the template is modified. Defaults to never.
              },
              &quot;refreshFrequency&quot;: &quot;A String&quot;, # Optional. Frequency to update profiles regardless of whether the underlying resource has changes. Defaults to never.
            },
          },
          &quot;secretsTarget&quot;: { # Discovery target for credentials and secrets in cloud resource metadata. This target does not include any filtering or frequency controls. Cloud DLP will scan cloud resource metadata for secrets daily. No inspect template should be included in the discovery config for a security benchmarks scan. Instead, the built-in list of secrets and credentials infoTypes will be used (see https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference#credentials_and_secrets). Credentials and secrets discovered will be reported as vulnerabilities to Security Command Center. # Discovery target that looks for credentials and secrets stored in cloud resource metadata and reports them as vulnerabilities to Security Command Center. Only one target of this type is allowed.
          },
          &quot;vertexDatasetTarget&quot;: { # Target used to match against for discovery with Vertex AI datasets. # Vertex AI dataset target for Discovery. The first target to match a dataset will be the one applied. Note that discovery for Vertex AI can incur Cloud Storage Class B operation charges for storage.objects.get operations and retrieval fees. For more information, see [Cloud Storage pricing](https://cloud.google.com/storage/pricing#price-tables). Note that discovery for Vertex AI dataset will not be able to scan images unless DiscoveryConfig.processing_location.image_fallback_location has multi_region_processing or global_processing configured.
            &quot;conditions&quot;: { # Requirements that must be true before a dataset is profiled for the first time. # In addition to matching the filter, these conditions must be true before a profile is generated.
              &quot;createdAfter&quot;: &quot;A String&quot;, # Vertex AI dataset must have been created after this date. Used to avoid backfilling.
              &quot;minAge&quot;: &quot;A String&quot;, # Minimum age a Vertex AI dataset must have. If set, the value must be 1 hour or greater.
            },
            &quot;disabled&quot;: { # Do not profile the tables. # Disable profiling for datasets that match this filter.
            },
            &quot;filter&quot;: { # Determines what datasets will have profiles generated within an organization or project. Includes the ability to filter by regular expression patterns on project ID or dataset regex. # Required. The datasets the discovery cadence applies to. The first target with a matching filter will be the one to apply to a dataset.
              &quot;collection&quot;: { # Match dataset resources using regex filters. # A specific set of Vertex AI datasets for this filter to apply to.
                &quot;vertexDatasetRegexes&quot;: { # A collection of regular expressions to determine what datasets to match against. # The regex used to filter dataset resources.
                  &quot;patterns&quot;: [ # Required. The group of regular expression patterns to match against one or more datasets. Maximum of 100 entries. The sum of the lengths of all regular expressions can&#x27;t exceed 10 KiB.
                    { # A pattern to match against one or more dataset resources.
                      &quot;projectIdRegex&quot;: &quot;A String&quot;, # For organizations, if unset, will match all projects. Has no effect for configurations created within a project.
                    },
                  ],
                },
              },
              &quot;others&quot;: { # Match discovery resources not covered by any other filter. # Catch-all. This should always be the last target in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically.
              },
              &quot;vertexDatasetResourceReference&quot;: { # Identifies a single Vertex AI resource. Currently only datasets are supported. # The dataset resource to scan. Targets including this can only include one target (the target with this dataset resource reference).
                &quot;datasetResourceName&quot;: &quot;A String&quot;, # Required. The name of the Vertex AI resource. If set within a project-level configuration, the specified resource must be within the project. Examples: * `projects/{project}/locations/{location}/datasets/{dataset}`
              },
            },
            &quot;generationCadence&quot;: { # How often existing datasets should have their profiles refreshed. New datasets are scanned as quickly as possible depending on system capacity. # How often and when to update profiles. New datasets that match both the filter and conditions are scanned as quickly as possible depending on system capacity.
              &quot;inspectTemplateModifiedCadence&quot;: { # The cadence at which to update data profiles when the inspection rules defined by the `InspectTemplate` change. # Governs when to update data profiles when the inspection rules defined by the `InspectTemplate` change. If not set, changing the template will not cause a data profile to be updated.
                &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when the template is modified. Defaults to never.
              },
              &quot;refreshFrequency&quot;: &quot;A String&quot;, # If you set this field, profiles are refreshed at this frequency regardless of whether the underlying datasets have changed. Defaults to never.
            },
          },
        },
      ],
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of a DiscoveryConfig.
    },
    &quot;inspectConfig&quot;: { # Configuration description of the scanning process. When used with redactContent only info_types and min_likelihood are currently used. # A copy of the inspection config used to generate this profile. This is a copy of the inspect_template specified in `DataProfileJobConfig`.
      &quot;contentOptions&quot;: [ # Deprecated and unused.
        &quot;A String&quot;,
      ],
      &quot;customInfoTypes&quot;: [ # CustomInfoTypes provided by the user. See https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes to learn more.
        { # Custom information type provided by the user. Used to find domain-specific sensitive information configurable to the data in question.
          &quot;detectionRules&quot;: [ # Set of detection rules to apply to all findings of this CustomInfoType. Rules are applied in order that they are specified. Not supported for the `surrogate_type` CustomInfoType.
            { # Deprecated; use `InspectionRuleSet` instead. Rule for modifying a `CustomInfoType` to alter behavior under certain circumstances, depending on the specific details of the rule. Not supported for the `surrogate_type` custom infoType.
              &quot;hotwordRule&quot;: { # The rule that adjusts the likelihood of findings within a certain proximity of hotwords. # Hotword-based detection rule.
                &quot;hotwordRegex&quot;: { # Message defining a custom regular expression. # Regular expression pattern defining what qualifies as a hotword.
                  &quot;groupIndexes&quot;: [ # The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included.
                    42,
                  ],
                  &quot;pattern&quot;: &quot;A String&quot;, # Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub.
                },
                &quot;likelihoodAdjustment&quot;: { # Message for specifying an adjustment to the likelihood of a finding as part of a detection rule. # Likelihood adjustment to apply to all matching findings.
                  &quot;fixedLikelihood&quot;: &quot;A String&quot;, # Set the likelihood of a finding to a fixed value.
                  &quot;relativeLikelihood&quot;: 42, # Increase or decrease the likelihood by the specified number of levels. For example, if a finding would be `POSSIBLE` without the detection rule and `relative_likelihood` is 1, then it is upgraded to `LIKELY`, while a value of -1 would downgrade it to `UNLIKELY`. Likelihood may never drop below `VERY_UNLIKELY` or exceed `VERY_LIKELY`, so applying an adjustment of 1 followed by an adjustment of -1 when base likelihood is `VERY_LIKELY` will result in a final likelihood of `LIKELY`.
                },
                &quot;proximity&quot;: { # Message for specifying a window around a finding to apply a detection rule. # Range of characters within which the entire hotword must reside. The total length of the window cannot exceed 1000 characters. The finding itself will be included in the window, so that hotwords can be used to match substrings of the finding itself. Suppose you want Cloud DLP to promote the likelihood of the phone number regex &quot;\(\d{3}\) \d{3}-\d{4}&quot; if the area code is known to be the area code of a company&#x27;s office. In this case, use the hotword regex &quot;\(xxx\)&quot;, where &quot;xxx&quot; is the area code in question. For tabular data, if you want to modify the likelihood of an entire column of findngs, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes-likelihood#match-column-values).
                  &quot;windowAfter&quot;: 42, # Number of characters after the finding to consider.
                  &quot;windowBefore&quot;: 42, # Number of characters before the finding to consider. For tabular data, if you want to modify the likelihood of an entire column of findngs, set this to 1. For more information, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes-likelihood#match-column-values).
                },
              },
            },
          ],
          &quot;dictionary&quot;: { # Custom information type based on a dictionary of words or phrases. This can be used to match sensitive information specific to the data, such as a list of employee IDs or job titles. Dictionary words are case-insensitive and all characters other than letters and digits in the unicode [Basic Multilingual Plane](https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane) will be replaced with whitespace when scanning for matches, so the dictionary phrase &quot;Sam Johnson&quot; will match all three phrases &quot;sam johnson&quot;, &quot;Sam, Johnson&quot;, and &quot;Sam (Johnson)&quot;. Additionally, the characters surrounding any match must be of a different type than the adjacent characters within the word, so letters must be next to non-letters and digits next to non-digits. For example, the dictionary word &quot;jen&quot; will match the first three letters of the text &quot;jen123&quot; but will return no matches for &quot;jennifer&quot;. Dictionary words containing a large number of characters that are not letters or digits may result in unexpected findings because such characters are treated as whitespace. The [limits](https://cloud.google.com/sensitive-data-protection/limits) page contains details about the size limits of dictionaries. For dictionaries that do not fit within these constraints, consider using `LargeCustomDictionaryConfig` in the `StoredInfoType` API. # A list of phrases to detect as a CustomInfoType.
            &quot;cloudStoragePath&quot;: { # Message representing a single file or path in Cloud Storage. # Newline-delimited file of words in Cloud Storage. Only a single file is accepted.
              &quot;path&quot;: &quot;A String&quot;, # A URL representing a file or path (no wildcards) in Cloud Storage. Example: `gs://[BUCKET_NAME]/dictionary.txt`
            },
            &quot;wordList&quot;: { # Message defining a list of words or phrases to search for in the data. # List of words or phrases to search for.
              &quot;words&quot;: [ # Words or phrases defining the dictionary. The dictionary must contain at least one phrase and every phrase must contain at least 2 characters that are letters or digits. [required]
                &quot;A String&quot;,
              ],
            },
          },
          &quot;exclusionType&quot;: &quot;A String&quot;, # If set to EXCLUSION_TYPE_EXCLUDE this infoType will not cause a finding to be returned. It still can be used for rules matching.
          &quot;infoType&quot;: { # Type of information detected by the API. # CustomInfoType can either be a new infoType, or an extension of built-in infoType, when the name matches one of existing infoTypes and that infoType is specified in `InspectContent.info_types` field. Specifying the latter adds findings to the one detected by the system. If built-in info type is not specified in `InspectContent.info_types` list then the name is treated as a custom info type.
            &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
            &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
              &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
            },
            &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
          },
          &quot;likelihood&quot;: &quot;A String&quot;, # Likelihood to return for this CustomInfoType. This base value can be altered by a detection rule if the finding meets the criteria specified by the rule. Defaults to `VERY_LIKELY` if not specified.
          &quot;regex&quot;: { # Message defining a custom regular expression. # Regular expression based CustomInfoType.
            &quot;groupIndexes&quot;: [ # The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included.
              42,
            ],
            &quot;pattern&quot;: &quot;A String&quot;, # Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub.
          },
          &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Sensitivity for this CustomInfoType. If this CustomInfoType extends an existing InfoType, the sensitivity here will take precedence over that of the original InfoType. If unset for a CustomInfoType, it will default to HIGH. This only applies to data profiling.
            &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
          },
          &quot;storedType&quot;: { # A reference to a StoredInfoType to use with scanning. # Load an existing `StoredInfoType` resource for use in `InspectDataSource`. Not currently supported in `InspectContent`.
            &quot;createTime&quot;: &quot;A String&quot;, # Timestamp indicating when the version of the `StoredInfoType` used for inspection was created. Output-only field, populated by the system.
            &quot;name&quot;: &quot;A String&quot;, # Resource name of the requested `StoredInfoType`, for example `organizations/433245324/storedInfoTypes/432452342` or `projects/project-id/storedInfoTypes/432452342`.
          },
          &quot;surrogateType&quot;: { # Message for detecting output from deidentification transformations such as [`CryptoReplaceFfxFpeConfig`](https://cloud.google.com/sensitive-data-protection/docs/reference/rest/v2/organizations.deidentifyTemplates#cryptoreplaceffxfpeconfig). These types of transformations are those that perform pseudonymization, thereby producing a &quot;surrogate&quot; as output. This should be used in conjunction with a field on the transformation such as `surrogate_info_type`. This CustomInfoType does not support the use of `detection_rules`. # Message for detecting output from deidentification transformations that support reversing.
          },
        },
      ],
      &quot;excludeInfoTypes&quot;: True or False, # When true, excludes type information of the findings. This is not used for data profiling.
      &quot;includeQuote&quot;: True or False, # When true, a contextual quote from the data that triggered a finding is included in the response; see Finding.quote. This is not used for data profiling.
      &quot;infoTypes&quot;: [ # Restricts what info_types to look for. The values must correspond to InfoType values returned by ListInfoTypes or listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference. When no InfoTypes or CustomInfoTypes are specified in a request, the system may automatically choose a default list of detectors to run, which may change over time. If you need precise control and predictability as to what detectors are run you should specify specific InfoTypes listed in the reference, otherwise a default list will be used, which may change over time.
        { # Type of information detected by the API.
          &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
          &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
            &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
          },
          &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
        },
      ],
      &quot;limits&quot;: { # Configuration to control the number of findings returned for inspection. This is not used for de-identification or data profiling. When redacting sensitive data from images, finding limits don&#x27;t apply. They can cause unexpected or inconsistent results, where only some data is redacted. Don&#x27;t include finding limits in RedactImage requests. Otherwise, Cloud DLP returns an error. # Configuration to control the number of findings returned. This is not used for data profiling. When redacting sensitive data from images, finding limits don&#x27;t apply. They can cause unexpected or inconsistent results, where only some data is redacted. Don&#x27;t include finding limits in RedactImage requests. Otherwise, Cloud DLP returns an error. When set within an InspectJobConfig, the specified maximum values aren&#x27;t hard limits. If an inspection job reaches these limits, the job ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns can be multiple times higher than these maximum values.
        &quot;maxFindingsPerInfoType&quot;: [ # Configuration of findings limit given for specified infoTypes.
          { # Max findings configuration per infoType, per content item or long running DlpJob.
            &quot;infoType&quot;: { # Type of information detected by the API. # Type of information the findings limit applies to. Only one limit per info_type should be provided. If InfoTypeLimit does not have an info_type, the DLP API applies the limit against all info_types that are found but not specified in another InfoTypeLimit.
              &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
              &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
                &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
              },
              &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
            },
            &quot;maxFindings&quot;: 42, # Max findings limit for the given infoType.
          },
        ],
        &quot;maxFindingsPerItem&quot;: 42, # Max number of findings that are returned for each item scanned. When set within an InspectContentRequest, this field is ignored. This value isn&#x27;t a hard limit. If the number of findings for an item reaches this limit, the inspection of that item ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns for the item can be multiple times higher than this value.
        &quot;maxFindingsPerRequest&quot;: 42, # Max number of findings that are returned per request or job. If you set this field in an InspectContentRequest, the resulting maximum value is the value that you set or 3,000, whichever is lower. This value isn&#x27;t a hard limit. If an inspection reaches this limit, the inspection ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns can be multiple times higher than this value.
      },
      &quot;minLikelihood&quot;: &quot;A String&quot;, # Only returns findings equal to or above this threshold. The default is POSSIBLE. In general, the highest likelihood setting yields the fewest findings in results and the lowest chance of a false positive. For more information, see [Match likelihood](https://cloud.google.com/sensitive-data-protection/docs/likelihood).
      &quot;minLikelihoodPerInfoType&quot;: [ # Minimum likelihood per infotype. For each infotype, a user can specify a minimum likelihood. The system only returns a finding if its likelihood is above this threshold. If this field is not set, the system uses the InspectConfig min_likelihood.
        { # Configuration for setting a minimum likelihood per infotype. Used to customize the minimum likelihood level for specific infotypes in the request. For example, use this if you want to lower the precision for PERSON_NAME without lowering the precision for the other infotypes in the request.
          &quot;infoType&quot;: { # Type of information detected by the API. # Type of information the likelihood threshold applies to. Only one likelihood per info_type should be provided. If InfoTypeLikelihood does not have an info_type, the configuration fails.
            &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
            &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
              &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
            },
            &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
          },
          &quot;minLikelihood&quot;: &quot;A String&quot;, # Only returns findings equal to or above this threshold. This field is required or else the configuration fails.
        },
      ],
      &quot;ruleSet&quot;: [ # Set of rules to apply to the findings for this InspectConfig. Exclusion rules, contained in the set are executed in the end, other rules are executed in the order they are specified for each info type.
        { # Rule set for modifying a set of infoTypes to alter behavior under certain circumstances, depending on the specific details of the rules within the set.
          &quot;infoTypes&quot;: [ # List of infoTypes this rule set is applied to.
            { # Type of information detected by the API.
              &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
              &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
                &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
              },
              &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
            },
          ],
          &quot;rules&quot;: [ # Set of rules to be applied to infoTypes. The rules are applied in order.
            { # A single inspection rule to be applied to infoTypes, specified in `InspectionRuleSet`.
              &quot;exclusionRule&quot;: { # The rule that specifies conditions when findings of infoTypes specified in `InspectionRuleSet` are removed from results. # Exclusion rule.
                &quot;dictionary&quot;: { # Custom information type based on a dictionary of words or phrases. This can be used to match sensitive information specific to the data, such as a list of employee IDs or job titles. Dictionary words are case-insensitive and all characters other than letters and digits in the unicode [Basic Multilingual Plane](https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane) will be replaced with whitespace when scanning for matches, so the dictionary phrase &quot;Sam Johnson&quot; will match all three phrases &quot;sam johnson&quot;, &quot;Sam, Johnson&quot;, and &quot;Sam (Johnson)&quot;. Additionally, the characters surrounding any match must be of a different type than the adjacent characters within the word, so letters must be next to non-letters and digits next to non-digits. For example, the dictionary word &quot;jen&quot; will match the first three letters of the text &quot;jen123&quot; but will return no matches for &quot;jennifer&quot;. Dictionary words containing a large number of characters that are not letters or digits may result in unexpected findings because such characters are treated as whitespace. The [limits](https://cloud.google.com/sensitive-data-protection/limits) page contains details about the size limits of dictionaries. For dictionaries that do not fit within these constraints, consider using `LargeCustomDictionaryConfig` in the `StoredInfoType` API. # Dictionary which defines the rule.
                  &quot;cloudStoragePath&quot;: { # Message representing a single file or path in Cloud Storage. # Newline-delimited file of words in Cloud Storage. Only a single file is accepted.
                    &quot;path&quot;: &quot;A String&quot;, # A URL representing a file or path (no wildcards) in Cloud Storage. Example: `gs://[BUCKET_NAME]/dictionary.txt`
                  },
                  &quot;wordList&quot;: { # Message defining a list of words or phrases to search for in the data. # List of words or phrases to search for.
                    &quot;words&quot;: [ # Words or phrases defining the dictionary. The dictionary must contain at least one phrase and every phrase must contain at least 2 characters that are letters or digits. [required]
                      &quot;A String&quot;,
                    ],
                  },
                },
                &quot;excludeByHotword&quot;: { # The rule to exclude findings based on a hotword. For record inspection of tables, column names are considered hotwords. An example of this is to exclude a finding if it belongs to a BigQuery column that matches a specific pattern. # Drop if the hotword rule is contained in the proximate context. For tabular data, the context includes the column name.
                  &quot;hotwordRegex&quot;: { # Message defining a custom regular expression. # Regular expression pattern defining what qualifies as a hotword.
                    &quot;groupIndexes&quot;: [ # The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included.
                      42,
                    ],
                    &quot;pattern&quot;: &quot;A String&quot;, # Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub.
                  },
                  &quot;proximity&quot;: { # Message for specifying a window around a finding to apply a detection rule. # Range of characters within which the entire hotword must reside. The total length of the window cannot exceed 1000 characters. The windowBefore property in proximity should be set to 1 if the hotword needs to be included in a column header.
                    &quot;windowAfter&quot;: 42, # Number of characters after the finding to consider.
                    &quot;windowBefore&quot;: 42, # Number of characters before the finding to consider. For tabular data, if you want to modify the likelihood of an entire column of findngs, set this to 1. For more information, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes-likelihood#match-column-values).
                  },
                },
                &quot;excludeInfoTypes&quot;: { # List of excluded infoTypes. # Set of infoTypes for which findings would affect this rule.
                  &quot;infoTypes&quot;: [ # InfoType list in ExclusionRule rule drops a finding when it overlaps or contained within with a finding of an infoType from this list. For example, for `InspectionRuleSet.info_types` containing &quot;PHONE_NUMBER&quot;` and `exclusion_rule` containing `exclude_info_types.info_types` with &quot;EMAIL_ADDRESS&quot; the phone number findings are dropped if they overlap with EMAIL_ADDRESS finding. That leads to &quot;555-222-2222@example.org&quot; to generate only a single finding, namely email address.
                    { # Type of information detected by the API.
                      &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
                      &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
                        &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
                      },
                      &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
                    },
                  ],
                },
                &quot;matchingType&quot;: &quot;A String&quot;, # How the rule is applied, see MatchingType documentation for details.
                &quot;regex&quot;: { # Message defining a custom regular expression. # Regular expression which defines the rule.
                  &quot;groupIndexes&quot;: [ # The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included.
                    42,
                  ],
                  &quot;pattern&quot;: &quot;A String&quot;, # Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub.
                },
              },
              &quot;hotwordRule&quot;: { # The rule that adjusts the likelihood of findings within a certain proximity of hotwords. # Hotword-based detection rule.
                &quot;hotwordRegex&quot;: { # Message defining a custom regular expression. # Regular expression pattern defining what qualifies as a hotword.
                  &quot;groupIndexes&quot;: [ # The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included.
                    42,
                  ],
                  &quot;pattern&quot;: &quot;A String&quot;, # Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub.
                },
                &quot;likelihoodAdjustment&quot;: { # Message for specifying an adjustment to the likelihood of a finding as part of a detection rule. # Likelihood adjustment to apply to all matching findings.
                  &quot;fixedLikelihood&quot;: &quot;A String&quot;, # Set the likelihood of a finding to a fixed value.
                  &quot;relativeLikelihood&quot;: 42, # Increase or decrease the likelihood by the specified number of levels. For example, if a finding would be `POSSIBLE` without the detection rule and `relative_likelihood` is 1, then it is upgraded to `LIKELY`, while a value of -1 would downgrade it to `UNLIKELY`. Likelihood may never drop below `VERY_UNLIKELY` or exceed `VERY_LIKELY`, so applying an adjustment of 1 followed by an adjustment of -1 when base likelihood is `VERY_LIKELY` will result in a final likelihood of `LIKELY`.
                },
                &quot;proximity&quot;: { # Message for specifying a window around a finding to apply a detection rule. # Range of characters within which the entire hotword must reside. The total length of the window cannot exceed 1000 characters. The finding itself will be included in the window, so that hotwords can be used to match substrings of the finding itself. Suppose you want Cloud DLP to promote the likelihood of the phone number regex &quot;\(\d{3}\) \d{3}-\d{4}&quot; if the area code is known to be the area code of a company&#x27;s office. In this case, use the hotword regex &quot;\(xxx\)&quot;, where &quot;xxx&quot; is the area code in question. For tabular data, if you want to modify the likelihood of an entire column of findngs, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes-likelihood#match-column-values).
                  &quot;windowAfter&quot;: 42, # Number of characters after the finding to consider.
                  &quot;windowBefore&quot;: 42, # Number of characters before the finding to consider. For tabular data, if you want to modify the likelihood of an entire column of findngs, set this to 1. For more information, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes-likelihood#match-column-values).
                },
              },
            },
          ],
        },
      ],
    },
    &quot;inspectTemplateModifiedTime&quot;: &quot;A String&quot;, # Timestamp when the template was modified
    &quot;inspectTemplateName&quot;: &quot;A String&quot;, # Name of the inspection template used to generate this profile
  },
  &quot;createTime&quot;: &quot;A String&quot;, # The time at which the table was created.
  &quot;dataRiskLevel&quot;: { # Score is a summary of all elements in the data profile. A higher number means more risk. # The data risk level of this table.
    &quot;score&quot;: &quot;A String&quot;, # The score applied to the resource.
  },
  &quot;dataSourceType&quot;: { # Message used to identify the type of resource being profiled. # The resource type that was profiled.
    &quot;dataSource&quot;: &quot;A String&quot;, # An identifying string to the type of resource being profiled. Current values: * google/bigquery/table * google/project * google/sql/table * google/gcs/bucket
  },
  &quot;datasetId&quot;: &quot;A String&quot;, # If the resource is BigQuery, the dataset ID.
  &quot;datasetLocation&quot;: &quot;A String&quot;, # If supported, the location where the dataset&#x27;s data is stored. See https://cloud.google.com/bigquery/docs/locations for supported locations.
  &quot;datasetProjectId&quot;: &quot;A String&quot;, # The Google Cloud project ID that owns the resource.
  &quot;domains&quot;: [ # Domains associated with the profile.
    { # A domain represents a thematic category that a data profile can fall under.
      &quot;category&quot;: &quot;A String&quot;, # A domain category that this profile is related to.
      &quot;signals&quot;: [ # The collection of signals that influenced selection of the category.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;encryptionStatus&quot;: &quot;A String&quot;, # How the table is encrypted.
  &quot;expirationTime&quot;: &quot;A String&quot;, # Optional. The time when this table expires.
  &quot;failedColumnCount&quot;: &quot;A String&quot;, # The number of columns skipped in the table because of an error.
  &quot;fullResource&quot;: &quot;A String&quot;, # The Cloud Asset Inventory resource that was profiled in order to generate this TableDataProfile. https://cloud.google.com/apis/design/resource_names#full_resource_name
  &quot;lastModifiedTime&quot;: &quot;A String&quot;, # The time when this table was last modified
  &quot;name&quot;: &quot;A String&quot;, # The name of the profile.
  &quot;otherInfoTypes&quot;: [ # Other infoTypes found in this table&#x27;s data.
    { # Infotype details for other infoTypes found within a column.
      &quot;estimatedPrevalence&quot;: 42, # Approximate percentage of non-null rows that contained data detected by this infotype.
      &quot;excludedFromAnalysis&quot;: True or False, # Whether this infoType was excluded from sensitivity and risk analysis due to factors such as low prevalence (subject to change).
      &quot;infoType&quot;: { # Type of information detected by the API. # The other infoType.
        &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
        &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
          &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
        },
        &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
      },
    },
  ],
  &quot;predictedInfoTypes&quot;: [ # The infoTypes predicted from this table&#x27;s data.
    { # The infoType details for this column.
      &quot;estimatedPrevalence&quot;: 42, # Not populated for predicted infotypes.
      &quot;infoType&quot;: { # Type of information detected by the API. # The infoType.
        &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
        &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
          &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
        },
        &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
      },
    },
  ],
  &quot;profileLastGenerated&quot;: &quot;A String&quot;, # The last time the profile was generated.
  &quot;profileStatus&quot;: { # Success or errors for the profile generation. # Success or error status from the most recent profile generation attempt. May be empty if the profile is still being generated.
    &quot;status&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Profiling status code and optional message. The `status.code` value is 0 (default value) for OK.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    },
    &quot;timestamp&quot;: &quot;A String&quot;, # Time when the profile generation status was updated
  },
  &quot;projectDataProfile&quot;: &quot;A String&quot;, # The resource name of the project data profile for this table.
  &quot;relatedResources&quot;: [ # Resources related to this profile.
    { # A related resource. Examples: * The source BigQuery table for a Vertex AI dataset. * The source Cloud Storage bucket for a Vertex AI dataset.
      &quot;fullResource&quot;: &quot;A String&quot;, # The full resource name of the related resource.
    },
  ],
  &quot;resourceLabels&quot;: { # The labels applied to the resource at the time the profile was generated.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;resourceVisibility&quot;: &quot;A String&quot;, # How broadly a resource has been shared.
  &quot;rowCount&quot;: &quot;A String&quot;, # Number of rows in the table when the profile was generated. This will not be populated for BigLake tables.
  &quot;sampleFindingsTable&quot;: { # Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`. # The BigQuery table to which the sample findings are written.
    &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
    &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, project ID is inferred from the API call.
    &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
  },
  &quot;scannedColumnCount&quot;: &quot;A String&quot;, # The number of columns profiled in the table.
  &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # The sensitivity score of this table.
    &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
  },
  &quot;state&quot;: &quot;A String&quot;, # State of a profile. This will always be set to DONE when the table data profile is written to another service like BigQuery or Pub/Sub.
  &quot;tableId&quot;: &quot;A String&quot;, # The table ID.
  &quot;tableSizeBytes&quot;: &quot;A String&quot;, # The size of the table when the profile was generated.
  &quot;tags&quot;: [ # The tags attached to the table, including any tags attached during profiling. Because tags are attached to Cloud SQL instances rather than Cloud SQL tables, this field is empty for Cloud SQL table profiles.
    { # A tag associated with a resource.
      &quot;key&quot;: &quot;A String&quot;, # The key of a tag key-value pair. For Google Cloud resources, this is the resource name of the key, for example, &quot;tagKeys/123456&quot;.
      &quot;namespacedTagValue&quot;: &quot;A String&quot;, # The namespaced name for the tag value to attach to Google Cloud resources. Must be in the format `{parent_id}/{tag_key_short_name}/{short_name}`, for example, &quot;123456/environment/prod&quot; for an organization parent, or &quot;my-project/environment/prod&quot; for a project parent. This is only set for Google Cloud resources.
      &quot;value&quot;: &quot;A String&quot;, # The value of a tag key-value pair. For Google Cloud resources, this is the resource name of the value, for example, &quot;tagValues/123456&quot;.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists table data profiles for an organization.

Args:
  parent: string, Required. Resource name of the organization or project, for example `organizations/433245324/locations/europe` or `projects/project-id/locations/asia`. (required)
  filter: string, 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: - `project_id`: The Google Cloud project ID - `dataset_id`: The BigQuery dataset ID - `table_id`: The ID of the BigQuery table - `sensitivity_level`: HIGH|MODERATE|LOW - `data_risk_level`: HIGH|MODERATE|LOW - `resource_visibility`: PUBLIC|RESTRICTED - `status_code`: an RPC status code as defined in https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto - `profile_last_generated`: Date and time the profile was last generated * The operator must be `=` or `!=`. The `profile_last_generated` filter also supports `&lt;` and `&gt;`. The syntax is based on https://google.aip.dev/160. Examples: * `project_id = 12345 AND status_code = 1` * `project_id = 12345 AND sensitivity_level = HIGH` * `project_id = 12345 AND resource_visibility = PUBLIC` * `profile_last_generated &lt; &quot;2025-01-01T00:00:00.000Z&quot;` The length of this field should be no more than 500 characters.
  orderBy: string, Comma-separated list of fields to order by, followed by `asc` or `desc` postfix. This list is case insensitive. The default sorting order is ascending. Redundant space characters are insignificant. Only one order field at a time is allowed. Examples: * `project_id asc` * `table_id` * `sensitivity_level desc` Supported fields are: - `project_id`: The Google Cloud project ID. - `dataset_id`: The ID of a BigQuery dataset. - `table_id`: The ID of a BigQuery table. - `sensitivity_level`: How sensitive the data in a table is, at most. - `data_risk_level`: How much risk is associated with this data. - `profile_last_generated`: When the profile was last updated in epoch seconds. - `last_modified`: The last time the resource was modified. - `resource_visibility`: Visibility restriction for this resource. - `row_count`: Number of rows in this resource.
  pageSize: integer, Size of the page. This value can be limited by the server. If zero, server returns a page of max size 100.
  pageToken: string, Page token to continue retrieval.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # List of profiles generated for a given organization or project.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The next page token.
  &quot;tableDataProfiles&quot;: [ # List of data profiles.
    { # The profile for a scanned table.
      &quot;configSnapshot&quot;: { # Snapshot of the configurations used to generate the profile. # The snapshot of the configurations used to generate the profile.
        &quot;dataProfileJob&quot;: { # Configuration for setting up a job to scan resources for profile generation. Only one data profile configuration may exist per organization, folder, or project. The generated data profiles are retained according to the [data retention policy] (https://cloud.google.com/sensitive-data-protection/docs/data-profiles#retention). # A copy of the configuration used to generate this profile. This is deprecated, and the DiscoveryConfig field is preferred moving forward. DataProfileJobConfig will still be written here for Discovery in BigQuery for backwards compatibility, but will not be updated with new fields, while DiscoveryConfig will.
          &quot;dataProfileActions&quot;: [ # Actions to execute at the completion of the job.
            { # A task to execute when a data profile has been generated.
              &quot;exportData&quot;: { # If set, the detailed data profiles will be persisted to the location of your choice whenever updated. # Export data profiles into a provided location.
                &quot;profileTable&quot;: { # Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`. # Store all profiles to BigQuery. * The system will create a new dataset and table for you if none are are provided. The dataset will be named `sensitive_data_protection_discovery` and table will be named `discovery_profiles`. This table will be placed in the same project as the container project running the scan. After the first profile is generated and the dataset and table are created, the discovery scan configuration will be updated with the dataset and table names. * See [Analyze data profiles stored in BigQuery](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles). * See [Sample queries for your BigQuery table](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles#sample_sql_queries). * Data is inserted using [streaming insert](https://cloud.google.com/blog/products/bigquery/life-of-a-bigquery-streaming-insert) and so data may be in the buffer for a period of time after the profile has finished. * The Pub/Sub notification is sent before the streaming buffer is guaranteed to be written, so data may not be instantly visible to queries by the time your topic receives the Pub/Sub notification. * The best practice is to use the same table for an entire organization so that you can take advantage of the [provided Looker reports](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles#use_a_premade_report). If you use VPC Service Controls to define security perimeters, then you must use a separate table for each boundary.
                  &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
                  &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, project ID is inferred from the API call.
                  &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
                },
                &quot;sampleFindingsTable&quot;: { # Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`. # Store sample data profile findings in an existing table or a new table in an existing dataset. Each regeneration will result in new rows in BigQuery. Data is inserted using [streaming insert](https://cloud.google.com/blog/products/bigquery/life-of-a-bigquery-streaming-insert) and so data may be in the buffer for a period of time after the profile has finished.
                  &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
                  &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, project ID is inferred from the API call.
                  &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
                },
              },
              &quot;pubSubNotification&quot;: { # Send a Pub/Sub message into the given Pub/Sub topic to connect other systems to data profile generation. The message payload data will be the byte serialization of `DataProfilePubSubMessage`. # Publish a message into the Pub/Sub topic.
                &quot;detailOfMessage&quot;: &quot;A String&quot;, # How much data to include in the Pub/Sub message. If the user wishes to limit the size of the message, they can use resource_name and fetch the profile fields they wish to. Per table profile (not per column).
                &quot;event&quot;: &quot;A String&quot;, # The type of event that triggers a Pub/Sub. At most one `PubSubNotification` per EventType is permitted.
                &quot;pubsubCondition&quot;: { # A condition for determining whether a Pub/Sub should be triggered. # Conditions (e.g., data risk or sensitivity level) for triggering a Pub/Sub.
                  &quot;expressions&quot;: { # An expression, consisting of an operator and conditions. # An expression.
                    &quot;conditions&quot;: [ # Conditions to apply to the expression.
                      { # A condition consisting of a value.
                        &quot;minimumRiskScore&quot;: &quot;A String&quot;, # The minimum data risk score that triggers the condition.
                        &quot;minimumSensitivityScore&quot;: &quot;A String&quot;, # The minimum sensitivity level that triggers the condition.
                      },
                    ],
                    &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the collection of conditions.
                  },
                },
                &quot;topic&quot;: &quot;A String&quot;, # Cloud Pub/Sub topic to send notifications to. Format is projects/{project}/topics/{topic}.
              },
              &quot;publishToChronicle&quot;: { # Message expressing intention to publish to Google Security Operations. # Publishes generated data profiles to Google Security Operations. For more information, see [Use Sensitive Data Protection data in context-aware analytics](https://cloud.google.com/chronicle/docs/detection/usecase-dlp-high-risk-user-download).
              },
              &quot;publishToDataplexCatalog&quot;: { # Create Dataplex Universal Catalog aspects for profiled resources with the aspect type Sensitive Data Protection Profile. To learn more about aspects, see https://cloud.google.com/sensitive-data-protection/docs/add-aspects. # Publishes a portion of each profile to Dataplex Universal Catalog with the aspect type Sensitive Data Protection Profile.
                &quot;lowerDataRiskToLow&quot;: True or False, # Whether creating a Dataplex Universal Catalog aspect for a profiled resource should lower the risk of the profile for that resource. This also lowers the data risk of resources at the lower levels of the resource hierarchy. For example, reducing the data risk of a table data profile also reduces the data risk of the constituent column data profiles.
              },
              &quot;publishToScc&quot;: { # If set, a summary finding will be created or updated in Security Command Center for each profile. # Publishes findings to Security Command Center for each data profile.
              },
              &quot;tagResources&quot;: { # If set, attaches the [tags] (https://cloud.google.com/resource-manager/docs/tags/tags-overview) provided to profiled resources. Tags support [access control](https://cloud.google.com/iam/docs/tags-access-control). You can conditionally grant or deny access to a resource based on whether the resource has a specific tag. # Tags the profiled resources with the specified tag values.
                &quot;lowerDataRiskToLow&quot;: True or False, # Whether applying a tag to a resource should lower the risk of the profile for that resource. For example, in conjunction with an [IAM deny policy](https://cloud.google.com/iam/docs/deny-overview), you can deny all principals a permission if a tag value is present, mitigating the risk of the resource. This also lowers the data risk of resources at the lower levels of the resource hierarchy. For example, reducing the data risk of a table data profile also reduces the data risk of the constituent column data profiles.
                &quot;profileGenerationsToTag&quot;: [ # The profile generations for which the tag should be attached to resources. If you attach a tag to only new profiles, then if the sensitivity score of a profile subsequently changes, its tag doesn&#x27;t change. By default, this field includes only new profiles. To include both new and updated profiles for tagging, this field should explicitly include both `PROFILE_GENERATION_NEW` and `PROFILE_GENERATION_UPDATE`.
                  &quot;A String&quot;,
                ],
                &quot;tagConditions&quot;: [ # The tags to associate with different conditions.
                  { # The tag to attach to profiles matching the condition. At most one `TagCondition` can be specified per sensitivity level.
                    &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Conditions attaching the tag to a resource on its profile having this sensitivity score.
                      &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
                    },
                    &quot;tag&quot;: { # A value of a tag. # The tag value to attach to resources.
                      &quot;namespacedValue&quot;: &quot;A String&quot;, # The namespaced name for the tag value to attach to resources. Must be in the format `{parent_id}/{tag_key_short_name}/{short_name}`, for example, &quot;123456/environment/prod&quot; for an organization parent, or &quot;my-project/environment/prod&quot; for a project parent.
                    },
                  },
                ],
              },
            },
          ],
          &quot;inspectTemplates&quot;: [ # Detection logic for profile generation. Not all template features are used by profiles. FindingLimits, include_quote and exclude_info_types have no impact on data profiling. Multiple templates may be provided if there is data in multiple regions. At most one template must be specified per-region (including &quot;global&quot;). Each region is scanned using the applicable template. If no region-specific template is specified, but a &quot;global&quot; template is specified, it will be copied to that region and used instead. If no global or region-specific template is provided for a region with data, that region&#x27;s data will not be scanned. For more information, see https://cloud.google.com/sensitive-data-protection/docs/data-profiles#data-residency.
            &quot;A String&quot;,
          ],
          &quot;location&quot;: { # The data that will be profiled. # The data to scan.
            &quot;folderId&quot;: &quot;A String&quot;, # The ID of the folder within an organization to scan.
            &quot;organizationId&quot;: &quot;A String&quot;, # The ID of an organization to scan.
          },
          &quot;otherCloudStartingLocation&quot;: { # The other cloud starting location for discovery. # Must be set only when scanning other clouds.
            &quot;awsLocation&quot;: { # The AWS starting location for discovery. # The AWS starting location for discovery.
              &quot;accountId&quot;: &quot;A String&quot;, # The AWS account ID that this discovery config applies to. Within an AWS organization, you can find the AWS account ID inside an AWS account ARN. Example: arn:{partition}:organizations::{management_account_id}:account/{org_id}/{account_id}
              &quot;allAssetInventoryAssets&quot;: True or False, # All AWS assets stored in Asset Inventory that didn&#x27;t match other AWS discovery configs.
            },
          },
          &quot;projectId&quot;: &quot;A String&quot;, # The project that will run the scan. The DLP service account that exists within this project must have access to all resources that are profiled, and the DLP API must be enabled.
        },
        &quot;discoveryConfig&quot;: { # Configuration for discovery to scan resources for profile generation. Only one discovery configuration may exist per organization, folder, or project. The generated data profiles are retained according to the [data retention policy] (https://cloud.google.com/sensitive-data-protection/docs/data-profiles#retention). # A copy of the configuration used to generate this profile.
          &quot;actions&quot;: [ # Actions to execute at the completion of scanning.
            { # A task to execute when a data profile has been generated.
              &quot;exportData&quot;: { # If set, the detailed data profiles will be persisted to the location of your choice whenever updated. # Export data profiles into a provided location.
                &quot;profileTable&quot;: { # Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`. # Store all profiles to BigQuery. * The system will create a new dataset and table for you if none are are provided. The dataset will be named `sensitive_data_protection_discovery` and table will be named `discovery_profiles`. This table will be placed in the same project as the container project running the scan. After the first profile is generated and the dataset and table are created, the discovery scan configuration will be updated with the dataset and table names. * See [Analyze data profiles stored in BigQuery](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles). * See [Sample queries for your BigQuery table](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles#sample_sql_queries). * Data is inserted using [streaming insert](https://cloud.google.com/blog/products/bigquery/life-of-a-bigquery-streaming-insert) and so data may be in the buffer for a period of time after the profile has finished. * The Pub/Sub notification is sent before the streaming buffer is guaranteed to be written, so data may not be instantly visible to queries by the time your topic receives the Pub/Sub notification. * The best practice is to use the same table for an entire organization so that you can take advantage of the [provided Looker reports](https://cloud.google.com/sensitive-data-protection/docs/analyze-data-profiles#use_a_premade_report). If you use VPC Service Controls to define security perimeters, then you must use a separate table for each boundary.
                  &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
                  &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, project ID is inferred from the API call.
                  &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
                },
                &quot;sampleFindingsTable&quot;: { # Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`. # Store sample data profile findings in an existing table or a new table in an existing dataset. Each regeneration will result in new rows in BigQuery. Data is inserted using [streaming insert](https://cloud.google.com/blog/products/bigquery/life-of-a-bigquery-streaming-insert) and so data may be in the buffer for a period of time after the profile has finished.
                  &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
                  &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, project ID is inferred from the API call.
                  &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
                },
              },
              &quot;pubSubNotification&quot;: { # Send a Pub/Sub message into the given Pub/Sub topic to connect other systems to data profile generation. The message payload data will be the byte serialization of `DataProfilePubSubMessage`. # Publish a message into the Pub/Sub topic.
                &quot;detailOfMessage&quot;: &quot;A String&quot;, # How much data to include in the Pub/Sub message. If the user wishes to limit the size of the message, they can use resource_name and fetch the profile fields they wish to. Per table profile (not per column).
                &quot;event&quot;: &quot;A String&quot;, # The type of event that triggers a Pub/Sub. At most one `PubSubNotification` per EventType is permitted.
                &quot;pubsubCondition&quot;: { # A condition for determining whether a Pub/Sub should be triggered. # Conditions (e.g., data risk or sensitivity level) for triggering a Pub/Sub.
                  &quot;expressions&quot;: { # An expression, consisting of an operator and conditions. # An expression.
                    &quot;conditions&quot;: [ # Conditions to apply to the expression.
                      { # A condition consisting of a value.
                        &quot;minimumRiskScore&quot;: &quot;A String&quot;, # The minimum data risk score that triggers the condition.
                        &quot;minimumSensitivityScore&quot;: &quot;A String&quot;, # The minimum sensitivity level that triggers the condition.
                      },
                    ],
                    &quot;logicalOperator&quot;: &quot;A String&quot;, # The operator to apply to the collection of conditions.
                  },
                },
                &quot;topic&quot;: &quot;A String&quot;, # Cloud Pub/Sub topic to send notifications to. Format is projects/{project}/topics/{topic}.
              },
              &quot;publishToChronicle&quot;: { # Message expressing intention to publish to Google Security Operations. # Publishes generated data profiles to Google Security Operations. For more information, see [Use Sensitive Data Protection data in context-aware analytics](https://cloud.google.com/chronicle/docs/detection/usecase-dlp-high-risk-user-download).
              },
              &quot;publishToDataplexCatalog&quot;: { # Create Dataplex Universal Catalog aspects for profiled resources with the aspect type Sensitive Data Protection Profile. To learn more about aspects, see https://cloud.google.com/sensitive-data-protection/docs/add-aspects. # Publishes a portion of each profile to Dataplex Universal Catalog with the aspect type Sensitive Data Protection Profile.
                &quot;lowerDataRiskToLow&quot;: True or False, # Whether creating a Dataplex Universal Catalog aspect for a profiled resource should lower the risk of the profile for that resource. This also lowers the data risk of resources at the lower levels of the resource hierarchy. For example, reducing the data risk of a table data profile also reduces the data risk of the constituent column data profiles.
              },
              &quot;publishToScc&quot;: { # If set, a summary finding will be created or updated in Security Command Center for each profile. # Publishes findings to Security Command Center for each data profile.
              },
              &quot;tagResources&quot;: { # If set, attaches the [tags] (https://cloud.google.com/resource-manager/docs/tags/tags-overview) provided to profiled resources. Tags support [access control](https://cloud.google.com/iam/docs/tags-access-control). You can conditionally grant or deny access to a resource based on whether the resource has a specific tag. # Tags the profiled resources with the specified tag values.
                &quot;lowerDataRiskToLow&quot;: True or False, # Whether applying a tag to a resource should lower the risk of the profile for that resource. For example, in conjunction with an [IAM deny policy](https://cloud.google.com/iam/docs/deny-overview), you can deny all principals a permission if a tag value is present, mitigating the risk of the resource. This also lowers the data risk of resources at the lower levels of the resource hierarchy. For example, reducing the data risk of a table data profile also reduces the data risk of the constituent column data profiles.
                &quot;profileGenerationsToTag&quot;: [ # The profile generations for which the tag should be attached to resources. If you attach a tag to only new profiles, then if the sensitivity score of a profile subsequently changes, its tag doesn&#x27;t change. By default, this field includes only new profiles. To include both new and updated profiles for tagging, this field should explicitly include both `PROFILE_GENERATION_NEW` and `PROFILE_GENERATION_UPDATE`.
                  &quot;A String&quot;,
                ],
                &quot;tagConditions&quot;: [ # The tags to associate with different conditions.
                  { # The tag to attach to profiles matching the condition. At most one `TagCondition` can be specified per sensitivity level.
                    &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Conditions attaching the tag to a resource on its profile having this sensitivity score.
                      &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
                    },
                    &quot;tag&quot;: { # A value of a tag. # The tag value to attach to resources.
                      &quot;namespacedValue&quot;: &quot;A String&quot;, # The namespaced name for the tag value to attach to resources. Must be in the format `{parent_id}/{tag_key_short_name}/{short_name}`, for example, &quot;123456/environment/prod&quot; for an organization parent, or &quot;my-project/environment/prod&quot; for a project parent.
                    },
                  },
                ],
              },
            },
          ],
          &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp of a DiscoveryConfig.
          &quot;displayName&quot;: &quot;A String&quot;, # Display name (max 100 chars)
          &quot;errors&quot;: [ # Output only. A stream of errors encountered when the config was activated. Repeated errors may result in the config automatically being paused. Output only field. Will return the last 100 errors. Whenever the config is modified this list will be cleared.
            { # Details information about an error encountered during job execution or the results of an unsuccessful activation of the JobTrigger.
              &quot;details&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Detailed error codes and messages.
                &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
                &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
                  {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                ],
                &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
              },
              &quot;extraInfo&quot;: &quot;A String&quot;, # Additional information about the error.
              &quot;timestamps&quot;: [ # The times the error occurred. List includes the oldest timestamp and the last 9 timestamps.
                &quot;A String&quot;,
              ],
            },
          ],
          &quot;inspectTemplates&quot;: [ # Detection logic for profile generation. Not all template features are used by Discovery. FindingLimits, include_quote and exclude_info_types have no impact on Discovery. Multiple templates may be provided if there is data in multiple regions. At most one template must be specified per-region (including &quot;global&quot;). Each region is scanned using the applicable template. If no region-specific template is specified, but a &quot;global&quot; template is specified, it will be copied to that region and used instead. If no global or region-specific template is provided for a region with data, that region&#x27;s data will not be scanned. For more information, see https://cloud.google.com/sensitive-data-protection/docs/data-profiles#data-residency.
            &quot;A String&quot;,
          ],
          &quot;lastRunTime&quot;: &quot;A String&quot;, # Output only. The timestamp of the last time this config was executed.
          &quot;name&quot;: &quot;A String&quot;, # Unique resource name for the DiscoveryConfig, assigned by the service when the DiscoveryConfig is created, for example `projects/dlp-test-project/locations/global/discoveryConfigs/53234423`.
          &quot;orgConfig&quot;: { # Project and scan location information. Only set when the parent is an org. # Only set when the parent is an org.
            &quot;location&quot;: { # The location to begin a discovery scan. Denotes an organization ID or folder ID within an organization. # The data to scan: folder, org, or project
              &quot;folderId&quot;: &quot;A String&quot;, # The ID of the folder within an organization to be scanned.
              &quot;organizationId&quot;: &quot;A String&quot;, # The ID of an organization to scan.
            },
            &quot;projectId&quot;: &quot;A String&quot;, # The project that will run the scan. The DLP service account that exists within this project must have access to all resources that are profiled, and the DLP API must be enabled.
          },
          &quot;otherCloudStartingLocation&quot;: { # The other cloud starting location for discovery. # Must be set only when scanning other clouds.
            &quot;awsLocation&quot;: { # The AWS starting location for discovery. # The AWS starting location for discovery.
              &quot;accountId&quot;: &quot;A String&quot;, # The AWS account ID that this discovery config applies to. Within an AWS organization, you can find the AWS account ID inside an AWS account ARN. Example: arn:{partition}:organizations::{management_account_id}:account/{org_id}/{account_id}
              &quot;allAssetInventoryAssets&quot;: True or False, # All AWS assets stored in Asset Inventory that didn&#x27;t match other AWS discovery configs.
            },
          },
          &quot;processingLocation&quot;: { # Configure processing location for discovery and inspection. For example, image OCR is only provided in limited regions but configuring ProcessingLocation will redirect OCR to a location where OCR is provided. # Optional. Processing location configuration. Vertex AI dataset scanning will set processing_location.image_fallback_type to MultiRegionProcessing by default.
            &quot;documentFallbackLocation&quot;: { # Configure document processing to fall back to any of the following processing options if document processing is unavailable in the original request location. # Document processing falls back using this configuration.
              &quot;globalProcessing&quot;: { # Processing occurs in the global region. # Processing occurs in the global region.
              },
              &quot;multiRegionProcessing&quot;: { # Processing occurs in a multi-region that contains the current region if available. # Processing occurs in a multi-region that contains the current region if available.
              },
            },
            &quot;imageFallbackLocation&quot;: { # Configure image processing to fall back to any of the following processing options if image processing is unavailable in the original request location. # Image processing falls back using this configuration.
              &quot;globalProcessing&quot;: { # Processing occurs in the global region. # Processing occurs in the global region.
              },
              &quot;multiRegionProcessing&quot;: { # Processing occurs in a multi-region that contains the current region if available. # Processing occurs in a multi-region that contains the current region if available.
              },
            },
          },
          &quot;status&quot;: &quot;A String&quot;, # Required. A status for this configuration.
          &quot;targets&quot;: [ # Target to match against for determining what to scan and how frequently.
            { # Target used to match against for Discovery.
              &quot;bigQueryTarget&quot;: { # Target used to match against for discovery with BigQuery tables # BigQuery target for Discovery. The first target to match a table will be the one applied.
                &quot;cadence&quot;: { # What must take place for a profile to be updated and how frequently it should occur. New tables are scanned as quickly as possible depending on system capacity. # How often and when to update profiles. New tables that match both the filter and conditions are scanned as quickly as possible depending on system capacity.
                  &quot;inspectTemplateModifiedCadence&quot;: { # The cadence at which to update data profiles when the inspection rules defined by the `InspectTemplate` change. # Governs when to update data profiles when the inspection rules defined by the `InspectTemplate` change. If not set, changing the template will not cause a data profile to update.
                    &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when the template is modified. Defaults to never.
                  },
                  &quot;refreshFrequency&quot;: &quot;A String&quot;, # Frequency at which profiles should be updated, regardless of whether the underlying resource has changed. Defaults to never.
                  &quot;schemaModifiedCadence&quot;: { # The cadence at which to update data profiles when a schema is modified. # Governs when to update data profiles when a schema is modified.
                    &quot;frequency&quot;: &quot;A String&quot;, # How frequently profiles may be updated when schemas are modified. Defaults to monthly.
                    &quot;types&quot;: [ # The type of events to consider when deciding if the table&#x27;s schema has been modified and should have the profile updated. Defaults to NEW_COLUMNS.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;tableModifiedCadence&quot;: { # The cadence at which to update data profiles when a table is modified. # Governs when to update data profiles when a table is modified.
                    &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when tables are modified. Defaults to never.
                    &quot;types&quot;: [ # The type of events to consider when deciding if the table has been modified and should have the profile updated. Defaults to MODIFIED_TIMESTAMP.
                      &quot;A String&quot;,
                    ],
                  },
                },
                &quot;conditions&quot;: { # Requirements that must be true before a table is scanned in discovery for the first time. There is an AND relationship between the top-level attributes. Additionally, minimum conditions with an OR relationship that must be met before Cloud DLP scans a table can be set (like a minimum row count or a minimum table age). # In addition to matching the filter, these conditions must be true before a profile is generated.
                  &quot;createdAfter&quot;: &quot;A String&quot;, # BigQuery table must have been created after this date. Used to avoid backfilling.
                  &quot;orConditions&quot;: { # There is an OR relationship between these attributes. They are used to determine if a table should be scanned or not in Discovery. # At least one of the conditions must be true for a table to be scanned.
                    &quot;minAge&quot;: &quot;A String&quot;, # Minimum age a table must have before Cloud DLP can profile it. Value must be 1 hour or greater.
                    &quot;minRowCount&quot;: 42, # Minimum number of rows that should be present before Cloud DLP profiles a table
                  },
                  &quot;typeCollection&quot;: &quot;A String&quot;, # Restrict discovery to categories of table types.
                  &quot;types&quot;: { # The types of BigQuery tables supported by Cloud DLP. # Restrict discovery to specific table types.
                    &quot;types&quot;: [ # A set of BigQuery table types.
                      &quot;A String&quot;,
                    ],
                  },
                },
                &quot;disabled&quot;: { # Do not profile the tables. # Tables that match this filter will not have profiles created.
                },
                &quot;filter&quot;: { # Determines what tables will have profiles generated within an organization or project. Includes the ability to filter by regular expression patterns on project ID, dataset ID, and table ID. # Required. The tables the discovery cadence applies to. The first target with a matching filter will be the one to apply to a table.
                  &quot;otherTables&quot;: { # Catch-all for all other tables not specified by other filters. Should always be last, except for single-table configurations, which will only have a TableReference target. # Catch-all. This should always be the last filter in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically.
                  },
                  &quot;tableReference&quot;: { # Message defining the location of a BigQuery table with the projectId inferred from the parent project. # The table to scan. Discovery configurations including this can only include one DiscoveryTarget (the DiscoveryTarget with this TableReference).
                    &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
                    &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, the project ID is inferred from the parent project. This field is required if the parent resource is an organization.
                    &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
                  },
                  &quot;tables&quot;: { # Specifies a collection of BigQuery tables. Used for Discovery. # A specific set of tables for this filter to apply to. A table collection must be specified in only one filter per config. If a table id or dataset is empty, Cloud DLP assumes all tables in that collection must be profiled. Must specify a project ID.
                    &quot;includeRegexes&quot;: { # A collection of regular expressions to determine what tables to match against. # A collection of regular expressions to match a BigQuery table against.
                      &quot;patterns&quot;: [ # A single BigQuery regular expression pattern to match against one or more tables, datasets, or projects that contain BigQuery tables.
                        { # A pattern to match against one or more tables, datasets, or projects that contain BigQuery tables. At least one pattern must be specified. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub.
                          &quot;datasetIdRegex&quot;: &quot;A String&quot;, # If unset, this property matches all datasets.
                          &quot;projectIdRegex&quot;: &quot;A String&quot;, # For organizations, if unset, will match all projects. Has no effect for data profile configurations created within a project.
                          &quot;tableIdRegex&quot;: &quot;A String&quot;, # If unset, this property matches all tables.
                        },
                      ],
                    },
                  },
                },
              },
              &quot;cloudSqlTarget&quot;: { # Target used to match against for discovery with Cloud SQL tables. # Cloud SQL target for Discovery. The first target to match a table will be the one applied.
                &quot;conditions&quot;: { # Requirements that must be true before a table is profiled for the first time. # In addition to matching the filter, these conditions must be true before a profile is generated.
                  &quot;databaseEngines&quot;: [ # Optional. Database engines that should be profiled. Optional. Defaults to ALL_SUPPORTED_DATABASE_ENGINES if unspecified.
                    &quot;A String&quot;,
                  ],
                  &quot;types&quot;: [ # Data profiles will only be generated for the database resource types specified in this field. If not specified, defaults to [DATABASE_RESOURCE_TYPE_ALL_SUPPORTED_TYPES].
                    &quot;A String&quot;,
                  ],
                },
                &quot;disabled&quot;: { # Do not profile the tables. # Disable profiling for database resources that match this filter.
                },
                &quot;filter&quot;: { # Determines what tables will have profiles generated within an organization or project. Includes the ability to filter by regular expression patterns on project ID, location, instance, database, and database resource name. # Required. The tables the discovery cadence applies to. The first target with a matching filter will be the one to apply to a table.
                  &quot;collection&quot;: { # Match database resources using regex filters. Examples of database resources are tables, views, and stored procedures. # A specific set of database resources for this filter to apply to.
                    &quot;includeRegexes&quot;: { # A collection of regular expressions to determine what database resources to match against. # A collection of regular expressions to match a database resource against.
                      &quot;patterns&quot;: [ # A group of regular expression patterns to match against one or more database resources. Maximum of 100 entries. The sum of all regular expression&#x27;s length can&#x27;t exceed 10 KiB.
                        { # A pattern to match against one or more database resources. At least one pattern must be specified. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub.
                          &quot;databaseRegex&quot;: &quot;A String&quot;, # Regex to test the database name against. If empty, all databases match.
                          &quot;databaseResourceNameRegex&quot;: &quot;A String&quot;, # Regex to test the database resource&#x27;s name against. An example of a database resource name is a table&#x27;s name. Other database resource names like view names could be included in the future. If empty, all database resources match.
                          &quot;instanceRegex&quot;: &quot;A String&quot;, # Regex to test the instance name against. If empty, all instances match.
                          &quot;projectIdRegex&quot;: &quot;A String&quot;, # For organizations, if unset, will match all projects. Has no effect for configurations created within a project.
                        },
                      ],
                    },
                  },
                  &quot;databaseResourceReference&quot;: { # Identifies a single database resource, like a table within a database. # The database resource to scan. Targets including this can only include one target (the target with this database resource reference).
                    &quot;database&quot;: &quot;A String&quot;, # Required. Name of a database within the instance.
                    &quot;databaseResource&quot;: &quot;A String&quot;, # Required. Name of a database resource, for example, a table within the database.
                    &quot;instance&quot;: &quot;A String&quot;, # Required. The instance where this resource is located. For example: Cloud SQL instance ID.
                    &quot;projectId&quot;: &quot;A String&quot;, # Required. If within a project-level config, then this must match the config&#x27;s project ID.
                  },
                  &quot;others&quot;: { # Match database resources not covered by any other filter. # Catch-all. This should always be the last target in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically.
                  },
                },
                &quot;generationCadence&quot;: { # How often existing tables should have their profiles refreshed. New tables are scanned as quickly as possible depending on system capacity. # How often and when to update profiles. New tables that match both the filter and conditions are scanned as quickly as possible depending on system capacity.
                  &quot;inspectTemplateModifiedCadence&quot;: { # The cadence at which to update data profiles when the inspection rules defined by the `InspectTemplate` change. # Governs when to update data profiles when the inspection rules defined by the `InspectTemplate` change. If not set, changing the template will not cause a data profile to update.
                    &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when the template is modified. Defaults to never.
                  },
                  &quot;refreshFrequency&quot;: &quot;A String&quot;, # Data changes (non-schema changes) in Cloud SQL tables can&#x27;t trigger reprofiling. If you set this field, profiles are refreshed at this frequency regardless of whether the underlying tables have changed. Defaults to never.
                  &quot;schemaModifiedCadence&quot;: { # How frequently to modify the profile when the table&#x27;s schema is modified. # When to reprofile if the schema has changed.
                    &quot;frequency&quot;: &quot;A String&quot;, # Frequency to regenerate data profiles when the schema is modified. Defaults to monthly.
                    &quot;types&quot;: [ # The types of schema modifications to consider. Defaults to NEW_COLUMNS.
                      &quot;A String&quot;,
                    ],
                  },
                },
              },
              &quot;cloudStorageTarget&quot;: { # Target used to match against for discovery with Cloud Storage buckets. # Cloud Storage target for Discovery. The first target to match a table will be the one applied.
                &quot;conditions&quot;: { # Requirements that must be true before a file store is scanned in discovery for the first time. There is an AND relationship between the top-level attributes. # Optional. In addition to matching the filter, these conditions must be true before a profile is generated.
                  &quot;cloudStorageConditions&quot;: { # Requirements that must be true before a Cloud Storage bucket or object is scanned in discovery for the first time. There is an AND relationship between the top-level attributes. # Optional. Cloud Storage conditions.
                    &quot;includedBucketAttributes&quot;: [ # Required. Only objects with the specified attributes will be scanned. Defaults to [ALL_SUPPORTED_BUCKETS] if unset.
                      &quot;A String&quot;,
                    ],
                    &quot;includedObjectAttributes&quot;: [ # Required. Only objects with the specified attributes will be scanned. If an object has one of the specified attributes but is inside an excluded bucket, it will not be scanned. Defaults to [ALL_SUPPORTED_OBJECTS]. A profile will be created even if no objects match the included_object_attributes.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;createdAfter&quot;: &quot;A String&quot;, # Optional. File store must have been created after this date. Used to avoid backfilling.
                  &quot;minAge&quot;: &quot;A String&quot;, # Optional. Minimum age a file store must have. If set, the value must be 1 hour or greater.
                },
                &quot;disabled&quot;: { # Do not profile the tables. # Optional. Disable profiling for buckets that match this filter.
                },
                &quot;filter&quot;: { # Determines which buckets will have profiles generated within an organization or project. Includes the ability to filter by regular expression patterns on project ID and bucket name. # Required. The buckets the generation_cadence applies to. The first target with a matching filter will be the one to apply to a bucket.
                  &quot;cloudStorageResourceReference&quot;: { # Identifies a single Cloud Storage bucket. # Optional. The bucket to scan. Targets including this can only include one target (the target with this bucket). This enables profiling the contents of a single bucket, while the other options allow for easy profiling of many bucets within a project or an organization.
                    &quot;bucketName&quot;: &quot;A String&quot;, # Required. The bucket to scan.
                    &quot;projectId&quot;: &quot;A String&quot;, # Required. If within a project-level config, then this must match the config&#x27;s project id.
                  },
                  &quot;collection&quot;: { # Match file stores (e.g. buckets) using filters. # Optional. A specific set of buckets for this filter to apply to.
                    &quot;includeRegexes&quot;: { # A collection of regular expressions to determine what file store to match against. # Optional. A collection of regular expressions to match a file store against.
                      &quot;patterns&quot;: [ # Required. The group of regular expression patterns to match against one or more file stores. Maximum of 100 entries. The sum of all regular expression&#x27;s length can&#x27;t exceed 10 KiB.
                        { # A pattern to match against one or more file stores.
                          &quot;cloudStorageRegex&quot;: { # A pattern to match against one or more file stores. At least one pattern must be specified. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub. # Optional. Regex for Cloud Storage.
                            &quot;bucketNameRegex&quot;: &quot;A String&quot;, # Optional. Regex to test the bucket name against. If empty, all buckets match. Example: &quot;marketing2021&quot; or &quot;(marketing)\d{4}&quot; will both match the bucket gs://marketing2021
                            &quot;projectIdRegex&quot;: &quot;A String&quot;, # Optional. For organizations, if unset, will match all projects.
                          },
                        },
                      ],
                    },
                    &quot;includeTags&quot;: { # Tags to match against for filtering. # Optional. To be included in the collection, a resource must meet all of the following requirements: - If tag filters are provided, match all provided tag filters. - If one or more patterns are specified, match at least one pattern. For a resource to match the tag filters, the resource must have all of the provided tags attached. Tags refer to Resource Manager tags bound to the resource or its ancestors. For more information, see [Manage schedules](https://cloud.google.com/sensitive-data-protection/docs/profile-project-cloud-storage#manage-schedules).
                      &quot;tagFilters&quot;: [ # Required. A resource must match ALL of the specified tag filters to be included in the collection.
                        { # A single tag to filter against.
                          &quot;namespacedTagKey&quot;: &quot;A String&quot;, # The namespaced name for the tag key. Must be in the format `{parent_id}/{tag_key_short_name}`, for example, &quot;123456/sensitive&quot; for an organization parent, or &quot;my-project/sensitive&quot; for a project parent.
                          &quot;namespacedTagValue&quot;: &quot;A String&quot;, # The namespaced name for the tag value. Must be in the format `{parent_id}/{tag_key_short_name}/{short_name}`, for example, &quot;123456/environment/prod&quot; for an organization parent, or &quot;my-project/environment/prod&quot; for a project parent.
                        },
                      ],
                    },
                  },
                  &quot;others&quot;: { # Match discovery resources not covered by any other filter. # Optional. Catch-all. This should always be the last target in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically.
                  },
                },
                &quot;generationCadence&quot;: { # How often existing buckets should have their profiles refreshed. New buckets are scanned as quickly as possible depending on system capacity. # Optional. How often and when to update profiles. New buckets that match both the filter and conditions are scanned as quickly as possible depending on system capacity.
                  &quot;inspectTemplateModifiedCadence&quot;: { # The cadence at which to update data profiles when the inspection rules defined by the `InspectTemplate` change. # Optional. Governs when to update data profiles when the inspection rules defined by the `InspectTemplate` change. If not set, changing the template will not cause a data profile to update.
                    &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when the template is modified. Defaults to never.
                  },
                  &quot;refreshFrequency&quot;: &quot;A String&quot;, # Optional. Data changes in Cloud Storage can&#x27;t trigger reprofiling. If you set this field, profiles are refreshed at this frequency regardless of whether the underlying buckets have changed. Defaults to never.
                },
              },
              &quot;otherCloudTarget&quot;: { # Target used to match against for discovery of resources from other clouds. An [AWS connector in Security Command Center (Enterprise](https://cloud.google.com/security-command-center/docs/connect-scc-to-aws) is required to use this feature. # Other clouds target for discovery. The first target to match a resource will be the one applied.
                &quot;conditions&quot;: { # Requirements that must be true before a resource is profiled for the first time. # Optional. In addition to matching the filter, these conditions must be true before a profile is generated.
                  &quot;amazonS3BucketConditions&quot;: { # Amazon S3 bucket conditions. # Amazon S3 bucket conditions.
                    &quot;bucketTypes&quot;: [ # Optional. Bucket types that should be profiled. Optional. Defaults to TYPE_ALL_SUPPORTED if unspecified.
                      &quot;A String&quot;,
                    ],
                    &quot;objectStorageClasses&quot;: [ # Optional. Object classes that should be profiled. Optional. Defaults to ALL_SUPPORTED_CLASSES if unspecified.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;minAge&quot;: &quot;A String&quot;, # Minimum age a resource must be before Cloud DLP can profile it. Value must be 1 hour or greater.
                },
                &quot;dataSourceType&quot;: { # Message used to identify the type of resource being profiled. # Required. The type of data profiles generated by this discovery target. Supported values are: * aws/s3/bucket
                  &quot;dataSource&quot;: &quot;A String&quot;, # An identifying string to the type of resource being profiled. Current values: * google/bigquery/table * google/project * google/sql/table * google/gcs/bucket
                },
                &quot;disabled&quot;: { # Do not profile the tables. # Disable profiling for resources that match this filter.
                },
                &quot;filter&quot;: { # Determines which resources from the other cloud will have profiles generated. Includes the ability to filter by resource names. # Required. The resources that the discovery cadence applies to. The first target with a matching filter will be the one to apply to a resource.
                  &quot;collection&quot;: { # Match resources using regex filters. # A collection of resources for this filter to apply to.
                    &quot;includeRegexes&quot;: { # A collection of regular expressions to determine what resources to match against. # A collection of regular expressions to match a resource against.
                      &quot;patterns&quot;: [ # A group of regular expression patterns to match against one or more resources. Maximum of 100 entries. The sum of all regular expression&#x27;s length can&#x27;t exceed 10 KiB.
                        { # A pattern to match against one or more resources. At least one pattern must be specified. Regular expressions use RE2 [syntax](https://github.com/google/re2/wiki/Syntax); a guide can be found under the google/re2 repository on GitHub.
                          &quot;amazonS3BucketRegex&quot;: { # Amazon S3 bucket regex. # Regex for Amazon S3 buckets.
                            &quot;awsAccountRegex&quot;: { # AWS account regex. # The AWS account regex.
                              &quot;accountIdRegex&quot;: &quot;A String&quot;, # Optional. Regex to test the AWS account ID against. If empty, all accounts match.
                            },
                            &quot;bucketNameRegex&quot;: &quot;A String&quot;, # Optional. Regex to test the bucket name against. If empty, all buckets match.
                          },
                        },
                      ],
                    },
                  },
                  &quot;others&quot;: { # Match discovery resources not covered by any other filter. # Optional. Catch-all. This should always be the last target in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically.
                  },
                  &quot;singleResource&quot;: { # Identifies a single resource, like a single Amazon S3 bucket. # The resource to scan. Configs using this filter can only have one target (the target with this single resource reference).
                    &quot;amazonS3Bucket&quot;: { # Amazon S3 bucket. # Amazon S3 bucket.
                      &quot;awsAccount&quot;: { # AWS account. # The AWS account.
                        &quot;accountId&quot;: &quot;A String&quot;, # Required. AWS account ID.
                      },
                      &quot;bucketName&quot;: &quot;A String&quot;, # Required. The bucket name.
                    },
                  },
                },
                &quot;generationCadence&quot;: { # How often existing resources should have their profiles refreshed. New resources are scanned as quickly as possible depending on system capacity. # How often and when to update data profiles. New resources that match both the filter and conditions are scanned as quickly as possible depending on system capacity.
                  &quot;inspectTemplateModifiedCadence&quot;: { # The cadence at which to update data profiles when the inspection rules defined by the `InspectTemplate` change. # Optional. Governs when to update data profiles when the inspection rules defined by the `InspectTemplate` change. If not set, changing the template will not cause a data profile to update.
                    &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when the template is modified. Defaults to never.
                  },
                  &quot;refreshFrequency&quot;: &quot;A String&quot;, # Optional. Frequency to update profiles regardless of whether the underlying resource has changes. Defaults to never.
                },
              },
              &quot;secretsTarget&quot;: { # Discovery target for credentials and secrets in cloud resource metadata. This target does not include any filtering or frequency controls. Cloud DLP will scan cloud resource metadata for secrets daily. No inspect template should be included in the discovery config for a security benchmarks scan. Instead, the built-in list of secrets and credentials infoTypes will be used (see https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference#credentials_and_secrets). Credentials and secrets discovered will be reported as vulnerabilities to Security Command Center. # Discovery target that looks for credentials and secrets stored in cloud resource metadata and reports them as vulnerabilities to Security Command Center. Only one target of this type is allowed.
              },
              &quot;vertexDatasetTarget&quot;: { # Target used to match against for discovery with Vertex AI datasets. # Vertex AI dataset target for Discovery. The first target to match a dataset will be the one applied. Note that discovery for Vertex AI can incur Cloud Storage Class B operation charges for storage.objects.get operations and retrieval fees. For more information, see [Cloud Storage pricing](https://cloud.google.com/storage/pricing#price-tables). Note that discovery for Vertex AI dataset will not be able to scan images unless DiscoveryConfig.processing_location.image_fallback_location has multi_region_processing or global_processing configured.
                &quot;conditions&quot;: { # Requirements that must be true before a dataset is profiled for the first time. # In addition to matching the filter, these conditions must be true before a profile is generated.
                  &quot;createdAfter&quot;: &quot;A String&quot;, # Vertex AI dataset must have been created after this date. Used to avoid backfilling.
                  &quot;minAge&quot;: &quot;A String&quot;, # Minimum age a Vertex AI dataset must have. If set, the value must be 1 hour or greater.
                },
                &quot;disabled&quot;: { # Do not profile the tables. # Disable profiling for datasets that match this filter.
                },
                &quot;filter&quot;: { # Determines what datasets will have profiles generated within an organization or project. Includes the ability to filter by regular expression patterns on project ID or dataset regex. # Required. The datasets the discovery cadence applies to. The first target with a matching filter will be the one to apply to a dataset.
                  &quot;collection&quot;: { # Match dataset resources using regex filters. # A specific set of Vertex AI datasets for this filter to apply to.
                    &quot;vertexDatasetRegexes&quot;: { # A collection of regular expressions to determine what datasets to match against. # The regex used to filter dataset resources.
                      &quot;patterns&quot;: [ # Required. The group of regular expression patterns to match against one or more datasets. Maximum of 100 entries. The sum of the lengths of all regular expressions can&#x27;t exceed 10 KiB.
                        { # A pattern to match against one or more dataset resources.
                          &quot;projectIdRegex&quot;: &quot;A String&quot;, # For organizations, if unset, will match all projects. Has no effect for configurations created within a project.
                        },
                      ],
                    },
                  },
                  &quot;others&quot;: { # Match discovery resources not covered by any other filter. # Catch-all. This should always be the last target in the list because anything above it will apply first. Should only appear once in a configuration. If none is specified, a default one will be added automatically.
                  },
                  &quot;vertexDatasetResourceReference&quot;: { # Identifies a single Vertex AI resource. Currently only datasets are supported. # The dataset resource to scan. Targets including this can only include one target (the target with this dataset resource reference).
                    &quot;datasetResourceName&quot;: &quot;A String&quot;, # Required. The name of the Vertex AI resource. If set within a project-level configuration, the specified resource must be within the project. Examples: * `projects/{project}/locations/{location}/datasets/{dataset}`
                  },
                },
                &quot;generationCadence&quot;: { # How often existing datasets should have their profiles refreshed. New datasets are scanned as quickly as possible depending on system capacity. # How often and when to update profiles. New datasets that match both the filter and conditions are scanned as quickly as possible depending on system capacity.
                  &quot;inspectTemplateModifiedCadence&quot;: { # The cadence at which to update data profiles when the inspection rules defined by the `InspectTemplate` change. # Governs when to update data profiles when the inspection rules defined by the `InspectTemplate` change. If not set, changing the template will not cause a data profile to be updated.
                    &quot;frequency&quot;: &quot;A String&quot;, # How frequently data profiles can be updated when the template is modified. Defaults to never.
                  },
                  &quot;refreshFrequency&quot;: &quot;A String&quot;, # If you set this field, profiles are refreshed at this frequency regardless of whether the underlying datasets have changed. Defaults to never.
                },
              },
            },
          ],
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of a DiscoveryConfig.
        },
        &quot;inspectConfig&quot;: { # Configuration description of the scanning process. When used with redactContent only info_types and min_likelihood are currently used. # A copy of the inspection config used to generate this profile. This is a copy of the inspect_template specified in `DataProfileJobConfig`.
          &quot;contentOptions&quot;: [ # Deprecated and unused.
            &quot;A String&quot;,
          ],
          &quot;customInfoTypes&quot;: [ # CustomInfoTypes provided by the user. See https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes to learn more.
            { # Custom information type provided by the user. Used to find domain-specific sensitive information configurable to the data in question.
              &quot;detectionRules&quot;: [ # Set of detection rules to apply to all findings of this CustomInfoType. Rules are applied in order that they are specified. Not supported for the `surrogate_type` CustomInfoType.
                { # Deprecated; use `InspectionRuleSet` instead. Rule for modifying a `CustomInfoType` to alter behavior under certain circumstances, depending on the specific details of the rule. Not supported for the `surrogate_type` custom infoType.
                  &quot;hotwordRule&quot;: { # The rule that adjusts the likelihood of findings within a certain proximity of hotwords. # Hotword-based detection rule.
                    &quot;hotwordRegex&quot;: { # Message defining a custom regular expression. # Regular expression pattern defining what qualifies as a hotword.
                      &quot;groupIndexes&quot;: [ # The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included.
                        42,
                      ],
                      &quot;pattern&quot;: &quot;A String&quot;, # Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub.
                    },
                    &quot;likelihoodAdjustment&quot;: { # Message for specifying an adjustment to the likelihood of a finding as part of a detection rule. # Likelihood adjustment to apply to all matching findings.
                      &quot;fixedLikelihood&quot;: &quot;A String&quot;, # Set the likelihood of a finding to a fixed value.
                      &quot;relativeLikelihood&quot;: 42, # Increase or decrease the likelihood by the specified number of levels. For example, if a finding would be `POSSIBLE` without the detection rule and `relative_likelihood` is 1, then it is upgraded to `LIKELY`, while a value of -1 would downgrade it to `UNLIKELY`. Likelihood may never drop below `VERY_UNLIKELY` or exceed `VERY_LIKELY`, so applying an adjustment of 1 followed by an adjustment of -1 when base likelihood is `VERY_LIKELY` will result in a final likelihood of `LIKELY`.
                    },
                    &quot;proximity&quot;: { # Message for specifying a window around a finding to apply a detection rule. # Range of characters within which the entire hotword must reside. The total length of the window cannot exceed 1000 characters. The finding itself will be included in the window, so that hotwords can be used to match substrings of the finding itself. Suppose you want Cloud DLP to promote the likelihood of the phone number regex &quot;\(\d{3}\) \d{3}-\d{4}&quot; if the area code is known to be the area code of a company&#x27;s office. In this case, use the hotword regex &quot;\(xxx\)&quot;, where &quot;xxx&quot; is the area code in question. For tabular data, if you want to modify the likelihood of an entire column of findngs, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes-likelihood#match-column-values).
                      &quot;windowAfter&quot;: 42, # Number of characters after the finding to consider.
                      &quot;windowBefore&quot;: 42, # Number of characters before the finding to consider. For tabular data, if you want to modify the likelihood of an entire column of findngs, set this to 1. For more information, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes-likelihood#match-column-values).
                    },
                  },
                },
              ],
              &quot;dictionary&quot;: { # Custom information type based on a dictionary of words or phrases. This can be used to match sensitive information specific to the data, such as a list of employee IDs or job titles. Dictionary words are case-insensitive and all characters other than letters and digits in the unicode [Basic Multilingual Plane](https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane) will be replaced with whitespace when scanning for matches, so the dictionary phrase &quot;Sam Johnson&quot; will match all three phrases &quot;sam johnson&quot;, &quot;Sam, Johnson&quot;, and &quot;Sam (Johnson)&quot;. Additionally, the characters surrounding any match must be of a different type than the adjacent characters within the word, so letters must be next to non-letters and digits next to non-digits. For example, the dictionary word &quot;jen&quot; will match the first three letters of the text &quot;jen123&quot; but will return no matches for &quot;jennifer&quot;. Dictionary words containing a large number of characters that are not letters or digits may result in unexpected findings because such characters are treated as whitespace. The [limits](https://cloud.google.com/sensitive-data-protection/limits) page contains details about the size limits of dictionaries. For dictionaries that do not fit within these constraints, consider using `LargeCustomDictionaryConfig` in the `StoredInfoType` API. # A list of phrases to detect as a CustomInfoType.
                &quot;cloudStoragePath&quot;: { # Message representing a single file or path in Cloud Storage. # Newline-delimited file of words in Cloud Storage. Only a single file is accepted.
                  &quot;path&quot;: &quot;A String&quot;, # A URL representing a file or path (no wildcards) in Cloud Storage. Example: `gs://[BUCKET_NAME]/dictionary.txt`
                },
                &quot;wordList&quot;: { # Message defining a list of words or phrases to search for in the data. # List of words or phrases to search for.
                  &quot;words&quot;: [ # Words or phrases defining the dictionary. The dictionary must contain at least one phrase and every phrase must contain at least 2 characters that are letters or digits. [required]
                    &quot;A String&quot;,
                  ],
                },
              },
              &quot;exclusionType&quot;: &quot;A String&quot;, # If set to EXCLUSION_TYPE_EXCLUDE this infoType will not cause a finding to be returned. It still can be used for rules matching.
              &quot;infoType&quot;: { # Type of information detected by the API. # CustomInfoType can either be a new infoType, or an extension of built-in infoType, when the name matches one of existing infoTypes and that infoType is specified in `InspectContent.info_types` field. Specifying the latter adds findings to the one detected by the system. If built-in info type is not specified in `InspectContent.info_types` list then the name is treated as a custom info type.
                &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
                &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
                  &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
                },
                &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
              },
              &quot;likelihood&quot;: &quot;A String&quot;, # Likelihood to return for this CustomInfoType. This base value can be altered by a detection rule if the finding meets the criteria specified by the rule. Defaults to `VERY_LIKELY` if not specified.
              &quot;regex&quot;: { # Message defining a custom regular expression. # Regular expression based CustomInfoType.
                &quot;groupIndexes&quot;: [ # The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included.
                  42,
                ],
                &quot;pattern&quot;: &quot;A String&quot;, # Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub.
              },
              &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Sensitivity for this CustomInfoType. If this CustomInfoType extends an existing InfoType, the sensitivity here will take precedence over that of the original InfoType. If unset for a CustomInfoType, it will default to HIGH. This only applies to data profiling.
                &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
              },
              &quot;storedType&quot;: { # A reference to a StoredInfoType to use with scanning. # Load an existing `StoredInfoType` resource for use in `InspectDataSource`. Not currently supported in `InspectContent`.
                &quot;createTime&quot;: &quot;A String&quot;, # Timestamp indicating when the version of the `StoredInfoType` used for inspection was created. Output-only field, populated by the system.
                &quot;name&quot;: &quot;A String&quot;, # Resource name of the requested `StoredInfoType`, for example `organizations/433245324/storedInfoTypes/432452342` or `projects/project-id/storedInfoTypes/432452342`.
              },
              &quot;surrogateType&quot;: { # Message for detecting output from deidentification transformations such as [`CryptoReplaceFfxFpeConfig`](https://cloud.google.com/sensitive-data-protection/docs/reference/rest/v2/organizations.deidentifyTemplates#cryptoreplaceffxfpeconfig). These types of transformations are those that perform pseudonymization, thereby producing a &quot;surrogate&quot; as output. This should be used in conjunction with a field on the transformation such as `surrogate_info_type`. This CustomInfoType does not support the use of `detection_rules`. # Message for detecting output from deidentification transformations that support reversing.
              },
            },
          ],
          &quot;excludeInfoTypes&quot;: True or False, # When true, excludes type information of the findings. This is not used for data profiling.
          &quot;includeQuote&quot;: True or False, # When true, a contextual quote from the data that triggered a finding is included in the response; see Finding.quote. This is not used for data profiling.
          &quot;infoTypes&quot;: [ # Restricts what info_types to look for. The values must correspond to InfoType values returned by ListInfoTypes or listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference. When no InfoTypes or CustomInfoTypes are specified in a request, the system may automatically choose a default list of detectors to run, which may change over time. If you need precise control and predictability as to what detectors are run you should specify specific InfoTypes listed in the reference, otherwise a default list will be used, which may change over time.
            { # Type of information detected by the API.
              &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
              &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
                &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
              },
              &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
            },
          ],
          &quot;limits&quot;: { # Configuration to control the number of findings returned for inspection. This is not used for de-identification or data profiling. When redacting sensitive data from images, finding limits don&#x27;t apply. They can cause unexpected or inconsistent results, where only some data is redacted. Don&#x27;t include finding limits in RedactImage requests. Otherwise, Cloud DLP returns an error. # Configuration to control the number of findings returned. This is not used for data profiling. When redacting sensitive data from images, finding limits don&#x27;t apply. They can cause unexpected or inconsistent results, where only some data is redacted. Don&#x27;t include finding limits in RedactImage requests. Otherwise, Cloud DLP returns an error. When set within an InspectJobConfig, the specified maximum values aren&#x27;t hard limits. If an inspection job reaches these limits, the job ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns can be multiple times higher than these maximum values.
            &quot;maxFindingsPerInfoType&quot;: [ # Configuration of findings limit given for specified infoTypes.
              { # Max findings configuration per infoType, per content item or long running DlpJob.
                &quot;infoType&quot;: { # Type of information detected by the API. # Type of information the findings limit applies to. Only one limit per info_type should be provided. If InfoTypeLimit does not have an info_type, the DLP API applies the limit against all info_types that are found but not specified in another InfoTypeLimit.
                  &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
                  &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
                    &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
                  },
                  &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
                },
                &quot;maxFindings&quot;: 42, # Max findings limit for the given infoType.
              },
            ],
            &quot;maxFindingsPerItem&quot;: 42, # Max number of findings that are returned for each item scanned. When set within an InspectContentRequest, this field is ignored. This value isn&#x27;t a hard limit. If the number of findings for an item reaches this limit, the inspection of that item ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns for the item can be multiple times higher than this value.
            &quot;maxFindingsPerRequest&quot;: 42, # Max number of findings that are returned per request or job. If you set this field in an InspectContentRequest, the resulting maximum value is the value that you set or 3,000, whichever is lower. This value isn&#x27;t a hard limit. If an inspection reaches this limit, the inspection ends gradually, not abruptly. Therefore, the actual number of findings that Cloud DLP returns can be multiple times higher than this value.
          },
          &quot;minLikelihood&quot;: &quot;A String&quot;, # Only returns findings equal to or above this threshold. The default is POSSIBLE. In general, the highest likelihood setting yields the fewest findings in results and the lowest chance of a false positive. For more information, see [Match likelihood](https://cloud.google.com/sensitive-data-protection/docs/likelihood).
          &quot;minLikelihoodPerInfoType&quot;: [ # Minimum likelihood per infotype. For each infotype, a user can specify a minimum likelihood. The system only returns a finding if its likelihood is above this threshold. If this field is not set, the system uses the InspectConfig min_likelihood.
            { # Configuration for setting a minimum likelihood per infotype. Used to customize the minimum likelihood level for specific infotypes in the request. For example, use this if you want to lower the precision for PERSON_NAME without lowering the precision for the other infotypes in the request.
              &quot;infoType&quot;: { # Type of information detected by the API. # Type of information the likelihood threshold applies to. Only one likelihood per info_type should be provided. If InfoTypeLikelihood does not have an info_type, the configuration fails.
                &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
                &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
                  &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
                },
                &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
              },
              &quot;minLikelihood&quot;: &quot;A String&quot;, # Only returns findings equal to or above this threshold. This field is required or else the configuration fails.
            },
          ],
          &quot;ruleSet&quot;: [ # Set of rules to apply to the findings for this InspectConfig. Exclusion rules, contained in the set are executed in the end, other rules are executed in the order they are specified for each info type.
            { # Rule set for modifying a set of infoTypes to alter behavior under certain circumstances, depending on the specific details of the rules within the set.
              &quot;infoTypes&quot;: [ # List of infoTypes this rule set is applied to.
                { # Type of information detected by the API.
                  &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
                  &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
                    &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
                  },
                  &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
                },
              ],
              &quot;rules&quot;: [ # Set of rules to be applied to infoTypes. The rules are applied in order.
                { # A single inspection rule to be applied to infoTypes, specified in `InspectionRuleSet`.
                  &quot;exclusionRule&quot;: { # The rule that specifies conditions when findings of infoTypes specified in `InspectionRuleSet` are removed from results. # Exclusion rule.
                    &quot;dictionary&quot;: { # Custom information type based on a dictionary of words or phrases. This can be used to match sensitive information specific to the data, such as a list of employee IDs or job titles. Dictionary words are case-insensitive and all characters other than letters and digits in the unicode [Basic Multilingual Plane](https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane) will be replaced with whitespace when scanning for matches, so the dictionary phrase &quot;Sam Johnson&quot; will match all three phrases &quot;sam johnson&quot;, &quot;Sam, Johnson&quot;, and &quot;Sam (Johnson)&quot;. Additionally, the characters surrounding any match must be of a different type than the adjacent characters within the word, so letters must be next to non-letters and digits next to non-digits. For example, the dictionary word &quot;jen&quot; will match the first three letters of the text &quot;jen123&quot; but will return no matches for &quot;jennifer&quot;. Dictionary words containing a large number of characters that are not letters or digits may result in unexpected findings because such characters are treated as whitespace. The [limits](https://cloud.google.com/sensitive-data-protection/limits) page contains details about the size limits of dictionaries. For dictionaries that do not fit within these constraints, consider using `LargeCustomDictionaryConfig` in the `StoredInfoType` API. # Dictionary which defines the rule.
                      &quot;cloudStoragePath&quot;: { # Message representing a single file or path in Cloud Storage. # Newline-delimited file of words in Cloud Storage. Only a single file is accepted.
                        &quot;path&quot;: &quot;A String&quot;, # A URL representing a file or path (no wildcards) in Cloud Storage. Example: `gs://[BUCKET_NAME]/dictionary.txt`
                      },
                      &quot;wordList&quot;: { # Message defining a list of words or phrases to search for in the data. # List of words or phrases to search for.
                        &quot;words&quot;: [ # Words or phrases defining the dictionary. The dictionary must contain at least one phrase and every phrase must contain at least 2 characters that are letters or digits. [required]
                          &quot;A String&quot;,
                        ],
                      },
                    },
                    &quot;excludeByHotword&quot;: { # The rule to exclude findings based on a hotword. For record inspection of tables, column names are considered hotwords. An example of this is to exclude a finding if it belongs to a BigQuery column that matches a specific pattern. # Drop if the hotword rule is contained in the proximate context. For tabular data, the context includes the column name.
                      &quot;hotwordRegex&quot;: { # Message defining a custom regular expression. # Regular expression pattern defining what qualifies as a hotword.
                        &quot;groupIndexes&quot;: [ # The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included.
                          42,
                        ],
                        &quot;pattern&quot;: &quot;A String&quot;, # Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub.
                      },
                      &quot;proximity&quot;: { # Message for specifying a window around a finding to apply a detection rule. # Range of characters within which the entire hotword must reside. The total length of the window cannot exceed 1000 characters. The windowBefore property in proximity should be set to 1 if the hotword needs to be included in a column header.
                        &quot;windowAfter&quot;: 42, # Number of characters after the finding to consider.
                        &quot;windowBefore&quot;: 42, # Number of characters before the finding to consider. For tabular data, if you want to modify the likelihood of an entire column of findngs, set this to 1. For more information, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes-likelihood#match-column-values).
                      },
                    },
                    &quot;excludeInfoTypes&quot;: { # List of excluded infoTypes. # Set of infoTypes for which findings would affect this rule.
                      &quot;infoTypes&quot;: [ # InfoType list in ExclusionRule rule drops a finding when it overlaps or contained within with a finding of an infoType from this list. For example, for `InspectionRuleSet.info_types` containing &quot;PHONE_NUMBER&quot;` and `exclusion_rule` containing `exclude_info_types.info_types` with &quot;EMAIL_ADDRESS&quot; the phone number findings are dropped if they overlap with EMAIL_ADDRESS finding. That leads to &quot;555-222-2222@example.org&quot; to generate only a single finding, namely email address.
                        { # Type of information detected by the API.
                          &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
                          &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
                            &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
                          },
                          &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
                        },
                      ],
                    },
                    &quot;matchingType&quot;: &quot;A String&quot;, # How the rule is applied, see MatchingType documentation for details.
                    &quot;regex&quot;: { # Message defining a custom regular expression. # Regular expression which defines the rule.
                      &quot;groupIndexes&quot;: [ # The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included.
                        42,
                      ],
                      &quot;pattern&quot;: &quot;A String&quot;, # Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub.
                    },
                  },
                  &quot;hotwordRule&quot;: { # The rule that adjusts the likelihood of findings within a certain proximity of hotwords. # Hotword-based detection rule.
                    &quot;hotwordRegex&quot;: { # Message defining a custom regular expression. # Regular expression pattern defining what qualifies as a hotword.
                      &quot;groupIndexes&quot;: [ # The index of the submatch to extract as findings. When not specified, the entire match is returned. No more than 3 may be included.
                        42,
                      ],
                      &quot;pattern&quot;: &quot;A String&quot;, # Pattern defining the regular expression. Its syntax (https://github.com/google/re2/wiki/Syntax) can be found under the google/re2 repository on GitHub.
                    },
                    &quot;likelihoodAdjustment&quot;: { # Message for specifying an adjustment to the likelihood of a finding as part of a detection rule. # Likelihood adjustment to apply to all matching findings.
                      &quot;fixedLikelihood&quot;: &quot;A String&quot;, # Set the likelihood of a finding to a fixed value.
                      &quot;relativeLikelihood&quot;: 42, # Increase or decrease the likelihood by the specified number of levels. For example, if a finding would be `POSSIBLE` without the detection rule and `relative_likelihood` is 1, then it is upgraded to `LIKELY`, while a value of -1 would downgrade it to `UNLIKELY`. Likelihood may never drop below `VERY_UNLIKELY` or exceed `VERY_LIKELY`, so applying an adjustment of 1 followed by an adjustment of -1 when base likelihood is `VERY_LIKELY` will result in a final likelihood of `LIKELY`.
                    },
                    &quot;proximity&quot;: { # Message for specifying a window around a finding to apply a detection rule. # Range of characters within which the entire hotword must reside. The total length of the window cannot exceed 1000 characters. The finding itself will be included in the window, so that hotwords can be used to match substrings of the finding itself. Suppose you want Cloud DLP to promote the likelihood of the phone number regex &quot;\(\d{3}\) \d{3}-\d{4}&quot; if the area code is known to be the area code of a company&#x27;s office. In this case, use the hotword regex &quot;\(xxx\)&quot;, where &quot;xxx&quot; is the area code in question. For tabular data, if you want to modify the likelihood of an entire column of findngs, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes-likelihood#match-column-values).
                      &quot;windowAfter&quot;: 42, # Number of characters after the finding to consider.
                      &quot;windowBefore&quot;: 42, # Number of characters before the finding to consider. For tabular data, if you want to modify the likelihood of an entire column of findngs, set this to 1. For more information, see [Hotword example: Set the match likelihood of a table column] (https://cloud.google.com/sensitive-data-protection/docs/creating-custom-infotypes-likelihood#match-column-values).
                    },
                  },
                },
              ],
            },
          ],
        },
        &quot;inspectTemplateModifiedTime&quot;: &quot;A String&quot;, # Timestamp when the template was modified
        &quot;inspectTemplateName&quot;: &quot;A String&quot;, # Name of the inspection template used to generate this profile
      },
      &quot;createTime&quot;: &quot;A String&quot;, # The time at which the table was created.
      &quot;dataRiskLevel&quot;: { # Score is a summary of all elements in the data profile. A higher number means more risk. # The data risk level of this table.
        &quot;score&quot;: &quot;A String&quot;, # The score applied to the resource.
      },
      &quot;dataSourceType&quot;: { # Message used to identify the type of resource being profiled. # The resource type that was profiled.
        &quot;dataSource&quot;: &quot;A String&quot;, # An identifying string to the type of resource being profiled. Current values: * google/bigquery/table * google/project * google/sql/table * google/gcs/bucket
      },
      &quot;datasetId&quot;: &quot;A String&quot;, # If the resource is BigQuery, the dataset ID.
      &quot;datasetLocation&quot;: &quot;A String&quot;, # If supported, the location where the dataset&#x27;s data is stored. See https://cloud.google.com/bigquery/docs/locations for supported locations.
      &quot;datasetProjectId&quot;: &quot;A String&quot;, # The Google Cloud project ID that owns the resource.
      &quot;domains&quot;: [ # Domains associated with the profile.
        { # A domain represents a thematic category that a data profile can fall under.
          &quot;category&quot;: &quot;A String&quot;, # A domain category that this profile is related to.
          &quot;signals&quot;: [ # The collection of signals that influenced selection of the category.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;encryptionStatus&quot;: &quot;A String&quot;, # How the table is encrypted.
      &quot;expirationTime&quot;: &quot;A String&quot;, # Optional. The time when this table expires.
      &quot;failedColumnCount&quot;: &quot;A String&quot;, # The number of columns skipped in the table because of an error.
      &quot;fullResource&quot;: &quot;A String&quot;, # The Cloud Asset Inventory resource that was profiled in order to generate this TableDataProfile. https://cloud.google.com/apis/design/resource_names#full_resource_name
      &quot;lastModifiedTime&quot;: &quot;A String&quot;, # The time when this table was last modified
      &quot;name&quot;: &quot;A String&quot;, # The name of the profile.
      &quot;otherInfoTypes&quot;: [ # Other infoTypes found in this table&#x27;s data.
        { # Infotype details for other infoTypes found within a column.
          &quot;estimatedPrevalence&quot;: 42, # Approximate percentage of non-null rows that contained data detected by this infotype.
          &quot;excludedFromAnalysis&quot;: True or False, # Whether this infoType was excluded from sensitivity and risk analysis due to factors such as low prevalence (subject to change).
          &quot;infoType&quot;: { # Type of information detected by the API. # The other infoType.
            &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
            &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
              &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
            },
            &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
          },
        },
      ],
      &quot;predictedInfoTypes&quot;: [ # The infoTypes predicted from this table&#x27;s data.
        { # The infoType details for this column.
          &quot;estimatedPrevalence&quot;: 42, # Not populated for predicted infotypes.
          &quot;infoType&quot;: { # Type of information detected by the API. # The infoType.
            &quot;name&quot;: &quot;A String&quot;, # Name of the information type. Either a name of your choosing when creating a CustomInfoType, or one of the names listed at https://cloud.google.com/sensitive-data-protection/docs/infotypes-reference when specifying a built-in type. When sending Cloud DLP results to Data Catalog, infoType names should conform to the pattern `[A-Za-z0-9$_-]{1,64}`.
            &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # Optional custom sensitivity for this InfoType. This only applies to data profiling.
              &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
            },
            &quot;version&quot;: &quot;A String&quot;, # Optional version name for this InfoType.
          },
        },
      ],
      &quot;profileLastGenerated&quot;: &quot;A String&quot;, # The last time the profile was generated.
      &quot;profileStatus&quot;: { # Success or errors for the profile generation. # Success or error status from the most recent profile generation attempt. May be empty if the profile is still being generated.
        &quot;status&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Profiling status code and optional message. The `status.code` value is 0 (default value) for OK.
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
        },
        &quot;timestamp&quot;: &quot;A String&quot;, # Time when the profile generation status was updated
      },
      &quot;projectDataProfile&quot;: &quot;A String&quot;, # The resource name of the project data profile for this table.
      &quot;relatedResources&quot;: [ # Resources related to this profile.
        { # A related resource. Examples: * The source BigQuery table for a Vertex AI dataset. * The source Cloud Storage bucket for a Vertex AI dataset.
          &quot;fullResource&quot;: &quot;A String&quot;, # The full resource name of the related resource.
        },
      ],
      &quot;resourceLabels&quot;: { # The labels applied to the resource at the time the profile was generated.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;resourceVisibility&quot;: &quot;A String&quot;, # How broadly a resource has been shared.
      &quot;rowCount&quot;: &quot;A String&quot;, # Number of rows in the table when the profile was generated. This will not be populated for BigLake tables.
      &quot;sampleFindingsTable&quot;: { # Message defining the location of a BigQuery table. A table is uniquely identified by its project_id, dataset_id, and table_name. Within a query a table is often referenced with a string in the format of: `:.` or `..`. # The BigQuery table to which the sample findings are written.
        &quot;datasetId&quot;: &quot;A String&quot;, # Dataset ID of the table.
        &quot;projectId&quot;: &quot;A String&quot;, # The Google Cloud project ID of the project containing the table. If omitted, project ID is inferred from the API call.
        &quot;tableId&quot;: &quot;A String&quot;, # Name of the table.
      },
      &quot;scannedColumnCount&quot;: &quot;A String&quot;, # The number of columns profiled in the table.
      &quot;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # The sensitivity score of this table.
        &quot;score&quot;: &quot;A String&quot;, # The sensitivity score applied to the resource.
      },
      &quot;state&quot;: &quot;A String&quot;, # State of a profile. This will always be set to DONE when the table data profile is written to another service like BigQuery or Pub/Sub.
      &quot;tableId&quot;: &quot;A String&quot;, # The table ID.
      &quot;tableSizeBytes&quot;: &quot;A String&quot;, # The size of the table when the profile was generated.
      &quot;tags&quot;: [ # The tags attached to the table, including any tags attached during profiling. Because tags are attached to Cloud SQL instances rather than Cloud SQL tables, this field is empty for Cloud SQL table profiles.
        { # A tag associated with a resource.
          &quot;key&quot;: &quot;A String&quot;, # The key of a tag key-value pair. For Google Cloud resources, this is the resource name of the key, for example, &quot;tagKeys/123456&quot;.
          &quot;namespacedTagValue&quot;: &quot;A String&quot;, # The namespaced name for the tag value to attach to Google Cloud resources. Must be in the format `{parent_id}/{tag_key_short_name}/{short_name}`, for example, &quot;123456/environment/prod&quot; for an organization parent, or &quot;my-project/environment/prod&quot; for a project parent. This is only set for Google Cloud resources.
          &quot;value&quot;: &quot;A String&quot;, # The value of a tag key-value pair. For Google Cloud resources, this is the resource name of the value, for example, &quot;tagValues/123456&quot;.
        },
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</code>
  <pre>Retrieves the next page of results.

        Args:
          previous_request: The request for the previous page. (required)
          previous_response: The response from the request for the previous page. (required)

        Returns:
          A request object that you can call &#x27;execute()&#x27; on to request the next
          page. Returns None if there are no more items in the collection.
        </pre>
</div>

</body></html>