<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.threatListUpdates.html">threatListUpdates</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="#fetch">fetch(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Fetches the most recent threat list updates. A client can request updates for multiple lists at once.</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="fetch">fetch(body=None, x__xgafv=None)</code>
  <pre>Fetches the most recent threat list updates. A client can request updates for multiple lists at once.

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

{ # Describes a Safe Browsing API update request. Clients can request updates for multiple lists in a single request. The server may not respond to all requests, if the server has no updates for that list. NOTE: Field index 2 is unused. NEXT: 5
  &quot;client&quot;: { # The client metadata associated with Safe Browsing API requests. # The client metadata.
    &quot;clientId&quot;: &quot;A String&quot;, # A client ID that (hopefully) uniquely identifies the client implementation of the Safe Browsing API.
    &quot;clientVersion&quot;: &quot;A String&quot;, # The version of the client implementation.
  },
  &quot;listUpdateRequests&quot;: [ # The requested threat list updates.
    { # A single list update request.
      &quot;constraints&quot;: { # The constraints for this update. # The constraints associated with this request.
        &quot;deviceLocation&quot;: &quot;A String&quot;, # A client&#x27;s physical location, expressed as a ISO 31166-1 alpha-2 region code.
        &quot;language&quot;: &quot;A String&quot;, # Requests the lists for a specific language. Expects ISO 639 alpha-2 format.
        &quot;maxDatabaseEntries&quot;: 42, # Sets the maximum number of entries that the client is willing to have in the local database for the specified list. This should be a power of 2 between 2**10 and 2**20. If zero, no database size limit is set.
        &quot;maxUpdateEntries&quot;: 42, # The maximum size in number of entries. The update will not contain more entries than this value. This should be a power of 2 between 2**10 and 2**20. If zero, no update size limit is set.
        &quot;region&quot;: &quot;A String&quot;, # Requests the list for a specific geographic location. If not set the server may pick that value based on the user&#x27;s IP address. Expects ISO 3166-1 alpha-2 format.
        &quot;supportedCompressions&quot;: [ # The compression types supported by the client.
          &quot;A String&quot;,
        ],
      },
      &quot;platformType&quot;: &quot;A String&quot;, # The type of platform at risk by entries present in the list.
      &quot;state&quot;: &quot;A String&quot;, # The current state of the client for the requested list (the encrypted client state that was received from the last successful list update).
      &quot;threatEntryType&quot;: &quot;A String&quot;, # The types of entries present in the list.
      &quot;threatType&quot;: &quot;A String&quot;, # The type of threat posed by entries present in the list.
    },
  ],
}

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

Returns:
  An object of the form:

    {
  &quot;listUpdateResponses&quot;: [ # The list updates requested by the clients. The number of responses here may be less than the number of requests sent by clients. This is the case, for example, if the server has no updates for a particular list.
    { # An update to an individual list.
      &quot;additions&quot;: [ # A set of entries to add to a local threat type&#x27;s list. Repeated to allow for a combination of compressed and raw data to be sent in a single response.
        { # A set of threats that should be added or removed from a client&#x27;s local database.
          &quot;compressionType&quot;: &quot;A String&quot;, # The compression type for the entries in this set.
          &quot;rawHashes&quot;: { # The uncompressed threat entries in hash format of a particular prefix length. Hashes can be anywhere from 4 to 32 bytes in size. A large majority are 4 bytes, but some hashes are lengthened if they collide with the hash of a popular URL. Used for sending ThreatEntrySet to clients that do not support compression, or when sending non-4-byte hashes to clients that do support compression. # The raw SHA256-formatted entries.
            &quot;prefixSize&quot;: 42, # The number of bytes for each prefix encoded below. This field can be anywhere from 4 (shortest prefix) to 32 (full SHA256 hash).
            &quot;rawHashes&quot;: &quot;A String&quot;, # The hashes, in binary format, concatenated into one long string. Hashes are sorted in lexicographic order. For JSON API users, hashes are base64-encoded.
          },
          &quot;rawIndices&quot;: { # A set of raw indices to remove from a local list. # The raw removal indices for a local list.
            &quot;indices&quot;: [ # The indices to remove from a lexicographically-sorted local list.
              42,
            ],
          },
          &quot;riceHashes&quot;: { # The Rice-Golomb encoded data. Used for sending compressed 4-byte hashes or compressed removal indices. # The encoded 4-byte prefixes of SHA256-formatted entries, using a Golomb-Rice encoding. The hashes are converted to uint32, sorted in ascending order, then delta encoded and stored as encoded_data.
            &quot;encodedData&quot;: &quot;A String&quot;, # The encoded deltas that are encoded using the Golomb-Rice coder.
            &quot;firstValue&quot;: &quot;A String&quot;, # The offset of the first entry in the encoded data, or, if only a single integer was encoded, that single integer&#x27;s value. If the field is empty or missing, assume zero.
            &quot;numEntries&quot;: 42, # The number of entries that are delta encoded in the encoded data. If only a single integer was encoded, this will be zero and the single value will be stored in `first_value`.
            &quot;riceParameter&quot;: 42, # The Golomb-Rice parameter, which is a number between 2 and 28. This field is missing (that is, zero) if `num_entries` is zero.
          },
          &quot;riceIndices&quot;: { # The Rice-Golomb encoded data. Used for sending compressed 4-byte hashes or compressed removal indices. # The encoded local, lexicographically-sorted list indices, using a Golomb-Rice encoding. Used for sending compressed removal indices. The removal indices (uint32) are sorted in ascending order, then delta encoded and stored as encoded_data.
            &quot;encodedData&quot;: &quot;A String&quot;, # The encoded deltas that are encoded using the Golomb-Rice coder.
            &quot;firstValue&quot;: &quot;A String&quot;, # The offset of the first entry in the encoded data, or, if only a single integer was encoded, that single integer&#x27;s value. If the field is empty or missing, assume zero.
            &quot;numEntries&quot;: 42, # The number of entries that are delta encoded in the encoded data. If only a single integer was encoded, this will be zero and the single value will be stored in `first_value`.
            &quot;riceParameter&quot;: 42, # The Golomb-Rice parameter, which is a number between 2 and 28. This field is missing (that is, zero) if `num_entries` is zero.
          },
        },
      ],
      &quot;checksum&quot;: { # The expected state of a client&#x27;s local database. # The expected SHA256 hash of the client state; that is, of the sorted list of all hashes present in the database after applying the provided update. If the client state doesn&#x27;t match the expected state, the client must disregard this update and retry later.
        &quot;sha256&quot;: &quot;A String&quot;, # The SHA256 hash of the client state; that is, of the sorted list of all hashes present in the database.
      },
      &quot;newClientState&quot;: &quot;A String&quot;, # The new client state, in encrypted format. Opaque to clients.
      &quot;platformType&quot;: &quot;A String&quot;, # The platform type for which data is returned.
      &quot;removals&quot;: [ # A set of entries to remove from a local threat type&#x27;s list. In practice, this field is empty or contains exactly one ThreatEntrySet.
        { # A set of threats that should be added or removed from a client&#x27;s local database.
          &quot;compressionType&quot;: &quot;A String&quot;, # The compression type for the entries in this set.
          &quot;rawHashes&quot;: { # The uncompressed threat entries in hash format of a particular prefix length. Hashes can be anywhere from 4 to 32 bytes in size. A large majority are 4 bytes, but some hashes are lengthened if they collide with the hash of a popular URL. Used for sending ThreatEntrySet to clients that do not support compression, or when sending non-4-byte hashes to clients that do support compression. # The raw SHA256-formatted entries.
            &quot;prefixSize&quot;: 42, # The number of bytes for each prefix encoded below. This field can be anywhere from 4 (shortest prefix) to 32 (full SHA256 hash).
            &quot;rawHashes&quot;: &quot;A String&quot;, # The hashes, in binary format, concatenated into one long string. Hashes are sorted in lexicographic order. For JSON API users, hashes are base64-encoded.
          },
          &quot;rawIndices&quot;: { # A set of raw indices to remove from a local list. # The raw removal indices for a local list.
            &quot;indices&quot;: [ # The indices to remove from a lexicographically-sorted local list.
              42,
            ],
          },
          &quot;riceHashes&quot;: { # The Rice-Golomb encoded data. Used for sending compressed 4-byte hashes or compressed removal indices. # The encoded 4-byte prefixes of SHA256-formatted entries, using a Golomb-Rice encoding. The hashes are converted to uint32, sorted in ascending order, then delta encoded and stored as encoded_data.
            &quot;encodedData&quot;: &quot;A String&quot;, # The encoded deltas that are encoded using the Golomb-Rice coder.
            &quot;firstValue&quot;: &quot;A String&quot;, # The offset of the first entry in the encoded data, or, if only a single integer was encoded, that single integer&#x27;s value. If the field is empty or missing, assume zero.
            &quot;numEntries&quot;: 42, # The number of entries that are delta encoded in the encoded data. If only a single integer was encoded, this will be zero and the single value will be stored in `first_value`.
            &quot;riceParameter&quot;: 42, # The Golomb-Rice parameter, which is a number between 2 and 28. This field is missing (that is, zero) if `num_entries` is zero.
          },
          &quot;riceIndices&quot;: { # The Rice-Golomb encoded data. Used for sending compressed 4-byte hashes or compressed removal indices. # The encoded local, lexicographically-sorted list indices, using a Golomb-Rice encoding. Used for sending compressed removal indices. The removal indices (uint32) are sorted in ascending order, then delta encoded and stored as encoded_data.
            &quot;encodedData&quot;: &quot;A String&quot;, # The encoded deltas that are encoded using the Golomb-Rice coder.
            &quot;firstValue&quot;: &quot;A String&quot;, # The offset of the first entry in the encoded data, or, if only a single integer was encoded, that single integer&#x27;s value. If the field is empty or missing, assume zero.
            &quot;numEntries&quot;: 42, # The number of entries that are delta encoded in the encoded data. If only a single integer was encoded, this will be zero and the single value will be stored in `first_value`.
            &quot;riceParameter&quot;: 42, # The Golomb-Rice parameter, which is a number between 2 and 28. This field is missing (that is, zero) if `num_entries` is zero.
          },
        },
      ],
      &quot;responseType&quot;: &quot;A String&quot;, # The type of response. This may indicate that an action is required by the client when the response is received.
      &quot;threatEntryType&quot;: &quot;A String&quot;, # The format of the threats.
      &quot;threatType&quot;: &quot;A String&quot;, # The threat type for which data is returned.
    },
  ],
  &quot;minimumWaitDuration&quot;: &quot;A String&quot;, # The minimum duration the client must wait before issuing any update request. If this field is not set clients may update as soon as they want.
}</pre>
</div>

</body></html>