syntax = "proto3"; package review; import "google/protobuf/timestamp.proto"; import "google/protobuf/empty.proto"; option go_package = "pkg/api/review"; service ReviewService { rpc ValidateReviewToken(ValidateReviewTokenRequest) returns (ValidateReviewTokenResponse); rpc ListSubmissionsForReview(ListSubmissionsForReviewRequest) returns (ListSubmissionsForReviewResponse); rpc GetSubmissionForReview(GetSubmissionForReviewRequest) returns (SubmissionForReview); rpc EvaluateSubmission(EvaluateSubmissionRequest) returns (EvaluateSubmissionResponse); rpc ReleaseSubmission(ReleaseSubmissionRequest) returns (google.protobuf.Empty); } enum ReviewStatus { REVIEW_STATUS_UNSPECIFIED = 0; REVIEW_STATUS_PENDING = 1; REVIEW_STATUS_IN_REVIEW = 2; REVIEW_STATUS_COMPLETED = 3; REVIEW_STATUS_REJECTED = 4; } message CriteriaMark { string slug = 1; double mark = 2; } message SubmissionSummary { string id = 1; string competition_id = 2; string task_id = 3; string competition_title = 4; string task_title = 5; google.protobuf.Timestamp submitted_at = 6; ReviewStatus review_status = 7; } message SubmissionForReview { string id = 1; string competition_id = 2; string task_id = 3; string content = 4; string description = 5; ReviewStatus review_status = 6; google.protobuf.Timestamp submitted_at = 7; optional google.protobuf.Timestamp checked_at = 8; } message ValidateReviewTokenRequest { string token = 1; } message ValidateReviewTokenResponse { bool is_valid = 1; string reviewer_id = 2; string competition_id = 3; } message ListSubmissionsForReviewRequest { string token = 1; int32 page_size = 2; int32 page_token = 3; optional ReviewStatus status = 4; } message ListSubmissionsForReviewResponse { int32 total_count = 1; int32 next_page_token = 2; repeated SubmissionSummary submissions = 3; } message GetSubmissionForReviewRequest { string token = 1; string submission_id = 2; } message EvaluateSubmissionRequest { string token = 1; string submission_id = 2; int32 earned_points = 3; string reviewer_comment = 4; repeated CriteriaMark marks = 5; } message EvaluateSubmissionResponse { string submission_id = 1; int32 final_score = 2; ReviewStatus new_status = 3; } message ReleaseSubmissionRequest { string token = 1; string submission_id = 2; }