- HTTP request
- Request body
- Response body
- ListUpdateRequest
- Constraints
- CompressionType
- ListUpdateResponse
- ResponseType
- ThreatEntrySet
- RawHashes
- RawIndices
- RiceDeltaEncoding
- Checksum
Fetches the most recent threat list updates. A client can request updates for multiple lists at once.
HTTP request
POST https://safebrowsing.googleapis.com/v4/threatListUpdates:fetch
The URL uses gRPC Transcoding syntax.
Request body
The request body contains data with the following structure:
JSON representation |
---|
{ "client": { object ( |
Fields | |
---|---|
client |
The client metadata. |
listUpdateRequests[] |
The requested threat list updates. |
Response body
If successful, the response body contains data with the following structure:
JSON representation |
---|
{
"listUpdateResponses": [
{
object ( |
Fields | |
---|---|
listUpdateResponses[] |
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. |
minimumWaitDuration |
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. A duration in seconds with up to nine fractional digits, ending with ' |
ListUpdateRequest
A single list update request.
JSON representation |
---|
{ "threatType": enum ( |
Fields | |
---|---|
threatType |
The type of threat posed by entries present in the list. |
platformType |
The type of platform at risk by entries present in the list. |
threatEntryType |
The types of entries present in the list. |
state |
The current state of the client for the requested list (the encrypted client state that was received from the last successful list update). A base64-encoded string. |
constraints |
The constraints associated with this request. |
Constraints
The constraints for this update.
JSON representation |
---|
{
"maxUpdateEntries": integer,
"maxDatabaseEntries": integer,
"region": string,
"supportedCompressions": [
enum ( |
Fields | |
---|---|
maxUpdateEntries |
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. |
maxDatabaseEntries |
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. |
region |
Requests the list for a specific geographic location. If not set the server may pick that value based on the user's IP address. Expects ISO 3166-1 alpha-2 format. |
supportedCompressions[] |
The compression types supported by the client. |
language |
Requests the lists for a specific language. Expects ISO 639 alpha-2 format. |
deviceLocation |
A client's physical location, expressed as a ISO 31166-1 alpha-2 region code. |
CompressionType
The ways in which threat entry sets can be compressed.
Enums | |
---|---|
COMPRESSION_TYPE_UNSPECIFIED |
Unknown. |
RAW |
Raw, uncompressed data. |
RICE |
Rice-Golomb encoded data. |
ListUpdateResponse
An update to an individual list.
JSON representation |
---|
{ "threatType": enum ( |
Fields | |
---|---|
threatType |
The threat type for which data is returned. |
threatEntryType |
The format of the threats. |
platformType |
The platform type for which data is returned. |
responseType |
The type of response. This may indicate that an action is required by the client when the response is received. |
additions[] |
A set of entries to add to a local threat type's list. Repeated to allow for a combination of compressed and raw data to be sent in a single response. |
removals[] |
A set of entries to remove from a local threat type's list. In practice, this field is empty or contains exactly one ThreatEntrySet. |
newClientState |
The new client state, in encrypted format. Opaque to clients. A base64-encoded string. |
checksum |
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't match the expected state, the client must disregard this update and retry later. |
ResponseType
The type of response sent to the client.
Enums | |
---|---|
RESPONSE_TYPE_UNSPECIFIED |
Unknown. |
PARTIAL_UPDATE |
Partial updates are applied to the client's existing local database. |
FULL_UPDATE |
Full updates replace the client's entire local database. This means that either the client was seriously out-of-date or the client is believed to be corrupt. |
ThreatEntrySet
A set of threats that should be added or removed from a client's local database.
JSON representation |
---|
{ "compressionType": enum ( |
Fields | |
---|---|
compressionType |
The compression type for the entries in this set. |
rawHashes |
The raw SHA256-formatted entries. |
rawIndices |
The raw removal indices for a local list. |
riceHashes |
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 encodedData. |
riceIndices |
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 encodedData. |
RawHashes
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.
JSON representation |
---|
{ "prefixSize": integer, "rawHashes": string } |
Fields | |
---|---|
prefixSize |
The number of bytes for each prefix encoded below. This field can be anywhere from 4 (shortest prefix) to 32 (full SHA256 hash). |
rawHashes |
The hashes, in binary format, concatenated into one long string. Hashes are sorted in lexicographic order. For JSON API users, hashes are base64-encoded. A base64-encoded string. |
RawIndices
A set of raw indices to remove from a local list.
JSON representation |
---|
{ "indices": [ integer ] } |
Fields | |
---|---|
indices[] |
The indices to remove from a lexicographically-sorted local list. |
RiceDeltaEncoding
The Rice-Golomb encoded data. Used for sending compressed 4-byte hashes or compressed removal indices.
JSON representation |
---|
{ "firstValue": string, "riceParameter": integer, "numEntries": integer, "encodedData": string } |
Fields | |
---|---|
firstValue |
The offset of the first entry in the encoded data, or, if only a single integer was encoded, that single integer's value. If the field is empty or missing, assume zero. |
riceParameter |
The Golomb-Rice parameter, which is a number between 2 and 28. This field is missing (that is, zero) if |
numEntries |
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 |
encodedData |
The encoded deltas that are encoded using the Golomb-Rice coder. A base64-encoded string. |
Checksum
The expected state of a client's local database.
JSON representation |
---|
{ "sha256": string } |
Fields | |
---|---|
sha256 |
The SHA256 hash of the client state; that is, of the sorted list of all hashes present in the database. A base64-encoded string. |