blob: 0c540d7ed00629565a175eb39274675723dcc521 [file] [log] [blame]
// This is a generated file (see the discoveryapis_generator project).
library googleapis.safebrowsing.v4;
import 'dart:core' as core;
import 'dart:async' as async;
import 'dart:convert' as convert;
import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
import 'package:http/http.dart' as http;
export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
show ApiRequestError, DetailedApiRequestError;
const core.String USER_AGENT = 'dart-api-client safebrowsing/v4';
/// Enables client applications to check web resources (most commonly URLs)
/// against Google-generated lists of unsafe web resources.
class SafebrowsingApi {
final commons.ApiRequester _requester;
EncodedFullHashesResourceApi get encodedFullHashes =>
new EncodedFullHashesResourceApi(_requester);
EncodedUpdatesResourceApi get encodedUpdates =>
new EncodedUpdatesResourceApi(_requester);
FullHashesResourceApi get fullHashes => new FullHashesResourceApi(_requester);
ThreatListUpdatesResourceApi get threatListUpdates =>
new ThreatListUpdatesResourceApi(_requester);
ThreatListsResourceApi get threatLists =>
new ThreatListsResourceApi(_requester);
ThreatMatchesResourceApi get threatMatches =>
new ThreatMatchesResourceApi(_requester);
SafebrowsingApi(http.Client client,
{core.String rootUrl: "https://safebrowsing.googleapis.com/",
core.String servicePath: ""})
: _requester =
new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT);
}
class EncodedFullHashesResourceApi {
final commons.ApiRequester _requester;
EncodedFullHashesResourceApi(commons.ApiRequester client)
: _requester = client;
/// Request parameters:
///
/// [encodedRequest] - A serialized FindFullHashesRequest proto.
///
/// [clientVersion] - The version of the client implementation.
///
/// [clientId] - A client ID that (hopefully) uniquely identifies the client
/// implementation
/// of the Safe Browsing API.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FindFullHashesResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FindFullHashesResponse> get(core.String encodedRequest,
{core.String clientVersion, core.String clientId, core.String $fields}) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body = null;
if (encodedRequest == null) {
throw new core.ArgumentError("Parameter encodedRequest is required.");
}
if (clientVersion != null) {
_queryParams["clientVersion"] = [clientVersion];
}
if (clientId != null) {
_queryParams["clientId"] = [clientId];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v4/encodedFullHashes/' +
commons.Escaper.ecapeVariable('$encodedRequest');
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new FindFullHashesResponse.fromJson(data));
}
}
class EncodedUpdatesResourceApi {
final commons.ApiRequester _requester;
EncodedUpdatesResourceApi(commons.ApiRequester client) : _requester = client;
/// Request parameters:
///
/// [encodedRequest] - A serialized FetchThreatListUpdatesRequest proto.
///
/// [clientId] - A client ID that uniquely identifies the client
/// implementation of the Safe
/// Browsing API.
///
/// [clientVersion] - The version of the client implementation.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FetchThreatListUpdatesResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FetchThreatListUpdatesResponse> get(core.String encodedRequest,
{core.String clientId, core.String clientVersion, core.String $fields}) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body = null;
if (encodedRequest == null) {
throw new core.ArgumentError("Parameter encodedRequest is required.");
}
if (clientId != null) {
_queryParams["clientId"] = [clientId];
}
if (clientVersion != null) {
_queryParams["clientVersion"] = [clientVersion];
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url =
'v4/encodedUpdates/' + commons.Escaper.ecapeVariable('$encodedRequest');
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new FetchThreatListUpdatesResponse.fromJson(data));
}
}
class FullHashesResourceApi {
final commons.ApiRequester _requester;
FullHashesResourceApi(commons.ApiRequester client) : _requester = client;
/// Finds the full hashes that match the requested hash prefixes.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FindFullHashesResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FindFullHashesResponse> find(FindFullHashesRequest request,
{core.String $fields}) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body = null;
if (request != null) {
_body = convert.JSON.encode((request).toJson());
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v4/fullHashes:find';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new FindFullHashesResponse.fromJson(data));
}
}
class ThreatListUpdatesResourceApi {
final commons.ApiRequester _requester;
ThreatListUpdatesResourceApi(commons.ApiRequester client)
: _requester = client;
/// Fetches the most recent threat list updates. A client can request updates
/// for multiple lists at once.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FetchThreatListUpdatesResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FetchThreatListUpdatesResponse> fetch(
FetchThreatListUpdatesRequest request,
{core.String $fields}) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body = null;
if (request != null) {
_body = convert.JSON.encode((request).toJson());
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v4/threatListUpdates:fetch';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new FetchThreatListUpdatesResponse.fromJson(data));
}
}
class ThreatListsResourceApi {
final commons.ApiRequester _requester;
ThreatListsResourceApi(commons.ApiRequester client) : _requester = client;
/// Lists the Safe Browsing threat lists available for download.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListThreatListsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListThreatListsResponse> list({core.String $fields}) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body = null;
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v4/threatLists';
var _response = _requester.request(_url, "GET",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response.then((data) => new ListThreatListsResponse.fromJson(data));
}
}
class ThreatMatchesResourceApi {
final commons.ApiRequester _requester;
ThreatMatchesResourceApi(commons.ApiRequester client) : _requester = client;
/// Finds the threat entries that match the Safe Browsing lists.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [FindThreatMatchesResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<FindThreatMatchesResponse> find(FindThreatMatchesRequest request,
{core.String $fields}) {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body = null;
if (request != null) {
_body = convert.JSON.encode((request).toJson());
}
if ($fields != null) {
_queryParams["fields"] = [$fields];
}
_url = 'v4/threatMatches:find';
var _response = _requester.request(_url, "POST",
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions);
return _response
.then((data) => new FindThreatMatchesResponse.fromJson(data));
}
}
/// The expected state of a client's local database.
class Checksum {
/// The SHA256 hash of the client state; that is, of the sorted list of all
/// hashes present in the database.
core.String sha256;
core.List<core.int> get sha256AsBytes {
return convert.BASE64.decode(sha256);
}
void set sha256AsBytes(core.List<core.int> _bytes) {
sha256 =
convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
}
Checksum();
Checksum.fromJson(core.Map _json) {
if (_json.containsKey("sha256")) {
sha256 = _json["sha256"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (sha256 != null) {
_json["sha256"] = sha256;
}
return _json;
}
}
/// The client metadata associated with Safe Browsing API requests.
class ClientInfo {
/// A client ID that (hopefully) uniquely identifies the client implementation
/// of the Safe Browsing API.
core.String clientId;
/// The version of the client implementation.
core.String clientVersion;
ClientInfo();
ClientInfo.fromJson(core.Map _json) {
if (_json.containsKey("clientId")) {
clientId = _json["clientId"];
}
if (_json.containsKey("clientVersion")) {
clientVersion = _json["clientVersion"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (clientId != null) {
_json["clientId"] = clientId;
}
if (clientVersion != null) {
_json["clientVersion"] = clientVersion;
}
return _json;
}
}
/// The constraints for this update.
class Constraints {
/// Sets the maximum number of entries that the client is willing to have
/// in the local database. This should be a power of 2 between 2**10 and
/// 2**20. If zero, no database size limit is set.
core.int maxDatabaseEntries;
/// 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.
core.int maxUpdateEntries;
/// 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.
core.String region;
/// The compression types supported by the client.
core.List<core.String> supportedCompressions;
Constraints();
Constraints.fromJson(core.Map _json) {
if (_json.containsKey("maxDatabaseEntries")) {
maxDatabaseEntries = _json["maxDatabaseEntries"];
}
if (_json.containsKey("maxUpdateEntries")) {
maxUpdateEntries = _json["maxUpdateEntries"];
}
if (_json.containsKey("region")) {
region = _json["region"];
}
if (_json.containsKey("supportedCompressions")) {
supportedCompressions = _json["supportedCompressions"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (maxDatabaseEntries != null) {
_json["maxDatabaseEntries"] = maxDatabaseEntries;
}
if (maxUpdateEntries != null) {
_json["maxUpdateEntries"] = maxUpdateEntries;
}
if (region != null) {
_json["region"] = region;
}
if (supportedCompressions != null) {
_json["supportedCompressions"] = supportedCompressions;
}
return _json;
}
}
/// Describes a Safe Browsing API update request. Clients can request updates
/// for
/// multiple lists in a single request.
/// NOTE: Field index 2 is unused.
/// NEXT: 5
class FetchThreatListUpdatesRequest {
/// The client metadata.
ClientInfo client;
/// The requested threat list updates.
core.List<ListUpdateRequest> listUpdateRequests;
FetchThreatListUpdatesRequest();
FetchThreatListUpdatesRequest.fromJson(core.Map _json) {
if (_json.containsKey("client")) {
client = new ClientInfo.fromJson(_json["client"]);
}
if (_json.containsKey("listUpdateRequests")) {
listUpdateRequests = _json["listUpdateRequests"]
.map((value) => new ListUpdateRequest.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (client != null) {
_json["client"] = (client).toJson();
}
if (listUpdateRequests != null) {
_json["listUpdateRequests"] =
listUpdateRequests.map((value) => (value).toJson()).toList();
}
return _json;
}
}
class FetchThreatListUpdatesResponse {
/// The list updates requested by the clients.
core.List<ListUpdateResponse> listUpdateResponses;
/// 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.
core.String minimumWaitDuration;
FetchThreatListUpdatesResponse();
FetchThreatListUpdatesResponse.fromJson(core.Map _json) {
if (_json.containsKey("listUpdateResponses")) {
listUpdateResponses = _json["listUpdateResponses"]
.map((value) => new ListUpdateResponse.fromJson(value))
.toList();
}
if (_json.containsKey("minimumWaitDuration")) {
minimumWaitDuration = _json["minimumWaitDuration"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (listUpdateResponses != null) {
_json["listUpdateResponses"] =
listUpdateResponses.map((value) => (value).toJson()).toList();
}
if (minimumWaitDuration != null) {
_json["minimumWaitDuration"] = minimumWaitDuration;
}
return _json;
}
}
/// Request to return full hashes matched by the provided hash prefixes.
class FindFullHashesRequest {
/// Client metadata associated with callers of higher-level APIs built on top
/// of the client's implementation.
ClientInfo apiClient;
/// The client metadata.
ClientInfo client;
/// The current client states for each of the client's local threat lists.
core.List<core.String> clientStates;
/// The lists and hashes to be checked.
ThreatInfo threatInfo;
FindFullHashesRequest();
FindFullHashesRequest.fromJson(core.Map _json) {
if (_json.containsKey("apiClient")) {
apiClient = new ClientInfo.fromJson(_json["apiClient"]);
}
if (_json.containsKey("client")) {
client = new ClientInfo.fromJson(_json["client"]);
}
if (_json.containsKey("clientStates")) {
clientStates = _json["clientStates"];
}
if (_json.containsKey("threatInfo")) {
threatInfo = new ThreatInfo.fromJson(_json["threatInfo"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (apiClient != null) {
_json["apiClient"] = (apiClient).toJson();
}
if (client != null) {
_json["client"] = (client).toJson();
}
if (clientStates != null) {
_json["clientStates"] = clientStates;
}
if (threatInfo != null) {
_json["threatInfo"] = (threatInfo).toJson();
}
return _json;
}
}
class FindFullHashesResponse {
/// The full hashes that matched the requested prefixes.
core.List<ThreatMatch> matches;
/// 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.
core.String minimumWaitDuration;
/// For requested entities that did not match the threat list, how long to
/// cache the response.
core.String negativeCacheDuration;
FindFullHashesResponse();
FindFullHashesResponse.fromJson(core.Map _json) {
if (_json.containsKey("matches")) {
matches = _json["matches"]
.map((value) => new ThreatMatch.fromJson(value))
.toList();
}
if (_json.containsKey("minimumWaitDuration")) {
minimumWaitDuration = _json["minimumWaitDuration"];
}
if (_json.containsKey("negativeCacheDuration")) {
negativeCacheDuration = _json["negativeCacheDuration"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (matches != null) {
_json["matches"] = matches.map((value) => (value).toJson()).toList();
}
if (minimumWaitDuration != null) {
_json["minimumWaitDuration"] = minimumWaitDuration;
}
if (negativeCacheDuration != null) {
_json["negativeCacheDuration"] = negativeCacheDuration;
}
return _json;
}
}
/// Request to check entries against lists.
class FindThreatMatchesRequest {
/// The client metadata.
ClientInfo client;
/// The lists and entries to be checked for matches.
ThreatInfo threatInfo;
FindThreatMatchesRequest();
FindThreatMatchesRequest.fromJson(core.Map _json) {
if (_json.containsKey("client")) {
client = new ClientInfo.fromJson(_json["client"]);
}
if (_json.containsKey("threatInfo")) {
threatInfo = new ThreatInfo.fromJson(_json["threatInfo"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (client != null) {
_json["client"] = (client).toJson();
}
if (threatInfo != null) {
_json["threatInfo"] = (threatInfo).toJson();
}
return _json;
}
}
class FindThreatMatchesResponse {
/// The threat list matches.
core.List<ThreatMatch> matches;
FindThreatMatchesResponse();
FindThreatMatchesResponse.fromJson(core.Map _json) {
if (_json.containsKey("matches")) {
matches = _json["matches"]
.map((value) => new ThreatMatch.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (matches != null) {
_json["matches"] = matches.map((value) => (value).toJson()).toList();
}
return _json;
}
}
class ListThreatListsResponse {
/// The lists available for download by the client.
core.List<ThreatListDescriptor> threatLists;
ListThreatListsResponse();
ListThreatListsResponse.fromJson(core.Map _json) {
if (_json.containsKey("threatLists")) {
threatLists = _json["threatLists"]
.map((value) => new ThreatListDescriptor.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (threatLists != null) {
_json["threatLists"] =
threatLists.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// A single list update request.
class ListUpdateRequest {
/// The constraints associated with this request.
Constraints constraints;
/// The type of platform at risk by entries present in the list.
/// Possible string values are:
/// - "PLATFORM_TYPE_UNSPECIFIED" : Unknown platform.
/// - "WINDOWS" : Threat posed to Windows.
/// - "LINUX" : Threat posed to Linux.
/// - "ANDROID" : Threat posed to Android.
/// - "OSX" : Threat posed to OS X.
/// - "IOS" : Threat posed to iOS.
/// - "ANY_PLATFORM" : Threat posed to at least one of the defined platforms.
/// - "ALL_PLATFORMS" : Threat posed to all defined platforms.
/// - "CHROME" : Threat posed to Chrome.
core.String platformType;
/// The current state of the client for the requested list (the encrypted
/// client state that was received from the last successful list update).
core.String state;
core.List<core.int> get stateAsBytes {
return convert.BASE64.decode(state);
}
void set stateAsBytes(core.List<core.int> _bytes) {
state =
convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
}
/// The types of entries present in the list.
/// Possible string values are:
/// - "THREAT_ENTRY_TYPE_UNSPECIFIED" : Unspecified.
/// - "URL" : A URL.
/// - "EXECUTABLE" : An executable program.
/// - "IP_RANGE" : An IP range.
/// - "CHROME_EXTENSION" : Chrome extension.
/// - "FILENAME" : Filename.
/// - "CERT" : CERT
core.String threatEntryType;
/// The type of threat posed by entries present in the list.
/// Possible string values are:
/// - "THREAT_TYPE_UNSPECIFIED" : Unknown.
/// - "MALWARE" : Malware threat type.
/// - "SOCIAL_ENGINEERING" : Social engineering threat type.
/// - "UNWANTED_SOFTWARE" : Unwanted software threat type.
/// - "POTENTIALLY_HARMFUL_APPLICATION" : Potentially harmful application
/// threat type.
/// - "SOCIAL_ENGINEERING_INTERNAL" : Social engineering threat type for
/// internal use.
/// - "API_ABUSE" : API abuse threat type.
/// - "MALICIOUS_BINARY" : Malicious binary threat type.
/// - "CSD_WHITELIST" : Client side detection whitelist threat type.
/// - "CSD_DOWNLOAD_WHITELIST" : Client side download detection whitelist
/// threat type.
/// - "CLIENT_INCIDENT" : Client incident threat type.
/// - "CLIENT_INCIDENT_WHITELIST" : Whitelist used when detecting client
/// incident threats.
/// This enum was never launched and should be re-used for the next list.
/// - "APK_MALWARE_OFFLINE" : List used for offline APK checks in PAM.
/// - "SUBRESOURCE_FILTER" : Patterns to be used for activating the
/// subresource filter. Interstitial
/// will not be shown for patterns from this list.
core.String threatType;
ListUpdateRequest();
ListUpdateRequest.fromJson(core.Map _json) {
if (_json.containsKey("constraints")) {
constraints = new Constraints.fromJson(_json["constraints"]);
}
if (_json.containsKey("platformType")) {
platformType = _json["platformType"];
}
if (_json.containsKey("state")) {
state = _json["state"];
}
if (_json.containsKey("threatEntryType")) {
threatEntryType = _json["threatEntryType"];
}
if (_json.containsKey("threatType")) {
threatType = _json["threatType"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (constraints != null) {
_json["constraints"] = (constraints).toJson();
}
if (platformType != null) {
_json["platformType"] = platformType;
}
if (state != null) {
_json["state"] = state;
}
if (threatEntryType != null) {
_json["threatEntryType"] = threatEntryType;
}
if (threatType != null) {
_json["threatType"] = threatType;
}
return _json;
}
}
/// An update to an individual list.
class ListUpdateResponse {
/// 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.
core.List<ThreatEntrySet> additions;
/// 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.
Checksum checksum;
/// The new client state, in encrypted format. Opaque to clients.
core.String newClientState;
core.List<core.int> get newClientStateAsBytes {
return convert.BASE64.decode(newClientState);
}
void set newClientStateAsBytes(core.List<core.int> _bytes) {
newClientState =
convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
}
/// The platform type for which data is returned.
/// Possible string values are:
/// - "PLATFORM_TYPE_UNSPECIFIED" : Unknown platform.
/// - "WINDOWS" : Threat posed to Windows.
/// - "LINUX" : Threat posed to Linux.
/// - "ANDROID" : Threat posed to Android.
/// - "OSX" : Threat posed to OS X.
/// - "IOS" : Threat posed to iOS.
/// - "ANY_PLATFORM" : Threat posed to at least one of the defined platforms.
/// - "ALL_PLATFORMS" : Threat posed to all defined platforms.
/// - "CHROME" : Threat posed to Chrome.
core.String platformType;
/// A set of entries to remove from a local threat type's list. In practice,
/// this field is empty or contains exactly one ThreatEntrySet.
core.List<ThreatEntrySet> removals;
/// The type of response. This may indicate that an action is required by the
/// client when the response is received.
/// Possible string values are:
/// - "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.
core.String responseType;
/// The format of the threats.
/// Possible string values are:
/// - "THREAT_ENTRY_TYPE_UNSPECIFIED" : Unspecified.
/// - "URL" : A URL.
/// - "EXECUTABLE" : An executable program.
/// - "IP_RANGE" : An IP range.
/// - "CHROME_EXTENSION" : Chrome extension.
/// - "FILENAME" : Filename.
/// - "CERT" : CERT
core.String threatEntryType;
/// The threat type for which data is returned.
/// Possible string values are:
/// - "THREAT_TYPE_UNSPECIFIED" : Unknown.
/// - "MALWARE" : Malware threat type.
/// - "SOCIAL_ENGINEERING" : Social engineering threat type.
/// - "UNWANTED_SOFTWARE" : Unwanted software threat type.
/// - "POTENTIALLY_HARMFUL_APPLICATION" : Potentially harmful application
/// threat type.
/// - "SOCIAL_ENGINEERING_INTERNAL" : Social engineering threat type for
/// internal use.
/// - "API_ABUSE" : API abuse threat type.
/// - "MALICIOUS_BINARY" : Malicious binary threat type.
/// - "CSD_WHITELIST" : Client side detection whitelist threat type.
/// - "CSD_DOWNLOAD_WHITELIST" : Client side download detection whitelist
/// threat type.
/// - "CLIENT_INCIDENT" : Client incident threat type.
/// - "CLIENT_INCIDENT_WHITELIST" : Whitelist used when detecting client
/// incident threats.
/// This enum was never launched and should be re-used for the next list.
/// - "APK_MALWARE_OFFLINE" : List used for offline APK checks in PAM.
/// - "SUBRESOURCE_FILTER" : Patterns to be used for activating the
/// subresource filter. Interstitial
/// will not be shown for patterns from this list.
core.String threatType;
ListUpdateResponse();
ListUpdateResponse.fromJson(core.Map _json) {
if (_json.containsKey("additions")) {
additions = _json["additions"]
.map((value) => new ThreatEntrySet.fromJson(value))
.toList();
}
if (_json.containsKey("checksum")) {
checksum = new Checksum.fromJson(_json["checksum"]);
}
if (_json.containsKey("newClientState")) {
newClientState = _json["newClientState"];
}
if (_json.containsKey("platformType")) {
platformType = _json["platformType"];
}
if (_json.containsKey("removals")) {
removals = _json["removals"]
.map((value) => new ThreatEntrySet.fromJson(value))
.toList();
}
if (_json.containsKey("responseType")) {
responseType = _json["responseType"];
}
if (_json.containsKey("threatEntryType")) {
threatEntryType = _json["threatEntryType"];
}
if (_json.containsKey("threatType")) {
threatType = _json["threatType"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (additions != null) {
_json["additions"] = additions.map((value) => (value).toJson()).toList();
}
if (checksum != null) {
_json["checksum"] = (checksum).toJson();
}
if (newClientState != null) {
_json["newClientState"] = newClientState;
}
if (platformType != null) {
_json["platformType"] = platformType;
}
if (removals != null) {
_json["removals"] = removals.map((value) => (value).toJson()).toList();
}
if (responseType != null) {
_json["responseType"] = responseType;
}
if (threatEntryType != null) {
_json["threatEntryType"] = threatEntryType;
}
if (threatType != null) {
_json["threatType"] = threatType;
}
return _json;
}
}
/// A single metadata entry.
class MetadataEntry {
/// The metadata entry key. For JSON requests, the key is base64-encoded.
core.String key;
core.List<core.int> get keyAsBytes {
return convert.BASE64.decode(key);
}
void set keyAsBytes(core.List<core.int> _bytes) {
key =
convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
}
/// The metadata entry value. For JSON requests, the value is base64-encoded.
core.String value;
core.List<core.int> get valueAsBytes {
return convert.BASE64.decode(value);
}
void set valueAsBytes(core.List<core.int> _bytes) {
value =
convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
}
MetadataEntry();
MetadataEntry.fromJson(core.Map _json) {
if (_json.containsKey("key")) {
key = _json["key"];
}
if (_json.containsKey("value")) {
value = _json["value"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (key != null) {
_json["key"] = key;
}
if (value != null) {
_json["value"] = value;
}
return _json;
}
}
/// 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.
class RawHashes {
/// The number of bytes for each prefix encoded below. This field can be
/// anywhere from 4 (shortest prefix) to 32 (full SHA256 hash).
core.int prefixSize;
/// The hashes, in binary format, concatenated into one long string. Hashes
/// are
/// sorted in lexicographic order. For JSON API users, hashes are
/// base64-encoded.
core.String rawHashes;
core.List<core.int> get rawHashesAsBytes {
return convert.BASE64.decode(rawHashes);
}
void set rawHashesAsBytes(core.List<core.int> _bytes) {
rawHashes =
convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
}
RawHashes();
RawHashes.fromJson(core.Map _json) {
if (_json.containsKey("prefixSize")) {
prefixSize = _json["prefixSize"];
}
if (_json.containsKey("rawHashes")) {
rawHashes = _json["rawHashes"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (prefixSize != null) {
_json["prefixSize"] = prefixSize;
}
if (rawHashes != null) {
_json["rawHashes"] = rawHashes;
}
return _json;
}
}
/// A set of raw indices to remove from a local list.
class RawIndices {
/// The indices to remove from a lexicographically-sorted local list.
core.List<core.int> indices;
RawIndices();
RawIndices.fromJson(core.Map _json) {
if (_json.containsKey("indices")) {
indices = _json["indices"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (indices != null) {
_json["indices"] = indices;
}
return _json;
}
}
/// The Rice-Golomb encoded data. Used for sending compressed 4-byte hashes or
/// compressed removal indices.
class RiceDeltaEncoding {
/// The encoded deltas that are encoded using the Golomb-Rice coder.
core.String encodedData;
core.List<core.int> get encodedDataAsBytes {
return convert.BASE64.decode(encodedData);
}
void set encodedDataAsBytes(core.List<core.int> _bytes) {
encodedData =
convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
}
/// The offset of the first entry in the encoded data, or, if only a single
/// integer was encoded, that single integer's value.
core.String firstValue;
/// 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`.
core.int numEntries;
/// The Golomb-Rice parameter, which is a number between 2 and 28. This field
/// is missing (that is, zero) if `num_entries` is zero.
core.int riceParameter;
RiceDeltaEncoding();
RiceDeltaEncoding.fromJson(core.Map _json) {
if (_json.containsKey("encodedData")) {
encodedData = _json["encodedData"];
}
if (_json.containsKey("firstValue")) {
firstValue = _json["firstValue"];
}
if (_json.containsKey("numEntries")) {
numEntries = _json["numEntries"];
}
if (_json.containsKey("riceParameter")) {
riceParameter = _json["riceParameter"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (encodedData != null) {
_json["encodedData"] = encodedData;
}
if (firstValue != null) {
_json["firstValue"] = firstValue;
}
if (numEntries != null) {
_json["numEntries"] = numEntries;
}
if (riceParameter != null) {
_json["riceParameter"] = riceParameter;
}
return _json;
}
}
/// An individual threat; for example, a malicious URL or its hash
/// representation. Only one of these fields should be set.
class ThreatEntry {
/// The digest of an executable in SHA256 format. The API supports both
/// binary and hex digests. For JSON requests, digests are base64-encoded.
core.String digest;
core.List<core.int> get digestAsBytes {
return convert.BASE64.decode(digest);
}
void set digestAsBytes(core.List<core.int> _bytes) {
digest =
convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
}
/// 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.
core.String hash;
core.List<core.int> get hashAsBytes {
return convert.BASE64.decode(hash);
}
void set hashAsBytes(core.List<core.int> _bytes) {
hash =
convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-");
}
/// A URL.
core.String url;
ThreatEntry();
ThreatEntry.fromJson(core.Map _json) {
if (_json.containsKey("digest")) {
digest = _json["digest"];
}
if (_json.containsKey("hash")) {
hash = _json["hash"];
}
if (_json.containsKey("url")) {
url = _json["url"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (digest != null) {
_json["digest"] = digest;
}
if (hash != null) {
_json["hash"] = hash;
}
if (url != null) {
_json["url"] = url;
}
return _json;
}
}
/// The metadata associated with a specific threat entry. The client is expected
/// to know the metadata key/value pairs associated with each threat type.
class ThreatEntryMetadata {
/// The metadata entries.
core.List<MetadataEntry> entries;
ThreatEntryMetadata();
ThreatEntryMetadata.fromJson(core.Map _json) {
if (_json.containsKey("entries")) {
entries = _json["entries"]
.map((value) => new MetadataEntry.fromJson(value))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (entries != null) {
_json["entries"] = entries.map((value) => (value).toJson()).toList();
}
return _json;
}
}
/// A set of threats that should be added or removed from a client's local
/// database.
class ThreatEntrySet {
/// The compression type for the entries in this set.
/// Possible string values are:
/// - "COMPRESSION_TYPE_UNSPECIFIED" : Unknown.
/// - "RAW" : Raw, uncompressed data.
/// - "RICE" : Rice-Golomb encoded data.
core.String compressionType;
/// The raw SHA256-formatted entries.
RawHashes rawHashes;
/// The raw removal indices for a local list.
RawIndices rawIndices;
/// 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.
RiceDeltaEncoding riceHashes;
/// 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.
RiceDeltaEncoding riceIndices;
ThreatEntrySet();
ThreatEntrySet.fromJson(core.Map _json) {
if (_json.containsKey("compressionType")) {
compressionType = _json["compressionType"];
}
if (_json.containsKey("rawHashes")) {
rawHashes = new RawHashes.fromJson(_json["rawHashes"]);
}
if (_json.containsKey("rawIndices")) {
rawIndices = new RawIndices.fromJson(_json["rawIndices"]);
}
if (_json.containsKey("riceHashes")) {
riceHashes = new RiceDeltaEncoding.fromJson(_json["riceHashes"]);
}
if (_json.containsKey("riceIndices")) {
riceIndices = new RiceDeltaEncoding.fromJson(_json["riceIndices"]);
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (compressionType != null) {
_json["compressionType"] = compressionType;
}
if (rawHashes != null) {
_json["rawHashes"] = (rawHashes).toJson();
}
if (rawIndices != null) {
_json["rawIndices"] = (rawIndices).toJson();
}
if (riceHashes != null) {
_json["riceHashes"] = (riceHashes).toJson();
}
if (riceIndices != null) {
_json["riceIndices"] = (riceIndices).toJson();
}
return _json;
}
}
/// The information regarding one or more threats that a client submits when
/// checking for matches in threat lists.
class ThreatInfo {
/// The platform types to be checked.
core.List<core.String> platformTypes;
/// The threat entries to be checked.
core.List<ThreatEntry> threatEntries;
/// The entry types to be checked.
core.List<core.String> threatEntryTypes;
/// The threat types to be checked.
core.List<core.String> threatTypes;
ThreatInfo();
ThreatInfo.fromJson(core.Map _json) {
if (_json.containsKey("platformTypes")) {
platformTypes = _json["platformTypes"];
}
if (_json.containsKey("threatEntries")) {
threatEntries = _json["threatEntries"]
.map((value) => new ThreatEntry.fromJson(value))
.toList();
}
if (_json.containsKey("threatEntryTypes")) {
threatEntryTypes = _json["threatEntryTypes"];
}
if (_json.containsKey("threatTypes")) {
threatTypes = _json["threatTypes"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (platformTypes != null) {
_json["platformTypes"] = platformTypes;
}
if (threatEntries != null) {
_json["threatEntries"] =
threatEntries.map((value) => (value).toJson()).toList();
}
if (threatEntryTypes != null) {
_json["threatEntryTypes"] = threatEntryTypes;
}
if (threatTypes != null) {
_json["threatTypes"] = threatTypes;
}
return _json;
}
}
/// Describes an individual threat list. A list is defined by three parameters:
/// the type of threat posed, the type of platform targeted by the threat, and
/// the type of entries in the list.
class ThreatListDescriptor {
/// The platform type targeted by the list's entries.
/// Possible string values are:
/// - "PLATFORM_TYPE_UNSPECIFIED" : Unknown platform.
/// - "WINDOWS" : Threat posed to Windows.
/// - "LINUX" : Threat posed to Linux.
/// - "ANDROID" : Threat posed to Android.
/// - "OSX" : Threat posed to OS X.
/// - "IOS" : Threat posed to iOS.
/// - "ANY_PLATFORM" : Threat posed to at least one of the defined platforms.
/// - "ALL_PLATFORMS" : Threat posed to all defined platforms.
/// - "CHROME" : Threat posed to Chrome.
core.String platformType;
/// The entry types contained in the list.
/// Possible string values are:
/// - "THREAT_ENTRY_TYPE_UNSPECIFIED" : Unspecified.
/// - "URL" : A URL.
/// - "EXECUTABLE" : An executable program.
/// - "IP_RANGE" : An IP range.
/// - "CHROME_EXTENSION" : Chrome extension.
/// - "FILENAME" : Filename.
/// - "CERT" : CERT
core.String threatEntryType;
/// The threat type posed by the list's entries.
/// Possible string values are:
/// - "THREAT_TYPE_UNSPECIFIED" : Unknown.
/// - "MALWARE" : Malware threat type.
/// - "SOCIAL_ENGINEERING" : Social engineering threat type.
/// - "UNWANTED_SOFTWARE" : Unwanted software threat type.
/// - "POTENTIALLY_HARMFUL_APPLICATION" : Potentially harmful application
/// threat type.
/// - "SOCIAL_ENGINEERING_INTERNAL" : Social engineering threat type for
/// internal use.
/// - "API_ABUSE" : API abuse threat type.
/// - "MALICIOUS_BINARY" : Malicious binary threat type.
/// - "CSD_WHITELIST" : Client side detection whitelist threat type.
/// - "CSD_DOWNLOAD_WHITELIST" : Client side download detection whitelist
/// threat type.
/// - "CLIENT_INCIDENT" : Client incident threat type.
/// - "CLIENT_INCIDENT_WHITELIST" : Whitelist used when detecting client
/// incident threats.
/// This enum was never launched and should be re-used for the next list.
/// - "APK_MALWARE_OFFLINE" : List used for offline APK checks in PAM.
/// - "SUBRESOURCE_FILTER" : Patterns to be used for activating the
/// subresource filter. Interstitial
/// will not be shown for patterns from this list.
core.String threatType;
ThreatListDescriptor();
ThreatListDescriptor.fromJson(core.Map _json) {
if (_json.containsKey("platformType")) {
platformType = _json["platformType"];
}
if (_json.containsKey("threatEntryType")) {
threatEntryType = _json["threatEntryType"];
}
if (_json.containsKey("threatType")) {
threatType = _json["threatType"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (platformType != null) {
_json["platformType"] = platformType;
}
if (threatEntryType != null) {
_json["threatEntryType"] = threatEntryType;
}
if (threatType != null) {
_json["threatType"] = threatType;
}
return _json;
}
}
/// A match when checking a threat entry in the Safe Browsing threat lists.
class ThreatMatch {
/// The cache lifetime for the returned match. Clients must not cache this
/// response for more than this duration to avoid false positives.
core.String cacheDuration;
/// The platform type matching this threat.
/// Possible string values are:
/// - "PLATFORM_TYPE_UNSPECIFIED" : Unknown platform.
/// - "WINDOWS" : Threat posed to Windows.
/// - "LINUX" : Threat posed to Linux.
/// - "ANDROID" : Threat posed to Android.
/// - "OSX" : Threat posed to OS X.
/// - "IOS" : Threat posed to iOS.
/// - "ANY_PLATFORM" : Threat posed to at least one of the defined platforms.
/// - "ALL_PLATFORMS" : Threat posed to all defined platforms.
/// - "CHROME" : Threat posed to Chrome.
core.String platformType;
/// The threat matching this threat.
ThreatEntry threat;
/// Optional metadata associated with this threat.
ThreatEntryMetadata threatEntryMetadata;
/// The threat entry type matching this threat.
/// Possible string values are:
/// - "THREAT_ENTRY_TYPE_UNSPECIFIED" : Unspecified.
/// - "URL" : A URL.
/// - "EXECUTABLE" : An executable program.
/// - "IP_RANGE" : An IP range.
/// - "CHROME_EXTENSION" : Chrome extension.
/// - "FILENAME" : Filename.
/// - "CERT" : CERT
core.String threatEntryType;
/// The threat type matching this threat.
/// Possible string values are:
/// - "THREAT_TYPE_UNSPECIFIED" : Unknown.
/// - "MALWARE" : Malware threat type.
/// - "SOCIAL_ENGINEERING" : Social engineering threat type.
/// - "UNWANTED_SOFTWARE" : Unwanted software threat type.
/// - "POTENTIALLY_HARMFUL_APPLICATION" : Potentially harmful application
/// threat type.
/// - "SOCIAL_ENGINEERING_INTERNAL" : Social engineering threat type for
/// internal use.
/// - "API_ABUSE" : API abuse threat type.
/// - "MALICIOUS_BINARY" : Malicious binary threat type.
/// - "CSD_WHITELIST" : Client side detection whitelist threat type.
/// - "CSD_DOWNLOAD_WHITELIST" : Client side download detection whitelist
/// threat type.
/// - "CLIENT_INCIDENT" : Client incident threat type.
/// - "CLIENT_INCIDENT_WHITELIST" : Whitelist used when detecting client
/// incident threats.
/// This enum was never launched and should be re-used for the next list.
/// - "APK_MALWARE_OFFLINE" : List used for offline APK checks in PAM.
/// - "SUBRESOURCE_FILTER" : Patterns to be used for activating the
/// subresource filter. Interstitial
/// will not be shown for patterns from this list.
core.String threatType;
ThreatMatch();
ThreatMatch.fromJson(core.Map _json) {
if (_json.containsKey("cacheDuration")) {
cacheDuration = _json["cacheDuration"];
}
if (_json.containsKey("platformType")) {
platformType = _json["platformType"];
}
if (_json.containsKey("threat")) {
threat = new ThreatEntry.fromJson(_json["threat"]);
}
if (_json.containsKey("threatEntryMetadata")) {
threatEntryMetadata =
new ThreatEntryMetadata.fromJson(_json["threatEntryMetadata"]);
}
if (_json.containsKey("threatEntryType")) {
threatEntryType = _json["threatEntryType"];
}
if (_json.containsKey("threatType")) {
threatType = _json["threatType"];
}
}
core.Map<core.String, core.Object> toJson() {
final core.Map<core.String, core.Object> _json =
new core.Map<core.String, core.Object>();
if (cacheDuration != null) {
_json["cacheDuration"] = cacheDuration;
}
if (platformType != null) {
_json["platformType"] = platformType;
}
if (threat != null) {
_json["threat"] = (threat).toJson();
}
if (threatEntryMetadata != null) {
_json["threatEntryMetadata"] = (threatEntryMetadata).toJson();
}
if (threatEntryType != null) {
_json["threatEntryType"] = threatEntryType;
}
if (threatType != null) {
_json["threatType"] = threatType;
}
return _json;
}
}