syntax = "proto3"; package corruption.v1; import "common.proto"; option go_package = "github.com/corruption/api/v1"; option java_multiple_files = true; option java_outer_classname = "EvidenceDocumentProto"; option java_package = "com.corruption.api.v1"; // Evidence Document service definition service EvidenceDocumentService { // Get a list of evidence documents with pagination rpc ListEvidenceDocuments(ListEvidenceDocumentsRequest) returns (ListEvidenceDocumentsResponse) {} // Get a single evidence document by ID rpc GetEvidenceDocument(GetEvidenceDocumentRequest) returns (GetEvidenceDocumentResponse) {} } // Request message for ListEvidenceDocuments message ListEvidenceDocumentsRequest { // Pagination parameters PaginationRequest pagination = 1; // Required filter by corruption case ID int32 corruption_case_id = 2; // Optional filter by document type optional string document_type = 3; } // Response message for ListEvidenceDocuments message ListEvidenceDocumentsResponse { // List of evidence documents repeated EvidenceDocument evidence_documents = 1; // Pagination metadata PaginationResponse pagination = 2; } // Request message for GetEvidenceDocument message GetEvidenceDocumentRequest { // The ID of the evidence document to retrieve int32 id = 1; } // Response message for GetEvidenceDocument message GetEvidenceDocumentResponse { // The requested evidence document EvidenceDocument evidence_document = 1; } // Evidence Document message message EvidenceDocument { // The unique identifier for the evidence document int32 id = 1; // The corruption case ID int32 corruption_case_id = 2; // The title of the document string title = 3; // The type of the document string document_type = 4; // The description of the document string description = 5; // The URL to the file (if available) optional string file_url = 6; // Creation timestamp Timestamp created_at = 7; // Last update timestamp Timestamp updated_at = 8; }