syntax = "proto3"; option go_package = "gen/grpc"; import "google/api/annotations.proto"; message Action { string id = 1; string title = 2; string icon = 3; bool canExec = 4; repeated ActionArgument arguments = 5; } message ActionArgument { string name = 1; string title = 2; string type = 3; string defaultValue = 4; repeated ActionArgumentChoice choices = 5; string description = 6; } message ActionArgumentChoice { string value = 1; string title = 2; } message Entity { string title = 1; string icon = 2; repeated Action actions = 3; } message GetDashboardComponentsResponse { string title = 1; repeated Action actions = 2; repeated Entity entities = 3; } message GetDashboardComponentsRequest {} message StartActionRequest { string actionName = 1; repeated StartActionArgument arguments = 2; } message StartActionArgument { string name = 1; string value = 2; } message StartActionResponse { LogEntry logEntry = 1; } message GetLogsRequest{}; message LogEntry { string datetime = 1; string actionTitle = 2; string stdout = 3; string stderr = 4; bool timedOut = 5; int32 exitCode = 6; string user = 7; string userClass = 8; string actionIcon = 9; repeated string tags = 10; } message GetLogsResponse { repeated LogEntry logs = 1; } message ValidateArgumentTypeRequest { string value = 1; string type = 2; } message ValidateArgumentTypeResponse { bool valid = 1; string description = 2; } message WhoAmIRequest {} message WhoAmIResponse { string authenticatedUser = 1; } message SosReportRequest {} message SosReportResponse { string alert = 1; } service OliveTinApi { rpc GetDashboardComponents(GetDashboardComponentsRequest) returns (GetDashboardComponentsResponse) { option (google.api.http) = { get: "/api/GetDashboardComponents" }; } rpc StartAction(StartActionRequest) returns (StartActionResponse) { option (google.api.http) = { post: "/api/StartAction" body: "*" }; } rpc GetLogs(GetLogsRequest) returns (GetLogsResponse) { option (google.api.http) = { get: "/api/GetLogs" }; } rpc ValidateArgumentType(ValidateArgumentTypeRequest) returns (ValidateArgumentTypeResponse) { option (google.api.http) = { post: "/api/ValidateArgumentType" body: "*" }; } rpc WhoAmI(WhoAmIRequest) returns (WhoAmIResponse) { option (google.api.http) = { get: "/api/WhoAmI" }; } rpc SosReport(SosReportRequest) returns (SosReportResponse) { option (google.api.http) = { get: "/api/sosreport" }; } }