syntax = "proto3"; package api; option go_package = "github.com/psviderski/uncloud/internal/machine/api/pb"; import "google/protobuf/empty.proto"; import "internal/machine/api/pb/common.proto"; service Docker { rpc CreateContainer(CreateContainerRequest) returns (CreateContainerResponse); rpc StartContainer(StartContainerRequest) returns (google.protobuf.Empty); rpc ListContainers(ListContainersRequest) returns (ListContainersResponse); rpc RemoveContainer(RemoveContainerRequest) returns (google.protobuf.Empty); rpc PullImage(PullImageRequest) returns (stream JSONMessage); } message CreateContainerRequest { // JSON serialized container.Config. bytes config = 1; // JSON serialized container.HostConfig. bytes host_config = 2; // JSON serialized network.NetworkingConfig. bytes network_config = 3; // JSON serialized ocispec.Platform. bytes platform = 4; string name = 5; } message CreateContainerResponse { // JSON serialized container.CreateResponse. bytes response = 1; } message StartContainerRequest { string id = 1; // JSON serialized container.StartOptions. bytes options = 2; } message ListContainersRequest { // JSON serialized container.ListOptions. bytes options = 1; } // ListContainersResponse structure allows broadcasting ListContainers requests to multiple machines. message ListContainersResponse { repeated MachineContainers messages = 1; } message MachineContainers { Metadata metadata = 1; // JSON serialized []container.Summary. bytes containers = 2; } message RemoveContainerRequest { string id = 1; // JSON serialized container.RemoveOptions. bytes options = 2; } message PullImageRequest { string image = 1; // JSON serialized image.PullOptions. bytes options = 2; } message JSONMessage { // JSON serialized jsonmessage.JSONMessage. bytes message = 1; }