package textsecure; option java_package = "org.whispersystems.textsecure.push"; option java_outer_classname = "PushMessageProtos"; message IncomingPushMessageSignal { enum Type { UNKNOWN = 0; CIPHERTEXT = 1; KEY_EXCHANGE = 2; PREKEY_BUNDLE = 3; PLAINTEXT = 4; } optional Type type = 1; optional string source = 2; optional uint32 sourceDevice = 7; optional string relay = 3; optional uint64 timestamp = 5; optional bytes message = 6; // Contains an encrypted PushMessageContent // repeated string destinations = 4; // No longer supported } message PushMessageContent { message AttachmentPointer { optional fixed64 id = 1; optional string contentType = 2; optional bytes key = 3; } message GroupContext { enum Type { UNKNOWN = 0; CREATE = 1; MODIFY = 2; DELIVER = 3; ADD = 4; QUIT = 5; } optional bytes id = 1; optional Type type = 2; optional string name = 3; repeated string members = 4; optional AttachmentPointer avatar = 5; } enum Flags { END_SESSION = 1; } optional string body = 1; repeated AttachmentPointer attachments = 2; optional GroupContext group = 3; optional uint32 flags = 4; }