blob: dda8cf7db4442c444dddbd4bf82bc5e27295fa86 [file] [log] [blame]
syntax = "proto3";
package cobalt;
option java_multiple_files = true;
option java_package = "com.google.cobalt";
////////////////////////////////////////////////////////////////////////////////
// NOTE: This file is used by the Cobalt client and the Cobalt servers.
// The source-of-truth of this file is located in Google's internal code
// repository, and the file is automatically copied to Cobalt's open source
// repo where it is used by the Cobalt client code. Do not edit the copy of this
// file in the open-source repo as those edits will be overwritten when the file
// is next copied.
////////////////////////////////////////////////////////////////////////////////
// The state of a single experiment on a device.
message Experiment {
// The id of the experiment as defined by the Experiment framework.
int64 experiment_id = 1;
// The id of the experiment arm as defined by the Experiment framework.
int64 arm_id = 2;
}
// A SystemProfile describes the client system on which an Observation is
// collected.
message SystemProfile {
reserved 3;
enum OS {
UNKNOWN_OS = 0;
FUCHSIA = 1;
LINUX = 2;
ANDROID = 3;
}
enum ARCH {
UNKNOWN_ARCH = 0;
X86_64 = 1;
ARM_64 = 2;
X86_32 = 3;
ARM_32 = 4;
}
enum BuildType {
UNKNOWN_TYPE = 0;
OTHER_TYPE = 1;
USER = 2;
USER_DEBUG = 3;
ENG = 4;
}
OS os = 1;
ARCH arch = 2;
// This is a string representing the board name of the device. If a board name
// cannot be determined, then this field will be 'unknown:<cpu signature>'.
string board_name = 4;
// This is a string representing the type of Fuchsia product from which
// an observation is collected.
//
// During development, this is going to refer to layers of the Fuchsia cake
// such as "garnet", "zircon", "topaz", etc... In the future, we will use
// something related to what sort of device we are running on, such as
// "Acme Lightbulb X" or "Machine Corp. Laptop III".
string product_name = 5;
// This is a string representing the version of the currently running system.
// The use of this field is system-specific. For example on Fuchsia it is the
// build version (aka OS version) with a value that looks like
// "0.20200114.1.1".
string system_version = 8;
// This is a string representation of the current channel. It is an arbitrary
// string that depends on the system. For example on Fuchsia some possible
// values are "qa-daily" and "fishfood".
//
// The value '<unset>' means the system did not notify Cobalt of the current
// channel.
//
// The value '<unknown>' means the system explicitly notified Cobalt it did
// not know the channel.
string channel = 9;
// This is a string representation of the current realm. Realm is a software-
// distribution identifier that is more general than |channel|. A realm
// corresponds to one or more channels. The values are system-specific. For
// example on Fuchsia the "Dogfood" realm might contain the "fishood_release",
// "teamfood_release", and "dogfood_release" channels.
//
// The value '<unset>' means the system did not notify Cobalt of the current
// channel.
//
// The value '<unknown>' means the system explicitly notified Cobalt it did
// not know the channel.
//
string realm = 10;
// An enumerated representation of the current build type.
//
// The value `UNKNOWN_TYPE` means the system failed to supply a build type.
// The value `OTHER_TYPE` indicates the system supplied a value that did not
// match any of the enumerated values.
BuildType build_type = 11;
// Contains all the experiments the device has a notion of and the experiment
// state the device belongs to.
repeated Experiment experiments = 7;
// We used to have a field called |build_level|.
reserved 6;
reserved "build_level";
}