2023-06-30 09:54:08 +00:00
|
|
|
syntax = "proto3";
|
|
|
|
package client;
|
|
|
|
|
2023-07-17 13:51:31 +00:00
|
|
|
option go_package = "../gmproto";
|
2023-06-30 09:54:08 +00:00
|
|
|
|
2023-07-17 23:57:20 +00:00
|
|
|
import "conversations.proto";
|
|
|
|
import "authentication.proto";
|
2023-08-30 16:35:02 +00:00
|
|
|
import "settings.proto";
|
2023-07-17 23:57:20 +00:00
|
|
|
import "util.proto";
|
2024-06-07 15:24:25 +00:00
|
|
|
import "events.proto";
|
2023-06-30 09:54:08 +00:00
|
|
|
|
2023-07-17 23:57:20 +00:00
|
|
|
message NotifyDittoActivityRequest {
|
2023-07-15 22:56:11 +00:00
|
|
|
// This is not actually a boolean: after logging out, field 2 has value 2, and field 3 has value 1.
|
2023-07-09 11:16:52 +00:00
|
|
|
bool success = 2;
|
|
|
|
}
|
|
|
|
|
2023-07-17 23:57:20 +00:00
|
|
|
message NotifyDittoActivityResponse {}
|
|
|
|
|
|
|
|
message ReceiveMessagesRequest {
|
|
|
|
authentication.AuthMessage auth = 1;
|
|
|
|
|
|
|
|
message UnknownEmptyObject1 {}
|
|
|
|
message UnknownEmptyObject2 {
|
|
|
|
UnknownEmptyObject1 unknown = 2;
|
|
|
|
}
|
|
|
|
optional UnknownEmptyObject2 unknown = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
message MessageReadRequest {
|
2023-07-15 11:38:24 +00:00
|
|
|
string conversationID = 2;
|
|
|
|
string messageID = 3;
|
|
|
|
}
|
|
|
|
|
2023-07-17 23:57:20 +00:00
|
|
|
message AckMessageRequest {
|
|
|
|
message Message {
|
|
|
|
string requestID = 1;
|
|
|
|
authentication.Device device = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
authentication.AuthMessage authData = 1;
|
|
|
|
util.EmptyArr emptyArr = 2;
|
|
|
|
repeated Message acks = 4;
|
2023-06-30 09:54:08 +00:00
|
|
|
}
|
|
|
|
|
2023-07-17 23:57:20 +00:00
|
|
|
message DownloadAttachmentRequest {
|
|
|
|
AttachmentInfo info = 1;
|
|
|
|
authentication.AuthMessage authData = 2;
|
2023-06-30 09:54:08 +00:00
|
|
|
}
|
|
|
|
|
2023-07-17 23:57:20 +00:00
|
|
|
message AttachmentInfo {
|
|
|
|
string attachmentID = 1;
|
2023-06-30 09:54:08 +00:00
|
|
|
bool encrypted = 2;
|
|
|
|
}
|
|
|
|
|
2023-07-17 23:57:20 +00:00
|
|
|
message StartMediaUploadRequest {
|
|
|
|
int64 attachmentType = 1;
|
|
|
|
authentication.AuthMessage authData = 2;
|
|
|
|
authentication.Device mobile = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message UploadMediaResponse {
|
|
|
|
UploadedMedia media = 1;
|
|
|
|
string message = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message UploadedMedia {
|
|
|
|
string mediaID = 1;
|
|
|
|
int64 mediaNumber = 2;
|
|
|
|
}
|
|
|
|
|
2023-09-04 22:18:01 +00:00
|
|
|
message GetThumbnailRequest {
|
|
|
|
repeated string identifiers = 1;
|
2023-07-17 23:57:20 +00:00
|
|
|
}
|
|
|
|
|
2023-09-04 22:18:01 +00:00
|
|
|
message GetThumbnailResponse {
|
|
|
|
message Thumbnail {
|
|
|
|
// ID depends on request, it's always the same as the input.
|
|
|
|
string identifier = 1;
|
|
|
|
ThumbnailData data = 2;
|
|
|
|
}
|
2023-07-17 23:57:20 +00:00
|
|
|
|
2023-09-04 22:18:01 +00:00
|
|
|
repeated Thumbnail thumbnail = 1;
|
2023-07-17 23:57:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message ThumbnailData {
|
2023-09-04 22:18:01 +00:00
|
|
|
message MysteriousData {
|
|
|
|
fixed64 maybeAHash = 13;
|
|
|
|
}
|
|
|
|
// 2 -> 13: 16 mysterious bytes
|
2023-07-17 23:57:20 +00:00
|
|
|
bytes imageBuffer = 3;
|
|
|
|
int32 someInt = 4;
|
|
|
|
conversations.Dimensions dimensions = 5;
|
2023-09-04 22:18:01 +00:00
|
|
|
MysteriousData mysteriousData = 2;
|
2023-07-17 23:57:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message Cursor {
|
|
|
|
string lastItemID = 1;
|
|
|
|
int64 lastItemTimestamp = 2;
|
2023-06-30 09:54:08 +00:00
|
|
|
}
|
|
|
|
|
2023-07-18 21:59:51 +00:00
|
|
|
message ListMessagesRequest {
|
2023-07-17 23:57:20 +00:00
|
|
|
string conversationID = 2;
|
|
|
|
int64 count = 3;
|
|
|
|
|
|
|
|
Cursor cursor = 5;
|
|
|
|
}
|
|
|
|
|
2023-07-18 21:59:51 +00:00
|
|
|
message ListMessagesResponse {
|
2023-07-17 23:57:20 +00:00
|
|
|
repeated conversations.Message messages = 2;
|
|
|
|
bytes someBytes = 3;
|
|
|
|
int64 totalMessages = 4;
|
|
|
|
Cursor cursor = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ListContactsRequest {
|
|
|
|
int32 i1 = 5; // = 1
|
|
|
|
int32 i2 = 6; // = 350
|
|
|
|
int32 i3 = 7; // = 50
|
|
|
|
}
|
|
|
|
|
|
|
|
message ListTopContactsRequest {
|
|
|
|
int32 count = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ListContactsResponse {
|
|
|
|
repeated conversations.Contact contacts = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ListTopContactsResponse {
|
|
|
|
repeated conversations.Contact contacts = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ListConversationsRequest {
|
|
|
|
enum Folder {
|
|
|
|
UNKNOWN = 0;
|
|
|
|
INBOX = 1;
|
|
|
|
ARCHIVE = 2;
|
|
|
|
SPAM_BLOCKED = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
int64 count = 2;
|
|
|
|
Folder folder = 4;
|
|
|
|
optional Cursor cursor = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ListConversationsResponse {
|
|
|
|
repeated conversations.Conversation conversations = 2;
|
|
|
|
optional bytes cursorBytes = 3;
|
|
|
|
optional Cursor cursor = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
message GetOrCreateConversationRequest {
|
|
|
|
repeated conversations.ContactNumber numbers = 2;
|
|
|
|
optional string RCSGroupName = 3;
|
|
|
|
optional bool createRCSGroup = 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
message GetOrCreateConversationResponse {
|
|
|
|
enum Status {
|
|
|
|
UNKNOWN = 0;
|
|
|
|
SUCCESS = 1;
|
|
|
|
CREATE_RCS = 3;
|
|
|
|
}
|
|
|
|
conversations.Conversation conversation = 2;
|
|
|
|
Status status = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
message DeleteMessageRequest {
|
|
|
|
string messageID = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message DeleteMessageResponse {
|
|
|
|
bool success = 2;
|
2023-06-30 09:54:08 +00:00
|
|
|
}
|
|
|
|
|
2023-07-17 23:57:20 +00:00
|
|
|
message UpdateConversationRequest {
|
|
|
|
UpdateConversationData data = 1;
|
|
|
|
ConversationActionStatus action = 2;
|
|
|
|
string conversationID = 3;
|
|
|
|
ConversationAction5 action5 = 5;
|
2023-06-30 12:49:32 +00:00
|
|
|
}
|
2023-07-09 11:16:52 +00:00
|
|
|
|
2023-07-17 23:57:20 +00:00
|
|
|
message ConversationAction5 {
|
|
|
|
bool field2 = 2;
|
2023-07-09 11:16:52 +00:00
|
|
|
}
|
|
|
|
|
2023-07-17 23:57:20 +00:00
|
|
|
message UpdateConversationData {
|
|
|
|
string conversationID = 1;
|
|
|
|
oneof data {
|
2023-07-24 13:46:54 +00:00
|
|
|
conversations.ConversationStatus status = 12;
|
2023-07-17 23:57:20 +00:00
|
|
|
ConversationMuteStatus mute = 7;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
enum ConversationActionStatus {
|
|
|
|
UNKNOWN_ACTION_STATUS = 0;
|
|
|
|
UNBLOCK = 2;
|
|
|
|
BLOCK = 7;
|
|
|
|
BLOCK_AND_REPORT = 8;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum ConversationMuteStatus {
|
|
|
|
UNMUTE = 0;
|
|
|
|
MUTE = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message UpdateConversationResponse {
|
|
|
|
bool success = 1;
|
|
|
|
/*
|
|
|
|
3 {
|
|
|
|
1 {
|
|
|
|
1 {
|
|
|
|
3: "11"
|
|
|
|
}
|
|
|
|
13: 2
|
|
|
|
}
|
|
|
|
3: 1
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
|
2023-08-27 09:35:47 +00:00
|
|
|
message GetConversationTypeRequest {
|
2023-07-17 23:57:20 +00:00
|
|
|
string conversationID = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message GetConversationTypeResponse {
|
|
|
|
string conversationID = 2;
|
|
|
|
int32 type = 3;
|
|
|
|
bool bool1 = 5;
|
|
|
|
int32 number2 = 6;
|
|
|
|
}
|
|
|
|
|
|
|
|
message GetConversationRequest {
|
|
|
|
string conversationID = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message GetConversationResponse {
|
|
|
|
conversations.Conversation conversation = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message OpenConversationRequest {
|
|
|
|
string conversationID = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message PrepareOpenConversationRequest {
|
|
|
|
int64 field2 = 2; // only seen value 1
|
|
|
|
}
|
|
|
|
|
|
|
|
message IsBugleDefaultResponse {
|
|
|
|
bool success = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message SendMessageRequest {
|
|
|
|
string conversationID = 2;
|
|
|
|
MessagePayload messagePayload = 3;
|
2023-08-30 16:35:02 +00:00
|
|
|
settings.SIMPayload SIMPayload = 4;
|
2023-07-17 23:57:20 +00:00
|
|
|
string tmpID = 5;
|
2024-06-13 17:46:18 +00:00
|
|
|
bool forceRCS = 6;
|
2023-07-17 23:57:20 +00:00
|
|
|
ReplyPayload reply = 8;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ReplyPayload {
|
|
|
|
string messageID = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message MessagePayload {
|
|
|
|
string tmpID = 1;
|
|
|
|
MessagePayloadContent messagePayloadContent = 6;
|
|
|
|
string conversationID = 7;
|
2023-07-19 17:32:01 +00:00
|
|
|
string participantID = 9;
|
2023-07-17 23:57:20 +00:00
|
|
|
repeated conversations.MessageInfo messageInfo = 10;
|
|
|
|
string tmpID2 = 12;
|
|
|
|
}
|
|
|
|
|
|
|
|
message MessagePayloadContent {
|
|
|
|
conversations.MessageContent messageContent = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message SendMessageResponse {
|
2023-09-01 10:42:52 +00:00
|
|
|
enum Status {
|
|
|
|
UNKNOWN = 0;
|
|
|
|
SUCCESS = 1;
|
|
|
|
FAILURE_2 = 2;
|
|
|
|
FAILURE_3 = 3;
|
2023-09-04 09:14:31 +00:00
|
|
|
FAILURE_4 = 4; // not default sms app?
|
2023-09-01 10:42:52 +00:00
|
|
|
}
|
2024-06-07 15:24:25 +00:00
|
|
|
events.AccountChangeOrSomethingEvent googleAccountSwitch = 2;
|
2023-09-01 10:42:52 +00:00
|
|
|
Status status = 3;
|
2023-07-17 23:57:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message SendReactionRequest {
|
|
|
|
enum Action {
|
|
|
|
UNSPECIFIED = 0;
|
|
|
|
ADD = 1;
|
|
|
|
REMOVE = 2;
|
|
|
|
SWITCH = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
string messageID = 1;
|
|
|
|
conversations.ReactionData reactionData = 2;
|
|
|
|
Action action = 3;
|
2024-03-07 23:45:18 +00:00
|
|
|
settings.SIMPayload SIMPayload = 4;
|
2023-07-17 23:57:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message SendReactionResponse {
|
|
|
|
bool success = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
message ResendMessageRequest {
|
|
|
|
string messageID = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
message TypingUpdateRequest {
|
|
|
|
message Data {
|
|
|
|
string conversationID = 1;
|
|
|
|
bool typing = 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
Data data = 2;
|
2023-07-09 11:16:52 +00:00
|
|
|
}
|