syntax = "proto3"; package xray.core.app.observatory; option csharp_namespace = "Xray.App.Observatory"; option go_package = "github.com/xtls/xray-core/app/observatory"; option java_package = "com.xray.app.observatory"; option java_multiple_files = true; message ObservationResult { repeated OutboundStatus status = 1; } message OutboundStatus{ /* @Document Whether this outbound is usable @Restriction ReadOnlyForUser */ bool alive = 1; /* @Document The time for probe request to finish. @Type time.ms @Restriction ReadOnlyForUser */ int64 delay = 2; /* @Document The last error caused this outbound failed to relay probe request @Restriction NotMachineReadable */ string last_error_reason = 3; /* @Document The outbound tag for this Server @Type id.outboundTag */ string outbound_tag = 4; /* @Document The time this outbound is known to be alive @Type id.outboundTag */ int64 last_seen_time = 5; /* @Document The time this outbound is tried @Type id.outboundTag */ int64 last_try_time = 6; } message ProbeResult{ /* @Document Whether this outbound is usable @Restriction ReadOnlyForUser */ bool alive = 1; /* @Document The time for probe request to finish. @Type time.ms @Restriction ReadOnlyForUser */ int64 delay = 2; /* @Document The error caused this outbound failed to relay probe request @Restriction NotMachineReadable */ string last_error_reason = 3; } message Intensity{ /* @Document The time interval for a probe request in ms. @Type time.ms */ uint32 probe_interval = 1; } message Config { /* @Document The selectors for outbound under observation */ repeated string subject_selector = 2; string probe_url = 3; int64 probe_interval = 4; bool enable_concurrency = 5; }