syntax = "proto3"; package task; option go_package = "pkg/api/task"; service TaskService { rpc StartCompetition(StartCompetitionRequest) returns (StartCompetitionResponse); rpc GetCompetitionTasks(GetCompetitionTasksRequest) returns (GetCompetitionTasksResponse); rpc GetTask(GetTaskRequest) returns (GetTaskResponse); rpc SubmitTask(SubmitTaskRequest) returns (SubmitTaskResponse); rpc GetSubmissionsHistory(GetSubmissionsHistoryRequest) returns (GetSubmissionsHistoryResponse); rpc GetTaskAttachments(GetTaskAttachmentsRequest) returns (GetTaskAttachmentsResponse); rpc GetCompetitionResults(GetCompetitionResultsRequest) returns (GetCompetitionResultsResponse); } message StartCompetitionRequest { string competition_id = 1; } message StartCompetitionResponse { string status = 1; } message GetCompetitionTasksRequest { string competition_id = 1; } message GetCompetitionTasksResponse { repeated Task tasks = 1; } message GetTaskRequest { string competition_id = 1; string task_id = 2; } message GetTaskResponse { Task task = 1; } message SubmitTaskRequest { string competition_id = 1; string task_id = 2; bytes content = 3; } message SubmitTaskResponse { string submission_id = 1; } message GetSubmissionsHistoryRequest { string competition_id = 1; string task_id = 2; } message GetSubmissionsHistoryResponse { repeated HistorySubmission submissions = 1; } message GetTaskAttachmentsRequest { string competition_id = 1; string task_id = 2; } message GetTaskAttachmentsResponse { repeated TaskAttachment attachments = 1; } message GetCompetitionResultsRequest { string competition_id = 1; } message GetCompetitionResultsResponse { repeated TaskStatus results = 1; } message Task { optional string id = 1; string competition = 2; string title = 3; string description = 4; int32 in_competition_position = 5; optional int32 points = 6; optional int32 max_attempts = 7; TaskType type = 8; TaskStatusEnum status = 9; } enum TaskType { TASK_TYPE_UNSPECIFIED = 0; TASK_TYPE_INPUT = 1; TASK_TYPE_CHECKER = 2; TASK_TYPE_REVIEW = 3; } enum TaskStatusEnum { TASK_STATUS_UNSPECIFIED = 0; TASK_STATUS_NOT_SUBMITTED = 1; TASK_STATUS_SENT = 2; TASK_STATUS_CHECKING = 3; TASK_STATUS_CHECKED = 4; } message HistorySubmission { optional string id = 1; TaskStatusEnum status = 2; optional int32 earned_points = 3; string timestamp = 4; string content = 5; } message TaskAttachment { optional string id = 1; string file = 2; bool public = 3; } message TaskStatus { string task_name = 1; int32 result = 2; int32 max_points = 3; int32 position = 4; }