<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.threatHits.html">threatHits</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(body, x__xgafv=None)</a></code></p>
<p class="firstline">Reports a Safe Browsing threat list hit to Google. Only projects with</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(body, x__xgafv=None)</code>
  <pre>Reports a Safe Browsing threat list hit to Google. Only projects with
TRUSTED_REPORTER visibility can use this method.

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

{
    "threatType": "A String", # The threat type reported.
    "clientInfo": { # The client metadata associated with Safe Browsing API requests. # Client-reported identification.
      "clientVersion": "A String", # The version of the client implementation.
      "clientId": "A String", # A client ID that (hopefully) uniquely identifies the client implementation
          # of the Safe Browsing API.
    },
    "userInfo": { # Details about the user that encountered the threat. # Details about the user that encountered the threat.
      "regionCode": "A String", # The UN M.49 region code associated with the user's location.
      "userId": "A String", # Unique user identifier defined by the client.
    },
    "entry": { # An individual threat; for example, a malicious URL or its hash # The threat entry responsible for the hit. Full hash should be reported for
        # hash-based hits.
        # 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 reported.
    "resources": [ # The resources related to the threat hit.
      { # A single resource related to a threat hit.
        "url": "A String", # The URL of the resource.
        "referrer": "A String", # Referrer of the resource. Only set if the referrer is available.
        "type": "A String", # The type of source reported.
        "remoteIp": "A String", # The remote IP of the resource in ASCII format. Either IPv4 or IPv6.
      },
    ],
  }

  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);
      #     }
      #
      # The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

</body></html>