139 lines
		
	
	
	
		
			4.1 KiB
			
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
	
		
			4.1 KiB
			
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
// Copyright 2020-2021 Signal Messenger, LLC
 | 
						|
// SPDX-License-Identifier: AGPL-3.0-only
 | 
						|
 | 
						|
package signalservice;
 | 
						|
 | 
						|
option java_package         = "org.whispersystems.signalservice.internal.storage";
 | 
						|
option java_outer_classname = "SignalStorageProtos";
 | 
						|
 | 
						|
message StorageManifest  {
 | 
						|
  optional uint64 version = 1;
 | 
						|
  optional bytes  value   = 2;
 | 
						|
}
 | 
						|
 | 
						|
message StorageItem {
 | 
						|
  optional bytes key   = 1;
 | 
						|
  optional bytes value = 2;
 | 
						|
}
 | 
						|
 | 
						|
message StorageItems {
 | 
						|
  repeated StorageItem items = 1;
 | 
						|
}
 | 
						|
 | 
						|
message ReadOperation {
 | 
						|
  repeated bytes readKey = 1;
 | 
						|
}
 | 
						|
 | 
						|
message WriteOperation {
 | 
						|
  optional StorageManifest manifest   = 1;
 | 
						|
  repeated StorageItem     insertItem = 2;
 | 
						|
  repeated bytes           deleteKey  = 3;
 | 
						|
  optional bool            clearAll   = 4;
 | 
						|
}
 | 
						|
 | 
						|
message ManifestRecord {
 | 
						|
  message Identifier {
 | 
						|
    enum Type {
 | 
						|
      UNKNOWN = 0;
 | 
						|
      CONTACT = 1;
 | 
						|
      GROUPV1 = 2;
 | 
						|
      GROUPV2 = 3;
 | 
						|
      ACCOUNT = 4;
 | 
						|
    }
 | 
						|
 | 
						|
    optional bytes raw  = 1;
 | 
						|
    optional Type  type = 2;
 | 
						|
  }
 | 
						|
 | 
						|
  optional uint64     version = 1;
 | 
						|
  repeated Identifier keys    = 2;
 | 
						|
}
 | 
						|
 | 
						|
message StorageRecord {
 | 
						|
  oneof record {
 | 
						|
    ContactRecord contact = 1;
 | 
						|
    GroupV1Record groupV1 = 2;
 | 
						|
    GroupV2Record groupV2 = 3;
 | 
						|
    AccountRecord account = 4;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
message ContactRecord {
 | 
						|
  enum IdentityState {
 | 
						|
    DEFAULT    = 0;
 | 
						|
    VERIFIED   = 1;
 | 
						|
    UNVERIFIED = 2;
 | 
						|
  }
 | 
						|
 | 
						|
  optional string        serviceUuid         = 1;
 | 
						|
  optional string        serviceE164         = 2;
 | 
						|
  optional bytes         profileKey          = 3;
 | 
						|
  optional bytes         identityKey         = 4;
 | 
						|
  optional IdentityState identityState       = 5;
 | 
						|
  optional string        givenName           = 6;
 | 
						|
  optional string        familyName          = 7;
 | 
						|
  optional string        username            = 8;
 | 
						|
  optional bool          blocked             = 9;
 | 
						|
  optional bool          whitelisted         = 10;
 | 
						|
  optional bool          archived            = 11;
 | 
						|
  optional bool          markedUnread        = 12;
 | 
						|
  optional uint64        mutedUntilTimestamp = 13;
 | 
						|
}
 | 
						|
 | 
						|
message GroupV1Record {
 | 
						|
  optional bytes  id                  = 1;
 | 
						|
  optional bool   blocked             = 2;
 | 
						|
  optional bool   whitelisted         = 3;
 | 
						|
  optional bool   archived            = 4;
 | 
						|
  optional bool   markedUnread        = 5;
 | 
						|
  optional uint64 mutedUntilTimestamp = 6;
 | 
						|
}
 | 
						|
 | 
						|
message GroupV2Record {
 | 
						|
  optional bytes  masterKey                    = 1;
 | 
						|
  optional bool   blocked                      = 2;
 | 
						|
  optional bool   whitelisted                  = 3;
 | 
						|
  optional bool   archived                     = 4;
 | 
						|
  optional bool   markedUnread                 = 5;
 | 
						|
  optional uint64 mutedUntilTimestamp          = 6;
 | 
						|
  optional bool   dontNotifyForMentionsIfMuted = 7;
 | 
						|
}
 | 
						|
 | 
						|
message AccountRecord {
 | 
						|
  enum PhoneNumberSharingMode {
 | 
						|
    EVERYBODY     = 0;
 | 
						|
    CONTACTS_ONLY = 1;
 | 
						|
    NOBODY        = 2;
 | 
						|
  }
 | 
						|
 | 
						|
  message PinnedConversation {
 | 
						|
    message Contact {
 | 
						|
      optional string uuid = 1;
 | 
						|
      optional string e164 = 2;
 | 
						|
    }
 | 
						|
 | 
						|
    oneof identifier {
 | 
						|
      Contact contact        = 1;
 | 
						|
      bytes   legacyGroupId  = 3;
 | 
						|
      bytes   groupMasterKey = 4;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  optional bytes                  profileKey                   = 1;
 | 
						|
  optional string                 givenName                    = 2;
 | 
						|
  optional string                 familyName                   = 3;
 | 
						|
  optional string                 avatarUrl                    = 4;
 | 
						|
  optional bool                   noteToSelfArchived           = 5;
 | 
						|
  optional bool                   readReceipts                 = 6;
 | 
						|
  optional bool                   sealedSenderIndicators       = 7;
 | 
						|
  optional bool                   typingIndicators             = 8;
 | 
						|
  optional bool                   proxiedLinkPreviews          = 9;
 | 
						|
  optional bool                   noteToSelfMarkedUnread       = 10;
 | 
						|
  optional bool                   linkPreviews                 = 11;
 | 
						|
  optional PhoneNumberSharingMode phoneNumberSharingMode       = 12;
 | 
						|
  optional bool                   notDiscoverableByPhoneNumber = 13;
 | 
						|
  repeated PinnedConversation     pinnedConversations          = 14;
 | 
						|
  optional uint32                 universalExpireTimer         = 17;
 | 
						|
  optional bool                   primarySendsSms              = 18;
 | 
						|
  optional string                 e164                         = 19;
 | 
						|
}
 |