blob: d4c3710dad096f7d425bb217a06837aa7f0b4b2b [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// This proto file includes the protocol buffers for communicating with the Safe
// Browsing Real Time API.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package safe_browsing;
import "csd.proto";
message RTLookupRequest {
// If applicable, URL submitted from Chrome.
optional string url = 1;
// Type of Lookup submitted by Chrome.
enum LookupType {
// Lookup type is not specified in request.
LOOKUP_TYPE_UNSPECIFIED = 0;
// Lookup type is navigation.
NAVIGATION = 1;
// Lookup type is download.
DOWNLOAD = 2;
}
optional LookupType lookup_type = 2;
// Mechanism to have different detection methods for different user
// population later.
optional ChromeUserPopulation population = 3;
}
message RTLookupResponse {
// Contains threat information including threat type, verdict type, cache
// duration and cache expression on a matching url.
message ThreatInfo {
// Type of threat detected.
enum ThreatType {
// Unknown.
THREAT_TYPE_UNSPECIFIED = 0;
// URL leads to unintentional download of malware i.e. drive-by downloads.
WEB_MALWARE = 1;
// Social engineering threat type for internal use.
SOCIAL_ENGINEERING = 3;
// Unwanted software threat type.
UNWANTED_SOFTWARE = 4;
// Unclear Billing threat type
UNCLEAR_BILLING = 5;
reserved 2;
}
optional ThreatType threat_type = 1;
// TTL of the verdict in seconds.
optional int64 cache_duration_sec = 2;
// A host-suffix/path-prefix expression for caching the verdict
optional string cache_expression = 3;
// Type of verdicts issued by the server. Different levels of verdicts from
// 1 to 100 can be added in future based on the confidence of the verdict.
// 1 being confidently safe to 100 being confidently dangerous.
enum VerdictType {
VERDICT_TYPE_UNSPECIFIED = 0;
SAFE = 1;
DANGEROUS = 100;
}
optional VerdictType verdict_type = 4;
}
// Each matching url can have multiple threats detected, if the response
// contains multiple threat_info messages, then they are in decreasing order
// of severity so that the client could choose first applicable threat_info
// as the most severe one.
repeated ThreatInfo threat_info = 1;
}