Select Git revision
members.proto
members.proto 2.32 KiB
syntax = "proto3";
import "google/protobuf/empty.proto";
import "common/common.proto";
option go_package = "git.perx.ru/perxis/perxis-go/proto/members;members";
package account.members;
// Роль пользователя в организации
enum Role {
NOT_MEMBER = 0; // Не является членом команды - значение по умолчанию
MEMBER = 1; // Входит в организацию и команды, может получать доступ к Space в соответствии с политикой доступа
OWNER = 2; // admin + может приглашать пользователей на роль owner
ADMIN = 3; // Входит в организацию, видит все Space, может задавать политики доступа, может приглашать пользователей на роли member, admin
}
message Member {
string org_id = 1;
string user_id = 2;
Role role = 3;
}
message SetRequest {
string org_id = 1;
string user_id = 2;
Role role = 3;
}
message GetRequest {
string org_id = 1;
string user_id = 2;
}
message GetResponse {
Role role = 3;
}
message RemoveRequest {
string org_id = 1;
string user_id = 2;
}
message ListMembersRequest {
string org_id = 1;
}
message ListMembersResponse {
repeated Member members = 1;
}
message ListOrganizationsRequest {
string user_id = 1;
}
message ListOrganizationsResponse {
repeated Member organizations = 1;
}
service Members {
rpc Set(SetRequest) returns(google.protobuf.Empty) {}
rpc Get(GetRequest) returns(GetResponse) {}
rpc Remove(RemoveRequest) returns(google.protobuf.Empty) {}
rpc ListMembers(ListMembersRequest) returns(ListMembersResponse) {}
rpc ListOrganizations(ListOrganizationsRequest) returns(ListOrganizationsResponse) {}
}
// Внутренний сервис (часть имплементации паттерна Observer). Используется для установки
// членства в организации при принятии приглашения в пространство
message OnCollaboratorSetRequest {
common.Collaborator collaborator = 1;
}
message OnCollaboratorSetResponse {
string delayed_task_id = 1;
}
service Observer {
rpc OnCollaboratorSet(OnCollaboratorSetRequest) returns(OnCollaboratorSetResponse) {}
}