summaryrefslogtreecommitdiff
path: root/protocols/WhatsAppWeb/src/pmsg.proto
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2022-09-16 13:27:28 +0300
committerGeorge Hazan <ghazan@miranda.im>2022-09-16 13:27:28 +0300
commite608c114ed6735ff097db948688ea320d2d38f0c (patch)
tree15b83a323219205d25006bb66177ee3fd4d41039 /protocols/WhatsAppWeb/src/pmsg.proto
parentb3dcfac0936aa764ecf0b98b8bfd0112d0c05fe5 (diff)
WhatsApp: new socket version that is able to send handshake message
Diffstat (limited to 'protocols/WhatsAppWeb/src/pmsg.proto')
-rw-r--r--protocols/WhatsAppWeb/src/pmsg.proto2763
1 files changed, 2037 insertions, 726 deletions
diff --git a/protocols/WhatsAppWeb/src/pmsg.proto b/protocols/WhatsAppWeb/src/pmsg.proto
index 58c6f20c36..e874f35591 100644
--- a/protocols/WhatsAppWeb/src/pmsg.proto
+++ b/protocols/WhatsAppWeb/src/pmsg.proto
@@ -1,118 +1,293 @@
syntax = "proto2";
package proto;
-message PaymentMoney {
- optional int64 value = 1;
- optional uint32 offset = 2;
- optional string currencyCode = 3;
-}
-
-message HydratedQuickReplyButton {
- optional string displayText = 1;
- optional string id = 2;
+message ADVDeviceIdentity {
+ optional uint32 rawId = 1;
+ optional uint64 timestamp = 2;
+ optional uint32 keyIndex = 3;
}
-message HydratedURLButton {
- optional string displayText = 1;
- optional string url = 2;
+message ADVKeyIndexList {
+ optional uint32 rawId = 1;
+ optional uint64 timestamp = 2;
+ optional uint32 currentIndex = 3;
+ repeated uint32 validIndexes = 4 [packed=true];
}
-message HydratedCallButton {
- optional string displayText = 1;
- optional string phoneNumber = 2;
+message ADVSignedDeviceIdentity {
+ optional bytes details = 1;
+ optional bytes accountSignatureKey = 2;
+ optional bytes accountSignature = 3;
+ optional bytes deviceSignature = 4;
}
-message HydratedTemplateButton {
- optional uint32 index = 4;
- oneof hydratedButton {
- HydratedQuickReplyButton quickReplyButton = 1;
- HydratedURLButton urlButton = 2;
- HydratedCallButton callButton = 3;
- }
+message ADVSignedDeviceIdentityHMAC {
+ optional bytes details = 1;
+ optional bytes hmac = 2;
}
-message QuickReplyButton {
- optional HighlyStructuredMessage displayText = 1;
- optional string id = 2;
+message ADVSignedKeyIndexList {
+ optional bytes details = 1;
+ optional bytes accountSignature = 2;
}
-message URLButton {
- optional HighlyStructuredMessage displayText = 1;
- optional HighlyStructuredMessage url = 2;
+message ActionLink {
+ optional string url = 1;
+ optional string buttonTitle = 2;
}
-message CallButton {
- optional HighlyStructuredMessage displayText = 1;
- optional HighlyStructuredMessage phoneNumber = 2;
+message AutoDownloadSettings {
+ optional bool downloadImages = 1;
+ optional bool downloadAudio = 2;
+ optional bool downloadVideo = 3;
+ optional bool downloadDocuments = 4;
}
-message TemplateButton {
- optional uint32 index = 4;
- oneof button {
- QuickReplyButton quickReplyButton = 1;
- URLButton urlButton = 2;
- CallButton callButton = 3;
+message BizAccountLinkInfo {
+ optional uint64 whatsappBizAcctFbid = 1;
+ optional string whatsappAcctNumber = 2;
+ optional uint64 issueTime = 3;
+ optional HostStorageType hostStorage = 4;
+ optional AccountType accountType = 5;
+ enum AccountType {
+ ENTERPRISE = 0;
}
-}
-
-message Location {
- optional double degreesLatitude = 1;
- optional double degreesLongitude = 2;
- optional string name = 3;
-}
-
-message Point {
- optional int32 xDeprecated = 1;
- optional int32 yDeprecated = 2;
- optional double x = 3;
- optional double y = 4;
-}
-
-message InteractiveAnnotation {
- repeated Point polygonVertices = 1;
- oneof action {
- Location location = 2;
+ enum HostStorageType {
+ ON_PREMISE = 0;
+ FACEBOOK = 1;
}
}
-message DeviceListMetadata {
- optional bytes senderKeyHash = 1;
- optional uint64 senderTimestamp = 2;
- optional bytes recipientKeyHash = 8;
- optional uint64 recipientTimestamp = 9;
+message BizAccountPayload {
+ optional VerifiedNameCertificate vnameCert = 1;
+ optional bytes bizAcctLinkInfo = 2;
}
-message MessageContextInfo {
- optional DeviceListMetadata deviceListMetadata = 1;
-}
-
-message AdReplyInfo {
- optional string advertiserName = 1;
- enum AdReplyInfoMediaType {
- NONE = 0;
- IMAGE = 1;
- VIDEO = 2;
+message BizIdentityInfo {
+ optional VerifiedLevelValue vlevel = 1;
+ optional VerifiedNameCertificate vnameCert = 2;
+ optional bool signed = 3;
+ optional bool revoked = 4;
+ optional HostStorageType hostStorage = 5;
+ optional ActualActorsType actualActors = 6;
+ optional uint64 privacyModeTs = 7;
+ optional uint64 featureControls = 8;
+ enum ActualActorsType {
+ SELF = 0;
+ BSP = 1;
+ }
+ enum HostStorageType {
+ ON_PREMISE = 0;
+ FACEBOOK = 1;
+ }
+ enum VerifiedLevelValue {
+ UNKNOWN = 0;
+ LOW = 1;
+ HIGH = 2;
}
- optional AdReplyInfoMediaType mediaType = 2;
- optional bytes jpegThumbnail = 16;
- optional string caption = 17;
}
-message ExternalAdReplyInfo {
- optional string title = 1;
- optional string body = 2;
- enum ExternalAdReplyInfoMediaType {
- NONE = 0;
- IMAGE = 1;
- VIDEO = 2;
+message CertChain {
+ optional NoiseCertificate leaf = 1;
+ optional NoiseCertificate intermediate = 2;
+ message NoiseCertificate {
+ optional bytes details = 1;
+ optional bytes signature = 2;
+ message Details {
+ optional uint32 serial = 1;
+ optional uint32 issuerSerial = 2;
+ optional bytes key = 3;
+ optional uint64 notBefore = 4;
+ optional uint64 notAfter = 5;
+ }
+
+ }
+
+}
+
+message Chain {
+ optional bytes senderRatchetKey = 1;
+ optional bytes senderRatchetKeyPrivate = 2;
+ optional ChainKey chainKey = 3;
+ repeated MessageKey messageKeys = 4;
+}
+
+message ChainKey {
+ optional uint32 index = 1;
+ optional bytes key = 2;
+}
+
+message ClientPayload {
+ optional uint64 username = 1;
+ optional bool passive = 3;
+ optional UserAgent userAgent = 5;
+ optional WebInfo webInfo = 6;
+ optional string pushName = 7;
+ optional sfixed32 sessionId = 9;
+ optional bool shortConnect = 10;
+ optional ConnectType connectType = 12;
+ optional ConnectReason connectReason = 13;
+ repeated int32 shards = 14;
+ optional DNSSource dnsSource = 15;
+ optional uint32 connectAttemptCount = 16;
+ optional uint32 device = 18;
+ optional DevicePairingRegistrationData devicePairingData = 19;
+ optional Product product = 20;
+ optional bytes fbCat = 21;
+ optional bytes fbUserAgent = 22;
+ optional bool oc = 23;
+ optional int32 lc = 24;
+ optional IOSAppExtension iosAppExtension = 30;
+ optional uint64 fbAppId = 31;
+ optional bytes fbDeviceId = 32;
+ optional bool pull = 33;
+ optional bytes paddingBytes = 34;
+ enum ConnectReason {
+ PUSH = 0;
+ USER_ACTIVATED = 1;
+ SCHEDULED = 2;
+ ERROR_RECONNECT = 3;
+ NETWORK_SWITCH = 4;
+ PING_RECONNECT = 5;
+ }
+ enum ConnectType {
+ CELLULAR_UNKNOWN = 0;
+ WIFI_UNKNOWN = 1;
+ CELLULAR_EDGE = 100;
+ CELLULAR_IDEN = 101;
+ CELLULAR_UMTS = 102;
+ CELLULAR_EVDO = 103;
+ CELLULAR_GPRS = 104;
+ CELLULAR_HSDPA = 105;
+ CELLULAR_HSUPA = 106;
+ CELLULAR_HSPA = 107;
+ CELLULAR_CDMA = 108;
+ CELLULAR_1XRTT = 109;
+ CELLULAR_EHRPD = 110;
+ CELLULAR_LTE = 111;
+ CELLULAR_HSPAP = 112;
}
- optional ExternalAdReplyInfoMediaType mediaType = 3;
- optional string thumbnailUrl = 4;
- optional string mediaUrl = 5;
- optional bytes thumbnail = 6;
- optional string sourceType = 7;
- optional string sourceId = 8;
- optional string sourceUrl = 9;
+ message DNSSource {
+ optional DNSResolutionMethod dnsMethod = 15;
+ optional bool appCached = 16;
+ enum DNSResolutionMethod {
+ SYSTEM = 0;
+ GOOGLE = 1;
+ HARDCODED = 2;
+ OVERRIDE = 3;
+ FALLBACK = 4;
+ }
+ }
+
+ message DevicePairingRegistrationData {
+ optional bytes eRegid = 1;
+ optional bytes eKeytype = 2;
+ optional bytes eIdent = 3;
+ optional bytes eSkeyId = 4;
+ optional bytes eSkeyVal = 5;
+ optional bytes eSkeySig = 6;
+ optional bytes buildHash = 7;
+ optional bytes deviceProps = 8;
+ }
+
+ enum IOSAppExtension {
+ SHARE_EXTENSION = 0;
+ SERVICE_EXTENSION = 1;
+ INTENTS_EXTENSION = 2;
+ }
+ enum Product {
+ WHATSAPP = 0;
+ MESSENGER = 1;
+ }
+ message UserAgent {
+ optional Platform platform = 1;
+ optional AppVersion appVersion = 2;
+ optional string mcc = 3;
+ optional string mnc = 4;
+ optional string osVersion = 5;
+ optional string manufacturer = 6;
+ optional string device = 7;
+ optional string osBuildNumber = 8;
+ optional string phoneId = 9;
+ optional ReleaseChannel releaseChannel = 10;
+ optional string localeLanguageIso6391 = 11;
+ optional string localeCountryIso31661Alpha2 = 12;
+ optional string deviceBoard = 13;
+ message AppVersion {
+ optional uint32 primary = 1;
+ optional uint32 secondary = 2;
+ optional uint32 tertiary = 3;
+ optional uint32 quaternary = 4;
+ optional uint32 quinary = 5;
+ }
+
+ enum Platform {
+ ANDROID = 0;
+ IOS = 1;
+ WINDOWS_PHONE = 2;
+ BLACKBERRY = 3;
+ BLACKBERRYX = 4;
+ S40 = 5;
+ S60 = 6;
+ PYTHON_CLIENT = 7;
+ TIZEN = 8;
+ ENTERPRISE = 9;
+ SMB_ANDROID = 10;
+ KAIOS = 11;
+ SMB_IOS = 12;
+ WINDOWS = 13;
+ WEB = 14;
+ PORTAL = 15;
+ GREEN_ANDROID = 16;
+ GREEN_IPHONE = 17;
+ BLUE_ANDROID = 18;
+ BLUE_IPHONE = 19;
+ FBLITE_ANDROID = 20;
+ MLITE_ANDROID = 21;
+ IGLITE_ANDROID = 22;
+ PAGE = 23;
+ MACOS = 24;
+ OCULUS_MSG = 25;
+ OCULUS_CALL = 26;
+ MILAN = 27;
+ CAPI = 28;
+ }
+ enum ReleaseChannel {
+ RELEASE = 0;
+ BETA = 1;
+ ALPHA = 2;
+ DEBUG = 3;
+ }
+ }
+
+ message WebInfo {
+ optional string refToken = 1;
+ optional string version = 2;
+ optional WebdPayload webdPayload = 3;
+ optional WebSubPlatform webSubPlatform = 4;
+ enum WebSubPlatform {
+ WEB_BROWSER = 0;
+ APP_STORE = 1;
+ WIN_STORE = 2;
+ DARWIN = 3;
+ WINDA = 4;
+ }
+ message WebdPayload {
+ optional bool usesParticipantInKey = 1;
+ optional bool supportsStarredMessages = 2;
+ optional bool supportsDocumentMessages = 3;
+ optional bool supportsUrlMessages = 4;
+ optional bool supportsMediaRetry = 5;
+ optional bool supportsE2EImage = 6;
+ optional bool supportsE2EVideo = 7;
+ optional bool supportsE2EAudio = 8;
+ optional bool supportsE2EDocument = 9;
+ optional string documentTypes = 10;
+ optional bytes features = 11;
+ }
+
+ }
+
}
message ContextInfo {
@@ -132,586 +307,320 @@ message ContextInfo {
optional int64 ephemeralSettingTimestamp = 26;
optional bytes ephemeralSharedSecret = 27;
optional ExternalAdReplyInfo externalAdReply = 28;
+ optional string entryPointConversionSource = 29;
+ optional string entryPointConversionApp = 30;
+ optional uint32 entryPointConversionDelaySeconds = 31;
+ optional DisappearingMode disappearingMode = 32;
+ optional ActionLink actionLink = 33;
+ optional string groupSubject = 34;
+ optional string parentGroupJid = 35;
+ message AdReplyInfo {
+ optional string advertiserName = 1;
+ optional MediaType mediaType = 2;
+ optional bytes jpegThumbnail = 16;
+ optional string caption = 17;
+ enum MediaType {
+ NONE = 0;
+ IMAGE = 1;
+ VIDEO = 2;
+ }
+ }
+
+ message ExternalAdReplyInfo {
+ optional string title = 1;
+ optional string body = 2;
+ optional MediaType mediaType = 3;
+ optional string thumbnailUrl = 4;
+ optional string mediaUrl = 5;
+ optional bytes thumbnail = 6;
+ optional string sourceType = 7;
+ optional string sourceId = 8;
+ optional string sourceUrl = 9;
+ optional bool containsAutoReply = 10;
+ optional bool renderLargerThumbnail = 11;
+ optional bool showAdAttribution = 12;
+ enum MediaType {
+ NONE = 0;
+ IMAGE = 1;
+ VIDEO = 2;
+ }
+ }
+
+}
+
+message Conversation {
+ required string id = 1;
+ repeated HistorySyncMsg messages = 2;
+ optional string newJid = 3;
+ optional string oldJid = 4;
+ optional uint64 lastMsgTimestamp = 5;
+ optional uint32 unreadCount = 6;
+ optional bool readOnly = 7;
+ optional bool endOfHistoryTransfer = 8;
+ optional uint32 ephemeralExpiration = 9;
+ optional int64 ephemeralSettingTimestamp = 10;
+ optional EndOfHistoryTransferType endOfHistoryTransferType = 11;
+ optional uint64 conversationTimestamp = 12;
+ optional string name = 13;
+ optional string pHash = 14;
+ optional bool notSpam = 15;
+ optional bool archived = 16;
+ optional DisappearingMode disappearingMode = 17;
+ optional uint32 unreadMentionCount = 18;
+ optional bool markedAsUnread = 19;
+ repeated GroupParticipant participant = 20;
+ optional bytes tcToken = 21;
+ optional uint64 tcTokenTimestamp = 22;
+ optional bytes contactPrimaryIdentityKey = 23;
+ optional uint32 pinned = 24;
+ optional uint64 muteEndTime = 25;
+ optional WallpaperSettings wallpaper = 26;
+ optional MediaVisibility mediaVisibility = 27;
+ optional uint64 tcTokenSenderTimestamp = 28;
+ optional bool suspended = 29;
+ optional bool terminated = 30;
+ optional uint64 createdAt = 31;
+ optional string createdBy = 32;
+ optional string description = 33;
+ optional bool support = 34;
+ optional bool isParentGroup = 35;
+ optional bool isDefaultSubgroup = 36;
+ optional string parentGroupId = 37;
+ optional string displayName = 38;
+ optional string pnJid = 39;
+ optional bool selfPnExposed = 40;
+ enum EndOfHistoryTransferType {
+ COMPLETE_BUT_MORE_MESSAGES_REMAIN_ON_PRIMARY = 0;
+ COMPLETE_AND_NO_MORE_MESSAGE_REMAIN_ON_PRIMARY = 1;
+ }
}
-message SenderKeyDistributionMessage {
- optional string groupId = 1;
- optional bytes axolotlSenderKeyDistributionMessage = 2;
+message DeviceListMetadata {
+ optional bytes senderKeyHash = 1;
+ optional uint64 senderTimestamp = 2;
+ repeated uint32 senderKeyIndexes = 3 [packed=true];
+ optional bytes recipientKeyHash = 8;
+ optional uint64 recipientTimestamp = 9;
+ repeated uint32 recipientKeyIndexes = 10 [packed=true];
+}
+
+message DeviceProps {
+ optional string os = 1;
+ optional AppVersion version = 2;
+ optional PlatformType platformType = 3;
+ optional bool requireFullSync = 4;
+ message AppVersion {
+ optional uint32 primary = 1;
+ optional uint32 secondary = 2;
+ optional uint32 tertiary = 3;
+ optional uint32 quaternary = 4;
+ optional uint32 quinary = 5;
+ }
+
+ enum PlatformType {
+ UNKNOWN = 0;
+ CHROME = 1;
+ FIREFOX = 2;
+ IE = 3;
+ OPERA = 4;
+ SAFARI = 5;
+ EDGE = 6;
+ DESKTOP = 7;
+ IPAD = 8;
+ ANDROID_TABLET = 9;
+ OHANA = 10;
+ ALOHA = 11;
+ CATALINA = 12;
+ TCL_TV = 13;
+ }
}
-message ImageMessage {
- optional string url = 1;
- optional string mimetype = 2;
- optional string caption = 3;
- optional bytes fileSha256 = 4;
- optional uint64 fileLength = 5;
- optional uint32 height = 6;
- optional uint32 width = 7;
- optional bytes mediaKey = 8;
- optional bytes fileEncSha256 = 9;
- repeated InteractiveAnnotation interactiveAnnotations = 10;
- optional string directPath = 11;
- optional int64 mediaKeyTimestamp = 12;
- optional bytes jpegThumbnail = 16;
- optional ContextInfo contextInfo = 17;
- optional bytes firstScanSidecar = 18;
- optional uint32 firstScanLength = 19;
- optional uint32 experimentGroupId = 20;
- optional bytes scansSidecar = 21;
- repeated uint32 scanLengths = 22;
- optional bytes midQualityFileSha256 = 23;
- optional bytes midQualityFileEncSha256 = 24;
- optional bool viewOnce = 25;
- optional string thumbnailDirectPath = 26;
- optional bytes thumbnailSha256 = 27;
- optional bytes thumbnailEncSha256 = 28;
-}
-
-message InvoiceMessage {
- optional string note = 1;
- optional string token = 2;
- enum InvoiceMessageAttachmentType {
- IMAGE = 0;
- PDF = 1;
- }
- optional InvoiceMessageAttachmentType attachmentType = 3;
- optional string attachmentMimetype = 4;
- optional bytes attachmentMediaKey = 5;
- optional int64 attachmentMediaKeyTimestamp = 6;
- optional bytes attachmentFileSha256 = 7;
- optional bytes attachmentFileEncSha256 = 8;
- optional string attachmentDirectPath = 9;
- optional bytes attachmentJpegThumbnail = 10;
-}
-
-message ContactMessage {
- optional string displayName = 1;
- optional string vcard = 16;
- optional ContextInfo contextInfo = 17;
-}
-
-message LocationMessage {
- optional double degreesLatitude = 1;
- optional double degreesLongitude = 2;
- optional string name = 3;
- optional string address = 4;
- optional string url = 5;
- optional bool isLive = 6;
- optional uint32 accuracyInMeters = 7;
- optional float speedInMps = 8;
- optional uint32 degreesClockwiseFromMagneticNorth = 9;
- optional string comment = 11;
- optional bytes jpegThumbnail = 16;
- optional ContextInfo contextInfo = 17;
-}
-
-message ExtendedTextMessage {
- optional string text = 1;
- optional string matchedText = 2;
- optional string canonicalUrl = 4;
- optional string description = 5;
- optional string title = 6;
- optional fixed32 textArgb = 7;
- optional fixed32 backgroundArgb = 8;
- enum ExtendedTextMessageFontType {
- SANS_SERIF = 0;
- SERIF = 1;
- NORICAN_REGULAR = 2;
- BRYNDAN_WRITE = 3;
- BEBASNEUE_REGULAR = 4;
- OSWALD_HEAVY = 5;
- }
- optional ExtendedTextMessageFontType font = 9;
- enum ExtendedTextMessagePreviewType {
- NONE = 0;
- VIDEO = 1;
- }
- optional ExtendedTextMessagePreviewType previewType = 10;
- optional bytes jpegThumbnail = 16;
- optional ContextInfo contextInfo = 17;
- optional bool doNotPlayInline = 18;
-}
-
-message DocumentMessage {
- optional string url = 1;
- optional string mimetype = 2;
- optional string title = 3;
- optional bytes fileSha256 = 4;
- optional uint64 fileLength = 5;
- optional uint32 pageCount = 6;
- optional bytes mediaKey = 7;
- optional string fileName = 8;
- optional bytes fileEncSha256 = 9;
- optional string directPath = 10;
- optional int64 mediaKeyTimestamp = 11;
- optional bool contactVcard = 12;
- optional string thumbnailDirectPath = 13;
- optional bytes thumbnailSha256 = 14;
- optional bytes thumbnailEncSha256 = 15;
- optional bytes jpegThumbnail = 16;
- optional ContextInfo contextInfo = 17;
- optional uint32 thumbnailHeight = 18;
- optional uint32 thumbnailWidth = 19;
-}
-
-message AudioMessage {
- optional string url = 1;
- optional string mimetype = 2;
- optional bytes fileSha256 = 3;
- optional uint64 fileLength = 4;
- optional uint32 seconds = 5;
- optional bool ptt = 6;
- optional bytes mediaKey = 7;
- optional bytes fileEncSha256 = 8;
- optional string directPath = 9;
- optional int64 mediaKeyTimestamp = 10;
- optional ContextInfo contextInfo = 17;
- optional bytes streamingSidecar = 18;
-}
-
-message VideoMessage {
- optional string url = 1;
- optional string mimetype = 2;
- optional bytes fileSha256 = 3;
- optional uint64 fileLength = 4;
- optional uint32 seconds = 5;
- optional bytes mediaKey = 6;
- optional string caption = 7;
- optional bool gifPlayback = 8;
- optional uint32 height = 9;
- optional uint32 width = 10;
- optional bytes fileEncSha256 = 11;
- repeated InteractiveAnnotation interactiveAnnotations = 12;
- optional string directPath = 13;
- optional int64 mediaKeyTimestamp = 14;
- optional bytes jpegThumbnail = 16;
- optional ContextInfo contextInfo = 17;
- optional bytes streamingSidecar = 18;
- enum VideoMessageAttribution {
- NONE = 0;
- GIPHY = 1;
- TENOR = 2;
- }
- optional VideoMessageAttribution gifAttribution = 19;
- optional bool viewOnce = 20;
- optional string thumbnailDirectPath = 21;
- optional bytes thumbnailSha256 = 22;
- optional bytes thumbnailEncSha256 = 23;
-}
-
-message Call {
- optional bytes callKey = 1;
-}
-
-message Chat {
- optional string displayName = 1;
- optional string id = 2;
-}
-
-message ProtocolMessage {
- optional MessageKey key = 1;
- enum ProtocolMessageType {
- REVOKE = 0;
- EPHEMERAL_SETTING = 3;
- EPHEMERAL_SYNC_RESPONSE = 4;
- HISTORY_SYNC_NOTIFICATION = 5;
- APP_STATE_SYNC_KEY_SHARE = 6;
- APP_STATE_SYNC_KEY_REQUEST = 7;
- MSG_FANOUT_BACKFILL_REQUEST = 8;
- INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC = 9;
- APP_STATE_FATAL_EXCEPTION_NOTIFICATION = 10;
- }
- optional ProtocolMessageType type = 2;
- optional uint32 ephemeralExpiration = 4;
- optional int64 ephemeralSettingTimestamp = 5;
- optional HistorySyncNotification historySyncNotification = 6;
- optional AppStateSyncKeyShare appStateSyncKeyShare = 7;
- optional AppStateSyncKeyRequest appStateSyncKeyRequest = 8;
- optional InitialSecurityNotificationSettingSync initialSecurityNotificationSettingSync = 9;
- optional AppStateFatalExceptionNotification appStateFatalExceptionNotification = 10;
-}
-
-message HistorySyncNotification {
- optional bytes fileSha256 = 1;
- optional uint64 fileLength = 2;
- optional bytes mediaKey = 3;
- optional bytes fileEncSha256 = 4;
- optional string directPath = 5;
- enum HistorySyncNotificationHistorySyncType {
+message DisappearingMode {
+ optional Initiator initiator = 1;
+ enum Initiator {
+ CHANGED_IN_CHAT = 0;
+ INITIATED_BY_ME = 1;
+ INITIATED_BY_OTHER = 2;
+ }
+}
+
+message EphemeralSetting {
+ optional sfixed32 duration = 1;
+ optional sfixed64 timestamp = 2;
+}
+
+message ExitCode {
+ optional uint64 code = 1;
+ optional string text = 2;
+}
+
+message ExternalBlobReference {
+ optional bytes mediaKey = 1;
+ optional string directPath = 2;
+ optional string handle = 3;
+ optional uint64 fileSizeBytes = 4;
+ optional bytes fileSha256 = 5;
+ optional bytes fileEncSha256 = 6;
+}
+
+message GlobalSettings {
+ optional WallpaperSettings lightThemeWallpaper = 1;
+ optional MediaVisibility mediaVisibility = 2;
+ optional WallpaperSettings darkThemeWallpaper = 3;
+ optional AutoDownloadSettings autoDownloadWiFi = 4;
+ optional AutoDownloadSettings autoDownloadCellular = 5;
+ optional AutoDownloadSettings autoDownloadRoaming = 6;
+ optional bool showIndividualNotificationsPreview = 7;
+ optional bool showGroupNotificationsPreview = 8;
+ optional int32 disappearingModeDuration = 9;
+ optional int64 disappearingModeTimestamp = 10;
+}
+
+message GroupParticipant {
+ required string userJid = 1;
+ optional Rank rank = 2;
+ enum Rank {
+ REGULAR = 0;
+ ADMIN = 1;
+ SUPERADMIN = 2;
+ }
+}
+
+message HandshakeMessage {
+ optional ClientHello clientHello = 2;
+ optional ServerHello serverHello = 3;
+ optional ClientFinish clientFinish = 4;
+ message ClientFinish {
+ optional bytes static = 1;
+ optional bytes payload = 2;
+ }
+
+ message ClientHello {
+ optional bytes ephemeral = 1;
+ optional bytes static = 2;
+ optional bytes payload = 3;
+ }
+
+ message ServerHello {
+ optional bytes ephemeral = 1;
+ optional bytes static = 2;
+ optional bytes payload = 3;
+ }
+
+}
+
+message HistorySync {
+ required HistorySyncType syncType = 1;
+ repeated Conversation conversations = 2;
+ repeated WebMessageInfo statusV3Messages = 3;
+ optional uint32 chunkOrder = 5;
+ optional uint32 progress = 6;
+ repeated Pushname pushnames = 7;
+ optional GlobalSettings globalSettings = 8;
+ optional bytes threadIdUserSecret = 9;
+ optional uint32 threadDsTimeframeOffset = 10;
+ repeated StickerMetadata recentStickers = 11;
+ repeated PastParticipants pastParticipants = 12;
+ enum HistorySyncType {
INITIAL_BOOTSTRAP = 0;
INITIAL_STATUS_V3 = 1;
FULL = 2;
RECENT = 3;
PUSH_NAME = 4;
+ UNBLOCKING_DATA = 5;
}
- optional HistorySyncNotificationHistorySyncType syncType = 6;
- optional uint32 chunkOrder = 7;
- optional string originalMessageId = 8;
-}
-
-message AppStateSyncKey {
- optional AppStateSyncKeyId keyId = 1;
- optional AppStateSyncKeyData keyData = 2;
}
-message AppStateSyncKeyId {
- optional bytes keyId = 1;
+message HistorySyncMsg {
+ optional WebMessageInfo message = 1;
+ optional uint64 msgOrderId = 2;
}
-message AppStateSyncKeyFingerprint {
- optional uint32 rawId = 1;
- optional uint32 currentIndex = 2;
- repeated uint32 deviceIndexes = 3 [packed=true];
-}
-
-message AppStateSyncKeyData {
- optional bytes keyData = 1;
- optional AppStateSyncKeyFingerprint fingerprint = 2;
- optional int64 timestamp = 3;
-}
-
-message AppStateSyncKeyShare {
- repeated AppStateSyncKey keys = 1;
-}
-
-message AppStateSyncKeyRequest {
- repeated AppStateSyncKeyId keyIds = 1;
-}
-
-message AppStateFatalExceptionNotification {
- repeated string collectionNames = 1;
- optional int64 timestamp = 2;
-}
-
-message InitialSecurityNotificationSettingSync {
- optional bool securityNotificationEnabled = 1;
-}
-
-message ContactsArrayMessage {
- optional string displayName = 1;
- repeated ContactMessage contacts = 2;
- optional ContextInfo contextInfo = 17;
-}
-
-message HSMCurrency {
- optional string currencyCode = 1;
- optional int64 amount1000 = 2;
-}
-
-message HSMDateTimeComponent {
- enum HSMDateTimeComponentDayOfWeekType {
- MONDAY = 1;
- TUESDAY = 2;
- WEDNESDAY = 3;
- THURSDAY = 4;
- FRIDAY = 5;
- SATURDAY = 6;
- SUNDAY = 7;
+message HydratedTemplateButton {
+ optional uint32 index = 4;
+ oneof hydratedButton {
+ HydratedTemplateButton.HydratedQuickReplyButton quickReplyButton = 1;
+ HydratedTemplateButton.HydratedURLButton urlButton = 2;
+ HydratedTemplateButton.HydratedCallButton callButton = 3;
}
- optional HSMDateTimeComponentDayOfWeekType dayOfWeek = 1;
- optional uint32 year = 2;
- optional uint32 month = 3;
- optional uint32 dayOfMonth = 4;
- optional uint32 hour = 5;
- optional uint32 minute = 6;
- enum HSMDateTimeComponentCalendarType {
- GREGORIAN = 1;
- SOLAR_HIJRI = 2;
+ message HydratedCallButton {
+ optional string displayText = 1;
+ optional string phoneNumber = 2;
}
- optional HSMDateTimeComponentCalendarType calendar = 7;
-}
-
-message HSMDateTimeUnixEpoch {
- optional int64 timestamp = 1;
-}
-
-message HSMDateTime {
- oneof datetimeOneof {
- HSMDateTimeComponent component = 1;
- HSMDateTimeUnixEpoch unixEpoch = 2;
+
+ message HydratedQuickReplyButton {
+ optional string displayText = 1;
+ optional string id = 2;
}
-}
-
-message HSMLocalizableParameter {
- optional string default = 1;
- oneof paramOneof {
- HSMCurrency currency = 2;
- HSMDateTime dateTime = 3;
+
+ message HydratedURLButton {
+ optional string displayText = 1;
+ optional string url = 2;
}
+
}
-message HighlyStructuredMessage {
- optional string namespace = 1;
- optional string elementName = 2;
- repeated string params = 3;
- optional string fallbackLg = 4;
- optional string fallbackLc = 5;
- repeated HSMLocalizableParameter localizableParams = 6;
- optional string deterministicLg = 7;
- optional string deterministicLc = 8;
- optional TemplateMessage hydratedHsm = 9;
-}
-
-message SendPaymentMessage {
- optional Message noteMessage = 2;
- optional MessageKey requestMessageKey = 3;
-}
-
-message RequestPaymentMessage {
- optional Message noteMessage = 4;
- optional string currencyCodeIso4217 = 1;
- optional uint64 amount1000 = 2;
- optional string requestFrom = 3;
- optional int64 expiryTimestamp = 5;
- optional PaymentMoney amount = 6;
-}
-
-message DeclinePaymentRequestMessage {
- optional MessageKey key = 1;
-}
-
-message CancelPaymentRequestMessage {
- optional MessageKey key = 1;
-}
-
-message LiveLocationMessage {
- optional double degreesLatitude = 1;
- optional double degreesLongitude = 2;
- optional uint32 accuracyInMeters = 3;
- optional float speedInMps = 4;
- optional uint32 degreesClockwiseFromMagneticNorth = 5;
- optional string caption = 6;
- optional int64 sequenceNumber = 7;
- optional uint32 timeOffset = 8;
- optional bytes jpegThumbnail = 16;
- optional ContextInfo contextInfo = 17;
-}
-
-message StickerMessage {
- optional string url = 1;
- optional bytes fileSha256 = 2;
- optional bytes fileEncSha256 = 3;
- optional bytes mediaKey = 4;
- optional string mimetype = 5;
- optional uint32 height = 6;
- optional uint32 width = 7;
- optional string directPath = 8;
- optional uint64 fileLength = 9;
- optional int64 mediaKeyTimestamp = 10;
- optional uint32 firstFrameLength = 11;
- optional bytes firstFrameSidecar = 12;
- optional bool isAnimated = 13;
- optional bytes pngThumbnail = 16;
- optional ContextInfo contextInfo = 17;
-}
-
-message FourRowTemplate {
- optional HighlyStructuredMessage content = 6;
- optional HighlyStructuredMessage footer = 7;
- repeated TemplateButton buttons = 8;
- oneof title {
- DocumentMessage documentMessage = 1;
- HighlyStructuredMessage highlyStructuredMessage = 2;
- ImageMessage imageMessage = 3;
- VideoMessage videoMessage = 4;
- LocationMessage locationMessage = 5;
- }
-}
-
-message HydratedFourRowTemplate {
- optional string hydratedContentText = 6;
- optional string hydratedFooterText = 7;
- repeated HydratedTemplateButton hydratedButtons = 8;
- optional string templateId = 9;
- oneof title {
- DocumentMessage documentMessage = 1;
- string hydratedTitleText = 2;
- ImageMessage imageMessage = 3;
- VideoMessage videoMessage = 4;
- LocationMessage locationMessage = 5;
- }
-}
-
-message TemplateMessage {
- optional ContextInfo contextInfo = 3;
- optional HydratedFourRowTemplate hydratedTemplate = 4;
- oneof format {
- FourRowTemplate fourRowTemplate = 1;
- HydratedFourRowTemplate hydratedFourRowTemplate = 2;
- }
-}
-
-message TemplateButtonReplyMessage {
- optional string selectedId = 1;
- optional string selectedDisplayText = 2;
- optional ContextInfo contextInfo = 3;
- optional uint32 selectedIndex = 4;
-}
-
-message CatalogSnapshot {
- optional ImageMessage catalogImage = 1;
- optional string title = 2;
- optional string description = 3;
-}
-
-message ProductSnapshot {
- optional ImageMessage productImage = 1;
- optional string productId = 2;
- optional string title = 3;
- optional string description = 4;
- optional string currencyCode = 5;
- optional int64 priceAmount1000 = 6;
- optional string retailerId = 7;
- optional string url = 8;
- optional uint32 productImageCount = 9;
- optional string firstImageId = 11;
-}
-
-message ProductMessage {
- optional ProductSnapshot product = 1;
- optional string businessOwnerJid = 2;
- optional CatalogSnapshot catalog = 4;
- optional ContextInfo contextInfo = 17;
-}
-
-message OrderMessage {
- optional string orderId = 1;
- optional bytes thumbnail = 2;
- optional int32 itemCount = 3;
- enum OrderMessageOrderStatus {
- INQUIRY = 1;
- }
- optional OrderMessageOrderStatus status = 4;
- enum OrderMessageOrderSurface {
- CATALOG = 1;
- }
- optional OrderMessageOrderSurface surface = 5;
- optional string message = 6;
- optional string orderTitle = 7;
- optional string sellerJid = 8;
- optional string token = 9;
- optional int64 totalAmount1000 = 10;
- optional string totalCurrencyCode = 11;
- optional ContextInfo contextInfo = 17;
-}
-
-message Row {
- optional string title = 1;
- optional string description = 2;
- optional string rowId = 3;
+message IdentityKeyPairStructure {
+ optional bytes publicKey = 1;
+ optional bytes privateKey = 2;
}
-message Section {
- optional string title = 1;
- repeated Row rows = 2;
-}
-
-message ListMessage {
- optional string title = 1;
- optional string description = 2;
- optional string buttonText = 3;
- enum ListMessageListType {
- UNKNOWN = 0;
- SINGLE_SELECT = 1;
+message InteractiveAnnotation {
+ repeated Point polygonVertices = 1;
+ oneof action {
+ Location location = 2;
}
- optional ListMessageListType listType = 4;
- repeated Section sections = 5;
}
-message SingleSelectReply {
- optional string selectedRowId = 1;
+message KeepInChat {
+ optional KeepType keepType = 1;
+ optional int64 serverTimestamp = 2;
+ optional MessageKey key = 3;
+ optional string deviceJid = 4;
}
-message ListResponseMessage {
- optional string title = 1;
- enum ListResponseMessageListType {
- UNKNOWN = 0;
- SINGLE_SELECT = 1;
- }
- optional ListResponseMessageListType listType = 2;
- optional SingleSelectReply singleSelectReply = 3;
- optional ContextInfo contextInfo = 4;
- optional string description = 5;
+enum KeepType {
+ UNKNOWN = 0;
+ KEEP_FOR_ALL = 1;
+ UNDO_KEEP_FOR_ALL = 2;
}
-
-message GroupInviteMessage {
- optional string groupJid = 1;
- optional string inviteCode = 2;
- optional int64 inviteExpiration = 3;
- optional string groupName = 4;
- optional bytes jpegThumbnail = 5;
- optional string caption = 6;
- optional ContextInfo contextInfo = 7;
+message KeyId {
+ optional bytes id = 1;
}
-message EphemeralSetting {
- optional string chatJid = 1;
- optional uint32 ephemeralExpiration = 2;
- optional int64 ephemeralSettingTimestamp = 3;
+message LocalizedName {
+ optional string lg = 1;
+ optional string lc = 2;
+ optional string verifiedName = 3;
}
-message DeviceSentMessage {
- optional string destinationJid = 1;
- optional Message message = 2;
- optional string phash = 3;
- repeated EphemeralSetting broadcastEphemeralSettings = 4;
-}
-
-message FutureProofMessage {
- optional Message message = 1;
+message Location {
+ optional double degreesLatitude = 1;
+ optional double degreesLongitude = 2;
+ optional string name = 3;
}
-message ButtonText {
- optional string displayText = 1;
+message MediaData {
+ optional string localPath = 1;
}
-message Button {
- optional string buttonId = 1;
- optional ButtonText buttonText = 2;
- enum ButtonType {
- UNKNOWN = 0;
- RESPONSE = 1;
+message MediaRetryNotification {
+ optional string stanzaId = 1;
+ optional string directPath = 2;
+ optional ResultType result = 3;
+ enum ResultType {
+ GENERAL_ERROR = 0;
+ SUCCESS = 1;
+ NOT_FOUND = 2;
+ DECRYPTION_ERROR = 3;
}
- optional ButtonType type = 3;
}
-message ButtonsMessage {
- optional string contentText = 6;
- optional string footerText = 7;
- optional ContextInfo contextInfo = 8;
- repeated Button buttons = 9;
- enum ButtonsMessageHeaderType {
- UNKNOWN = 0;
- EMPTY = 1;
- TEXT = 2;
- DOCUMENT = 3;
- IMAGE = 4;
- VIDEO = 5;
- LOCATION = 6;
- }
- optional ButtonsMessageHeaderType headerType = 10;
- oneof header {
- string text = 1;
- DocumentMessage documentMessage = 2;
- ImageMessage imageMessage = 3;
- VideoMessage videoMessage = 4;
- LocationMessage locationMessage = 5;
- }
-}
-
-message ButtonsResponseMessage {
- optional string selectedButtonId = 1;
- optional ContextInfo contextInfo = 3;
- enum ButtonsResponseMessageType {
- UNKNOWN = 0;
- DISPLAY_TEXT = 1;
- }
- optional ButtonsResponseMessageType type = 4;
- oneof response {
- string selectedDisplayText = 2;
- }
+enum MediaVisibility {
+ DEFAULT = 0;
+ OFF = 1;
+ ON = 2;
}
-
message Message {
optional string conversation = 1;
optional SenderKeyDistributionMessage senderKeyDistributionMessage = 2;
@@ -748,6 +657,832 @@ message Message {
optional InvoiceMessage invoiceMessage = 41;
optional ButtonsMessage buttonsMessage = 42;
optional ButtonsResponseMessage buttonsResponseMessage = 43;
+ optional PaymentInviteMessage paymentInviteMessage = 44;
+ optional InteractiveMessage interactiveMessage = 45;
+ optional ReactionMessage reactionMessage = 46;
+ optional StickerSyncRMRMessage stickerSyncRmrMessage = 47;
+ optional InteractiveResponseMessage interactiveResponseMessage = 48;
+ optional PollCreationMessage pollCreationMessage = 49;
+ optional PollUpdateMessage pollUpdateMessage = 50;
+ optional KeepInChatMessage keepInChatMessage = 51;
+ optional FutureProofMessage documentWithCaptionMessage = 53;
+ optional RequestPhoneNumberMessage requestPhoneNumberMessage = 54;
+ optional FutureProofMessage viewOnceMessageV2 = 55;
+ message AppStateFatalExceptionNotification {
+ repeated string collectionNames = 1;
+ optional int64 timestamp = 2;
+ }
+
+ message AppStateSyncKeyData {
+ optional bytes keyData = 1;
+ optional Message.AppStateSyncKeyFingerprint fingerprint = 2;
+ optional int64 timestamp = 3;
+ }
+
+ message AppStateSyncKeyFingerprint {
+ optional uint32 rawId = 1;
+ optional uint32 currentIndex = 2;
+ repeated uint32 deviceIndexes = 3 [packed=true];
+ }
+
+ message AppStateSyncKeyId {
+ optional bytes keyId = 1;
+ }
+
+ message AppStateSyncKeyRequest {
+ repeated Message.AppStateSyncKeyId keyIds = 1;
+ }
+
+ message AppStateSyncKeyShare {
+ repeated Message.AppStateSyncKey keys = 1;
+ }
+
+ message AppStateSyncKey {
+ optional Message.AppStateSyncKeyId keyId = 1;
+ optional Message.AppStateSyncKeyData keyData = 2;
+ }
+
+ message AudioMessage {
+ optional string url = 1;
+ optional string mimetype = 2;
+ optional bytes fileSha256 = 3;
+ optional uint64 fileLength = 4;
+ optional uint32 seconds = 5;
+ optional bool ptt = 6;
+ optional bytes mediaKey = 7;
+ optional bytes fileEncSha256 = 8;
+ optional string directPath = 9;
+ optional int64 mediaKeyTimestamp = 10;
+ optional ContextInfo contextInfo = 17;
+ optional bytes streamingSidecar = 18;
+ optional bytes waveform = 19;
+ }
+
+ message ButtonsMessage {
+ optional string contentText = 6;
+ optional string footerText = 7;
+ optional ContextInfo contextInfo = 8;
+ repeated Button buttons = 9;
+ optional HeaderType headerType = 10;
+ oneof header {
+ string text = 1;
+ Message.DocumentMessage documentMessage = 2;
+ Message.ImageMessage imageMessage = 3;
+ Message.VideoMessage videoMessage = 4;
+ Message.LocationMessage locationMessage = 5;
+ }
+ message Button {
+ optional string buttonId = 1;
+ optional ButtonText buttonText = 2;
+ optional Type type = 3;
+ optional NativeFlowInfo nativeFlowInfo = 4;
+ message ButtonText {
+ optional string displayText = 1;
+ }
+
+ message NativeFlowInfo {
+ optional string name = 1;
+ optional string paramsJson = 2;
+ }
+
+ enum Type {
+ UNKNOWN = 0;
+ RESPONSE = 1;
+ NATIVE_FLOW = 2;
+ }
+ }
+
+ enum HeaderType {
+ UNKNOWN = 0;
+ EMPTY = 1;
+ TEXT = 2;
+ DOCUMENT = 3;
+ IMAGE = 4;
+ VIDEO = 5;
+ LOCATION = 6;
+ }
+ }
+
+ message ButtonsResponseMessage {
+ optional string selectedButtonId = 1;
+ optional ContextInfo contextInfo = 3;
+ optional Type type = 4;
+ oneof response {
+ string selectedDisplayText = 2;
+ }
+ enum Type {
+ UNKNOWN = 0;
+ DISPLAY_TEXT = 1;
+ }
+ }
+
+ message Call {
+ optional bytes callKey = 1;
+ optional string conversionSource = 2;
+ optional bytes conversionData = 3;
+ optional uint32 conversionDelaySeconds = 4;
+ }
+
+ message CancelPaymentRequestMessage {
+ optional MessageKey key = 1;
+ }
+
+ message Chat {
+ optional string displayName = 1;
+ optional string id = 2;
+ }
+
+ message ContactMessage {
+ optional string displayName = 1;
+ optional string vcard = 16;
+ optional ContextInfo contextInfo = 17;
+ }
+
+ message ContactsArrayMessage {
+ optional string displayName = 1;
+ repeated Message.ContactMessage contacts = 2;
+ optional ContextInfo contextInfo = 17;
+ }
+
+ message DeclinePaymentRequestMessage {
+ optional MessageKey key = 1;
+ }
+
+ message DeviceSentMessage {
+ optional string destinationJid = 1;
+ optional Message message = 2;
+ optional string phash = 3;
+ }
+
+ message DocumentMessage {
+ optional string url = 1;
+ optional string mimetype = 2;
+ optional string title = 3;
+ optional bytes fileSha256 = 4;
+ optional uint64 fileLength = 5;
+ optional uint32 pageCount = 6;
+ optional bytes mediaKey = 7;
+ optional string fileName = 8;
+ optional bytes fileEncSha256 = 9;
+ optional string directPath = 10;
+ optional int64 mediaKeyTimestamp = 11;
+ optional bool contactVcard = 12;
+ optional string thumbnailDirectPath = 13;
+ optional bytes thumbnailSha256 = 14;
+ optional bytes thumbnailEncSha256 = 15;
+ optional bytes jpegThumbnail = 16;
+ optional ContextInfo contextInfo = 17;
+ optional uint32 thumbnailHeight = 18;
+ optional uint32 thumbnailWidth = 19;
+ optional string caption = 20;
+ }
+
+ message ExtendedTextMessage {
+ optional string text = 1;
+ optional string matchedText = 2;
+ optional string canonicalUrl = 4;
+ optional string description = 5;
+ optional string title = 6;
+ optional fixed32 textArgb = 7;
+ optional fixed32 backgroundArgb = 8;
+ optional FontType font = 9;
+ optional PreviewType previewType = 10;
+ optional bytes jpegThumbnail = 16;
+ optional ContextInfo contextInfo = 17;
+ optional bool doNotPlayInline = 18;
+ optional string thumbnailDirectPath = 19;
+ optional bytes thumbnailSha256 = 20;
+ optional bytes thumbnailEncSha256 = 21;
+ optional bytes mediaKey = 22;
+ optional int64 mediaKeyTimestamp = 23;
+ optional uint32 thumbnailHeight = 24;
+ optional uint32 thumbnailWidth = 25;
+ optional InviteLinkGroupType inviteLinkGroupType = 26;
+ optional string inviteLinkParentGroupSubjectV2 = 27;
+ optional bytes inviteLinkParentGroupThumbnailV2 = 28;
+ optional InviteLinkGroupType inviteLinkGroupTypeV2 = 29;
+ enum FontType {
+ SANS_SERIF = 0;
+ SERIF = 1;
+ NORICAN_REGULAR = 2;
+ BRYNDAN_WRITE = 3;
+ BEBASNEUE_REGULAR = 4;
+ OSWALD_HEAVY = 5;
+ }
+ enum InviteLinkGroupType {
+ DEFAULT = 0;
+ PARENT = 1;
+ SUB = 2;
+ DEFAULT_SUB = 3;
+ }
+ enum PreviewType {
+ NONE = 0;
+ VIDEO = 1;
+ }
+ }
+
+ message FutureProofMessage {
+ optional Message message = 1;
+ }
+
+ message GroupInviteMessage {
+ optional string groupJid = 1;
+ optional string inviteCode = 2;
+ optional int64 inviteExpiration = 3;
+ optional string groupName = 4;
+ optional bytes jpegThumbnail = 5;
+ optional string caption = 6;
+ optional ContextInfo contextInfo = 7;
+ optional GroupType groupType = 8;
+ enum GroupType {
+ DEFAULT = 0;
+ PARENT = 1;
+ }
+ }
+
+ message HighlyStructuredMessage {
+ optional string namespace = 1;
+ optional string elementName = 2;
+ repeated string params = 3;
+ optional string fallbackLg = 4;
+ optional string fallbackLc = 5;
+ repeated HSMLocalizableParameter localizableParams = 6;
+ optional string deterministicLg = 7;
+ optional string deterministicLc = 8;
+ optional Message.TemplateMessage hydratedHsm = 9;
+ message HSMLocalizableParameter {
+ optional string default = 1;
+ oneof paramOneof {
+ Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMCurrency currency = 2;
+ Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime dateTime = 3;
+ }
+ message HSMCurrency {
+ optional string currencyCode = 1;
+ optional int64 amount1000 = 2;
+ }
+
+ message HSMDateTime {
+ oneof datetimeOneof {
+ Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeComponent component = 1;
+ Message.HighlyStructuredMessage.HSMLocalizableParameter.HSMDateTime.HSMDateTimeUnixEpoch unixEpoch = 2;
+ }
+ message HSMDateTimeComponent {
+ optional DayOfWeekType dayOfWeek = 1;
+ optional uint32 year = 2;
+ optional uint32 month = 3;
+ optional uint32 dayOfMonth = 4;
+ optional uint32 hour = 5;
+ optional uint32 minute = 6;
+ optional CalendarType calendar = 7;
+ enum CalendarType {
+ GREGORIAN = 1;
+ SOLAR_HIJRI = 2;
+ }
+ enum DayOfWeekType {
+ MONDAY = 1;
+ TUESDAY = 2;
+ WEDNESDAY = 3;
+ THURSDAY = 4;
+ FRIDAY = 5;
+ SATURDAY = 6;
+ SUNDAY = 7;
+ }
+ }
+
+ message HSMDateTimeUnixEpoch {
+ optional int64 timestamp = 1;
+ }
+
+ }
+
+ }
+
+ }
+
+ message HistorySyncNotification {
+ optional bytes fileSha256 = 1;
+ optional uint64 fileLength = 2;
+ optional bytes mediaKey = 3;
+ optional bytes fileEncSha256 = 4;
+ optional string directPath = 5;
+ optional HistorySyncType syncType = 6;
+ optional uint32 chunkOrder = 7;
+ optional string originalMessageId = 8;
+ optional uint32 progress = 9;
+ enum HistorySyncType {
+ INITIAL_BOOTSTRAP = 0;
+ INITIAL_STATUS_V3 = 1;
+ FULL = 2;
+ RECENT = 3;
+ PUSH_NAME = 4;
+ }
+ }
+
+ message ImageMessage {
+ optional string url = 1;
+ optional string mimetype = 2;
+ optional string caption = 3;
+ optional bytes fileSha256 = 4;
+ optional uint64 fileLength = 5;
+ optional uint32 height = 6;
+ optional uint32 width = 7;
+ optional bytes mediaKey = 8;
+ optional bytes fileEncSha256 = 9;
+ repeated InteractiveAnnotation interactiveAnnotations = 10;
+ optional string directPath = 11;
+ optional int64 mediaKeyTimestamp = 12;
+ optional bytes jpegThumbnail = 16;
+ optional ContextInfo contextInfo = 17;
+ optional bytes firstScanSidecar = 18;
+ optional uint32 firstScanLength = 19;
+ optional uint32 experimentGroupId = 20;
+ optional bytes scansSidecar = 21;
+ repeated uint32 scanLengths = 22;
+ optional bytes midQualityFileSha256 = 23;
+ optional bytes midQualityFileEncSha256 = 24;
+ optional bool viewOnce = 25;
+ optional string thumbnailDirectPath = 26;
+ optional bytes thumbnailSha256 = 27;
+ optional bytes thumbnailEncSha256 = 28;
+ optional string staticUrl = 29;
+ }
+
+ message InitialSecurityNotificationSettingSync {
+ optional bool securityNotificationEnabled = 1;
+ }
+
+ message InteractiveMessage {
+ optional Header header = 1;
+ optional Body body = 2;
+ optional Footer footer = 3;
+ optional ContextInfo contextInfo = 15;
+ oneof interactiveMessage {
+ Message.InteractiveMessage.ShopMessage shopStorefrontMessage = 4;
+ Message.InteractiveMessage.CollectionMessage collectionMessage = 5;
+ Message.InteractiveMessage.NativeFlowMessage nativeFlowMessage = 6;
+ }
+ message Body {
+ optional string text = 1;
+ }
+
+ message CollectionMessage {
+ optional string bizJid = 1;
+ optional string id = 2;
+ optional int32 messageVersion = 3;
+ }
+
+ message Footer {
+ optional string text = 1;
+ }
+
+ message Header {
+ optional string title = 1;
+ optional string subtitle = 2;
+ optional bool hasMediaAttachment = 5;
+ oneof media {
+ Message.DocumentMessage documentMessage = 3;
+ Message.ImageMessage imageMessage = 4;
+ bytes jpegThumbnail = 6;
+ Message.VideoMessage videoMessage = 7;
+ }
+ }
+
+ message NativeFlowMessage {
+ repeated NativeFlowButton buttons = 1;
+ optional string messageParamsJson = 2;
+ optional int32 messageVersion = 3;
+ message NativeFlowButton {
+ optional string name = 1;
+ optional string buttonParamsJson = 2;
+ }
+
+ }
+
+ message ShopMessage {
+ optional string id = 1;
+ optional Surface surface = 2;
+ optional int32 messageVersion = 3;
+ enum Surface {
+ UNKNOWN_SURFACE = 0;
+ FB = 1;
+ IG = 2;
+ WA = 3;
+ }
+ }
+
+ }
+
+ message InteractiveResponseMessage {
+ optional Body body = 1;
+ optional ContextInfo contextInfo = 15;
+ oneof interactiveResponseMessage {
+ Message.InteractiveResponseMessage.NativeFlowResponseMessage nativeFlowResponseMessage = 2;
+ }
+ message Body {
+ optional string text = 1;
+ }
+
+ message NativeFlowResponseMessage {
+ optional string name = 1;
+ optional string paramsJson = 2;
+ optional int32 version = 3;
+ }
+
+ }
+
+ message InvoiceMessage {
+ optional string note = 1;
+ optional string token = 2;
+ optional AttachmentType attachmentType = 3;
+ optional string attachmentMimetype = 4;
+ optional bytes attachmentMediaKey = 5;
+ optional int64 attachmentMediaKeyTimestamp = 6;
+ optional bytes attachmentFileSha256 = 7;
+ optional bytes attachmentFileEncSha256 = 8;
+ optional string attachmentDirectPath = 9;
+ optional bytes attachmentJpegThumbnail = 10;
+ enum AttachmentType {
+ IMAGE = 0;
+ PDF = 1;
+ }
+ }
+
+ message KeepInChatMessage {
+ optional MessageKey key = 1;
+ optional KeepType keepType = 2;
+ optional int64 timestampMs = 3;
+ }
+
+ message ListMessage {
+ optional string title = 1;
+ optional string description = 2;
+ optional string buttonText = 3;
+ optional ListType listType = 4;
+ repeated Section sections = 5;
+ optional ProductListInfo productListInfo = 6;
+ optional string footerText = 7;
+ optional ContextInfo contextInfo = 8;
+ enum ListType {
+ UNKNOWN = 0;
+ SINGLE_SELECT = 1;
+ PRODUCT_LIST = 2;
+ }
+ message ProductListHeaderImage {
+ optional string productId = 1;
+ optional bytes jpegThumbnail = 2;
+ }
+
+ message ProductListInfo {
+ repeated Message.ListMessage.ProductSection productSections = 1;
+ optional Message.ListMessage.ProductListHeaderImage headerImage = 2;
+ optional string businessOwnerJid = 3;
+ }
+
+ message ProductSection {
+ optional string title = 1;
+ repeated Message.ListMessage.Product products = 2;
+ }
+
+ message Product {
+ optional string productId = 1;
+ }
+
+ message Row {
+ optional string title = 1;
+ optional string description = 2;
+ optional string rowId = 3;
+ }
+
+ message Section {
+ optional string title = 1;
+ repeated Message.ListMessage.Row rows = 2;
+ }
+
+ }
+
+ message ListResponseMessage {
+ optional string title = 1;
+ optional ListType listType = 2;
+ optional SingleSelectReply singleSelectReply = 3;
+ optional ContextInfo contextInfo = 4;
+ optional string description = 5;
+ enum ListType {
+ UNKNOWN = 0;
+ SINGLE_SELECT = 1;
+ }
+ message SingleSelectReply {
+ optional string selectedRowId = 1;
+ }
+
+ }
+
+ message LiveLocationMessage {
+ optional double degreesLatitude = 1;
+ optional double degreesLongitude = 2;
+ optional uint32 accuracyInMeters = 3;
+ optional float speedInMps = 4;
+ optional uint32 degreesClockwiseFromMagneticNorth = 5;
+ optional string caption = 6;
+ optional int64 sequenceNumber = 7;
+ optional uint32 timeOffset = 8;
+ optional bytes jpegThumbnail = 16;
+ optional ContextInfo contextInfo = 17;
+ }
+
+ message LocationMessage {
+ optional double degreesLatitude = 1;
+ optional double degreesLongitude = 2;
+ optional string name = 3;
+ optional string address = 4;
+ optional string url = 5;
+ optional bool isLive = 6;
+ optional uint32 accuracyInMeters = 7;
+ optional float speedInMps = 8;
+ optional uint32 degreesClockwiseFromMagneticNorth = 9;
+ optional string comment = 11;
+ optional bytes jpegThumbnail = 16;
+ optional ContextInfo contextInfo = 17;
+ }
+
+ message OrderMessage {
+ optional string orderId = 1;
+ optional bytes thumbnail = 2;
+ optional int32 itemCount = 3;
+ optional OrderStatus status = 4;
+ optional OrderSurface surface = 5;
+ optional string message = 6;
+ optional string orderTitle = 7;
+ optional string sellerJid = 8;
+ optional string token = 9;
+ optional int64 totalAmount1000 = 10;
+ optional string totalCurrencyCode = 11;
+ optional ContextInfo contextInfo = 17;
+ enum OrderStatus {
+ INQUIRY = 1;
+ }
+ enum OrderSurface {
+ CATALOG = 1;
+ }
+ }
+
+ message PaymentInviteMessage {
+ optional ServiceType serviceType = 1;
+ optional int64 expiryTimestamp = 2;
+ enum ServiceType {
+ UNKNOWN = 0;
+ FBPAY = 1;
+ NOVI = 2;
+ UPI = 3;
+ }
+ }
+
+ message PollCreationMessage {
+ optional bytes encKey = 1;
+ optional string name = 2;
+ repeated Option options = 3;
+ optional uint32 selectableOptionsCount = 4;
+ optional ContextInfo contextInfo = 5;
+ message Option {
+ optional string optionName = 1;
+ }
+
+ }
+
+ message PollEncValue {
+ optional bytes encPayload = 1;
+ optional bytes encIv = 2;
+ }
+
+ message PollUpdateMessageMetadata {
+ }
+
+ message PollUpdateMessage {
+ optional MessageKey pollCreationMessageKey = 1;
+ optional Message.PollEncValue vote = 2;
+ optional Message.PollUpdateMessageMetadata metadata = 3;
+ optional int64 senderTimestampMs = 4;
+ }
+
+ message PollVoteMessage {
+ repeated bytes selectedOptions = 1;
+ }
+
+ message ProductMessage {
+ optional ProductSnapshot product = 1;
+ optional string businessOwnerJid = 2;
+ optional CatalogSnapshot catalog = 4;
+ optional string body = 5;
+ optional string footer = 6;
+ optional ContextInfo contextInfo = 17;
+ message CatalogSnapshot {
+ optional Message.ImageMessage catalogImage = 1;
+ optional string title = 2;
+ optional string description = 3;
+ }
+
+ message ProductSnapshot {
+ optional Message.ImageMessage productImage = 1;
+ optional string productId = 2;
+ optional string title = 3;
+ optional string description = 4;
+ optional string currencyCode = 5;
+ optional int64 priceAmount1000 = 6;
+ optional string retailerId = 7;
+ optional string url = 8;
+ optional uint32 productImageCount = 9;
+ optional string firstImageId = 11;
+ optional int64 salePriceAmount1000 = 12;
+ }
+
+ }
+
+ message ProtocolMessage {
+ optional MessageKey key = 1;
+ optional Type type = 2;
+ optional uint32 ephemeralExpiration = 4;
+ optional int64 ephemeralSettingTimestamp = 5;
+ optional Message.HistorySyncNotification historySyncNotification = 6;
+ optional Message.AppStateSyncKeyShare appStateSyncKeyShare = 7;
+ optional Message.AppStateSyncKeyRequest appStateSyncKeyRequest = 8;
+ optional Message.InitialSecurityNotificationSettingSync initialSecurityNotificationSettingSync = 9;
+ optional Message.AppStateFatalExceptionNotification appStateFatalExceptionNotification = 10;
+ optional DisappearingMode disappearingMode = 11;
+ optional Message.RequestMediaUploadMessage requestMediaUploadMessage = 12;
+ optional Message.RequestMediaUploadResponseMessage requestMediaUploadResponseMessage = 13;
+ enum Type {
+ REVOKE = 0;
+ EPHEMERAL_SETTING = 3;
+ EPHEMERAL_SYNC_RESPONSE = 4;
+ HISTORY_SYNC_NOTIFICATION = 5;
+ APP_STATE_SYNC_KEY_SHARE = 6;
+ APP_STATE_SYNC_KEY_REQUEST = 7;
+ MSG_FANOUT_BACKFILL_REQUEST = 8;
+ INITIAL_SECURITY_NOTIFICATION_SETTING_SYNC = 9;
+ APP_STATE_FATAL_EXCEPTION_NOTIFICATION = 10;
+ SHARE_PHONE_NUMBER = 11;
+ REQUEST_MEDIA_UPLOAD_MESSAGE = 12;
+ REQUEST_MEDIA_UPLOAD_RESPONSE_MESSAGE = 13;
+ }
+ }
+
+ message ReactionMessage {
+ optional MessageKey key = 1;
+ optional string text = 2;
+ optional string groupingKey = 3;
+ optional int64 senderTimestampMs = 4;
+ }
+
+ message RequestMediaUploadMessage {
+ repeated string fileSha256 = 1;
+ optional Message.RmrSource rmrSource = 2;
+ }
+
+ message RequestMediaUploadResponseMessage {
+ optional Message.RmrSource rmrSource = 1;
+ optional string stanzaId = 2;
+ repeated RequestMediaUploadResult reuploadResult = 3;
+ message RequestMediaUploadResult {
+ optional string fileSha256 = 1;
+ optional MediaRetryNotification.ResultType mediaUploadResult = 2;
+ optional Message.StickerMessage stickerMessage = 3;
+ }
+
+ }
+
+ message RequestPaymentMessage {
+ optional Message noteMessage = 4;
+ optional string currencyCodeIso4217 = 1;
+ optional uint64 amount1000 = 2;
+ optional string requestFrom = 3;
+ optional int64 expiryTimestamp = 5;
+ optional Money amount = 6;
+ optional PaymentBackground background = 7;
+ }
+
+ message RequestPhoneNumberMessage {
+ optional ContextInfo contextInfo = 1;
+ }
+
+ enum RmrSource {
+ FAVORITE_STICKER = 0;
+ RECENT_STICKER = 1;
+ }
+ message SendPaymentMessage {
+ optional Message noteMessage = 2;
+ optional MessageKey requestMessageKey = 3;
+ optional PaymentBackground background = 4;
+ }
+
+ message SenderKeyDistributionMessage {
+ optional string groupId = 1;
+ optional bytes axolotlSenderKeyDistributionMessage = 2;
+ }
+
+ message StickerMessage {
+ optional string url = 1;
+ optional bytes fileSha256 = 2;
+ optional bytes fileEncSha256 = 3;
+ optional bytes mediaKey = 4;
+ optional string mimetype = 5;
+ optional uint32 height = 6;
+ optional uint32 width = 7;
+ optional string directPath = 8;
+ optional uint64 fileLength = 9;
+ optional int64 mediaKeyTimestamp = 10;
+ optional uint32 firstFrameLength = 11;
+ optional bytes firstFrameSidecar = 12;
+ optional bool isAnimated = 13;
+ optional bytes pngThumbnail = 16;
+ optional ContextInfo contextInfo = 17;
+ }
+
+ message StickerSyncRMRMessage {
+ repeated string filehash = 1;
+ optional string rmrSource = 2;
+ optional int64 requestTimestamp = 3;
+ }
+
+ message TemplateButtonReplyMessage {
+ optional string selectedId = 1;
+ optional string selectedDisplayText = 2;
+ optional ContextInfo contextInfo = 3;
+ optional uint32 selectedIndex = 4;
+ }
+
+ message TemplateMessage {
+ optional ContextInfo contextInfo = 3;
+ optional HydratedFourRowTemplate hydratedTemplate = 4;
+ oneof format {
+ Message.TemplateMessage.FourRowTemplate fourRowTemplate = 1;
+ Message.TemplateMessage.HydratedFourRowTemplate hydratedFourRowTemplate = 2;
+ }
+ message FourRowTemplate {
+ optional Message.HighlyStructuredMessage content = 6;
+ optional Message.HighlyStructuredMessage footer = 7;
+ repeated TemplateButton buttons = 8;
+ oneof title {
+ Message.DocumentMessage documentMessage = 1;
+ Message.HighlyStructuredMessage highlyStructuredMessage = 2;
+ Message.ImageMessage imageMessage = 3;
+ Message.VideoMessage videoMessage = 4;
+ Message.LocationMessage locationMessage = 5;
+ }
+ }
+
+ message HydratedFourRowTemplate {
+ optional string hydratedContentText = 6;
+ optional string hydratedFooterText = 7;
+ repeated HydratedTemplateButton hydratedButtons = 8;
+ optional string templateId = 9;
+ oneof title {
+ Message.DocumentMessage documentMessage = 1;
+ string hydratedTitleText = 2;
+ Message.ImageMessage imageMessage = 3;
+ Message.VideoMessage videoMessage = 4;
+ Message.LocationMessage locationMessage = 5;
+ }
+ }
+
+ }
+
+ message VideoMessage {
+ optional string url = 1;
+ optional string mimetype = 2;
+ optional bytes fileSha256 = 3;
+ optional uint64 fileLength = 4;
+ optional uint32 seconds = 5;
+ optional bytes mediaKey = 6;
+ optional string caption = 7;
+ optional bool gifPlayback = 8;
+ optional uint32 height = 9;
+ optional uint32 width = 10;
+ optional bytes fileEncSha256 = 11;
+ repeated InteractiveAnnotation interactiveAnnotations = 12;
+ optional string directPath = 13;
+ optional int64 mediaKeyTimestamp = 14;
+ optional bytes jpegThumbnail = 16;
+ optional ContextInfo contextInfo = 17;
+ optional bytes streamingSidecar = 18;
+ optional Attribution gifAttribution = 19;
+ optional bool viewOnce = 20;
+ optional string thumbnailDirectPath = 21;
+ optional bytes thumbnailSha256 = 22;
+ optional bytes thumbnailEncSha256 = 23;
+ optional string staticUrl = 24;
+ enum Attribution {
+ NONE = 0;
+ GIPHY = 1;
+ TENOR = 2;
+ }
+ }
+
+}
+
+message MessageContextInfo {
+ optional DeviceListMetadata deviceListMetadata = 1;
+ optional int32 deviceListMetadataVersion = 2;
+ optional bytes messageSecret = 3;
+ optional bytes paddingBytes = 4;
}
message MessageKey {
@@ -757,53 +1492,56 @@ message MessageKey {
optional string participant = 4;
}
-message WebFeatures {
- enum WebFeaturesFlag {
- NOT_STARTED = 0;
- FORCE_UPGRADE = 1;
- DEVELOPMENT = 2;
- PRODUCTION = 3;
+message Money {
+ optional int64 value = 1;
+ optional uint32 offset = 2;
+ optional string currencyCode = 3;
+}
+
+message MsgOpaqueData {
+ optional string body = 1;
+ optional string caption = 3;
+ optional double lng = 5;
+ optional bool isLive = 6;
+ optional double lat = 7;
+ optional int32 paymentAmount1000 = 8;
+ optional string paymentNoteMsgBody = 9;
+ optional string canonicalUrl = 10;
+ optional string matchedText = 11;
+ optional string title = 12;
+ optional string description = 13;
+ optional bytes futureproofBuffer = 14;
+ optional string clientUrl = 15;
+ optional string loc = 16;
+ optional string pollName = 17;
+ repeated PollOption pollOptions = 18;
+ optional uint32 pollSelectableOptionsCount = 20;
+ optional bytes messageSecret = 21;
+ optional int64 senderTimestampMs = 22;
+ optional string pollUpdateParentKey = 23;
+ optional PollEncValue encPollVote = 24;
+ message PollOption {
+ optional string name = 1;
}
- optional WebFeaturesFlag labelsDisplay = 1;
- optional WebFeaturesFlag voipIndividualOutgoing = 2;
- optional WebFeaturesFlag groupsV3 = 3;
- optional WebFeaturesFlag groupsV3Create = 4;
- optional WebFeaturesFlag changeNumberV2 = 5;
- optional WebFeaturesFlag queryStatusV3Thumbnail = 6;
- optional WebFeaturesFlag liveLocations = 7;
- optional WebFeaturesFlag queryVname = 8;
- optional WebFeaturesFlag voipIndividualIncoming = 9;
- optional WebFeaturesFlag quickRepliesQuery = 10;
- optional WebFeaturesFlag payments = 11;
- optional WebFeaturesFlag stickerPackQuery = 12;
- optional WebFeaturesFlag liveLocationsFinal = 13;
- optional WebFeaturesFlag labelsEdit = 14;
- optional WebFeaturesFlag mediaUpload = 15;
- optional WebFeaturesFlag mediaUploadRichQuickReplies = 18;
- optional WebFeaturesFlag vnameV2 = 19;
- optional WebFeaturesFlag videoPlaybackUrl = 20;
- optional WebFeaturesFlag statusRanking = 21;
- optional WebFeaturesFlag voipIndividualVideo = 22;
- optional WebFeaturesFlag thirdPartyStickers = 23;
- optional WebFeaturesFlag frequentlyForwardedSetting = 24;
- optional WebFeaturesFlag groupsV4JoinPermission = 25;
- optional WebFeaturesFlag recentStickers = 26;
- optional WebFeaturesFlag catalog = 27;
- optional WebFeaturesFlag starredStickers = 28;
- optional WebFeaturesFlag voipGroupCall = 29;
- optional WebFeaturesFlag templateMessage = 30;
- optional WebFeaturesFlag templateMessageInteractivity = 31;
- optional WebFeaturesFlag ephemeralMessages = 32;
- optional WebFeaturesFlag e2ENotificationSync = 33;
- optional WebFeaturesFlag recentStickersV2 = 34;
- optional WebFeaturesFlag syncdRelease1 = 35;
- optional WebFeaturesFlag recentStickersV3 = 36;
- optional WebFeaturesFlag userNotice = 37;
- optional WebFeaturesFlag syncdRelease11 = 38;
- optional WebFeaturesFlag support = 39;
- optional WebFeaturesFlag groupUiiCleanup = 40;
- optional WebFeaturesFlag groupDogfoodingInternalOnly = 41;
- optional WebFeaturesFlag settingsSync = 42;
+
+}
+
+message MsgRowOpaqueData {
+ optional MsgOpaqueData currentMsg = 1;
+ optional MsgOpaqueData quotedMsg = 2;
+}
+
+message NoiseCertificate {
+ optional bytes details = 1;
+ optional bytes signature = 2;
+ message Details {
+ optional uint32 serial = 1;
+ optional string issuer = 2;
+ optional uint64 expires = 3;
+ optional string subject = 4;
+ optional bytes key = 5;
+ }
+
}
message NotificationMessageInfo {
@@ -813,22 +1551,65 @@ message NotificationMessageInfo {
optional string participant = 4;
}
-message WebNotificationsInfo {
- optional uint64 timestamp = 2;
- optional uint32 unreadChats = 3;
- optional uint32 notifyMessageCount = 4;
- repeated WebMessageInfo notifyMessages = 5;
+message PastParticipant {
+ required string userJid = 1;
+ required LeaveReason leaveReason = 2;
+ required uint64 leaveTs = 3;
+ enum LeaveReason {
+ LEFT = 0;
+ REMOVED = 1;
+ }
+}
+
+message PastParticipants {
+ required string groupJid = 1;
+ repeated PastParticipant pastParticipants = 2;
+}
+
+message PaymentBackground {
+ optional string id = 1;
+ optional uint64 fileLength = 2;
+ optional uint32 width = 3;
+ optional uint32 height = 4;
+ optional string mimetype = 5;
+ optional fixed32 placeholderArgb = 6;
+ optional fixed32 textArgb = 7;
+ optional fixed32 subtextArgb = 8;
+ optional MediaData mediaData = 9;
+ optional Type type = 10;
+ message MediaData {
+ optional bytes mediaKey = 1;
+ optional int64 mediaKeyTimestamp = 2;
+ optional bytes fileSha256 = 3;
+ optional bytes fileEncSha256 = 4;
+ optional string directPath = 5;
+ }
+
+ enum Type {
+ UNKNOWN = 0;
+ DEFAULT = 1;
+ }
}
message PaymentInfo {
- enum PaymentInfoCurrency {
+ optional Currency currencyDeprecated = 1;
+ optional uint64 amount1000 = 2;
+ optional string receiverJid = 3;
+ optional Status status = 4;
+ optional uint64 transactionTimestamp = 5;
+ optional MessageKey requestMessageKey = 6;
+ optional uint64 expiryTimestamp = 7;
+ optional bool futureproofed = 8;
+ optional string currency = 9;
+ optional TxnStatus txnStatus = 10;
+ optional bool useNoviFiatFormat = 11;
+ optional Money primaryAmount = 12;
+ optional Money exchangeAmount = 13;
+ enum Currency {
UNKNOWN_CURRENCY = 0;
INR = 1;
}
- optional PaymentInfoCurrency currencyDeprecated = 1;
- optional uint64 amount1000 = 2;
- optional string receiverJid = 3;
- enum PaymentInfoStatus {
+ enum Status {
UNKNOWN_STATUS = 0;
PROCESSING = 1;
SENT = 2;
@@ -842,13 +1623,7 @@ message PaymentInfo {
WAITING_FOR_PAYER = 10;
WAITING = 11;
}
- optional PaymentInfoStatus status = 4;
- optional uint64 transactionTimestamp = 5;
- optional MessageKey requestMessageKey = 6;
- optional uint64 expiryTimestamp = 7;
- optional bool futureproofed = 8;
- optional string currency = 9;
- enum PaymentInfoTxnStatus {
+ enum TxnStatus {
UNKNOWN = 0;
PENDING_SETUP = 1;
PENDING_RECEIVER_SETUP = 2;
@@ -877,27 +1652,502 @@ message PaymentInfo {
COLLECT_EXPIRED = 25;
COLLECT_CANCELED = 26;
COLLECT_CANCELLING = 27;
+ IN_REVIEW = 28;
+ REVERSAL_SUCCESS = 29;
+ REVERSAL_PENDING = 30;
+ REFUND_PENDING = 31;
+ }
+}
+
+message PendingKeyExchange {
+ optional uint32 sequence = 1;
+ optional bytes localBaseKey = 2;
+ optional bytes localBaseKeyPrivate = 3;
+ optional bytes localRatchetKey = 4;
+ optional bytes localRatchetKeyPrivate = 5;
+ optional bytes localIdentityKey = 7;
+ optional bytes localIdentityKeyPrivate = 8;
+}
+
+message PendingPreKey {
+ optional uint32 preKeyId = 1;
+ optional int32 signedPreKeyId = 3;
+ optional bytes baseKey = 2;
+}
+
+message PhotoChange {
+ optional bytes oldPhoto = 1;
+ optional bytes newPhoto = 2;
+ optional uint32 newPhotoId = 3;
+}
+
+message Point {
+ optional int32 xDeprecated = 1;
+ optional int32 yDeprecated = 2;
+ optional double x = 3;
+ optional double y = 4;
+}
+
+message PollAdditionalMetadata {
+ optional bool pollInvalidated = 1;
+}
+
+message PollEncValue {
+ optional bytes encPayload = 1;
+ optional bytes encIv = 2;
+}
+
+message PollUpdate {
+ optional MessageKey pollUpdateMessageKey = 1;
+ optional Message.PollVoteMessage vote = 2;
+ optional int64 senderTimestampMs = 3;
+}
+
+message PreKeyRecordStructure {
+ optional uint32 id = 1;
+ optional bytes publicKey = 2;
+ optional bytes privateKey = 3;
+}
+
+message Pushname {
+ optional string id = 1;
+ optional string pushname = 2;
+}
+
+message Reaction {
+ optional MessageKey key = 1;
+ optional string text = 2;
+ optional string groupingKey = 3;
+ optional int64 senderTimestampMs = 4;
+ optional bool unread = 5;
+}
+
+message RecentEmojiWeight {
+ optional string emoji = 1;
+ optional float weight = 2;
+}
+
+message RecordStructure {
+ optional SessionStructure currentSession = 1;
+ repeated SessionStructure previousSessions = 2;
+}
+
+message SenderChainKey {
+ optional uint32 iteration = 1;
+ optional bytes seed = 2;
+}
+
+message SenderKeyRecordStructure {
+ repeated SenderKeyStateStructure senderKeyStates = 1;
+}
+
+message SenderKeyStateStructure {
+ optional uint32 senderKeyId = 1;
+ optional SenderChainKey senderChainKey = 2;
+ optional SenderSigningKey senderSigningKey = 3;
+ repeated SenderMessageKey senderMessageKeys = 4;
+}
+
+message SenderMessageKey {
+ optional uint32 iteration = 1;
+ optional bytes seed = 2;
+}
+
+message SenderSigningKey {
+ optional bytes public = 1;
+ optional bytes private = 2;
+}
+
+message ServerErrorReceipt {
+ optional string stanzaId = 1;
+}
+
+message SessionStructure {
+ optional uint32 sessionVersion = 1;
+ optional bytes localIdentityPublic = 2;
+ optional bytes remoteIdentityPublic = 3;
+ optional bytes rootKey = 4;
+ optional uint32 previousCounter = 5;
+ optional Chain senderChain = 6;
+ repeated Chain receiverChains = 7;
+ optional PendingKeyExchange pendingKeyExchange = 8;
+ optional PendingPreKey pendingPreKey = 9;
+ optional uint32 remoteRegistrationId = 10;
+ optional uint32 localRegistrationId = 11;
+ optional bool needsRefresh = 12;
+ optional bytes aliceBaseKey = 13;
+}
+
+message SignedPreKeyRecordStructure {
+ optional uint32 id = 1;
+ optional bytes publicKey = 2;
+ optional bytes privateKey = 3;
+ optional bytes signature = 4;
+ optional fixed64 timestamp = 5;
+}
+
+message StatusPSA {
+ required uint64 campaignId = 44;
+ optional uint64 campaignExpirationTimestamp = 45;
+}
+
+message StickerMetadata {
+ optional string url = 1;
+ optional bytes fileSha256 = 2;
+ optional bytes fileEncSha256 = 3;
+ optional bytes mediaKey = 4;
+ optional string mimetype = 5;
+ optional uint32 height = 6;
+ optional uint32 width = 7;
+ optional string directPath = 8;
+ optional uint64 fileLength = 9;
+ optional float weight = 10;
+}
+
+message SyncActionData {
+ optional bytes index = 1;
+ optional SyncActionValue value = 2;
+ optional bytes padding = 3;
+ optional int32 version = 4;
+}
+
+message SyncActionValue {
+ optional int64 timestamp = 1;
+ optional StarAction starAction = 2;
+ optional ContactAction contactAction = 3;
+ optional MuteAction muteAction = 4;
+ optional PinAction pinAction = 5;
+ optional SecurityNotificationSetting securityNotificationSetting = 6;
+ optional PushNameSetting pushNameSetting = 7;
+ optional QuickReplyAction quickReplyAction = 8;
+ optional RecentEmojiWeightsAction recentEmojiWeightsAction = 11;
+ optional LabelEditAction labelEditAction = 14;
+ optional LabelAssociationAction labelAssociationAction = 15;
+ optional LocaleSetting localeSetting = 16;
+ optional ArchiveChatAction archiveChatAction = 17;
+ optional DeleteMessageForMeAction deleteMessageForMeAction = 18;
+ optional KeyExpiration keyExpiration = 19;
+ optional MarkChatAsReadAction markChatAsReadAction = 20;
+ optional ClearChatAction clearChatAction = 21;
+ optional DeleteChatAction deleteChatAction = 22;
+ optional UnarchiveChatsSetting unarchiveChatsSetting = 23;
+ optional PrimaryFeature primaryFeature = 24;
+ optional AndroidUnsupportedActions androidUnsupportedActions = 26;
+ optional AgentAction agentAction = 27;
+ optional SubscriptionAction subscriptionAction = 28;
+ optional UserStatusMuteAction userStatusMuteAction = 29;
+ optional TimeFormatAction timeFormatAction = 30;
+ optional NuxAction nuxAction = 31;
+ optional PrimaryVersionAction primaryVersionAction = 32;
+ optional StickerAction stickerAction = 33;
+ message AgentAction {
+ optional string name = 1;
+ optional int32 deviceID = 2;
+ optional bool isDeleted = 3;
+ }
+
+ message AndroidUnsupportedActions {
+ optional bool allowed = 1;
+ }
+
+ message ArchiveChatAction {
+ optional bool archived = 1;
+ optional SyncActionValue.SyncActionMessageRange messageRange = 2;
+ }
+
+ message ClearChatAction {
+ optional SyncActionValue.SyncActionMessageRange messageRange = 1;
+ }
+
+ message ContactAction {
+ optional string fullName = 1;
+ optional string firstName = 2;
+ }
+
+ message DeleteChatAction {
+ optional SyncActionValue.SyncActionMessageRange messageRange = 1;
+ }
+
+ message DeleteMessageForMeAction {
+ optional bool deleteMedia = 1;
+ optional int64 messageTimestamp = 2;
+ }
+
+ message KeyExpiration {
+ optional int32 expiredKeyEpoch = 1;
+ }
+
+ message LabelAssociationAction {
+ optional bool labeled = 1;
+ }
+
+ message LabelEditAction {
+ optional string name = 1;
+ optional int32 color = 2;
+ optional int32 predefinedId = 3;
+ optional bool deleted = 4;
+ }
+
+ message LocaleSetting {
+ optional string locale = 1;
+ }
+
+ message MarkChatAsReadAction {
+ optional bool read = 1;
+ optional SyncActionValue.SyncActionMessageRange messageRange = 2;
+ }
+
+ message MuteAction {
+ optional bool muted = 1;
+ optional int64 muteEndTimestamp = 2;
+ }
+
+ message NuxAction {
+ optional bool acknowledged = 1;
+ }
+
+ message PinAction {
+ optional bool pinned = 1;
+ }
+
+ message PrimaryFeature {
+ repeated string flags = 1;
+ }
+
+ message PrimaryVersionAction {
+ optional string version = 1;
+ }
+
+ message PushNameSetting {
+ optional string name = 1;
+ }
+
+ message QuickReplyAction {
+ optional string shortcut = 1;
+ optional string message = 2;
+ repeated string keywords = 3;
+ optional int32 count = 4;
+ optional bool deleted = 5;
+ }
+
+ message RecentEmojiWeightsAction {
+ repeated RecentEmojiWeight weights = 1;
+ }
+
+ message SecurityNotificationSetting {
+ optional bool showNotification = 1;
+ }
+
+ message StarAction {
+ optional bool starred = 1;
+ }
+
+ message StickerAction {
+ optional string url = 1;
+ optional bytes fileEncSha256 = 2;
+ optional bytes mediaKey = 3;
+ optional string mimetype = 4;
+ optional uint32 height = 5;
+ optional uint32 width = 6;
+ optional string directPath = 7;
+ optional uint64 fileLength = 8;
+ optional bool isFavorite = 9;
+ optional uint32 deviceIdHint = 10;
+ }
+
+ message SubscriptionAction {
+ optional bool isDeactivated = 1;
+ optional bool isAutoRenewing = 2;
+ optional int64 expirationDate = 3;
+ }
+
+ message SyncActionMessageRange {
+ optional int64 lastMessageTimestamp = 1;
+ optional int64 lastSystemMessageTimestamp = 2;
+ repeated SyncActionValue.SyncActionMessage messages = 3;
+ }
+
+ message SyncActionMessage {
+ optional MessageKey key = 1;
+ optional int64 timestamp = 2;
+ }
+
+ message TimeFormatAction {
+ optional bool isTwentyFourHourFormatEnabled = 1;
+ }
+
+ message UnarchiveChatsSetting {
+ optional bool unarchiveChats = 1;
+ }
+
+ message UserStatusMuteAction {
+ optional bool muted = 1;
+ }
+
+}
+
+message SyncdIndex {
+ optional bytes blob = 1;
+}
+
+message SyncdMutation {
+ optional SyncdOperation operation = 1;
+ optional SyncdRecord record = 2;
+ enum SyncdOperation {
+ SET = 0;
+ REMOVE = 1;
+ }
+}
+
+message SyncdMutations {
+ repeated SyncdMutation mutations = 1;
+}
+
+message SyncdPatch {
+ optional SyncdVersion version = 1;
+ repeated SyncdMutation mutations = 2;
+ optional ExternalBlobReference externalMutations = 3;
+ optional bytes snapshotMac = 4;
+ optional bytes patchMac = 5;
+ optional KeyId keyId = 6;
+ optional ExitCode exitCode = 7;
+ optional uint32 deviceIndex = 8;
+}
+
+message SyncdRecord {
+ optional SyncdIndex index = 1;
+ optional SyncdValue value = 2;
+ optional KeyId keyId = 3;
+}
+
+message SyncdSnapshot {
+ optional SyncdVersion version = 1;
+ repeated SyncdRecord records = 2;
+ optional bytes mac = 3;
+ optional KeyId keyId = 4;
+}
+
+message SyncdValue {
+ optional bytes blob = 1;
+}
+
+message SyncdVersion {
+ optional uint64 version = 1;
+}
+
+message TemplateButton {
+ optional uint32 index = 4;
+ oneof button {
+ TemplateButton.QuickReplyButton quickReplyButton = 1;
+ TemplateButton.URLButton urlButton = 2;
+ TemplateButton.CallButton callButton = 3;
+ }
+ message CallButton {
+ optional Message.HighlyStructuredMessage displayText = 1;
+ optional Message.HighlyStructuredMessage phoneNumber = 2;
+ }
+
+ message QuickReplyButton {
+ optional Message.HighlyStructuredMessage displayText = 1;
+ optional string id = 2;
+ }
+
+ message URLButton {
+ optional Message.HighlyStructuredMessage displayText = 1;
+ optional Message.HighlyStructuredMessage url = 2;
+ }
+
+}
+
+message UserReceipt {
+ required string userJid = 1;
+ optional int64 receiptTimestamp = 2;
+ optional int64 readTimestamp = 3;
+ optional int64 playedTimestamp = 4;
+ repeated string pendingDeviceJid = 5;
+ repeated string deliveredDeviceJid = 6;
+}
+
+message VerifiedNameCertificate {
+ optional bytes details = 1;
+ optional bytes signature = 2;
+ optional bytes serverSignature = 3;
+ message Details {
+ optional uint64 serial = 1;
+ optional string issuer = 2;
+ optional string verifiedName = 4;
+ repeated LocalizedName localizedNames = 8;
+ optional uint64 issueTime = 10;
+ }
+
+}
+
+message WallpaperSettings {
+ optional string filename = 1;
+ optional uint32 opacity = 2;
+}
+
+message WebFeatures {
+ optional Flag labelsDisplay = 1;
+ optional Flag voipIndividualOutgoing = 2;
+ optional Flag groupsV3 = 3;
+ optional Flag groupsV3Create = 4;
+ optional Flag changeNumberV2 = 5;
+ optional Flag queryStatusV3Thumbnail = 6;
+ optional Flag liveLocations = 7;
+ optional Flag queryVname = 8;
+ optional Flag voipIndividualIncoming = 9;
+ optional Flag quickRepliesQuery = 10;
+ optional Flag payments = 11;
+ optional Flag stickerPackQuery = 12;
+ optional Flag liveLocationsFinal = 13;
+ optional Flag labelsEdit = 14;
+ optional Flag mediaUpload = 15;
+ optional Flag mediaUploadRichQuickReplies = 18;
+ optional Flag vnameV2 = 19;
+ optional Flag videoPlaybackUrl = 20;
+ optional Flag statusRanking = 21;
+ optional Flag voipIndividualVideo = 22;
+ optional Flag thirdPartyStickers = 23;
+ optional Flag frequentlyForwardedSetting = 24;
+ optional Flag groupsV4JoinPermission = 25;
+ optional Flag recentStickers = 26;
+ optional Flag catalog = 27;
+ optional Flag starredStickers = 28;
+ optional Flag voipGroupCall = 29;
+ optional Flag templateMessage = 30;
+ optional Flag templateMessageInteractivity = 31;
+ optional Flag ephemeralMessages = 32;
+ optional Flag e2ENotificationSync = 33;
+ optional Flag recentStickersV2 = 34;
+ optional Flag recentStickersV3 = 36;
+ optional Flag userNotice = 37;
+ optional Flag support = 39;
+ optional Flag groupUiiCleanup = 40;
+ optional Flag groupDogfoodingInternalOnly = 41;
+ optional Flag settingsSync = 42;
+ optional Flag archiveV2 = 43;
+ optional Flag ephemeralAllowGroupMembers = 44;
+ optional Flag ephemeral24HDuration = 45;
+ optional Flag mdForceUpgrade = 46;
+ optional Flag disappearingMode = 47;
+ optional Flag externalMdOptInAvailable = 48;
+ optional Flag noDeleteMessageTimeLimit = 49;
+ enum Flag {
+ NOT_STARTED = 0;
+ FORCE_UPGRADE = 1;
+ DEVELOPMENT = 2;
+ PRODUCTION = 3;
}
- optional PaymentInfoTxnStatus txnStatus = 10;
- optional bool useNoviFiatFormat = 11;
- optional PaymentMoney primaryAmount = 12;
- optional PaymentMoney exchangeAmount = 13;
}
message WebMessageInfo {
required MessageKey key = 1;
optional Message message = 2;
optional uint64 messageTimestamp = 3;
- enum WebMessageInfoStatus {
- ERROR = 0;
- PENDING = 1;
- SERVER_ACK = 2;
- DELIVERY_ACK = 3;
- READ = 4;
- PLAYED = 5;
- }
- optional WebMessageInfoStatus status = 4;
+ optional Status status = 4;
optional string participant = 5;
+ optional uint64 messageC2STimestamp = 6;
optional bool ignore = 16;
optional bool starred = 17;
optional bool broadcast = 18;
@@ -906,7 +2156,50 @@ message WebMessageInfo {
optional bool multicast = 21;
optional bool urlText = 22;
optional bool urlNumber = 23;
- enum WebMessageInfoStubType {
+ optional StubType messageStubType = 24;
+ optional bool clearMedia = 25;
+ repeated string messageStubParameters = 26;
+ optional uint32 duration = 27;
+ repeated string labels = 28;
+ optional PaymentInfo paymentInfo = 29;
+ optional Message.LiveLocationMessage finalLiveLocation = 30;
+ optional PaymentInfo quotedPaymentInfo = 31;
+ optional uint64 ephemeralStartTimestamp = 32;
+ optional uint32 ephemeralDuration = 33;
+ optional bool ephemeralOffToOn = 34;
+ optional bool ephemeralOutOfSync = 35;
+ optional BizPrivacyStatus bizPrivacyStatus = 36;
+ optional string verifiedBizName = 37;
+ optional MediaData mediaData = 38;
+ optional PhotoChange photoChange = 39;
+ repeated UserReceipt userReceipt = 40;
+ repeated Reaction reactions = 41;
+ optional MediaData quotedStickerData = 42;
+ optional bytes futureproofData = 43;
+ optional StatusPSA statusPsa = 44;
+ repeated PollUpdate pollUpdates = 45;
+ optional PollAdditionalMetadata pollAdditionalMetadata = 46;
+ optional string agentId = 47;
+ optional bool statusAlreadyViewed = 48;
+ optional bytes messageSecret = 49;
+ optional KeepInChat keepInChat = 50;
+ optional string originalSelfAuthorUserJidString = 51;
+ optional uint64 revokeMessageTimestamp = 52;
+ enum BizPrivacyStatus {
+ E2EE = 0;
+ FB = 2;
+ BSP = 1;
+ BSP_AND_FB = 3;
+ }
+ enum Status {
+ ERROR = 0;
+ PENDING = 1;
+ SERVER_ACK = 2;
+ DELIVERY_ACK = 3;
+ READ = 4;
+ PLAYED = 5;
+ }
+ enum StubType {
UNKNOWN = 0;
REVOKE = 1;
CIPHERTEXT = 2;
@@ -1026,25 +2319,43 @@ message WebMessageInfo {
BLUE_MSG_SELF_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED = 116;
BLUE_MSG_SELF_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED = 117;
E2E_IDENTITY_UNAVAILABLE = 118;
+ GROUP_CREATING = 119;
+ GROUP_CREATE_FAILED = 120;
+ GROUP_BOUNCED = 121;
+ BLOCK_CONTACT = 122;
+ EPHEMERAL_SETTING_NOT_APPLIED = 123;
+ SYNC_FAILED = 124;
+ SYNCING = 125;
+ BIZ_PRIVACY_MODE_INIT_FB = 126;
+ BIZ_PRIVACY_MODE_INIT_BSP = 127;
+ BIZ_PRIVACY_MODE_TO_FB = 128;
+ BIZ_PRIVACY_MODE_TO_BSP = 129;
+ DISAPPEARING_MODE = 130;
+ E2E_DEVICE_FETCH_FAILED = 131;
+ ADMIN_REVOKE = 132;
+ GROUP_INVITE_LINK_GROWTH_LOCKED = 133;
+ COMMUNITY_LINK_PARENT_GROUP = 134;
+ COMMUNITY_LINK_SIBLING_GROUP = 135;
+ COMMUNITY_LINK_SUB_GROUP = 136;
+ COMMUNITY_UNLINK_PARENT_GROUP = 137;
+ COMMUNITY_UNLINK_SIBLING_GROUP = 138;
+ COMMUNITY_UNLINK_SUB_GROUP = 139;
+ GROUP_PARTICIPANT_ACCEPT = 140;
+ GROUP_PARTICIPANT_LINKED_GROUP_JOIN = 141;
+ COMMUNITY_CREATE = 142;
+ EPHEMERAL_KEEP_IN_CHAT = 143;
+ GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST = 144;
+ GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE = 145;
+ INTEGRITY_UNLINK_PARENT_GROUP = 146;
+ COMMUNITY_PARTICIPANT_PROMOTE = 147;
+ COMMUNITY_PARTICIPANT_DEMOTE = 148;
+ COMMUNITY_PARENT_GROUP_DELETED = 149;
}
- optional WebMessageInfoStubType messageStubType = 24;
- optional bool clearMedia = 25;
- repeated string messageStubParameters = 26;
- optional uint32 duration = 27;
- repeated string labels = 28;
- optional PaymentInfo paymentInfo = 29;
- optional LiveLocationMessage finalLiveLocation = 30;
- optional PaymentInfo quotedPaymentInfo = 31;
- optional uint64 ephemeralStartTimestamp = 32;
- optional uint32 ephemeralDuration = 33;
- optional bool ephemeralOffToOn = 34;
- optional bool ephemeralOutOfSync = 35;
- enum WebMessageInfoBizPrivacyStatus {
- E2EE = 0;
- FB = 2;
- BSP = 1;
- BSP_AND_FB = 3;
- }
- optional WebMessageInfoBizPrivacyStatus bizPrivacyStatus = 36;
- optional string verifiedBizName = 37;
-} \ No newline at end of file
+}
+
+message WebNotificationsInfo {
+ optional uint64 timestamp = 2;
+ optional uint32 unreadChats = 3;
+ optional uint32 notifyMessageCount = 4;
+ repeated WebMessageInfo notifyMessages = 5;
+}