syntax = "proto3"; package tester.v1; option go_package = "/tester/v1;testerv1"; import "google/protobuf/timestamp.proto"; import "google/protobuf/empty.proto"; service TesterService { rpc CreateProblem (CreateProblemRequest) returns (CreateProblemResponse); rpc ReadProblem (ReadProblemRequest) returns (ReadProblemResponse); rpc UpdateProblem (UpdateProblemRequest) returns (google.protobuf.Empty); rpc DeleteProblem (DeleteProblemRequest) returns (google.protobuf.Empty); } message CreateProblemRequest { message Problem { string name = 1; string description = 2; int32 time_limit = 3; int32 memory_limit = 4; } string token = 1; Problem problem = 2; } message CreateProblemResponse { int32 id = 1; } message ReadProblemRequest { string token = 1; int32 id = 2; } message ReadProblemResponse { message Problem { int32 id = 1; string name = 2; string description = 3; int32 time_limit = 4; int32 memory_limit = 5; google.protobuf.Timestamp created_at = 6; google.protobuf.Timestamp updated_at = 7; } string token = 1; Problem problem = 2; } message UpdateProblemRequest { message Problem { int32 id = 1; optional string name = 2; optional string description = 3; optional int32 time_limit = 4; optional int32 memory_limit = 5; } string token = 1; Problem problem = 2; } message DeleteProblemRequest { string token = 1; int32 id = 2; }