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 = "PoliticianPartyAffiliationProto"; option java_package = "com.corruption.api.v1"; // Politician Party Affiliation service definition service PoliticianPartyAffiliationService { // Get a list of politician party affiliations with pagination rpc ListPoliticianPartyAffiliations(ListPoliticianPartyAffiliationsRequest) returns (ListPoliticianPartyAffiliationsResponse) {} // Get a single politician party affiliation by ID rpc GetPoliticianPartyAffiliation(GetPoliticianPartyAffiliationRequest) returns (GetPoliticianPartyAffiliationResponse) {} } // Request message for ListPoliticianPartyAffiliations message ListPoliticianPartyAffiliationsRequest { // Pagination parameters PaginationRequest pagination = 1; // Required filter by politician ID int32 politician_id = 2; // Optional filter by party optional string party = 3; // Optional filter for current affiliations only optional bool current_only = 4; } // Response message for ListPoliticianPartyAffiliations message ListPoliticianPartyAffiliationsResponse { // List of politician party affiliations repeated PoliticianPartyAffiliation politician_party_affiliations = 1; // Pagination metadata PaginationResponse pagination = 2; } // Request message for GetPoliticianPartyAffiliation message GetPoliticianPartyAffiliationRequest { // The ID of the politician party affiliation to retrieve int32 id = 1; } // Response message for GetPoliticianPartyAffiliation message GetPoliticianPartyAffiliationResponse { // The requested politician party affiliation PoliticianPartyAffiliation politician_party_affiliation = 1; } // Politician Party Affiliation message message PoliticianPartyAffiliation { // The unique identifier for the politician party affiliation int32 id = 1; // The politician ID int32 politician_id = 2; // The party name string party = 3; // The date when the politician joined the party string joined_at = 4; // The date when the politician left the party (if applicable) optional string left_at = 5; // Whether this is the current affiliation bool is_current = 6; // Creation timestamp Timestamp created_at = 7; // Last update timestamp Timestamp updated_at = 8; }