syntax = "proto3";
package remoteconfig;
option go_package = "pkg/proto/pbgo/core"; // golang
// Backend definitions
message File {
string path = 1;
bytes raw = 2;
}
// Client definitions
message Client {
ClientState state = 1;
string id = 2;
repeated string products = 3;
reserved 4, 5;
bool is_tracer = 6;
ClientTracer client_tracer = 7;
bool is_agent = 8;
ClientAgent client_agent = 9;
uint64 last_seen = 10;
bytes capabilities = 11;
}
message ClientTracer {
string runtime_id = 1;
string language = 2;
string tracer_version = 3;
string service = 4;
repeated string extra_services = 8;
string env = 5;
string app_version = 6;
repeated string tags = 7;
}
message ClientAgent {
string name = 1;
string version = 2;
string cluster_name = 3;
string cluster_id = 4;
repeated string cws_workloads = 5;
}
message ConfigState {
string id = 1;
uint64 version = 2;
string product = 3;
uint64 apply_state = 4;
string apply_error = 5;
}
message ClientState {
uint64 root_version = 1;
uint64 targets_version = 2;
repeated ConfigState config_states = 3;
bool has_error = 4;
string error = 5;
bytes backend_client_state = 6;
}
// Client queries
message TargetFileHash {
string algorithm = 1;
reserved 2; // old hash format
string hash = 3;
}
message TargetFileMeta {
string path = 1;
int64 length = 2;
repeated TargetFileHash hashes = 3;
}
message ClientGetConfigsRequest {
Client client = 1;
repeated TargetFileMeta cached_target_files = 2;
}
message ClientGetConfigsResponse {
repeated bytes roots = 1;
bytes targets = 2;
repeated File target_files = 3;
repeated string client_configs = 4;
}