<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_v2beta1.html">DLP API</a> . <a href="dlp_v2beta1.inspect.html">inspect</a> . <a href="dlp_v2beta1.inspect.results.html">results</a> . <a href="dlp_v2beta1.inspect.results.findings.html">findings</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(name, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns list of results for given inspect operation result set id.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(name, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns list of results for given inspect operation result set id.

Args:
  name: string, Identifier of the results set returned as metadata of
the longrunning operation created by a call to CreateInspectOperation.
Should be in the format of `inspect/results/{id}. (required)
  pageSize: integer, Maximum number of results to return.
If 0, the implementation select a reasonable value.
  filter: string, Restrict findings to items that match. Supports info_type and likelihood.
<p>Examples:<br/>
<li>info_type=EMAIL_ADDRESS
<li>info_type=PHONE_NUMBER,EMAIL_ADDRESS
<li>likelihood=VERY_LIKELY
<li>likelihood=VERY_LIKELY,LIKELY
<li>info_type=EMAIL_ADDRESS,likelihood=VERY_LIKELY,LIKELY
  pageToken: string, The value returned by the last `ListInspectFindingsResponse`; indicates
that this is a continuation of a prior `ListInspectFindings` call, and that
the system should return the next page of data.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to the ListInspectFindings request.
    "nextPageToken": "A String", # If not empty, indicates that there may be more results that match the
        # request; this value should be passed in a new `ListInspectFindingsRequest`.
    "result": { # All the findings for a single scanned item. # The results.
      "findingsTruncated": True or False, # If true, then this item might have more findings than were returned,
          # and the findings returned are an arbitrary subset of all findings.
          # The findings list might be truncated because the input items were too
          # large, or because the server reached the maximum amount of resources
          # allowed for a single API call. For best results, divide the input into
          # smaller batches.
      "findings": [ # List of findings for an item.
        { # Container structure describing a single finding within a string or image.
          "quote": "A String", # The specific string that may be potentially sensitive info.
          "likelihood": "A String", # Estimate of how likely it is that the info_type is correct.
          "infoType": { # Type of information detected by the API. # The specific type of info the string might be.
            "name": "A String", # Name of the information type. For built-in info types, this is provided by
                # the API call ListInfoTypes. For user-defined info types, this is
                # provided by the user. All user-defined info types must have unique names,
                # and cannot conflict with built-in info type names.
          },
          "createTime": "A String", # Timestamp when finding was detected.
          "location": { # Specifies the location of a finding within its source item. # Location of the info found.
            "fieldId": { # General identifier of a data field in a storage service. # Field id of the field containing the finding.
              "columnName": "A String", # Column name describing the field.
            },
            "imageBoxes": [ # Location within an image's pixels.
              { # Bounding box encompassing detected text within an image.
                "width": 42, # Width of the bounding box in pixels.
                "top": 42, # Top coordinate of the bounding box. (0,0) is upper left.
                "left": 42, # Left coordinate of the bounding box. (0,0) is upper left.
                "height": 42, # Height of the bounding box in pixels.
              },
            ],
            "codepointRange": { # Generic half-open interval [start, end) # Character offsets within a content item, included when content type
                # is a text. Default charset assumed to be UTF-8.
              "start": "A String", # Index of the first character of the range (inclusive).
              "end": "A String", # Index of the last character of the range (exclusive).
            },
            "recordKey": { # Message for a unique key indicating a record that contains a finding. # Key of the finding.
              "datastoreKey": { # Record key for a finding in Cloud Datastore.
                "entityKey": { # A unique identifier for a Datastore entity. # Datastore entity key.
                    # If a key's partition ID or any of its path kinds or names are
                    # reserved/read-only, the key is reserved/read-only.
                    # A reserved/read-only key is forbidden in certain documented contexts.
                  "path": [ # The entity path.
                      # An entity path consists of one or more elements composed of a kind and a
                      # string or numerical identifier, which identify entities. The first
                      # element identifies a _root entity_, the second element identifies
                      # a _child_ of the root entity, the third element identifies a child of the
                      # second entity, and so forth. The entities identified by all prefixes of
                      # the path are called the element's _ancestors_.
                      #
                      # A path can never be empty, and a path can have at most 100 elements.
                    { # A (kind, ID/name) pair used to construct a key path.
                        #
                        # If either name or ID is set, the element is complete.
                        # If neither is set, the element is incomplete.
                      "kind": "A String", # The kind of the entity.
                          # A kind matching regex `__.*__` is reserved/read-only.
                          # A kind must not contain more than 1500 bytes when UTF-8 encoded.
                          # Cannot be `""`.
                      "name": "A String", # The name of the entity.
                          # A name matching regex `__.*__` is reserved/read-only.
                          # A name must not be more than 1500 bytes when UTF-8 encoded.
                          # Cannot be `""`.
                      "id": "A String", # The auto-allocated ID of the entity.
                          # Never equal to zero. Values less than zero are discouraged and may not
                          # be supported in the future.
                    },
                  ],
                  "partitionId": { # Datastore partition ID. # Entities are partitioned into subsets, currently identified by a project
                      # ID and namespace ID.
                      # Queries are scoped to a single partition.
                      # A partition ID identifies a grouping of entities. The grouping is always
                      # by project and namespace, however the namespace ID may be empty.
                      #
                      # A partition ID contains several dimensions:
                      # project ID and namespace ID.
                    "projectId": "A String", # The ID of the project to which the entities belong.
                    "namespaceId": "A String", # If not empty, the ID of the namespace to which the entities belong.
                  },
                },
              },
              "cloudStorageKey": { # Record key for a finding in a Cloud Storage file.
                "startOffset": "A String", # Byte offset of the referenced data in the file.
                "filePath": "A String", # Path to the file.
              },
            },
            "byteRange": { # Generic half-open interval [start, end) # Zero-based byte offsets within a content item.
              "start": "A String", # Index of the first character of the range (inclusive).
              "end": "A String", # Index of the last character of the range (exclusive).
            },
          },
        },
      ],
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>