1000f8a80d
- Add gRPC service modules: auth, channel, channel settings, member, permission - Update protobuf definitions and generated code - Remove immediate/ real-time module (superseded by IM service) - Update etcd discovery and registration - Update cache, error, config, and build infrastructure - Add ADR documentation - Update OpenAPI spec
132 lines
3.4 KiB
Protocol Buffer
132 lines
3.4 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package appks.im.v1;
|
|
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
// Member management service for the IM microservice.
|
|
// Provides CRUD for channel members, join/leave, and membership checks.
|
|
|
|
// ── Enums ──────────────────────────────────────────────────────────────
|
|
|
|
enum Role {
|
|
ROLE_UNSPECIFIED = 0;
|
|
ROLE_OWNER = 1;
|
|
ROLE_ADMIN = 2;
|
|
ROLE_MAINTAINER = 3;
|
|
ROLE_MODERATOR = 4;
|
|
ROLE_MEMBER = 5;
|
|
ROLE_CONTRIBUTOR = 6;
|
|
ROLE_VIEWER = 7;
|
|
ROLE_GUEST = 8;
|
|
ROLE_BOT = 9;
|
|
}
|
|
|
|
enum MemberStatus {
|
|
MEMBER_STATUS_UNSPECIFIED = 0;
|
|
MEMBER_STATUS_ACTIVE = 1;
|
|
MEMBER_STATUS_INVITED = 2;
|
|
MEMBER_STATUS_LEFT = 3;
|
|
MEMBER_STATUS_KICKED = 4;
|
|
MEMBER_STATUS_BANNED = 5;
|
|
}
|
|
|
|
// ── Messages ───────────────────────────────────────────────────────────
|
|
|
|
message ChannelMember {
|
|
string id = 1;
|
|
string channel_id = 2;
|
|
string user_id = 3;
|
|
string role = 4;
|
|
string status = 5;
|
|
bool muted = 6;
|
|
bool pinned = 7;
|
|
optional string last_read_message_id = 8;
|
|
optional google.protobuf.Timestamp last_read_at = 9;
|
|
optional google.protobuf.Timestamp joined_at = 10;
|
|
optional google.protobuf.Timestamp left_at = 11;
|
|
google.protobuf.Timestamp created_at = 12;
|
|
google.protobuf.Timestamp updated_at = 13;
|
|
}
|
|
|
|
// ── Requests / Responses ──────────────────────────────────────────────
|
|
|
|
message ListMembersRequest {
|
|
string channel_id = 1;
|
|
optional string status = 2;
|
|
int32 limit = 3;
|
|
int32 offset = 4;
|
|
}
|
|
|
|
message ListMembersResponse {
|
|
repeated ChannelMember members = 1;
|
|
int32 total = 2;
|
|
}
|
|
|
|
message InviteMemberRequest {
|
|
string channel_id = 1;
|
|
string user_id = 2;
|
|
optional string role = 3;
|
|
}
|
|
|
|
message InviteMemberResponse {
|
|
ChannelMember member = 1;
|
|
}
|
|
|
|
message UpdateMemberRequest {
|
|
string channel_id = 1;
|
|
string user_id = 2;
|
|
optional string role = 3;
|
|
optional bool muted = 4;
|
|
optional bool pinned = 5;
|
|
}
|
|
|
|
message UpdateMemberResponse {
|
|
ChannelMember member = 1;
|
|
}
|
|
|
|
message KickMemberRequest {
|
|
string channel_id = 1;
|
|
string user_id = 2;
|
|
}
|
|
|
|
message KickMemberResponse {}
|
|
|
|
message JoinChannelRequest {
|
|
string channel_id = 1;
|
|
string user_id = 2;
|
|
}
|
|
|
|
message JoinChannelResponse {
|
|
ChannelMember member = 1;
|
|
}
|
|
|
|
message LeaveChannelRequest {
|
|
string channel_id = 1;
|
|
string user_id = 2;
|
|
}
|
|
|
|
message LeaveChannelResponse {}
|
|
|
|
message IsMemberRequest {
|
|
string channel_id = 1;
|
|
string user_id = 2;
|
|
}
|
|
|
|
message IsMemberResponse {
|
|
bool is_member = 1;
|
|
string role = 2;
|
|
}
|
|
|
|
// ── Service ───────────────────────────────────────────────────────────
|
|
|
|
service MemberService {
|
|
rpc ListMembers(ListMembersRequest) returns (ListMembersResponse);
|
|
rpc InviteMember(InviteMemberRequest) returns (InviteMemberResponse);
|
|
rpc UpdateMember(UpdateMemberRequest) returns (UpdateMemberResponse);
|
|
rpc KickMember(KickMemberRequest) returns (KickMemberResponse);
|
|
rpc JoinChannel(JoinChannelRequest) returns (JoinChannelResponse);
|
|
rpc LeaveChannel(LeaveChannelRequest) returns (LeaveChannelResponse);
|
|
rpc IsMember(IsMemberRequest) returns (IsMemberResponse);
|
|
}
|