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.4 KiB
		
	
	
	
		
			Protocol Buffer
		
	
			
		
		
	
	
			323 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Protocol Buffer
		
	
| // Source: https://github.com/signalapp/libsignal-service-java/blob/4684a49b2ed8f32be619e0d0eea423626b6cb2cb/protobuf/SignalService.proto
 | |
| package signalservice;
 | |
| 
 | |
| option java_package = "org.whispersystems.signalservice.internal.push";
 | |
| option java_outer_classname = "SignalServiceProtos";
 | |
| 
 | |
| message Envelope {
 | |
| 
 | |
|   enum Type {
 | |
|     UNIDENTIFIED_SENDER = 6;
 | |
|     CLOSED_GROUP_CIPHERTEXT = 7;
 | |
|   }
 | |
| 
 | |
|   // @required
 | |
|   required Type   type            = 1;
 | |
|   optional string source          = 2;
 | |
|   // @required
 | |
|   optional uint64 timestamp       = 5;
 | |
|   optional bytes  content         = 8;
 | |
| }
 | |
| 
 | |
| message TypingMessage {
 | |
|     enum Action {
 | |
|         STARTED = 0;
 | |
|         STOPPED = 1;
 | |
|     }
 | |
|     // @required
 | |
|     optional uint64 timestamp = 1;
 | |
|     // @required
 | |
|     optional Action action    = 2;
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| message Content {
 | |
|   optional DataMessage    dataMessage                   = 1;
 | |
|   optional ReceiptMessage receiptMessage                = 5;
 | |
|   optional TypingMessage  typingMessage                 = 6;
 | |
|   optional ConfigurationMessage  configurationMessage   = 7;
 | |
| }
 | |
| 
 | |
| message KeyPair {
 | |
|   // @required
 | |
|   required bytes publicKey  = 1;
 | |
|   // @required
 | |
|   required bytes privateKey = 2;
 | |
| }
 | |
| 
 | |
| 
 | |
| message DataMessage {
 | |
| 
 | |
|   enum Flags {
 | |
|     EXPIRATION_TIMER_UPDATE   = 2;
 | |
|   }
 | |
| 
 | |
|   message Quote {
 | |
| 
 | |
|     message QuotedAttachment {
 | |
|       optional string            contentType = 1;
 | |
|       optional string            fileName    = 2;
 | |
|       optional AttachmentPointer thumbnail   = 3;
 | |
|     }
 | |
| 
 | |
|     // @required
 | |
|     optional uint64           id          = 1;
 | |
|     // @required
 | |
|     optional string           author      = 2;
 | |
|     optional string           text        = 3;
 | |
|     repeated QuotedAttachment attachments = 4;
 | |
|   }
 | |
| 
 | |
|   message Contact {
 | |
| 
 | |
|     message Name {
 | |
|       optional string givenName   = 1;
 | |
|       optional string familyName  = 2;
 | |
|       optional string prefix      = 3;
 | |
|       optional string suffix      = 4;
 | |
|       optional string middleName  = 5;
 | |
|       optional string displayName = 6;
 | |
|     }
 | |
| 
 | |
|     message Phone {
 | |
| 
 | |
|       enum Type {
 | |
|         HOME   = 1;
 | |
|         MOBILE = 2;
 | |
|         WORK   = 3;
 | |
|         CUSTOM = 4;
 | |
|       }
 | |
| 
 | |
|       optional string value = 1;
 | |
|       optional Type   type  = 2;
 | |
|       optional string label = 3;
 | |
|     }
 | |
| 
 | |
|     message Email {
 | |
| 
 | |
|       enum Type {
 | |
|         HOME   = 1;
 | |
|         MOBILE = 2;
 | |
|         WORK   = 3;
 | |
|         CUSTOM = 4;
 | |
|       }
 | |
| 
 | |
|       optional string value = 1;
 | |
|       optional Type   type  = 2;
 | |
|       optional string label = 3;
 | |
|     }
 | |
| 
 | |
|     message PostalAddress {
 | |
| 
 | |
|       enum Type {
 | |
|         HOME   = 1;
 | |
|         WORK   = 2;
 | |
|         CUSTOM = 3;
 | |
|       }
 | |
| 
 | |
|       optional Type   type         = 1;
 | |
|       optional string label        = 2;
 | |
|       optional string street       = 3;
 | |
|       optional string pobox        = 4;
 | |
|       optional string neighborhood = 5;
 | |
|       optional string city         = 6;
 | |
|       optional string region       = 7;
 | |
|       optional string postcode     = 8;
 | |
|       optional string country      = 9;
 | |
|     }
 | |
| 
 | |
|     message Avatar {
 | |
|       optional AttachmentPointer avatar    = 1;
 | |
|       optional bool              isProfile = 2;
 | |
|     }
 | |
| 
 | |
|     optional Name              name            = 1;
 | |
|     repeated Phone             number          = 3;
 | |
|     repeated Email             email           = 4;
 | |
|     repeated PostalAddress     address         = 5;
 | |
|     optional Avatar            avatar          = 6;
 | |
|     optional string            organization    = 7;
 | |
|   }
 | |
| 
 | |
|   message Preview {
 | |
|     // @required
 | |
|     optional string            url   = 1;
 | |
|     optional string            title = 2;
 | |
|     optional AttachmentPointer image = 3;
 | |
|   }
 | |
| 
 | |
|   message LokiProfile {
 | |
|     optional string displayName = 1;
 | |
|     optional string profilePicture = 2;
 | |
|   }
 | |
| 
 | |
| 
 | |
|   message ClosedGroupControlMessage {
 | |
| 
 | |
| 	  enum Type {
 | |
| 	    NEW                           = 1; // publicKey, name, encryptionKeyPair, members, admins
 | |
| 	    UPDATE                        = 2; // name, members
 | |
|       ENCRYPTION_KEY_PAIR           = 3; // publicKey, wrappers
 | |
|       NAME_CHANGE                   = 4; // name
 | |
|       MEMBERS_ADDED                 = 5; // members
 | |
|       MEMBERS_REMOVED               = 6; // members
 | |
|       MEMBER_LEFT                   = 7;
 | |
|       ENCRYPTION_KEY_PAIR_REQUEST   = 8;
 | |
| 	  }
 | |
| 
 | |
| 
 | |
| 
 | |
| 	  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;
 | |
| 	}
 | |
| 
 | |
|   message GroupInvitation {
 | |
|     optional string serverAddress = 1;
 | |
|     optional string serverName = 3;
 | |
|   }
 | |
| 
 | |
|   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 Contact                   contact                   = 9;
 | |
|   repeated Preview                   preview                   = 10;
 | |
|   optional LokiProfile               profile                   = 101;
 | |
|   optional GroupInvitation           groupInvitation           = 102;
 | |
|   optional ClosedGroupControlMessage closedGroupControlMessage = 104;
 | |
|   optional string                    syncTarget                = 105;
 | |
| }
 | |
| 
 | |
| message ConfigurationMessage {
 | |
| 
 | |
|   message ClosedGroup {
 | |
|     optional bytes   publicKey         = 1;
 | |
|     optional string  name              = 2;
 | |
|     optional KeyPair encryptionKeyPair = 3;
 | |
|     repeated bytes   members           = 4;
 | |
|     repeated bytes   admins            = 5;
 | |
|   }
 | |
| 
 | |
|   message Contact {
 | |
|     optional bytes  publicKey         = 1;
 | |
|     optional string name              = 2;
 | |
|     optional string profilePicture    = 3;
 | |
|     optional bytes  profileKey        = 4;
 | |
|   }
 | |
| 
 | |
|   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 ReceiptMessage {
 | |
| 
 | |
|   enum Type {
 | |
|     DELIVERY = 0;
 | |
|     READ     = 1;
 | |
|   }
 | |
| 
 | |
|   // @required
 | |
|   optional Type   type      = 1;
 | |
|   repeated uint64 timestamp = 2;
 | |
| }
 | |
| 
 | |
| message AttachmentPointer {
 | |
| 
 | |
|   enum Flags {
 | |
|     VOICE_MESSAGE = 1;
 | |
|   }
 | |
| 
 | |
|   // @required
 | |
|   optional 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;
 | |
| }
 | |
| 
 | |
| message ContactDetails {
 | |
| 
 | |
|   message Avatar {
 | |
|     optional string contentType = 1;
 | |
|     optional uint32 length      = 2;
 | |
|   }
 | |
| 
 | |
|   // @required
 | |
|   optional string   number      = 1;
 | |
|   optional string   name        = 2;
 | |
|   optional Avatar   avatar      = 3;
 | |
|   optional string   color       = 4;
 | |
|   optional bytes    profileKey  = 6;
 | |
|   optional bool     blocked     = 7;
 | |
|   optional uint32   expireTimer = 8;
 | |
|   optional string   nickname    = 101;
 | |
| }
 | |
| 
 | |
| message GroupDetails {
 | |
| 
 | |
|   message Avatar {
 | |
|     optional string contentType = 1;
 | |
|     optional uint32 length      = 2;
 | |
|   }
 | |
| 
 | |
|   // @required
 | |
|   optional bytes  id          = 1;
 | |
|   optional string name        = 2;
 | |
|   repeated string members     = 3;
 | |
|   optional Avatar avatar      = 4;
 | |
|   optional bool   active      = 5 [default = true];
 | |
|   optional uint32 expireTimer = 6;
 | |
|   optional string color       = 7;
 | |
|   optional bool   blocked     = 8;
 | |
|   repeated string admins      = 9;
 | |
| }
 |