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 HydratedURLButton { optional string displayText = 1; optional string url = 2; } message HydratedCallButton { optional string displayText = 1; optional string phoneNumber = 2; } message HydratedTemplateButton { optional uint32 index = 4; oneof hydratedButton { HydratedQuickReplyButton quickReplyButton = 1; HydratedURLButton urlButton = 2; HydratedCallButton callButton = 3; } } message QuickReplyButton { optional HighlyStructuredMessage displayText = 1; optional string id = 2; } message URLButton { optional HighlyStructuredMessage displayText = 1; optional HighlyStructuredMessage url = 2; } message CallButton { optional HighlyStructuredMessage displayText = 1; optional HighlyStructuredMessage phoneNumber = 2; } message TemplateButton { optional uint32 index = 4; oneof button { QuickReplyButton quickReplyButton = 1; URLButton urlButton = 2; CallButton callButton = 3; } } 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; } } message DeviceListMetadata { optional bytes senderKeyHash = 1; optional uint64 senderTimestamp = 2; optional bytes recipientKeyHash = 8; optional uint64 recipientTimestamp = 9; } message MessageContextInfo { optional DeviceListMetadata deviceListMetadata = 1; } message AdReplyInfo { optional string advertiserName = 1; enum AdReplyInfoMediaType { NONE = 0; IMAGE = 1; VIDEO = 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; } 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 ContextInfo { optional string stanzaId = 1; optional string participant = 2; optional Message quotedMessage = 3; optional string remoteJid = 4; repeated string mentionedJid = 15; optional string conversionSource = 18; optional bytes conversionData = 19; optional uint32 conversionDelaySeconds = 20; optional uint32 forwardingScore = 21; optional bool isForwarded = 22; optional AdReplyInfo quotedAd = 23; optional MessageKey placeholderKey = 24; optional uint32 expiration = 25; optional int64 ephemeralSettingTimestamp = 26; optional bytes ephemeralSharedSecret = 27; optional ExternalAdReplyInfo externalAdReply = 28; } message SenderKeyDistributionMessage { optional string groupId = 1; optional bytes axolotlSenderKeyDistributionMessage = 2; } 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 { INITIAL_BOOTSTRAP = 0; INITIAL_STATUS_V3 = 1; FULL = 2; RECENT = 3; PUSH_NAME = 4; } 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 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; } 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; } optional HSMDateTimeComponentCalendarType calendar = 7; } message HSMDateTimeUnixEpoch { optional int64 timestamp = 1; } message HSMDateTime { oneof datetimeOneof { HSMDateTimeComponent component = 1; HSMDateTimeUnixEpoch unixEpoch = 2; } } message HSMLocalizableParameter { optional string default = 1; oneof paramOneof { HSMCurrency currency = 2; HSMDateTime dateTime = 3; } } 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 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; } optional ListMessageListType listType = 4; repeated Section sections = 5; } message SingleSelectReply { optional string selectedRowId = 1; } 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; } 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 EphemeralSetting { optional string chatJid = 1; optional uint32 ephemeralExpiration = 2; optional int64 ephemeralSettingTimestamp = 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 ButtonText { optional string displayText = 1; } message Button { optional string buttonId = 1; optional ButtonText buttonText = 2; enum ButtonType { UNKNOWN = 0; RESPONSE = 1; } 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; } } message Message { optional string conversation = 1; optional SenderKeyDistributionMessage senderKeyDistributionMessage = 2; optional ImageMessage imageMessage = 3; optional ContactMessage contactMessage = 4; optional LocationMessage locationMessage = 5; optional ExtendedTextMessage extendedTextMessage = 6; optional DocumentMessage documentMessage = 7; optional AudioMessage audioMessage = 8; optional VideoMessage videoMessage = 9; optional Call call = 10; optional Chat chat = 11; optional ProtocolMessage protocolMessage = 12; optional ContactsArrayMessage contactsArrayMessage = 13; optional HighlyStructuredMessage highlyStructuredMessage = 14; optional SenderKeyDistributionMessage fastRatchetKeySenderKeyDistributionMessage = 15; optional SendPaymentMessage sendPaymentMessage = 16; optional LiveLocationMessage liveLocationMessage = 18; optional RequestPaymentMessage requestPaymentMessage = 22; optional DeclinePaymentRequestMessage declinePaymentRequestMessage = 23; optional CancelPaymentRequestMessage cancelPaymentRequestMessage = 24; optional TemplateMessage templateMessage = 25; optional StickerMessage stickerMessage = 26; optional GroupInviteMessage groupInviteMessage = 28; optional TemplateButtonReplyMessage templateButtonReplyMessage = 29; optional ProductMessage productMessage = 30; optional DeviceSentMessage deviceSentMessage = 31; optional MessageContextInfo messageContextInfo = 35; optional ListMessage listMessage = 36; optional FutureProofMessage viewOnceMessage = 37; optional OrderMessage orderMessage = 38; optional ListResponseMessage listResponseMessage = 39; optional FutureProofMessage ephemeralMessage = 40; optional InvoiceMessage invoiceMessage = 41; optional ButtonsMessage buttonsMessage = 42; optional ButtonsResponseMessage buttonsResponseMessage = 43; } message MessageKey { optional string remoteJid = 1; optional bool fromMe = 2; optional string id = 3; optional string participant = 4; } message WebFeatures { enum WebFeaturesFlag { NOT_STARTED = 0; FORCE_UPGRADE = 1; DEVELOPMENT = 2; PRODUCTION = 3; } 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 NotificationMessageInfo { optional MessageKey key = 1; optional Message message = 2; optional uint64 messageTimestamp = 3; optional string participant = 4; } message WebNotificationsInfo { optional uint64 timestamp = 2; optional uint32 unreadChats = 3; optional uint32 notifyMessageCount = 4; repeated WebMessageInfo notifyMessages = 5; } message PaymentInfo { enum PaymentInfoCurrency { UNKNOWN_CURRENCY = 0; INR = 1; } optional PaymentInfoCurrency currencyDeprecated = 1; optional uint64 amount1000 = 2; optional string receiverJid = 3; enum PaymentInfoStatus { UNKNOWN_STATUS = 0; PROCESSING = 1; SENT = 2; NEED_TO_ACCEPT = 3; COMPLETE = 4; COULD_NOT_COMPLETE = 5; REFUNDED = 6; EXPIRED = 7; REJECTED = 8; CANCELLED = 9; 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 { UNKNOWN = 0; PENDING_SETUP = 1; PENDING_RECEIVER_SETUP = 2; INIT = 3; SUCCESS = 4; COMPLETED = 5; FAILED = 6; FAILED_RISK = 7; FAILED_PROCESSING = 8; FAILED_RECEIVER_PROCESSING = 9; FAILED_DA = 10; FAILED_DA_FINAL = 11; REFUNDED_TXN = 12; REFUND_FAILED = 13; REFUND_FAILED_PROCESSING = 14; REFUND_FAILED_DA = 15; EXPIRED_TXN = 16; AUTH_CANCELED = 17; AUTH_CANCEL_FAILED_PROCESSING = 18; AUTH_CANCEL_FAILED = 19; COLLECT_INIT = 20; COLLECT_SUCCESS = 21; COLLECT_FAILED = 22; COLLECT_FAILED_RISK = 23; COLLECT_REJECTED = 24; COLLECT_EXPIRED = 25; COLLECT_CANCELED = 26; COLLECT_CANCELLING = 27; } 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 string participant = 5; optional bool ignore = 16; optional bool starred = 17; optional bool broadcast = 18; optional string pushName = 19; optional bytes mediaCiphertextSha256 = 20; optional bool multicast = 21; optional bool urlText = 22; optional bool urlNumber = 23; enum WebMessageInfoStubType { UNKNOWN = 0; REVOKE = 1; CIPHERTEXT = 2; FUTUREPROOF = 3; NON_VERIFIED_TRANSITION = 4; UNVERIFIED_TRANSITION = 5; VERIFIED_TRANSITION = 6; VERIFIED_LOW_UNKNOWN = 7; VERIFIED_HIGH = 8; VERIFIED_INITIAL_UNKNOWN = 9; VERIFIED_INITIAL_LOW = 10; VERIFIED_INITIAL_HIGH = 11; VERIFIED_TRANSITION_ANY_TO_NONE = 12; VERIFIED_TRANSITION_ANY_TO_HIGH = 13; VERIFIED_TRANSITION_HIGH_TO_LOW = 14; VERIFIED_TRANSITION_HIGH_TO_UNKNOWN = 15; VERIFIED_TRANSITION_UNKNOWN_TO_LOW = 16; VERIFIED_TRANSITION_LOW_TO_UNKNOWN = 17; VERIFIED_TRANSITION_NONE_TO_LOW = 18; VERIFIED_TRANSITION_NONE_TO_UNKNOWN = 19; GROUP_CREATE = 20; GROUP_CHANGE_SUBJECT = 21; GROUP_CHANGE_ICON = 22; GROUP_CHANGE_INVITE_LINK = 23; GROUP_CHANGE_DESCRIPTION = 24; GROUP_CHANGE_RESTRICT = 25; GROUP_CHANGE_ANNOUNCE = 26; GROUP_PARTICIPANT_ADD = 27; GROUP_PARTICIPANT_REMOVE = 28; GROUP_PARTICIPANT_PROMOTE = 29; GROUP_PARTICIPANT_DEMOTE = 30; GROUP_PARTICIPANT_INVITE = 31; GROUP_PARTICIPANT_LEAVE = 32; GROUP_PARTICIPANT_CHANGE_NUMBER = 33; BROADCAST_CREATE = 34; BROADCAST_ADD = 35; BROADCAST_REMOVE = 36; GENERIC_NOTIFICATION = 37; E2E_IDENTITY_CHANGED = 38; E2E_ENCRYPTED = 39; CALL_MISSED_VOICE = 40; CALL_MISSED_VIDEO = 41; INDIVIDUAL_CHANGE_NUMBER = 42; GROUP_DELETE = 43; GROUP_ANNOUNCE_MODE_MESSAGE_BOUNCE = 44; CALL_MISSED_GROUP_VOICE = 45; CALL_MISSED_GROUP_VIDEO = 46; PAYMENT_CIPHERTEXT = 47; PAYMENT_FUTUREPROOF = 48; PAYMENT_TRANSACTION_STATUS_UPDATE_FAILED = 49; PAYMENT_TRANSACTION_STATUS_UPDATE_REFUNDED = 50; PAYMENT_TRANSACTION_STATUS_UPDATE_REFUND_FAILED = 51; PAYMENT_TRANSACTION_STATUS_RECEIVER_PENDING_SETUP = 52; PAYMENT_TRANSACTION_STATUS_RECEIVER_SUCCESS_AFTER_HICCUP = 53; PAYMENT_ACTION_ACCOUNT_SETUP_REMINDER = 54; PAYMENT_ACTION_SEND_PAYMENT_REMINDER = 55; PAYMENT_ACTION_SEND_PAYMENT_INVITATION = 56; PAYMENT_ACTION_REQUEST_DECLINED = 57; PAYMENT_ACTION_REQUEST_EXPIRED = 58; PAYMENT_ACTION_REQUEST_CANCELLED = 59; BIZ_VERIFIED_TRANSITION_TOP_TO_BOTTOM = 60; BIZ_VERIFIED_TRANSITION_BOTTOM_TO_TOP = 61; BIZ_INTRO_TOP = 62; BIZ_INTRO_BOTTOM = 63; BIZ_NAME_CHANGE = 64; BIZ_MOVE_TO_CONSUMER_APP = 65; BIZ_TWO_TIER_MIGRATION_TOP = 66; BIZ_TWO_TIER_MIGRATION_BOTTOM = 67; OVERSIZED = 68; GROUP_CHANGE_NO_FREQUENTLY_FORWARDED = 69; GROUP_V4_ADD_INVITE_SENT = 70; GROUP_PARTICIPANT_ADD_REQUEST_JOIN = 71; CHANGE_EPHEMERAL_SETTING = 72; E2E_DEVICE_CHANGED = 73; VIEWED_ONCE = 74; E2E_ENCRYPTED_NOW = 75; BLUE_MSG_BSP_FB_TO_BSP_PREMISE = 76; BLUE_MSG_BSP_FB_TO_SELF_FB = 77; BLUE_MSG_BSP_FB_TO_SELF_PREMISE = 78; BLUE_MSG_BSP_FB_UNVERIFIED = 79; BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED = 80; BLUE_MSG_BSP_FB_VERIFIED = 81; BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED = 82; BLUE_MSG_BSP_PREMISE_TO_SELF_PREMISE = 83; BLUE_MSG_BSP_PREMISE_UNVERIFIED = 84; BLUE_MSG_BSP_PREMISE_UNVERIFIED_TO_SELF_PREMISE_VERIFIED = 85; BLUE_MSG_BSP_PREMISE_VERIFIED = 86; BLUE_MSG_BSP_PREMISE_VERIFIED_TO_SELF_PREMISE_UNVERIFIED = 87; BLUE_MSG_CONSUMER_TO_BSP_FB_UNVERIFIED = 88; BLUE_MSG_CONSUMER_TO_BSP_PREMISE_UNVERIFIED = 89; BLUE_MSG_CONSUMER_TO_SELF_FB_UNVERIFIED = 90; BLUE_MSG_CONSUMER_TO_SELF_PREMISE_UNVERIFIED = 91; BLUE_MSG_SELF_FB_TO_BSP_PREMISE = 92; BLUE_MSG_SELF_FB_TO_SELF_PREMISE = 93; BLUE_MSG_SELF_FB_UNVERIFIED = 94; BLUE_MSG_SELF_FB_UNVERIFIED_TO_SELF_PREMISE_VERIFIED = 95; BLUE_MSG_SELF_FB_VERIFIED = 96; BLUE_MSG_SELF_FB_VERIFIED_TO_SELF_PREMISE_UNVERIFIED = 97; BLUE_MSG_SELF_PREMISE_TO_BSP_PREMISE = 98; BLUE_MSG_SELF_PREMISE_UNVERIFIED = 99; BLUE_MSG_SELF_PREMISE_VERIFIED = 100; BLUE_MSG_TO_BSP_FB = 101; BLUE_MSG_TO_CONSUMER = 102; BLUE_MSG_TO_SELF_FB = 103; BLUE_MSG_UNVERIFIED_TO_BSP_FB_VERIFIED = 104; BLUE_MSG_UNVERIFIED_TO_BSP_PREMISE_VERIFIED = 105; BLUE_MSG_UNVERIFIED_TO_SELF_FB_VERIFIED = 106; BLUE_MSG_UNVERIFIED_TO_VERIFIED = 107; BLUE_MSG_VERIFIED_TO_BSP_FB_UNVERIFIED = 108; BLUE_MSG_VERIFIED_TO_BSP_PREMISE_UNVERIFIED = 109; BLUE_MSG_VERIFIED_TO_SELF_FB_UNVERIFIED = 110; BLUE_MSG_VERIFIED_TO_UNVERIFIED = 111; BLUE_MSG_BSP_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED = 112; BLUE_MSG_BSP_FB_UNVERIFIED_TO_SELF_FB_VERIFIED = 113; BLUE_MSG_BSP_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED = 114; BLUE_MSG_BSP_FB_VERIFIED_TO_SELF_FB_UNVERIFIED = 115; BLUE_MSG_SELF_FB_UNVERIFIED_TO_BSP_PREMISE_VERIFIED = 116; BLUE_MSG_SELF_FB_VERIFIED_TO_BSP_PREMISE_UNVERIFIED = 117; E2E_IDENTITY_UNAVAILABLE = 118; } 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; }