syntax = "proto2"; package WAWebProtobufsE2E; option go_package = "go.mau.fi/whatsmeow/proto/waE2E"; import "waAdv/WAAdv.proto"; import "waCompanionReg/WAWebProtobufsCompanionReg.proto"; import "waMmsRetry/WAMmsRetry.proto"; import "waCommon/WACommon.proto"; enum PeerDataOperationRequestType { UPLOAD_STICKER = 0; SEND_RECENT_STICKER_BOOTSTRAP = 1; GENERATE_LINK_PREVIEW = 2; HISTORY_SYNC_ON_DEMAND = 3; PLACEHOLDER_MESSAGE_RESEND = 4; WAFFLE_LINKING_NONCE_FETCH = 5; FULL_HISTORY_SYNC_ON_DEMAND = 6; } enum SessionSource { NULL_STATE = 1; TYPEAHEAD = 2; USER_INPUT = 3; EMU_FLASH = 4; EMU_FLASH_FOLLOWUP = 5; VOICE = 6; } enum KeepType { UNKNOWN = 0; KEEP_FOR_ALL = 1; UNDO_KEEP_FOR_ALL = 2; } message PlaceholderMessage { enum PlaceholderType { MASK_LINKED_DEVICES = 0; } optional PlaceholderType type = 1; } message BCallMessage { enum MediaType { UNKNOWN = 0; AUDIO = 1; VIDEO = 2; } optional string sessionID = 1; optional MediaType mediaType = 2; optional bytes masterKey = 3; optional string caption = 4; } message CallLogMessage { enum CallOutcome { CONNECTED = 0; MISSED = 1; FAILED = 2; REJECTED = 3; ACCEPTED_ELSEWHERE = 4; ONGOING = 5; SILENCED_BY_DND = 6; SILENCED_UNKNOWN_CALLER = 7; } enum CallType { REGULAR = 0; SCHEDULED_CALL = 1; VOICE_CHAT = 2; } message CallParticipant { optional string JID = 1; optional CallOutcome callOutcome = 2; } optional bool isVideo = 1; optional CallOutcome callOutcome = 2; optional int64 durationSecs = 3; optional CallType callType = 4; repeated CallParticipant participants = 5; } message ScheduledCallEditMessage { enum EditType { UNKNOWN = 0; CANCEL = 1; } optional WACommon.MessageKey key = 1; optional EditType editType = 2; } message ScheduledCallCreationMessage { enum CallType { UNKNOWN = 0; VOICE = 1; VIDEO = 2; } optional int64 scheduledTimestampMS = 1; optional CallType callType = 2; optional string title = 3; } message EventResponseMessage { enum EventResponseType { UNKNOWN = 0; GOING = 1; NOT_GOING = 2; MAYBE = 3; } optional EventResponseType response = 1; optional int64 timestampMS = 2; optional int32 extraGuestCount = 3; } message PinInChatMessage { enum Type { UNKNOWN_TYPE = 0; PIN_FOR_ALL = 1; UNPIN_FOR_ALL = 2; } optional WACommon.MessageKey key = 1; optional Type type = 2; optional int64 senderTimestampMS = 3; } message ButtonsResponseMessage { enum Type { UNKNOWN = 0; DISPLAY_TEXT = 1; } oneof response { string selectedDisplayText = 2; } optional string selectedButtonID = 1; optional ContextInfo contextInfo = 3; optional Type type = 4; } message ButtonsMessage { enum HeaderType { UNKNOWN = 0; EMPTY = 1; TEXT = 2; DOCUMENT = 3; IMAGE = 4; VIDEO = 5; LOCATION = 6; } message Button { enum Type { UNKNOWN = 0; RESPONSE = 1; NATIVE_FLOW = 2; } message NativeFlowInfo { optional string name = 1; optional string paramsJSON = 2; } message ButtonText { optional string displayText = 1; } optional string buttonID = 1; optional ButtonText buttonText = 2; optional Type type = 3; optional NativeFlowInfo nativeFlowInfo = 4; } oneof header { string text = 1; DocumentMessage documentMessage = 2; ImageMessage imageMessage = 3; VideoMessage videoMessage = 4; LocationMessage locationMessage = 5; } optional string contentText = 6; optional string footerText = 7; optional ContextInfo contextInfo = 8; repeated Button buttons = 9; optional HeaderType headerType = 10; } message SecretEncryptedMessage { enum SecretEncType { UNKNOWN = 0; EVENT_EDIT = 1; } optional WACommon.MessageKey targetMessageKey = 1; optional bytes encPayload = 2; optional bytes encIV = 3; optional SecretEncType secretEncType = 4; } message GroupInviteMessage { enum GroupType { DEFAULT = 0; PARENT = 1; } 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; } message InteractiveResponseMessage { message Body { enum Format { DEFAULT = 0; EXTENSIONS_1 = 1; } optional string text = 1; optional Format format = 2; } message NativeFlowResponseMessage { optional string name = 1; optional string paramsJSON = 2; optional int32 version = 3; } oneof interactiveResponseMessage { NativeFlowResponseMessage nativeFlowResponseMessage = 2; } optional Body body = 1; optional ContextInfo contextInfo = 15; } message InteractiveMessage { message ShopMessage { enum Surface { UNKNOWN_SURFACE = 0; FB = 1; IG = 2; WA = 3; } optional string ID = 1; optional Surface surface = 2; optional int32 messageVersion = 3; } message CarouselMessage { repeated InteractiveMessage cards = 1; optional int32 messageVersion = 2; } message NativeFlowMessage { message NativeFlowButton { optional string name = 1; optional string buttonParamsJSON = 2; } repeated NativeFlowButton buttons = 1; optional string messageParamsJSON = 2; optional int32 messageVersion = 3; } message CollectionMessage { optional string bizJID = 1; optional string ID = 2; optional int32 messageVersion = 3; } message Footer { optional string text = 1; } message Body { optional string text = 1; } message Header { oneof media { DocumentMessage documentMessage = 3; ImageMessage imageMessage = 4; bytes JPEGThumbnail = 6; VideoMessage videoMessage = 7; LocationMessage locationMessage = 8; ProductMessage productMessage = 9; } optional string title = 1; optional string subtitle = 2; optional bool hasMediaAttachment = 5; } oneof interactiveMessage { ShopMessage shopStorefrontMessage = 4; CollectionMessage collectionMessage = 5; NativeFlowMessage nativeFlowMessage = 6; CarouselMessage carouselMessage = 7; } optional Header header = 1; optional Body body = 2; optional Footer footer = 3; optional ContextInfo contextInfo = 15; } message ListResponseMessage { enum ListType { UNKNOWN = 0; SINGLE_SELECT = 1; } message SingleSelectReply { optional string selectedRowID = 1; } optional string title = 1; optional ListType listType = 2; optional SingleSelectReply singleSelectReply = 3; optional ContextInfo contextInfo = 4; optional string description = 5; } message ListMessage { enum ListType { UNKNOWN = 0; SINGLE_SELECT = 1; PRODUCT_LIST = 2; } message ProductListInfo { repeated ProductSection productSections = 1; optional ProductListHeaderImage headerImage = 2; optional string businessOwnerJID = 3; } message ProductListHeaderImage { optional string productID = 1; optional bytes JPEGThumbnail = 2; } message ProductSection { optional string title = 1; repeated Product products = 2; } message Product { optional string productID = 1; } message Section { optional string title = 1; repeated Row rows = 2; } message Row { optional string title = 1; optional string description = 2; optional string rowID = 3; } 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; } message OrderMessage { enum OrderSurface { CATALOG = 1; } enum OrderStatus { INQUIRY = 1; ACCEPTED = 2; DECLINED = 3; } 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; optional int32 messageVersion = 12; optional WACommon.MessageKey orderRequestMessageID = 13; } message PaymentInviteMessage { enum ServiceType { UNKNOWN = 0; FBPAY = 1; NOVI = 2; UPI = 3; } optional ServiceType serviceType = 1; optional int64 expiryTimestamp = 2; } message HighlyStructuredMessage { message HSMLocalizableParameter { message HSMDateTime { message HSMDateTimeComponent { enum CalendarType { GREGORIAN = 1; SOLAR_HIJRI = 2; } enum DayOfWeekType { MONDAY = 1; TUESDAY = 2; WEDNESDAY = 3; THURSDAY = 4; FRIDAY = 5; SATURDAY = 6; SUNDAY = 7; } 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; } message HSMDateTimeUnixEpoch { optional int64 timestamp = 1; } oneof datetimeOneof { HSMDateTimeComponent component = 1; HSMDateTimeUnixEpoch unixEpoch = 2; } } message HSMCurrency { optional string currencyCode = 1; optional int64 amount1000 = 2; } oneof paramOneof { HSMCurrency currency = 2; HSMDateTime dateTime = 3; } optional string default = 1; } 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 PeerDataOperationRequestResponseMessage { message PeerDataOperationResult { enum FullHistorySyncOnDemandResponseCode { REQUEST_SUCCESS = 0; REQUEST_TIME_EXPIRED = 1; DECLINED_SHARING_HISTORY = 2; GENERIC_ERROR = 3; } message WaffleNonceFetchResponse { optional string nonce = 1; optional string waEntFbid = 2; } message FullHistorySyncOnDemandRequestResponse { optional FullHistorySyncOnDemandRequestMetadata requestMetadata = 1; optional FullHistorySyncOnDemandResponseCode responseCode = 2; } message PlaceholderMessageResendResponse { optional bytes webMessageInfoBytes = 1; } message LinkPreviewResponse { message LinkPreviewHighQualityThumbnail { optional string directPath = 1; optional string thumbHash = 2; optional string encThumbHash = 3; optional bytes mediaKey = 4; optional int64 mediaKeyTimestampMS = 5; optional int32 thumbWidth = 6; optional int32 thumbHeight = 7; } optional string URL = 1; optional string title = 2; optional string description = 3; optional bytes thumbData = 4; optional string canonicalURL = 5; optional string matchText = 6; optional string previewType = 7; optional LinkPreviewHighQualityThumbnail hqThumbnail = 8; } optional WAMmsRetry.MediaRetryNotification.ResultType mediaUploadResult = 1; optional StickerMessage stickerMessage = 2; optional LinkPreviewResponse linkPreviewResponse = 3; optional PlaceholderMessageResendResponse placeholderMessageResendResponse = 4; optional WaffleNonceFetchResponse waffleNonceFetchRequestResponse = 5; optional FullHistorySyncOnDemandRequestResponse fullHistorySyncOnDemandRequestResponse = 6; } optional PeerDataOperationRequestType peerDataOperationRequestType = 1; optional string stanzaID = 2; repeated PeerDataOperationResult peerDataOperationResult = 3; } message HistorySyncNotification { enum HistorySyncType { INITIAL_BOOTSTRAP = 0; INITIAL_STATUS_V3 = 1; FULL = 2; RECENT = 3; PUSH_NAME = 4; NON_BLOCKING_DATA = 5; ON_DEMAND = 6; NO_HISTORY = 7; } 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; optional int64 oldestMsgInChunkTimestampSec = 10; optional bytes initialHistBootstrapInlinePayload = 11; optional string peerDataRequestSessionID = 12; optional FullHistorySyncOnDemandRequestMetadata fullHistorySyncOnDemandRequestMetadata = 13; optional string encHandle = 14; } message RequestWelcomeMessageMetadata { enum LocalChatState { EMPTY = 0; NON_EMPTY = 1; } optional LocalChatState localChatState = 1; } message ProtocolMessage { 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; MESSAGE_EDIT = 14; PEER_DATA_OPERATION_REQUEST_MESSAGE = 16; PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE = 17; REQUEST_WELCOME_MESSAGE = 18; BOT_FEEDBACK_MESSAGE = 19; MEDIA_NOTIFY_MESSAGE = 20; CLOUD_API_THREAD_CONTROL_NOTIFICATION = 21; LID_MIGRATION_MAPPING_SYNC = 22; REMINDER_MESSAGE = 23; BOT_MEMU_ONBOARDING_MESSAGE = 24; STATUS_MENTION_MESSAGE = 25; } optional WACommon.MessageKey key = 1; optional Type 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; optional DisappearingMode disappearingMode = 11; optional Message editedMessage = 14; optional int64 timestampMS = 15; optional PeerDataOperationRequestMessage peerDataOperationRequestMessage = 16; optional PeerDataOperationRequestResponseMessage peerDataOperationRequestResponseMessage = 17; optional BotFeedbackMessage botFeedbackMessage = 18; optional string invokerJID = 19; optional RequestWelcomeMessageMetadata requestWelcomeMessageMetadata = 20; optional MediaNotifyMessage mediaNotifyMessage = 21; optional CloudAPIThreadControlNotification cloudApiThreadControlNotification = 22; optional LIDMigrationMappingSyncMessage lidMigrationMappingSyncMessage = 23; } message CloudAPIThreadControlNotification { enum CloudAPIThreadControl { UNKNOWN = 0; CONTROL_PASSED = 1; CONTROL_TAKEN = 2; } optional CloudAPIThreadControl status = 1; optional int64 senderNotificationTimestampMS = 2; optional string consumerLid = 3; optional string consumerPhoneNumber = 4; } message BotFeedbackMessage { enum ReportKind { GENERIC = 0; } enum BotFeedbackKindMultiplePositive { BOT_FEEDBACK_MULTIPLE_POSITIVE_GENERIC = 1; } enum BotFeedbackKindMultipleNegative { BOT_FEEDBACK_MULTIPLE_NEGATIVE_GENERIC = 1; BOT_FEEDBACK_MULTIPLE_NEGATIVE_HELPFUL = 2; BOT_FEEDBACK_MULTIPLE_NEGATIVE_INTERESTING = 4; BOT_FEEDBACK_MULTIPLE_NEGATIVE_ACCURATE = 8; BOT_FEEDBACK_MULTIPLE_NEGATIVE_SAFE = 16; BOT_FEEDBACK_MULTIPLE_NEGATIVE_OTHER = 32; BOT_FEEDBACK_MULTIPLE_NEGATIVE_REFUSED = 64; BOT_FEEDBACK_MULTIPLE_NEGATIVE_NOT_VISUALLY_APPEALING = 128; BOT_FEEDBACK_MULTIPLE_NEGATIVE_NOT_RELEVANT_TO_TEXT = 256; } enum BotFeedbackKind { BOT_FEEDBACK_POSITIVE = 0; BOT_FEEDBACK_NEGATIVE_GENERIC = 1; BOT_FEEDBACK_NEGATIVE_HELPFUL = 2; BOT_FEEDBACK_NEGATIVE_INTERESTING = 3; BOT_FEEDBACK_NEGATIVE_ACCURATE = 4; BOT_FEEDBACK_NEGATIVE_SAFE = 5; BOT_FEEDBACK_NEGATIVE_OTHER = 6; BOT_FEEDBACK_NEGATIVE_REFUSED = 7; BOT_FEEDBACK_NEGATIVE_NOT_VISUALLY_APPEALING = 8; BOT_FEEDBACK_NEGATIVE_NOT_RELEVANT_TO_TEXT = 9; } optional WACommon.MessageKey messageKey = 1; optional BotFeedbackKind kind = 2; optional string text = 3; optional uint64 kindNegative = 4; optional uint64 kindPositive = 5; optional ReportKind kindReport = 6; } message VideoMessage { enum Attribution { NONE = 0; GIPHY = 1; TENOR = 2; } 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; repeated InteractiveAnnotation annotations = 25; optional string accessibilityLabel = 26; repeated ProcessedVideo processedVideos = 27; } message ExtendedTextMessage { enum InviteLinkGroupType { DEFAULT = 0; PARENT = 1; SUB = 2; DEFAULT_SUB = 3; } enum PreviewType { NONE = 0; VIDEO = 1; PLACEHOLDER = 4; IMAGE = 5; PAYMENT_LINKS = 6; } enum FontType { SYSTEM = 0; SYSTEM_TEXT = 1; FB_SCRIPT = 2; SYSTEM_BOLD = 6; MORNINGBREEZE_REGULAR = 7; CALISTOGA_REGULAR = 8; EXO2_EXTRABOLD = 9; COURIERPRIME_BOLD = 10; } 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; optional bool viewOnce = 30; optional uint32 videoHeight = 31; optional uint32 videoWidth = 32; } message InvoiceMessage { enum AttachmentType { IMAGE = 0; PDF = 1; } 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; } message ImageMessage { enum ImageSourceType { USER_IMAGE = 0; AI_GENERATED = 1; AI_MODIFIED = 2; } 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; repeated InteractiveAnnotation annotations = 30; optional ImageSourceType imageSourceType = 31; optional string accessibilityLabel = 32; } message ContextInfo { message ForwardedNewsletterMessageInfo { enum ContentType { UPDATE = 1; UPDATE_CARD = 2; LINK_CARD = 3; } optional string newsletterJID = 1; optional int32 serverMessageID = 2; optional string newsletterName = 3; optional ContentType contentType = 4; optional string accessibilityText = 5; } message ExternalAdReplyInfo { enum MediaType { NONE = 0; IMAGE = 1; VIDEO = 2; } 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; optional string ctwaClid = 13; optional string ref = 14; optional bool clickToWhatsappCall = 15; optional bool adContextPreviewDismissed = 16; } message AdReplyInfo { enum MediaType { NONE = 0; IMAGE = 1; VIDEO = 2; } optional string advertiserName = 1; optional MediaType mediaType = 2; optional bytes JPEGThumbnail = 16; optional string caption = 17; } message FeatureEligibilities { optional bool cannotBeReactedTo = 1; optional bool cannotBeRanked = 2; optional bool canRequestFeedback = 3; } message DataSharingContext { message Parameters { optional string key = 1; optional string stringData = 2; optional int64 intData = 3; optional float floatData = 4; optional Parameters contents = 5; } optional bool showMmDisclosure = 1; optional string encryptedSignalTokenConsented = 2; repeated Parameters parameters = 3; } message UTMInfo { optional string utmSource = 1; optional string utmCampaign = 2; } message BusinessMessageForwardInfo { optional string businessOwnerJID = 1; } 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 WACommon.MessageKey placeholderKey = 24; optional uint32 expiration = 25; 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; optional string trustBannerType = 37; optional uint32 trustBannerAction = 38; optional bool isSampled = 39; repeated GroupMention groupMentions = 40; optional UTMInfo utm = 41; optional ForwardedNewsletterMessageInfo forwardedNewsletterMessageInfo = 43; optional BusinessMessageForwardInfo businessMessageForwardInfo = 44; optional string smbClientCampaignID = 45; optional string smbServerCampaignID = 46; optional DataSharingContext dataSharingContext = 47; optional bool alwaysShowAdAttribution = 48; optional FeatureEligibilities featureEligibilities = 49; optional string entryPointConversionExternalSource = 50; optional string entryPointConversionExternalMedium = 51; } message BotPluginMetadata { enum PluginType { REELS = 1; SEARCH = 2; } enum SearchProvider { BING = 1; GOOGLE = 2; } optional SearchProvider provider = 1; optional PluginType pluginType = 2; optional string thumbnailCDNURL = 3; optional string profilePhotoCDNURL = 4; optional string searchProviderURL = 5; optional uint32 referenceIndex = 6; optional uint32 expectedLinksCount = 7; optional string searchQuery = 9; optional WACommon.MessageKey parentPluginMessageKey = 10; optional PluginType deprecatedField = 11; optional PluginType parentPluginType = 12; } message BotMediaMetadata { enum OrientationType { CENTER = 1; LEFT = 2; RIGHT = 3; } optional string fileSHA256 = 1; optional string mediaKey = 2; optional string fileEncSHA256 = 3; optional string directPath = 4; optional int64 mediaKeyTimestamp = 5; optional string mimetype = 6; optional OrientationType orientationType = 7; } message BotReminderMetadata { enum ReminderFrequency { ONCE = 1; DAILY = 2; WEEKLY = 3; BIWEEKLY = 4; MONTHLY = 5; } enum ReminderAction { NOTIFY = 1; CREATE = 2; DELETE = 3; UPDATE = 4; } optional WACommon.MessageKey requestMessageKey = 1; optional ReminderAction action = 2; optional string name = 3; optional uint64 nextTriggerTimestamp = 4; optional ReminderFrequency frequency = 5; } message BotModelMetadata { enum PremiumModelStatus { AVAILABLE = 1; QUOTA_EXCEED_LIMIT = 2; } enum ModelType { LLAMA_PROD = 1; LLAMA_PROD_PREMIUM = 2; } optional ModelType modelType = 1; optional PremiumModelStatus premiumModelStatus = 2; } message MessageAssociation { enum AssociationType { UNKNOWN = 0; MEDIA_ALBUM = 1; BOT_PLUGIN = 2; EVENT_COVER_IMAGE = 3; STATUS_POLL = 4; } optional AssociationType associationType = 1; optional WACommon.MessageKey parentMessageKey = 2; } message MessageContextInfo { enum MessageAddonExpiryType { STATIC = 1; DEPENDENT_ON_PARENT = 2; } optional DeviceListMetadata deviceListMetadata = 1; optional int32 deviceListMetadataVersion = 2; optional bytes messageSecret = 3; optional bytes paddingBytes = 4; optional uint32 messageAddOnDurationInSecs = 5; optional bytes botMessageSecret = 6; optional BotMetadata botMetadata = 7; optional int32 reportingTokenVersion = 8; optional MessageAddonExpiryType messageAddOnExpiryType = 9; optional MessageAssociation messageAssociation = 10; optional bool capiCreatedGroup = 11; optional string supportPayload = 12; } message HydratedTemplateButton { message HydratedURLButton { enum WebviewPresentationType { FULL = 1; TALL = 2; COMPACT = 3; } optional string displayText = 1; optional string URL = 2; optional string consentedUsersURL = 3; optional WebviewPresentationType webviewPresentation = 4; } message HydratedCallButton { optional string displayText = 1; optional string phoneNumber = 2; } message HydratedQuickReplyButton { optional string displayText = 1; optional string ID = 2; } oneof hydratedButton { HydratedQuickReplyButton quickReplyButton = 1; HydratedURLButton urlButton = 2; HydratedCallButton callButton = 3; } optional uint32 index = 4; } message PaymentBackground { enum Type { UNKNOWN = 0; DEFAULT = 1; } message MediaData { optional bytes mediaKey = 1; optional int64 mediaKeyTimestamp = 2; optional bytes fileSHA256 = 3; optional bytes fileEncSHA256 = 4; optional string directPath = 5; } 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 DisappearingMode { enum Trigger { UNKNOWN = 0; CHAT_SETTING = 1; ACCOUNT_SETTING = 2; BULK_CHANGE = 3; BIZ_SUPPORTS_FB_HOSTING = 4; UNKNOWN_GROUPS = 5; } enum Initiator { CHANGED_IN_CHAT = 0; INITIATED_BY_ME = 1; INITIATED_BY_OTHER = 2; BIZ_UPGRADE_FB_HOSTING = 3; } optional Initiator initiator = 1; optional Trigger trigger = 2; optional string initiatorDeviceJID = 3; optional bool initiatedByMe = 4; } message ProcessedVideo { enum VideoQuality { UNDEFINED = 0; LOW = 1; MID = 2; HIGH = 3; } optional string directPath = 1; optional bytes fileSHA256 = 2; optional uint32 height = 3; optional uint32 width = 4; optional uint64 fileLength = 5; optional uint32 bitrate = 6; optional VideoQuality quality = 7; repeated string capabilities = 8; } 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; 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; optional EncReactionMessage encReactionMessage = 56; optional FutureProofMessage editedMessage = 58; optional FutureProofMessage viewOnceMessageV2Extension = 59; optional PollCreationMessage pollCreationMessageV2 = 60; optional ScheduledCallCreationMessage scheduledCallCreationMessage = 61; optional FutureProofMessage groupMentionedMessage = 62; optional PinInChatMessage pinInChatMessage = 63; optional PollCreationMessage pollCreationMessageV3 = 64; optional ScheduledCallEditMessage scheduledCallEditMessage = 65; optional VideoMessage ptvMessage = 66; optional FutureProofMessage botInvokeMessage = 67; optional CallLogMessage callLogMesssage = 69; optional MessageHistoryBundle messageHistoryBundle = 70; optional EncCommentMessage encCommentMessage = 71; optional BCallMessage bcallMessage = 72; optional FutureProofMessage lottieStickerMessage = 74; optional EventMessage eventMessage = 75; optional EncEventResponseMessage encEventResponseMessage = 76; optional CommentMessage commentMessage = 77; optional NewsletterAdminInviteMessage newsletterAdminInviteMessage = 78; optional PlaceholderMessage placeholderMessage = 80; optional SecretEncryptedMessage secretEncryptedMessage = 82; optional AlbumMessage albumMessage = 83; optional FutureProofMessage eventCoverImage = 85; optional StickerPackMessage stickerPackMessage = 86; optional FutureProofMessage statusMentionMessage = 87; optional PollResultSnapshotMessage pollResultSnapshotMessage = 88; } message StickerPackMessage { message Sticker { optional string fileName = 1; optional bool isAnimated = 2; repeated string emojis = 3; optional string accessibilityLabel = 4; optional bool isLottie = 5; optional string mimetype = 6; } optional string stickerPackID = 1; optional string name = 2; optional string publisher = 3; repeated Sticker stickers = 4; optional uint64 fileSize = 5; optional bytes fileSHA256 = 6; optional bytes fileEncSHA256 = 7; optional bytes mediaKey = 8; optional string directPath = 9; optional string caption = 10; optional ContextInfo contextInfo = 11; optional string packDescription = 12; optional int64 mediaKeyTimestamp = 13; optional string trayIconFileName = 14; optional string thumbnailDirectPath = 15; optional bytes thumbnailSHA256 = 16; optional bytes thumbnailEncSHA256 = 17; optional uint32 thumbnailHeight = 18; optional uint32 thumbnailWidth = 19; } message AlbumMessage { optional string caption = 1; optional ContextInfo contextInfo = 17; } message MessageHistoryBundle { optional string mimetype = 2; optional bytes fileSHA256 = 3; optional bytes mediaKey = 5; optional bytes fileEncSHA256 = 6; optional string directPath = 7; optional int64 mediaKeyTimestamp = 8; optional ContextInfo contextInfo = 9; repeated string participants = 10; } message EncEventResponseMessage { optional WACommon.MessageKey eventCreationMessageKey = 1; optional bytes encPayload = 2; optional bytes encIV = 3; } message EventMessage { optional ContextInfo contextInfo = 1; optional bool isCanceled = 2; optional string name = 3; optional string description = 4; optional LocationMessage location = 5; optional string joinLink = 6; optional int64 startTime = 7; optional int64 endTime = 8; optional bool extraGuestsAllowed = 9; } message CommentMessage { optional Message message = 1; optional WACommon.MessageKey targetMessageKey = 2; } message EncCommentMessage { optional WACommon.MessageKey targetMessageKey = 1; optional bytes encPayload = 2; optional bytes encIV = 3; } message EncReactionMessage { optional WACommon.MessageKey targetMessageKey = 1; optional bytes encPayload = 2; optional bytes encIV = 3; } message KeepInChatMessage { optional WACommon.MessageKey key = 1; optional KeepType keepType = 2; optional int64 timestampMS = 3; } message PollResultSnapshotMessage { message PollVote { optional string optionName = 1; optional int64 optionVoteCount = 2; } optional string name = 1; repeated PollVote pollVotes = 2; optional ContextInfo contextInfo = 3; } message PollVoteMessage { repeated bytes selectedOptions = 1; } message PollEncValue { optional bytes encPayload = 1; optional bytes encIV = 2; } message PollUpdateMessageMetadata { } message PollUpdateMessage { optional WACommon.MessageKey pollCreationMessageKey = 1; optional PollEncValue vote = 2; optional PollUpdateMessageMetadata metadata = 3; optional int64 senderTimestampMS = 4; } message PollCreationMessage { message Option { optional string optionName = 1; } optional bytes encKey = 1; optional string name = 2; repeated Option options = 3; optional uint32 selectableOptionsCount = 4; optional ContextInfo contextInfo = 5; } message StickerSyncRMRMessage { repeated string filehash = 1; optional string rmrSource = 2; optional int64 requestTimestamp = 3; } message ReactionMessage { optional WACommon.MessageKey key = 1; optional string text = 2; optional string groupingKey = 3; optional int64 senderTimestampMS = 4; } message FutureProofMessage { optional Message message = 1; } message DeviceSentMessage { optional string destinationJID = 1; optional Message message = 2; optional string phash = 3; } message RequestPhoneNumberMessage { optional ContextInfo contextInfo = 1; } message NewsletterAdminInviteMessage { optional string newsletterJID = 1; optional string newsletterName = 2; optional bytes JPEGThumbnail = 3; optional string caption = 4; optional int64 inviteExpiration = 5; optional ContextInfo contextInfo = 6; } message ProductMessage { 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; optional int64 salePriceAmount1000 = 12; } message CatalogSnapshot { optional ImageMessage catalogImage = 1; optional string title = 2; optional string description = 3; } 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 TemplateButtonReplyMessage { optional string selectedID = 1; optional string selectedDisplayText = 2; optional ContextInfo contextInfo = 3; optional uint32 selectedIndex = 4; optional uint32 selectedCarouselCardIndex = 5; } message TemplateMessage { message HydratedFourRowTemplate { oneof title { DocumentMessage documentMessage = 1; string hydratedTitleText = 2; ImageMessage imageMessage = 3; VideoMessage videoMessage = 4; LocationMessage locationMessage = 5; } optional string hydratedContentText = 6; optional string hydratedFooterText = 7; repeated HydratedTemplateButton hydratedButtons = 8; optional string templateID = 9; optional bool maskLinkedDevices = 10; } message FourRowTemplate { oneof title { DocumentMessage documentMessage = 1; HighlyStructuredMessage highlyStructuredMessage = 2; ImageMessage imageMessage = 3; VideoMessage videoMessage = 4; LocationMessage locationMessage = 5; } optional HighlyStructuredMessage content = 6; optional HighlyStructuredMessage footer = 7; repeated TemplateButton buttons = 8; } oneof format { FourRowTemplate fourRowTemplate = 1; HydratedFourRowTemplate hydratedFourRowTemplate = 2; InteractiveMessage interactiveMessageTemplate = 5; } optional ContextInfo contextInfo = 3; optional HydratedFourRowTemplate hydratedTemplate = 4; optional string templateID = 9; } 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; optional int64 stickerSentTS = 18; optional bool isAvatar = 19; optional bool isAiSticker = 20; optional bool isLottie = 21; optional string accessibilityLabel = 22; } 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 CancelPaymentRequestMessage { optional WACommon.MessageKey key = 1; } message DeclinePaymentRequestMessage { optional WACommon.MessageKey key = 1; } 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 SendPaymentMessage { optional Message noteMessage = 2; optional WACommon.MessageKey requestMessageKey = 3; optional PaymentBackground background = 4; } message ContactsArrayMessage { optional string displayName = 1; repeated ContactMessage contacts = 2; optional ContextInfo contextInfo = 17; } message InitialSecurityNotificationSettingSync { optional bool securityNotificationEnabled = 1; } message PeerDataOperationRequestMessage { message PlaceholderMessageResendRequest { optional WACommon.MessageKey messageKey = 1; } message FullHistorySyncOnDemandRequest { optional FullHistorySyncOnDemandRequestMetadata requestMetadata = 1; optional WAWebProtobufsCompanionReg.DeviceProps.HistorySyncConfig historySyncConfig = 2; } message HistorySyncOnDemandRequest { optional string chatJID = 1; optional string oldestMsgID = 2; optional bool oldestMsgFromMe = 3; optional int32 onDemandMsgCount = 4; optional int64 oldestMsgTimestampMS = 5; } message RequestUrlPreview { optional string URL = 1; optional bool includeHqThumbnail = 2; } message RequestStickerReupload { optional string fileSHA256 = 1; } optional PeerDataOperationRequestType peerDataOperationRequestType = 1; repeated RequestStickerReupload requestStickerReupload = 2; repeated RequestUrlPreview requestURLPreview = 3; optional HistorySyncOnDemandRequest historySyncOnDemandRequest = 4; repeated PlaceholderMessageResendRequest placeholderMessageResendRequest = 5; optional FullHistorySyncOnDemandRequest fullHistorySyncOnDemandRequest = 6; } message FullHistorySyncOnDemandRequestMetadata { optional string requestID = 1; } message AppStateFatalExceptionNotification { repeated string collectionNames = 1; optional int64 timestamp = 2; } message AppStateSyncKeyRequest { repeated AppStateSyncKeyId keyIDs = 1; } message AppStateSyncKeyShare { repeated AppStateSyncKey keys = 1; } message AppStateSyncKeyData { optional bytes keyData = 1; optional 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 AppStateSyncKey { optional AppStateSyncKeyId keyID = 1; optional AppStateSyncKeyData keyData = 2; } message Chat { optional string displayName = 1; optional string ID = 2; } message Call { optional bytes callKey = 1; optional string conversionSource = 2; optional bytes conversionData = 3; optional uint32 conversionDelaySeconds = 4; } 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; optional fixed32 backgroundArgb = 20; optional bool viewOnce = 21; optional string accessibilityLabel = 22; } 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; optional string accessibilityLabel = 21; } 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 ContactMessage { optional string displayName = 1; optional string vcard = 16; optional ContextInfo contextInfo = 17; } message SenderKeyDistributionMessage { optional string groupID = 1; optional bytes axolotlSenderKeyDistributionMessage = 2; } message BotAvatarMetadata { optional uint32 sentiment = 1; optional string behaviorGraph = 2; optional uint32 action = 3; optional uint32 intensity = 4; optional uint32 wordCount = 5; } message BotSuggestedPromptMetadata { repeated string suggestedPrompts = 1; optional uint32 selectedPromptIndex = 2; } message BotSessionMetadata { optional string sessionID = 1; optional SessionSource sessionSource = 2; } message BotMemuMetadata { repeated BotMediaMetadata faceImages = 1; } message BotMetadata { optional BotAvatarMetadata avatarMetadata = 1; optional string personaID = 2; optional BotPluginMetadata pluginMetadata = 3; optional BotSuggestedPromptMetadata suggestedPromptMetadata = 4; optional string invokerJID = 5; optional BotSessionMetadata searchMetadata = 6; optional BotMemuMetadata memuMetadata = 7; optional string timezone = 8; optional BotReminderMetadata reminderMetadata = 9; optional BotModelMetadata modelMetadata = 10; } message DeviceListMetadata { optional bytes senderKeyHash = 1; optional uint64 senderTimestamp = 2; repeated uint32 senderKeyIndexes = 3 [packed=true]; optional WAAdv.ADVEncryptionType senderAccountType = 4; optional WAAdv.ADVEncryptionType receiverAccountType = 5; optional bytes recipientKeyHash = 8; optional uint64 recipientTimestamp = 9; repeated uint32 recipientKeyIndexes = 10 [packed=true]; } message EmbeddedMessage { optional string stanzaID = 1; optional Message message = 2; } message EmbeddedMusic { optional string musicContentMediaID = 1; optional string songID = 2; optional string author = 3; optional string title = 4; optional string artworkDirectPath = 5; optional bytes artworkSHA256 = 6; optional bytes artworkEncSHA256 = 7; optional string artistAttribution = 8; optional bytes countryBlocklist = 9; } message EmbeddedContent { oneof content { EmbeddedMessage embeddedMessage = 1; EmbeddedMusic embeddedMusic = 2; } } message InteractiveAnnotation { oneof action { Location location = 2; ContextInfo.ForwardedNewsletterMessageInfo newsletter = 3; bool embeddedAction = 6; } repeated Point polygonVertices = 1; optional bool shouldSkipConfirmation = 4; optional EmbeddedContent embeddedContent = 5; } message Point { optional int32 xDeprecated = 1; optional int32 yDeprecated = 2; optional double x = 3; optional double y = 4; } message Location { optional double degreesLatitude = 1; optional double degreesLongitude = 2; optional string name = 3; } message TemplateButton { message CallButton { optional HighlyStructuredMessage displayText = 1; optional HighlyStructuredMessage phoneNumber = 2; } message URLButton { optional HighlyStructuredMessage displayText = 1; optional HighlyStructuredMessage URL = 2; } message QuickReplyButton { optional HighlyStructuredMessage displayText = 1; optional string ID = 2; } oneof button { QuickReplyButton quickReplyButton = 1; URLButton urlButton = 2; CallButton callButton = 3; } optional uint32 index = 4; } message Money { optional int64 value = 1; optional uint32 offset = 2; optional string currencyCode = 3; } message ActionLink { optional string URL = 1; optional string buttonTitle = 2; } message GroupMention { optional string groupJID = 1; optional string groupSubject = 2; } message MessageSecretMessage { optional sfixed32 version = 1; optional bytes encIV = 2; optional bytes encPayload = 3; } message MediaNotifyMessage { optional string expressPathURL = 1; optional bytes fileEncSHA256 = 2; optional uint64 fileLength = 3; } message LIDMigrationMappingSyncMessage { optional bytes encodedMappingPayload = 1; }