<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="safebrowsing_v4.html">Safe Browsing API</a> . <a href="safebrowsing_v4.fullHashes.html">fullHashes</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#find">find(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Finds the full hashes that match the requested hash prefixes.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="find">find(body=None, x__xgafv=None)</code>
  <pre>Finds the full hashes that match the requested hash prefixes.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request to return full hashes matched by the provided hash prefixes.
    "client": { # The client metadata associated with Safe Browsing API requests. # The client metadata.
      "clientId": "A String", # A client ID that (hopefully) uniquely identifies the client implementation
          # of the Safe Browsing API.
      "clientVersion": "A String", # The version of the client implementation.
    },
    "apiClient": { # The client metadata associated with Safe Browsing API requests. # Client metadata associated with callers of higher-level APIs built on top
        # of the client's implementation.
      "clientId": "A String", # A client ID that (hopefully) uniquely identifies the client implementation
          # of the Safe Browsing API.
      "clientVersion": "A String", # The version of the client implementation.
    },
    "threatInfo": { # The information regarding one or more threats that a client submits when # The lists and hashes to be checked.
        # checking for matches in threat lists.
      "threatTypes": [ # The threat types to be checked.
        "A String",
      ],
      "threatEntries": [ # The threat entries to be checked.
        { # An individual threat; for example, a malicious URL or its hash
            # representation. Only one of these fields should be set.
          "url": "A String", # A URL.
          "hash": "A String", # A hash prefix, consisting of the most significant 4-32 bytes of a SHA256
              # hash. This field is in binary format. For JSON requests, hashes are
              # base64-encoded.
          "digest": "A String", # The digest of an executable in SHA256 format. The API supports both
              # binary and hex digests. For JSON requests, digests are base64-encoded.
        },
      ],
      "platformTypes": [ # The platform types to be checked.
        "A String",
      ],
      "threatEntryTypes": [ # The entry types to be checked.
        "A String",
      ],
    },
    "clientStates": [ # The current client states for each of the client's local threat lists.
      "A String",
    ],
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    "negativeCacheDuration": "A String", # For requested entities that did not match the threat list, how long to
        # cache the response.
    "matches": [ # The full hashes that matched the requested prefixes.
      { # A match when checking a threat entry in the Safe Browsing threat lists.
        "threatType": "A String", # The threat type matching this threat.
        "threatEntryMetadata": { # The metadata associated with a specific threat entry. The client is expected # Optional metadata associated with this threat.
            # to know the metadata key/value pairs associated with each threat type.
          "entries": [ # The metadata entries.
            { # A single metadata entry.
              "value": "A String", # The metadata entry value. For JSON requests, the value is base64-encoded.
              "key": "A String", # The metadata entry key. For JSON requests, the key is base64-encoded.
            },
          ],
        },
        "threatEntryType": "A String", # The threat entry type matching this threat.
        "cacheDuration": "A String", # The cache lifetime for the returned match. Clients must not cache this
            # response for more than this duration to avoid false positives.
        "threat": { # An individual threat; for example, a malicious URL or its hash # The threat matching this threat.
            # representation. Only one of these fields should be set.
          "url": "A String", # A URL.
          "hash": "A String", # A hash prefix, consisting of the most significant 4-32 bytes of a SHA256
              # hash. This field is in binary format. For JSON requests, hashes are
              # base64-encoded.
          "digest": "A String", # The digest of an executable in SHA256 format. The API supports both
              # binary and hex digests. For JSON requests, digests are base64-encoded.
        },
        "platformType": "A String", # The platform type matching this threat.
      },
    ],
    "minimumWaitDuration": "A String", # The minimum duration the client must wait before issuing any find hashes
        # request. If this field is not set, clients can issue a request as soon as
        # they want.
  }</pre>
</div>

</body></html>