Files
2025-12-17 12:15:27 +03:00

72 lines
1.6 KiB
Protocol Buffer

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 user_id = 1;
string competition_id = 2;
string task_id = 3;
string file_url = 4;
}
message GetSubmissionsHistoryRequest {
string user_id = 1;
string competition_id = 2;
string task_id = 3;
}
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 = 1;
int32 next_page_token = 2;
repeated Submission submissions = 3;
}