concord/api/proto/membership/v1/membership.proto

134 lines
3.1 KiB
Protocol Buffer

syntax = "proto3";
package concord.membership.v1;
option go_package = "github.com/Alexander-D-Karpov/concord/api/gen/go/membership/v1;membershipv1";
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";
import "common/v1/types.proto";
message InviteRequest {
string room_id = 1;
string user_id = 2;
}
message RemoveRequest {
string room_id = 1;
string user_id = 2;
}
message SetRoleRequest {
string room_id = 1;
string user_id = 2;
concord.common.v1.Role role = 3;
}
message SetNicknameRequest {
string room_id = 1;
string nickname = 2;
}
message ListMembersRequest {
string room_id = 1;
}
message ListMembersResponse {
repeated concord.common.v1.Member members = 1;
}
message EmptyResponse {}
enum RoomInviteStatus {
ROOM_INVITE_STATUS_UNSPECIFIED = 0;
ROOM_INVITE_STATUS_PENDING = 1;
ROOM_INVITE_STATUS_ACCEPTED = 2;
ROOM_INVITE_STATUS_REJECTED = 3;
}
message RoomInvite {
string id = 1;
string room_id = 2;
string room_name = 3;
string invited_user_id = 4;
string invited_by = 5;
RoomInviteStatus status = 6;
google.protobuf.Timestamp created_at = 7;
google.protobuf.Timestamp updated_at = 8;
string invited_user_handle = 9;
string invited_user_display_name = 10;
string invited_user_avatar_url = 11;
string inviter_handle = 12;
string inviter_display_name = 13;
string inviter_avatar_url = 14;
}
message AcceptRoomInviteRequest {
string invite_id = 1;
}
message RejectRoomInviteRequest {
string invite_id = 1;
}
message CancelRoomInviteRequest {
string invite_id = 1;
}
message ListRoomInvitesRequest {}
message ListRoomInvitesResponse {
repeated RoomInvite incoming = 1;
repeated RoomInvite outgoing = 2;
}
service MembershipService {
rpc Invite(InviteRequest) returns (RoomInvite) {
option (google.api.http) = {
post: "/v1/rooms/{room_id}/invites"
body: "*"
};
}
rpc AcceptRoomInvite(AcceptRoomInviteRequest) returns (concord.common.v1.Member) {
option (google.api.http) = {
post: "/v1/invites/{invite_id}/accept"
};
}
rpc RejectRoomInvite(RejectRoomInviteRequest) returns (EmptyResponse) {
option (google.api.http) = {
post: "/v1/invites/{invite_id}/reject"
};
}
rpc CancelRoomInvite(CancelRoomInviteRequest) returns (EmptyResponse) {
option (google.api.http) = {
delete: "/v1/invites/{invite_id}"
};
}
rpc ListRoomInvites(ListRoomInvitesRequest) returns (ListRoomInvitesResponse) {
option (google.api.http) = {
get: "/v1/invites"
};
}
rpc Remove(RemoveRequest) returns (EmptyResponse) {
option (google.api.http) = {
delete: "/v1/rooms/{room_id}/members/{user_id}"
};
}
rpc SetRole(SetRoleRequest) returns (concord.common.v1.Member) {
option (google.api.http) = {
put: "/v1/rooms/{room_id}/members/{user_id}/role"
body: "*"
};
}
rpc SetNickname(SetNicknameRequest) returns (concord.common.v1.Member) {
option (google.api.http) = {
put: "/v1/rooms/{room_id}/nickname"
body: "*"
};
}
rpc ListMembers(ListMembersRequest) returns (ListMembersResponse) {
option (google.api.http) = {
get: "/v1/rooms/{room_id}/members"
};
}
}