You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			323 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			Protocol Buffer
		
	
			
		
		
	
	
			323 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			Protocol Buffer
		
	
| syntax = "proto2";
 | |
| 
 | |
| package signalservice;
 | |
| 
 | |
| option java_package = "org.session.libsignal.protos";
 | |
| option java_outer_classname = "SignalServiceProtos";
 | |
| 
 | |
| message Envelope {
 | |
| 
 | |
|   enum Type {
 | |
|     SESSION_MESSAGE      = 6;
 | |
|     CLOSED_GROUP_MESSAGE = 7;
 | |
|   }
 | |
| 
 | |
|   // @required
 | |
|   required Type   type            = 1;
 | |
|   optional string source          = 2;
 | |
|   optional uint32 sourceDevice    = 7;
 | |
|   // @required
 | |
|   required uint64 timestamp       = 5;
 | |
|   optional bytes  content         = 8;
 | |
|   optional uint64 serverTimestamp = 10;
 | |
| }
 | |
| 
 | |
| message TypingMessage {
 | |
| 
 | |
|     enum Action {
 | |
|         STARTED = 0;
 | |
|         STOPPED = 1;
 | |
|     }
 | |
| 
 | |
|     // @required
 | |
|     required uint64 timestamp = 1;
 | |
|     // @required
 | |
|     required Action action    = 2;
 | |
| }
 | |
| 
 | |
| message UnsendRequest {
 | |
|   // @required
 | |
|   required uint64 timestamp = 1;
 | |
|   // @required
 | |
|   required string author    = 2;
 | |
| }
 | |
| 
 | |
| message Content {
 | |
|   enum ExpirationType {
 | |
|     UNKNOWN = 0;
 | |
|     DELETE_AFTER_READ = 1;
 | |
|     DELETE_AFTER_SEND = 2;
 | |
|   }
 | |
| 
 | |
|   optional DataMessage                dataMessage                = 1;
 | |
|   optional CallMessage                callMessage                = 3;
 | |
|   optional ReceiptMessage             receiptMessage             = 5;
 | |
|   optional TypingMessage              typingMessage              = 6;
 | |
|   optional ConfigurationMessage       configurationMessage       = 7;
 | |
|   optional DataExtractionNotification dataExtractionNotification = 8;
 | |
|   optional UnsendRequest              unsendRequest              = 9;
 | |
|   optional MessageRequestResponse     messageRequestResponse     = 10;
 | |
|   optional SharedConfigMessage        sharedConfigMessage        = 11;
 | |
|   optional ExpirationType             expirationType             = 12;
 | |
|   optional uint32                     expirationTimer            = 13;
 | |
|   optional uint64         lastDisappearingMessageChangeTimestamp = 14;
 | |
| }
 | |
| 
 | |
| message KeyPair {
 | |
|   // @required
 | |
|   required bytes publicKey  = 1;
 | |
|   // @required
 | |
|   required bytes privateKey = 2;
 | |
| }
 | |
| 
 | |
| message DataExtractionNotification {
 | |
| 
 | |
|   enum Type {
 | |
|     SCREENSHOT  = 1;
 | |
|     MEDIA_SAVED = 2; // timestamp
 | |
|   }
 | |
| 
 | |
|   // @required
 | |
|   required Type   type      = 1;
 | |
|   optional uint64 timestamp = 2;
 | |
| }
 | |
| 
 | |
| message DataMessage {
 | |
| 
 | |
|   enum Flags {
 | |
|     EXPIRATION_TIMER_UPDATE = 2;
 | |
|   }
 | |
| 
 | |
|   message Quote {
 | |
| 
 | |
|     message QuotedAttachment {
 | |
| 
 | |
|       enum Flags {
 | |
|         VOICE_MESSAGE = 1;
 | |
|       }
 | |
| 
 | |
|       optional string            contentType = 1;
 | |
|       optional string            fileName    = 2;
 | |
|       optional AttachmentPointer thumbnail   = 3;
 | |
|       optional uint32            flags       = 4;
 | |
|     }
 | |
| 
 | |
|     // @required
 | |
|     required uint64            id          = 1;
 | |
|     // @required
 | |
|     required string            author      = 2;
 | |
|     optional string            text        = 3;
 | |
|     repeated QuotedAttachment  attachments = 4;
 | |
|   }
 | |
| 
 | |
|   message Preview {
 | |
|     // @required
 | |
|     required string            url   = 1;
 | |
|     optional string            title = 2;
 | |
|     optional AttachmentPointer image = 3;
 | |
|   }
 | |
| 
 | |
|   message LokiProfile {
 | |
|     optional string displayName = 1;
 | |
|     optional string profilePicture = 2;
 | |
|   }
 | |
| 
 | |
|   message OpenGroupInvitation {
 | |
|     // @required
 | |
|     required string url = 1;
 | |
|     // @required
 | |
|     required string name = 3;
 | |
|   }
 | |
| 
 | |
|   message ClosedGroupControlMessage {
 | |
| 
 | |
|     enum Type {
 | |
|       NEW                         = 1; // publicKey, name, encryptionKeyPair, members, admins, expireTimer
 | |
|       ENCRYPTION_KEY_PAIR         = 3; // publicKey, wrappers
 | |
|       NAME_CHANGE                 = 4; // name
 | |
|       MEMBERS_ADDED               = 5; // members
 | |
|       MEMBERS_REMOVED             = 6; // members
 | |
|       MEMBER_LEFT                 = 7;
 | |
|     }
 | |
| 
 | |
|     message KeyPairWrapper {
 | |
|       // @required
 | |
|       required bytes publicKey        = 1; // The public key of the user the key pair is meant for
 | |
|       // @required
 | |
|       required bytes encryptedKeyPair = 2; // The encrypted key pair
 | |
|     }
 | |
| 
 | |
|     // @required
 | |
|     required Type           type              = 1;
 | |
|     optional bytes          publicKey         = 2;
 | |
|     optional string         name              = 3;
 | |
|     optional KeyPair        encryptionKeyPair = 4;
 | |
|     repeated bytes          members           = 5;
 | |
|     repeated bytes          admins            = 6;
 | |
|     repeated KeyPairWrapper wrappers          = 7;
 | |
|     optional uint32         expirationTimer   = 8;
 | |
|   }
 | |
| 
 | |
|   message Reaction {
 | |
|     enum Action {
 | |
|       REACT = 0;
 | |
|       REMOVE = 1;
 | |
|     }
 | |
|     // @required
 | |
|     required uint64 id        = 1;
 | |
|     // @required
 | |
|     required string author    = 2;
 | |
|     optional string emoji     = 3;
 | |
|     // @required
 | |
|     required Action action    = 4;
 | |
|   }
 | |
| 
 | |
|   optional string                    body                           = 1;
 | |
|   repeated AttachmentPointer         attachments                    = 2;
 | |
|   optional GroupContext              group                          = 3;
 | |
|   optional uint32                    flags                          = 4;
 | |
|   optional uint32                    expireTimer                    = 5;
 | |
|   optional bytes                     profileKey                     = 6;
 | |
|   optional uint64                    timestamp                      = 7;
 | |
|   optional Quote                     quote                          = 8;
 | |
|   repeated Preview                   preview                        = 10;
 | |
|   optional Reaction                  reaction                       = 11;
 | |
|   optional LokiProfile               profile                        = 101;
 | |
|   optional OpenGroupInvitation       openGroupInvitation            = 102;
 | |
|   optional ClosedGroupControlMessage closedGroupControlMessage      = 104;
 | |
|   optional string                    syncTarget                     = 105;
 | |
|   optional bool                      blocksCommunityMessageRequests = 106;
 | |
| }
 | |
| 
 | |
| message CallMessage {
 | |
| 
 | |
|   enum Type {
 | |
|     PRE_OFFER          = 6;
 | |
|     OFFER              = 1;
 | |
|     ANSWER             = 2;
 | |
|     PROVISIONAL_ANSWER = 3;
 | |
|     ICE_CANDIDATES     = 4;
 | |
|     END_CALL           = 5;
 | |
|   }
 | |
| 
 | |
|   // Multiple ICE candidates may be batched together for performance
 | |
| 
 | |
|   // @required
 | |
|   required Type   type            = 1;
 | |
|   repeated string sdps            = 2;
 | |
|   repeated uint32 sdpMLineIndexes = 3;
 | |
|   repeated string sdpMids         = 4;
 | |
|   // @required
 | |
|   required string uuid            = 5;
 | |
| }
 | |
| 
 | |
| message ConfigurationMessage {
 | |
| 
 | |
|   message ClosedGroup {
 | |
|     optional bytes   publicKey         = 1;
 | |
|     optional string  name              = 2;
 | |
|     optional KeyPair encryptionKeyPair = 3;
 | |
|     repeated bytes   members           = 4;
 | |
|     repeated bytes   admins            = 5;
 | |
|     optional uint32  expirationTimer   = 6;
 | |
|   }
 | |
| 
 | |
|   message Contact {
 | |
|     // @required
 | |
|     required bytes  publicKey         = 1;
 | |
|     // @required
 | |
|     required string name              = 2;
 | |
|     optional string profilePicture    = 3;
 | |
|     optional bytes  profileKey        = 4;
 | |
|     optional bool isApproved          = 5;
 | |
|     optional bool isBlocked           = 6;
 | |
|     optional bool didApproveMe        = 7;
 | |
|   }
 | |
| 
 | |
|   repeated ClosedGroup closedGroups   = 1;
 | |
|   repeated string      openGroups     = 2;
 | |
|   optional string      displayName    = 3;
 | |
|   optional string      profilePicture = 4;
 | |
|   optional bytes       profileKey     = 5;
 | |
|   repeated Contact     contacts       = 6;
 | |
| }
 | |
| 
 | |
| message MessageRequestResponse {
 | |
|   // @required
 | |
|   required bool                    isApproved = 1;
 | |
|   optional bytes                   profileKey = 2;
 | |
|   optional DataMessage.LokiProfile profile    = 3;
 | |
| }
 | |
| 
 | |
| message SharedConfigMessage {
 | |
|   enum Kind {
 | |
|     USER_PROFILE         = 1;
 | |
|     CONTACTS             = 2;
 | |
|     CONVO_INFO_VOLATILE    = 3;
 | |
|     GROUPS = 4;
 | |
|     CLOSED_GROUP_INFO    = 5;
 | |
|     CLOSED_GROUP_MEMBERS = 6;
 | |
|     ENCRYPTION_KEYS      = 7;
 | |
|   }
 | |
| 
 | |
|   // @required
 | |
|   required Kind  kind  = 1;
 | |
|   // @required
 | |
|   required int64 seqno = 2;
 | |
|   // @required
 | |
|   required bytes data  = 3;
 | |
| }
 | |
| 
 | |
| message ReceiptMessage {
 | |
| 
 | |
|   enum Type {
 | |
|     DELIVERY = 0;
 | |
|     READ     = 1;
 | |
|   }
 | |
| 
 | |
|   // @required
 | |
|   required Type   type      = 1;
 | |
|   repeated uint64 timestamp = 2;
 | |
| }
 | |
| 
 | |
| message AttachmentPointer {
 | |
| 
 | |
|   enum Flags {
 | |
|     VOICE_MESSAGE = 1;
 | |
|   }
 | |
| 
 | |
|   // @required
 | |
|   required fixed64 id          = 1;
 | |
|   optional string  contentType = 2;
 | |
|   optional bytes   key         = 3;
 | |
|   optional uint32  size        = 4;
 | |
|   optional bytes   thumbnail   = 5;
 | |
|   optional bytes   digest      = 6;
 | |
|   optional string  fileName    = 7;
 | |
|   optional uint32  flags       = 8;
 | |
|   optional uint32  width       = 9;
 | |
|   optional uint32  height      = 10;
 | |
|   optional string  caption     = 11;
 | |
|   optional string  url         = 101;
 | |
| }
 | |
| 
 | |
| message GroupContext {
 | |
| 
 | |
|   enum Type {
 | |
|     UNKNOWN      = 0;
 | |
|     UPDATE       = 1;
 | |
|     DELIVER      = 2;
 | |
|     QUIT         = 3;
 | |
|     REQUEST_INFO = 4;
 | |
|   }
 | |
| 
 | |
|   // @required
 | |
|   optional bytes             id      = 1;
 | |
|   // @required
 | |
|   optional Type              type    = 2;
 | |
|   optional string            name    = 3;
 | |
|   repeated string            members = 4;
 | |
|   optional AttachmentPointer avatar  = 5;
 | |
|   repeated string            admins  = 6;
 | |
| }
 |