|  |  |  | package textsecure;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | option java_package = "org.whispersystems.textsecure.internal.push";
 | 
					
						
							|  |  |  | option java_outer_classname = "TextSecureProtos";
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message Envelope {
 | 
					
						
							|  |  |  |   enum Type {
 | 
					
						
							|  |  |  |     UNKNOWN       = 0;
 | 
					
						
							|  |  |  |     CIPHERTEXT    = 1;
 | 
					
						
							|  |  |  |     KEY_EXCHANGE  = 2;
 | 
					
						
							|  |  |  |     PREKEY_BUNDLE = 3;
 | 
					
						
							|  |  |  |     RECEIPT       = 5;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   optional Type   type          = 1;
 | 
					
						
							|  |  |  |   optional string source        = 2;
 | 
					
						
							|  |  |  |   optional uint32 sourceDevice  = 7;
 | 
					
						
							|  |  |  |   optional string relay         = 3;
 | 
					
						
							|  |  |  |   optional uint64 timestamp     = 5;
 | 
					
						
							|  |  |  |   optional bytes  legacyMessage = 6; // Contains an encrypted DataMessage
 | 
					
						
							|  |  |  |   optional bytes  content       = 8; // Contains an encrypted Content
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message Content {
 | 
					
						
							|  |  |  |   optional DataMessage dataMessage = 1;
 | 
					
						
							|  |  |  |   optional SyncMessage syncMessage = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message DataMessage {
 | 
					
						
							|  |  |  |   enum Flags {
 | 
					
						
							|  |  |  |     END_SESSION = 1;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   optional string             body        = 1;
 | 
					
						
							|  |  |  |   repeated AttachmentPointer  attachments = 2;
 | 
					
						
							|  |  |  |   optional GroupContext       group       = 3;
 | 
					
						
							|  |  |  |   optional uint32             flags       = 4;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message SyncMessage {
 | 
					
						
							|  |  |  |   message Sent {
 | 
					
						
							|  |  |  |     optional string  destination = 1;
 | 
					
						
							|  |  |  |     optional uint64  timestamp   = 2;
 | 
					
						
							|  |  |  |     optional DataMessage message = 3;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   message Contacts {
 | 
					
						
							|  |  |  |     optional AttachmentPointer blob = 1;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   message Groups {
 | 
					
						
							|  |  |  |     optional AttachmentPointer blob = 1;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   message Request {
 | 
					
						
							|  |  |  |     enum Type {
 | 
					
						
							|  |  |  |       UNKNOWN     = 0;
 | 
					
						
							|  |  |  |       CONTACTS    = 1;
 | 
					
						
							|  |  |  |       GROUPS      = 2;
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  |     optional Type type = 1;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   optional Sent     sent     = 1;
 | 
					
						
							|  |  |  |   optional Contacts contacts = 2;
 | 
					
						
							|  |  |  |   optional Groups   groups   = 3;
 | 
					
						
							|  |  |  |   optional Request  request  = 4;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message AttachmentPointer {
 | 
					
						
							|  |  |  |   optional fixed64 id          = 1;
 | 
					
						
							|  |  |  |   optional string  contentType = 2;
 | 
					
						
							|  |  |  |   optional bytes   key         = 3;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message GroupContext {
 | 
					
						
							|  |  |  |   enum Type {
 | 
					
						
							|  |  |  |     UNKNOWN = 0;
 | 
					
						
							|  |  |  |     UPDATE  = 1;
 | 
					
						
							|  |  |  |     DELIVER = 2;
 | 
					
						
							|  |  |  |     QUIT    = 3;
 | 
					
						
							|  |  |  |   }
 | 
					
						
							|  |  |  |   optional bytes             id      = 1;
 | 
					
						
							|  |  |  |   optional Type              type    = 2;
 | 
					
						
							|  |  |  |   optional string            name    = 3;
 | 
					
						
							|  |  |  |   repeated string            members = 4;
 | 
					
						
							|  |  |  |   optional AttachmentPointer avatar  = 5;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message Avatar {
 | 
					
						
							|  |  |  |   optional string contentType = 1;
 | 
					
						
							|  |  |  |   optional uint32 length      = 2;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message GroupDetails {
 | 
					
						
							|  |  |  |   optional bytes  id      = 1;
 | 
					
						
							|  |  |  |   optional string name    = 2;
 | 
					
						
							|  |  |  |   repeated string members = 3;
 | 
					
						
							|  |  |  |   optional Avatar avatar  = 4;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | message ContactDetails {
 | 
					
						
							|  |  |  |   optional string number = 1;
 | 
					
						
							|  |  |  |   optional string name   = 2;
 | 
					
						
							|  |  |  |   optional Avatar avatar = 3;
 | 
					
						
							|  |  |  | }
 |