syntax = "proto3"; package messages; option go_package = "../gmproto"; message RegisterRefreshPayload { AuthMessage messageAuth = 1; Device currBrowserDevice = 2; int64 unixTimestamp = 3; bytes signature = 4; EmptyRefreshArr emptyRefreshArr = 13; int32 messageType = 16; } message EmptyRefreshArr { EmptyArr emptyArr = 9; } message StartAckMessage { optional int32 count = 1; } message LongPollingPayload { optional IncomingRPCMessage data = 2; optional EmptyArr heartbeat = 3; optional StartAckMessage ack = 4; optional EmptyArr startRead = 5; } message IncomingRPCMessage { string responseID = 1; BugleRoute bugleRoute = 2; string startExecute = 3; MessageType messageType = 5; string finishExecute = 6; string millisecondsTaken = 7; Device mobile = 8; Device browser = 9; // Either a RPCMessageData or a RPCPairData encoded as bytes bytes messageData = 12; string signatureID = 17; string timestamp = 21; } message RPCMessageData { string sessionID = 1; int64 timestamp = 3; ActionType action = 4; bool bool1 = 6; bool bool2 = 7; bytes encryptedData = 8; bool bool3 = 9; } message RevokeRelayPairing { AuthMessage authMessage = 1; Device browser = 2; } message SendMessage { Device mobile = 1; SendMessageData messageData = 2; SendMessageAuth messageAuth = 3; int64 TTL = 5; // might be something related to config EmptyArr emptyArr = 9; } message SendMessageAuth { string requestID = 1; bytes tachyonAuthToken = 6; ConfigVersion configVersion = 7; } message SendMessageInternal { string requestID = 1; ActionType action = 2; bytes encryptedProtoData = 5; string sessionID = 6; } /* requestID = 1 encodedData = { requestID = 1 ^same sessionID = 6 } */ message SendMessageData { string requestID = 1; BugleRoute bugleRoute = 2; bytes protobufData = 12; MessageTypeData messageTypeData = 23; } message MessageTypeData { EmptyArr emptyArr = 1; MessageType messageType = 2; } message EmptyArr { } message AuthMessage { string requestID = 1; optional string network = 3; optional bytes tachyonAuthToken = 6; ConfigVersion configVersion = 7; } message ReceiveMessagesRequest { AuthMessage auth = 1; message UnknownEmptyObject1 {} message UnknownEmptyObject2 { UnknownEmptyObject1 unknown = 2; } optional UnknownEmptyObject2 unknown = 4; } message BaseData { int64 TTL = 2; EmptyArr emptyArr = 6; } message Device { int64 userID = 1; string sourceID = 2; string network = 3; } enum BugleRoute { UNKNOWN_BUGLE_ROUTE = 0; DataEvent = 19; PairEvent = 14; } /* enum EventType { UNKNOWN_EVENT_TYPE = 0; ONE = 1; TWO = 2; THREE = 3; FOUR = 4; FIVE = 5; SIXTEEN = 16; } */ message ConfigVersion { int32 Year = 3; int32 Month = 4; int32 Day = 5; int32 V1 = 7; int32 V2 = 9; } enum ActionType { UNSPECIFIED = 0; LIST_CONVERSATIONS = 1; LIST_CONVERSATIONS_SYNC = 1111; // fake value LIST_MESSAGES = 2; SEND_MESSAGE = 3; MESSAGE_UPDATES = 4; LIST_CONTACTS = 6; CONVERSATION_UPDATES = 7; GET_OR_CREATE_CONVERSATION = 9; MESSAGE_READ = 10; BROWSER_PRESENCE_CHECK = 11; TYPING_UPDATES = 12; SETTINGS_UPDATE = 13; USER_ALERT = 14; UPDATE_CONVERSATION = 15; GET_UPDATES = 16; ACK_BROWSER_PRESENCE = 17; LIST_STICKER_SETS = 18; LEAVE_RCS_GROUP = 19; ADD_PARTICIPANT_TO_RCS_GROUP = 20; GET_CONVERSATION_TYPE = 21; NOTIFY_DITTO_ACTIVITY = 22; DELETE_MESSAGE = 23; INSTALL_STICKER_SET = 24; RESEND_MESSAGE = 25; GET_CONTACT_RCS_GROUP_STATUS = 26; DOWNLOAD_MESSAGE = 27; LIST_TOP_CONTACTS = 28; GET_CONTACTS_THUMBNAIL = 29; CHANGE_PARTICIPANT_COLOR = 30; IS_BUGLE_DEFAULT = 31; STICKER_USER_CONTEXT = 32; FAVORITE_STICKER_PACKS = 33; RECENT_STICKERS = 34; UPDATE_RECENT_STICKERS = 35; GET_FULL_SIZE_IMAGE = 36; GET_PARTICIPANTS_THUMBNAIL = 37; SEND_REACTION = 38; SEND_REPLY = 39; GET_BLOB_FOR_ATTACHMENT = 40; GET_DEVICES_AVAILABLE_FOR_GAIA_PAIRING = 41; CREATE_GAIA_PAIRING = 42; GET_CONVERSATION = 43; CREATE_GAIA_PAIRING_CLIENT_INIT = 44; CREATE_GAIA_PAIRING_CLIENT_FINISHED = 45; UNPAIR_GAIA_PAIRING = 46; } enum MessageType { UNKNOWN_MESSAGE_TYPE = 0; BUGLE_MESSAGE = 2; BUGLE_ANNOTATION = 16; }