<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.columnDataProfiles.html">columnDataProfiles</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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a column 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 column 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="get">get(name, x__xgafv=None)</code>
  <pre>Gets a column data profile.

Args:
  name: string, Required. Resource name, for example `organizations/12345/locations/us/columnDataProfiles/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 column within a table.
  &quot;column&quot;: &quot;A String&quot;, # The name of the column.
  &quot;columnInfoType&quot;: { # The infoType details for this column. # If it&#x27;s been determined this column can be identified as a single type, this will be set. Otherwise the column either has unidentifiable content or mixed types.
    &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;columnType&quot;: &quot;A String&quot;, # The data type of a given column.
  &quot;dataRiskLevel&quot;: { # Score is a summary of all elements in the data profile. A higher number means more risk. # The data risk level for this column.
    &quot;score&quot;: &quot;A String&quot;, # The score applied to the resource.
  },
  &quot;datasetId&quot;: &quot;A String&quot;, # The BigQuery dataset ID, if the resource profiled is a BigQuery table.
  &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 BigQuery locations.
  &quot;datasetProjectId&quot;: &quot;A String&quot;, # The Google Cloud project ID that owns the profiled resource.
  &quot;estimatedNullPercentage&quot;: &quot;A String&quot;, # Approximate percentage of entries being null in the column.
  &quot;estimatedUniquenessScore&quot;: &quot;A String&quot;, # Approximate uniqueness of the column.
  &quot;freeTextScore&quot;: 3.14, # The likelihood that this column contains free-form text. A value close to 1 may indicate the column is likely to contain free-form or natural language text. Range in 0-1.
  &quot;name&quot;: &quot;A String&quot;, # The name of the profile.
  &quot;otherMatches&quot;: [ # Other types found within this column. List will be unordered.
    { # 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;policyState&quot;: &quot;A String&quot;, # Indicates if a policy tag has been applied to the column.
  &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;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # The sensitivity of this column.
    &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.
  &quot;tableDataProfile&quot;: &quot;A String&quot;, # The resource name of the table data profile.
  &quot;tableFullResource&quot;: &quot;A String&quot;, # The resource name of the resource this column is within.
  &quot;tableId&quot;: &quot;A String&quot;, # The table ID.
}</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 column 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: - `table_data_profile_name`: The name of the related table data profile - `project_id`: The Google Cloud project ID (REQUIRED) - `dataset_id`: The BigQuery dataset ID (REQUIRED) - `table_id`: The BigQuery table ID (REQUIRED) - `field_id`: The ID of the BigQuery field - `info_type`: The infotype detected in the resource - `sensitivity_level`: HIGH|MEDIUM|LOW - `data_risk_level`: How much risk is associated with this data - `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 `=` for project_id, dataset_id, and table_id. Other filters also support `!=`. 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 info_type = STREET_ADDRESS * 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 column 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.
  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;columnDataProfiles&quot;: [ # List of data profiles.
    { # The profile for a scanned column within a table.
      &quot;column&quot;: &quot;A String&quot;, # The name of the column.
      &quot;columnInfoType&quot;: { # The infoType details for this column. # If it&#x27;s been determined this column can be identified as a single type, this will be set. Otherwise the column either has unidentifiable content or mixed types.
        &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;columnType&quot;: &quot;A String&quot;, # The data type of a given column.
      &quot;dataRiskLevel&quot;: { # Score is a summary of all elements in the data profile. A higher number means more risk. # The data risk level for this column.
        &quot;score&quot;: &quot;A String&quot;, # The score applied to the resource.
      },
      &quot;datasetId&quot;: &quot;A String&quot;, # The BigQuery dataset ID, if the resource profiled is a BigQuery table.
      &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 BigQuery locations.
      &quot;datasetProjectId&quot;: &quot;A String&quot;, # The Google Cloud project ID that owns the profiled resource.
      &quot;estimatedNullPercentage&quot;: &quot;A String&quot;, # Approximate percentage of entries being null in the column.
      &quot;estimatedUniquenessScore&quot;: &quot;A String&quot;, # Approximate uniqueness of the column.
      &quot;freeTextScore&quot;: 3.14, # The likelihood that this column contains free-form text. A value close to 1 may indicate the column is likely to contain free-form or natural language text. Range in 0-1.
      &quot;name&quot;: &quot;A String&quot;, # The name of the profile.
      &quot;otherMatches&quot;: [ # Other types found within this column. List will be unordered.
        { # 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;policyState&quot;: &quot;A String&quot;, # Indicates if a policy tag has been applied to the column.
      &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;sensitivityScore&quot;: { # Score is calculated from of all elements in the data profile. A higher level means the data is more sensitive. # The sensitivity of this column.
        &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.
      &quot;tableDataProfile&quot;: &quot;A String&quot;, # The resource name of the table data profile.
      &quot;tableFullResource&quot;: &quot;A String&quot;, # The resource name of the resource this column is within.
      &quot;tableId&quot;: &quot;A String&quot;, # The table ID.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The next page token.
}</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>