syntax = "proto3"; package qpq.v1; // Moderation service: report, ban, unban, list reports, list banned. // Method IDs: 420-424. message ReportMessageRequest { // Encrypted report payload (asymmetric, admin-key only). bytes encrypted_report = 1; // Conversation ID where the reported message lives. bytes conversation_id = 2; } message ReportMessageResponse { bool accepted = 1; } message BanUserRequest { // Identity key of the user to ban (32 bytes). bytes identity_key = 1; // Human-readable reason for the ban. string reason = 2; // Ban duration in seconds (0 = permanent). uint64 duration_secs = 3; } message BanUserResponse { bool success = 1; } message UnbanUserRequest { bytes identity_key = 1; } message UnbanUserResponse { bool success = 1; } message ListReportsRequest { uint32 limit = 1; uint32 offset = 2; } message ReportEntry { uint64 id = 1; bytes encrypted_report = 2; bytes conversation_id = 3; bytes reporter_identity = 4; uint64 timestamp = 5; } message ListReportsResponse { repeated ReportEntry reports = 1; } message ListBannedRequest {} message BannedUserEntry { bytes identity_key = 1; string reason = 2; uint64 banned_at = 3; // 0 = permanent ban. uint64 expires_at = 4; } message ListBannedResponse { repeated BannedUserEntry users = 1; }