syntax = "proto3"; package marznode; message Empty {} message Inbound { string tag = 1; optional string config = 2; } message InboundsResponse { repeated Inbound inbounds = 1; } message User { uint32 id = 1; string username = 2; string key = 3; } message UserData { User user = 1; repeated Inbound inbounds = 2; } message UsersData { repeated UserData users_data = 1; } message UsersStats { message UserStats { uint32 uid = 1; uint64 usage = 2; } repeated UserStats users_stats = 1; } message LogLine { string line = 1; } message XrayConfig { string configuration = 1; } message XrayLogsRequest { bool include_buffer = 1; } service MarzService { rpc SyncUsers(stream UserData) returns (Empty); rpc RepopulateUsers(UsersData) returns (Empty); rpc FetchInbounds(Empty) returns (InboundsResponse); rpc FetchUsersStats(Empty) returns (UsersStats); rpc FetchXrayConfig(Empty) returns (XrayConfig); rpc RestartXray(XrayConfig) returns (InboundsResponse); rpc StreamXrayLogs(XrayLogsRequest) returns(stream LogLine); }