syntax = "proto3"; package proto; option go_package = "machineapi"; option java_multiple_files = true; option java_outer_classname = "MachineApi"; option java_package = "com.machine.api"; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; // The machine service definition. service Machine { rpc CopyOut(CopyOutRequest) returns (stream StreamingData); rpc Mounts(google.protobuf.Empty) returns (MountsReply); rpc LS(LSRequest) returns (stream FileInfo); rpc Reboot(google.protobuf.Empty) returns (RebootReply); rpc Reset(google.protobuf.Empty) returns (ResetReply); rpc Shutdown(google.protobuf.Empty) returns (ShutdownReply); rpc Upgrade(UpgradeRequest) returns (UpgradeReply); rpc ServiceList(google.protobuf.Empty) returns (ServiceListReply); rpc ServiceStart(ServiceStartRequest) returns (ServiceStartReply); rpc ServiceStop(ServiceStopRequest) returns (ServiceStopReply); rpc ServiceRestart(ServiceRestartRequest) returns (ServiceRestartReply); rpc Start(StartRequest) returns (StartReply) { option deprecated = true; }; rpc Stop(StopRequest) returns (StopReply) { option deprecated = true; }; rpc Version(google.protobuf.Empty) returns (VersionReply); } // The response message containing the reboot status. message RebootReply {} // The response message containing the restart status. message ResetReply {} // The response message containing the shutdown status. message ShutdownReply {} message UpgradeRequest { string image = 1; } message UpgradeReply { string ack = 1; } message ServiceListReply { repeated ServiceInfo services = 1; } message ServiceInfo { string id = 1; string state = 2; ServiceEvents events = 3; ServiceHealth health = 4; } message ServiceEvents { repeated ServiceEvent events = 1; } message ServiceEvent { string msg = 1; string state = 2; google.protobuf.Timestamp ts = 3; } message ServiceHealth { bool unknown = 1; bool healthy = 2; string last_message = 3; google.protobuf.Timestamp last_change = 4; } message ServiceStartRequest { string id = 1; } message ServiceStartReply { string resp = 1; } message ServiceStopRequest { string id = 1; } message ServiceStopReply { string resp = 1; } message ServiceRestartRequest { string id = 1; } message ServiceRestartReply { string resp = 1; } message StartRequest { option deprecated = true; string id = 1; } message StartReply { option deprecated = true; string resp = 1; } message StopRequest { option deprecated = true; string id = 1; } message StopReply { option deprecated = true; string resp = 1; } // StreamingData is used to stream back responses message StreamingData { bytes bytes = 1; string errors = 2; } // CopyOutRequest describes a request to copy data out of Talos node // // CopyOut produces .tar.gz archive which is streamed back to the caller message CopyOutRequest { // Root path to start copying data out, it might be either a file or directory string root_path = 1; } // LSRequest describes a request to list the contents of a directory message LSRequest { // Root indicates the root directory for the list. If not indicated, '/' is // presumed. string root = 1; // Recurse indicates that subdirectories should be recursed. bool recurse = 2; // RecursionDepth indicates how many levels of subdirectories should be // recursed. The default (0) indicates that no limit should be enforced. int32 recursion_depth = 3; } // FileInfo describes a file or directory's information message FileInfo { // Name is the name (including prefixed path) of the file or directory string name = 1; // Size indicates the number of bytes contained within the file int64 size = 2; // Mode is the bitmap of UNIX mode/permission flags of the file uint32 mode = 3; // Modified indicates the UNIX timestamp at which the file was last modified int64 modified = 4; // TODO: unix timestamp or include proto's Date type // IsDir indicates that the file is a directory bool is_dir = 5; // Error describes any error encountered while trying to read the file // information. string error = 6; // Link is filled with symlink target string link = 7; // RelativeName is the name of the file or directory relative to the RootPath string relative_name = 8; } // The response message containing the requested df stats. message MountsReply { repeated MountStat stats = 1; } // The response message containing the requested processes. message MountStat { string filesystem = 1; uint64 size = 2; uint64 available = 3; string mounted_on = 4; } message VersionReply { string tag = 1; string sha = 2; string built = 3; string go_version = 4; string os = 5; string arch = 6; }