blob: 0b9fd8107ff6bbe3ef705ae5e2147154f6f7d781 [file] [log] [blame]
// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package reporting;
// |Destination| indicates which handler a |Record| should be delivered to.
enum Destination {
UNDEFINED_DESTINATION = 0;
// |UPLOAD_EVENTS| sends records to the Eventing pipeline.
UPLOAD_EVENTS = 1;
// |MEET_DEVICE_TELEMETRY| is for telemetry data events sent by Meet
// Devices. For more information, see go/reliable-meet-device-telemetry.
MEET_DEVICE_TELEMETRY = 2;
// |WEB_PROTECT| legacy web protect events.
WEB_PROTECT = 3;
// |ARC_INSTALL| legacy arc app installation events.
ARC_INSTALL = 4;
// |POLICY_VALIDATION| legacy policy validation events.
POLICY_VALIDATION = 5;
// |EXTENSION_INSTALL| legacy extension installation events.
EXTENSION_INSTALL = 6;
// |REPORTING_RECORD| Temporary group for Encrypted Reporting Pipeline.
REPORTING_RECORD = 7;
// |DEVICE_TRUST_REPORTS| is for reporting data updates related to the
// Device Trust connector, sent by Chrome browsers for Chrome Browser Cloud
// Management (CBCM).
DEVICE_TRUST_REPORTS = 8;
// |PRINT_JOBS| print jobs events.
PRINT_JOBS = 9;
// |EXTENSIONS_WORKFLOW| is for sending extension requests events,
// sent for Chrome Browser Cloud Management (CBCM).
EXTENSIONS_WORKFLOW = 10;
// |DLP_EVENTS| events send from data leakage protection for Chrome OS
DLP_EVENTS = 11;
// |LOGIN_LOGOUT_EVENTS| is for login/logout events.
LOGIN_LOGOUT_EVENTS = 12;
// |HEARTBEAT_EVENT| event used with manual and integration tests to ensure
// that messages are being uploaded and processed correctly.
HEARTBEAT_EVENTS = 13;
// |INFO_METRIC| device info events which are sent by ChromeOS devices.
INFO_METRIC = 14;
// |TELEMETRY_METRIC| for device telemetry events which are sent by ChromeOS
// devices.
TELEMETRY_METRIC = 15;
// |EVENT_METRIC| for device events which are sent by ChromeOS devices.
EVENT_METRIC = 16;
// |ADDED_REMOVED_EVENTS| is for reporting events where a user has
// been added or removed.
ADDED_REMOVED_EVENTS = 17;
}
// |Priority| is used to determine when items from the queue should be rate
// limited or shed. Rate limiting indicates that fewer records will be sent due
// to message volume, records of the lowest priority are limited first. Shedding
// records occurs when disk space is at or near the limt, records of the lowest
// priority are shed first.
enum Priority {
UNDEFINED_PRIORITY = 0;
// |IMMEDIATE| queues should transfer small amounts of immediately necessary
// information. These are the events that will be rate limited before
// |SECURITY| records. |IMMEDIATE| records are shed before |SECURITY| records.
IMMEDIATE = 1;
// |FAST_BATCH| queues should transfer small amounts of information that may
// be critical for administrative experience. These records will be rate
// limited before |IMMEDIATE| records.
// |FAST_BATCH| records are shed before |IMMEDIATE| records.
// Resource utilization and failed application installation are perfect
// examples of records that need to be |FAST_BATCH|.
FAST_BATCH = 2;
// |SLOW_BATCH| queues should transfer small amounts of non-immediate data.
// These records will be rate limited before |FAST_BATCH| records.
// |SLOW_BATCH| records are shed before |FAST_BATCH| records.
// Application metrics are a good example of records that should be
// |SLOW_BATCH|.
SLOW_BATCH = 3;
// |BACKGROUND_BATCH| queues transfer large amounts of non-immediate data.
// These records will be rate limited before |SLOW_BATCH| records.
// |BACKGROUND_BATCH| records are shed before |SLOW_BATCH| records.
// Log files are a perfect examples of records that need to be
// |BACKGROUND_BATCH|.
BACKGROUND_BATCH = 4;
// |MANUAL_BATCH| queues transfer data only on explicit request.
// Note that since a queue can hold records submitted by multiple clients,
// one client requesting to transfer data will do so for all collected
// records of the same priority, including those enqueued by other clients.
// |MANUAL_BATCH| records are the first to be rate limited, and since there
// is no automatic transfer, it is important to explicitly flush them often
// enough to avoid loss of data.
// |MANUAL_BATCH| records are the first to be shed.
MANUAL_BATCH = 5;
// |SECURITY| queues should transfer information indicating potential security
// issue; like |IMMEDIATE| they are uploaded right after recording.
// The difference from |IMMEDIATE| is that any sequencing breach (record
// digest mismatch, lost events, generation switch) in |SECURITY| queue will
// be exposed to the domain admin. These are the events that will be rate
// limited last. |SECURITY| records are the last ones to be shed.
SECURITY = 6;
}