syntax = "proto3"; package go.micro.runtime; service Runtime { rpc Create(CreateRequest) returns (CreateResponse) {}; rpc Read(ReadRequest) returns (ReadResponse) {}; rpc Delete(DeleteRequest) returns (DeleteResponse) {}; rpc Update(UpdateRequest) returns (UpdateResponse) {}; rpc Logs(LogsRequest) returns (stream LogRecord) {}; } message Service { // name of the service string name = 1; // version of the service string version = 2; // git url of the source string source = 3; // service metadata map metadata = 4; } message Event { string type = 1; int64 timestamp = 2; string service = 3; string version = 4; } message CreateOptions { // command to pass in repeated string command = 1; // args to pass into command repeated string args = 2; // environment to pass in repeated string env = 3; // output to send to string output = 4; // create type of service string type = 5; // image to use string image = 6; // image secrets to use repeated string image_pull_secrets = 7; } message CreateRequest { Service service = 1; CreateOptions options = 2; } message CreateResponse {} message ReadOptions { // service name string service = 1; // version of the service string version = 2; // type of service string type = 3; } message ReadRequest { ReadOptions options = 1; } message ReadResponse { repeated Service services = 1; } message DeleteRequest { Service service = 1; } message DeleteResponse {} message UpdateRequest { Service service = 1; } message UpdateResponse {} message ListRequest {} message ListResponse { repeated Service services = 1; } message LogsRequest{ // service to request logs for string service = 1; // stream records continuously bool stream = 2; // count of records to request int64 count = 3; // relative time in seconds // before the current time // from which to show logs int64 since = 4; } message LogRecord { // timestamp of log record int64 timestamp = 1; // record metadata map metadata = 2; // message string message = 3; }