syntax = "proto3"; package submission; import "google/protobuf/timestamp.proto"; option go_package = "pkg/api/submission"; service SubmissionService { rpc SubmitTask(SubmitTaskRequest) returns (Submission); rpc GetSubmissionsHistory(GetSubmissionsHistoryRequest) returns (GetSubmissionsHistoryResponse); rpc GetSubmission(GetSubmissionRequest) returns (Submission); rpc ListSubmissions(ListSubmissionsRequest) returns (ListSubmissionsResponse); } enum SubmissionStatus { SUBMISSION_STATUS_UNSPECIFIED = 0; SUBMISSION_STATUS_PENDING = 1; SUBMISSION_STATUS_SENT_FOR_CHECK = 2; SUBMISSION_STATUS_CHECKING = 3; SUBMISSION_STATUS_CHECKED = 4; SUBMISSION_STATUS_FAILED = 5; } message Submission { string id = 1; string user_id = 2; string competition_id = 3; string task_id = 4; SubmissionStatus status = 5; int32 earned_points = 6; google.protobuf.Timestamp submitted_at = 7; google.protobuf.Timestamp checked_at = 8; string file_url = 9; } message SubmitTaskRequest { string competition_id = 1; string task_id = 2; string file_url = 3; } message GetSubmissionsHistoryRequest { string competition_id = 1; string task_id = 2; } message GetSubmissionsHistoryResponse { repeated Submission submissions = 1; } message GetSubmissionRequest { string submission_id = 1; } message ListSubmissionsRequest { int32 page_size = 1; int32 page_token = 2; string competition_id = 3; string task_id = 4; string user_id = 5; SubmissionStatus status = 6; } message ListSubmissionsResponse { int32 total_count = 2; int32 next_page_token = 3; repeated Submission submissions = 1; }