syntax = "proto3"; package containerd.v1; service Containers { rpc Create(CreateRequest) returns (CreateResponse); rpc Start(StartRequest) returns (StartResponse); rpc Delete(DeleteRequest) returns (DeleteResponse); rpc State(StateRequest) returns (StateResponse); rpc Update(UpdateRequest) returns (UpdateResponse); rpc Pause(PauseRequest) returns (PauseResponse); rpc Resume(ResumeRequest) returns (ResumeResponse); rpc ContainerList(ContainerListRequest) returns (ContainerListResponse); rpc CreateProcess(CreateProcessRequest) returns (CreateProcessResponse); rpc StartProcess(StartProcessRequest) returns (StartProcessResponse); rpc ProcessState(ProcessStateRequest) returns (ProcessStateResponse); rpc SignalProcess(SignalProcessRequest) returns (SignalProcessResponse) rpc DeleteProcess(DeleteProcessRequest) returns (DeleteProcessResponse); rpc ProcessList(ProcessListRequest) returns (ProcessListResponse); rpc Events(EventsRequest) returns (stream EventsResponse); } message Container { string id = 1; string image = 2; repeated string tags = 3; Process process = 4; optional string container_spec = 5; } message Process { repeated string args = 1; repeated string env = 2; User user = 3; string cwd = 4; bool terminal = 5; string stdin = 6; string stdout = 7; string stderr = 8; } message Mount { } message User { uint32 uid = 1; uint32 gid = 2; repeated uint32 additionalGids = 3; } message CreateRequest { string id = 1; Process process = 2; repeated Mount mounts = 3; optional string config_path = 4; repeated string tags = 5; } message CreateResponse { Container container = 1; } message StartRequest { string id = 1; } message StartResponse { State state = 1; } message DeleteRequest { string id = 1; } message DeleteResponse { } message ListContainerRequest { repeated string tags = 1; } message ContainerListResponse { repeated Container containers = 1; } message StateRequest { string id = 1; } message StateResponse { Container container = 1; }