270 lines
8.4 KiB
Protocol Buffer
270 lines
8.4 KiB
Protocol Buffer
/**
|
|
* Copyright (C) 2019 Open Whisper Systems
|
|
*
|
|
* Licensed according to the LICENSE file in this repository.
|
|
*/
|
|
syntax = "proto3";
|
|
|
|
option java_package = "org.signal.storageservice.protos.groups";
|
|
option java_multiple_files = true;
|
|
|
|
message AvatarUploadAttributes {
|
|
string key = 1;
|
|
string credential = 2;
|
|
string acl = 3;
|
|
string algorithm = 4;
|
|
string date = 5;
|
|
string policy = 6;
|
|
string signature = 7;
|
|
}
|
|
|
|
message Member {
|
|
enum Role {
|
|
UNKNOWN = 0;
|
|
DEFAULT = 1;
|
|
ADMINISTRATOR = 2;
|
|
}
|
|
|
|
bytes userId = 1;
|
|
Role role = 2;
|
|
bytes profileKey = 3;
|
|
bytes presentation = 4; // Only set when sending to server
|
|
uint32 joinedAtRevision = 5;
|
|
}
|
|
|
|
message PendingMember {
|
|
Member member = 1;
|
|
bytes addedByUserId = 2;
|
|
uint64 timestamp = 3;
|
|
}
|
|
|
|
message RequestingMember {
|
|
bytes userId = 1;
|
|
bytes profileKey = 2;
|
|
bytes presentation = 3; // Only set when sending to server
|
|
uint64 timestamp = 4;
|
|
}
|
|
|
|
message BannedMember {
|
|
bytes userId = 1;
|
|
uint64 timestamp = 2;
|
|
}
|
|
|
|
message AccessControl {
|
|
enum AccessRequired {
|
|
UNKNOWN = 0;
|
|
ANY = 1;
|
|
MEMBER = 2;
|
|
ADMINISTRATOR = 3;
|
|
UNSATISFIABLE = 4;
|
|
}
|
|
|
|
AccessRequired attributes = 1;
|
|
AccessRequired members = 2;
|
|
AccessRequired addFromInviteLink = 3;
|
|
}
|
|
|
|
message Group {
|
|
bytes publicKey = 1;
|
|
bytes title = 2;
|
|
string avatar = 3;
|
|
bytes disappearingMessagesTimer = 4;
|
|
AccessControl accessControl = 5;
|
|
uint32 revision = 6;
|
|
repeated Member members = 7;
|
|
repeated PendingMember pendingMembers = 8;
|
|
repeated RequestingMember requestingMembers = 9;
|
|
bytes inviteLinkPassword = 10;
|
|
bytes description = 11;
|
|
bool announcementsOnly = 12;
|
|
repeated BannedMember bannedMembers = 13;
|
|
}
|
|
|
|
message GroupChange {
|
|
|
|
message Actions {
|
|
|
|
message AddMemberAction {
|
|
Member added = 1;
|
|
bool joinFromInviteLink = 2;
|
|
}
|
|
|
|
message DeleteMemberAction {
|
|
bytes deletedUserId = 1;
|
|
}
|
|
|
|
message ModifyMemberRoleAction {
|
|
bytes userId = 1;
|
|
Member.Role role = 2;
|
|
}
|
|
|
|
message ModifyMemberProfileKeyAction {
|
|
bytes presentation = 1; // Only set when sending to server
|
|
bytes user_id = 2; // Only set when receiving from server
|
|
bytes profile_key = 3; // Only set when receiving from server
|
|
}
|
|
|
|
message AddPendingMemberAction {
|
|
PendingMember added = 1;
|
|
}
|
|
|
|
message DeletePendingMemberAction {
|
|
bytes deletedUserId = 1;
|
|
}
|
|
|
|
message PromotePendingMemberAction {
|
|
bytes presentation = 1; // Only set when sending to server
|
|
bytes user_id = 2; // Only set when receiving from server
|
|
bytes profile_key = 3; // Only set when receiving from server
|
|
}
|
|
|
|
message PromotePendingPniAciMemberProfileKeyAction {
|
|
bytes presentation = 1; // Only set when sending to server
|
|
bytes userId = 2; // Only set when receiving from server
|
|
bytes pni = 3; // Only set when receiving from server
|
|
bytes profileKey = 4; // Only set when receiving from server
|
|
}
|
|
|
|
message AddRequestingMemberAction {
|
|
RequestingMember added = 1;
|
|
}
|
|
|
|
message DeleteRequestingMemberAction {
|
|
bytes deletedUserId = 1;
|
|
}
|
|
|
|
message PromoteRequestingMemberAction {
|
|
bytes userId = 1;
|
|
Member.Role role = 2;
|
|
}
|
|
|
|
message AddBannedMemberAction {
|
|
BannedMember added = 1;
|
|
}
|
|
|
|
message DeleteBannedMemberAction {
|
|
bytes deletedUserId = 1;
|
|
}
|
|
|
|
message ModifyTitleAction {
|
|
bytes title = 1;
|
|
}
|
|
|
|
message ModifyDescriptionAction {
|
|
bytes description = 1;
|
|
}
|
|
|
|
message ModifyAvatarAction {
|
|
string avatar = 1;
|
|
}
|
|
|
|
message ModifyDisappearingMessagesTimerAction {
|
|
bytes timer = 1;
|
|
}
|
|
|
|
message ModifyAttributesAccessControlAction {
|
|
AccessControl.AccessRequired attributesAccess = 1;
|
|
}
|
|
|
|
message ModifyMembersAccessControlAction {
|
|
AccessControl.AccessRequired membersAccess = 1;
|
|
}
|
|
|
|
message ModifyAddFromInviteLinkAccessControlAction {
|
|
AccessControl.AccessRequired addFromInviteLinkAccess = 1;
|
|
}
|
|
|
|
message ModifyInviteLinkPasswordAction {
|
|
bytes inviteLinkPassword = 1;
|
|
}
|
|
|
|
message ModifyAnnouncementsOnlyAction {
|
|
bool announcementsOnly = 1;
|
|
}
|
|
|
|
bytes sourceServiceId = 1;
|
|
uint32 revision = 2;
|
|
repeated AddMemberAction addMembers = 3;
|
|
repeated DeleteMemberAction deleteMembers = 4;
|
|
repeated ModifyMemberRoleAction modifyMemberRoles = 5;
|
|
repeated ModifyMemberProfileKeyAction modifyMemberProfileKeys = 6;
|
|
repeated AddPendingMemberAction addPendingMembers = 7;
|
|
repeated DeletePendingMemberAction deletePendingMembers = 8;
|
|
repeated PromotePendingMemberAction promotePendingMembers = 9;
|
|
ModifyTitleAction modifyTitle = 10;
|
|
ModifyAvatarAction modifyAvatar = 11;
|
|
ModifyDisappearingMessagesTimerAction modifyDisappearingMessagesTimer = 12;
|
|
ModifyAttributesAccessControlAction modifyAttributesAccess = 13;
|
|
ModifyMembersAccessControlAction modifyMemberAccess = 14;
|
|
ModifyAddFromInviteLinkAccessControlAction modifyAddFromInviteLinkAccess = 15;
|
|
repeated AddRequestingMemberAction addRequestingMembers = 16;
|
|
repeated DeleteRequestingMemberAction deleteRequestingMembers = 17;
|
|
repeated PromoteRequestingMemberAction promoteRequestingMembers = 18;
|
|
ModifyInviteLinkPasswordAction modifyInviteLinkPassword = 19;
|
|
ModifyDescriptionAction modifyDescription = 20;
|
|
ModifyAnnouncementsOnlyAction modifyAnnouncementsOnly = 21;
|
|
repeated AddBannedMemberAction addBannedMembers = 22;
|
|
repeated DeleteBannedMemberAction deleteBannedMembers = 23;
|
|
repeated PromotePendingPniAciMemberProfileKeyAction promotePendingPniAciMembers = 24;
|
|
}
|
|
|
|
bytes actions = 1;
|
|
bytes serverSignature = 2;
|
|
uint32 changeEpoch = 3;
|
|
}
|
|
|
|
message GroupResponse {
|
|
Group group = 1;
|
|
bytes groupSendEndorsementsResponse = 2;
|
|
}
|
|
|
|
message GroupChanges {
|
|
message GroupChangeState {
|
|
GroupChange groupChange = 1;
|
|
Group groupState = 2;
|
|
}
|
|
|
|
repeated GroupChangeState groupChanges = 1;
|
|
bytes groupSendEndorsementsResponse = 2;
|
|
}
|
|
|
|
message GroupChangeResponse {
|
|
GroupChange groupChange = 1;
|
|
bytes groupSendEndorsementsResponse = 2;
|
|
}
|
|
|
|
message GroupAttributeBlob {
|
|
oneof content {
|
|
string title = 1;
|
|
bytes avatar = 2;
|
|
uint32 disappearingMessagesDuration = 3;
|
|
string description = 4;
|
|
}
|
|
}
|
|
|
|
message GroupInviteLink {
|
|
message GroupInviteLinkContentsV1 {
|
|
bytes groupMasterKey = 1;
|
|
bytes inviteLinkPassword = 2;
|
|
}
|
|
|
|
oneof contents {
|
|
GroupInviteLinkContentsV1 v1Contents = 1;
|
|
}
|
|
}
|
|
|
|
message GroupJoinInfo {
|
|
bytes publicKey = 1;
|
|
bytes title = 2;
|
|
string avatar = 3;
|
|
uint32 memberCount = 4;
|
|
AccessControl.AccessRequired addFromInviteLink = 5;
|
|
uint32 revision = 6;
|
|
bool pendingAdminApproval = 7;
|
|
bytes description = 8;
|
|
}
|
|
|
|
message GroupExternalCredential {
|
|
string token = 1;
|
|
}
|