blob: 75ac1a0ea60638d9fca7a274f855c7e026e2220c [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.
*
* [clientId] - A client ID that (hopefully) uniquely identifies the client
* implementation
* of the Safe Browsing API.
*
* [clientVersion] - The version of the client implementation.
*
* 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 clientId, core.String clientVersion}) {
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];
}
_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.
*
* 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}) {
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];
}
_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:
*
* 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) {
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());
}
_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:
*
* 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) {
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());
}
_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:
*
* 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() {
var _url = null;
var _queryParams = new core.Map();
var _uploadMedia = null;
var _uploadOptions = null;
var _downloadOptions = commons.DownloadOptions.Metadata;
var _body = null;
_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:
*
* 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) {
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());
}
_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;
}
}