import "github.com/gTahidi/wapi.go/pkg/events"type AccountAlertEvent struct {
BaseBusinessAccountEvent
EntityType string
EntityId string
AlertSeverity AccountAlertSeverityEnum
AlertStatus AccountAlertStatusEnum
AlertType string
AlertDescription string
}func NewAccountAlertEvent(baseEvent *BaseBusinessAccountEvent, entityType string, entityId string, alertSeverity AccountAlertSeverityEnum, alertStatus AccountAlertStatusEnum, alertType string, alertDescription string) *AccountAlertEventtype AccountAlertSeverityEnum stringconst (
AccountAlertSeverityEnumCritical AccountAlertSeverityEnum = "CRITICAL"
AccountAlertSeverityEnumWarning AccountAlertSeverityEnum = "WARNING"
)type AccountAlertStatusEnum stringconst (
AccountAlertStatusEnumActive AccountAlertStatusEnum = "ACTIVE"
AccountAlertStatusEnumResolved AccountAlertStatusEnum = "RESOLVED"
)type AccountReviewUpdateEvent struct {
BaseBusinessAccountEvent
Decision AccountReviewUpdateEventEnum
}func NewAccountReviewUpdateEvent(baseEvent *BaseBusinessAccountEvent, decision AccountReviewUpdateEventEnum) *AccountReviewUpdateEventtype AccountReviewUpdateEventEnum stringconst (
AccountReviewUpdateEventEnumApproved AccountReviewUpdateEventEnum = "APPROVED"
AccountReviewUpdateEventEnumRejected AccountReviewUpdateEventEnum = "REJECTED"
)type AccountUpdateEvent struct {
BaseBusinessAccountEvent
StatusUpdate AccountUpdateEventEnum
PhoneNumber string
BanInfo *BanInfo
ViolationInfo *ViolationInfo
RestrictionInfo []RestrictionInfo
}func NewAccountUpdateEvent(baseEvent *BaseBusinessAccountEvent, statusUpdate AccountUpdateEventEnum, phoneNumber string) *AccountUpdateEventtype AccountUpdateEventEnum stringconst (
AccountUpdateEventEnumVerifiedAccount AccountUpdateEventEnum = "VERIFIED_ACCOUNT"
AccountUpdateEventEnumDisabledAccount AccountUpdateEventEnum = "DISABLED_UPDATE"
AccountUpdateEventEnumAccountViolation AccountUpdateEventEnum = "ACCOUNT_VIOLATION"
AccountUpdateEventEnumAccountRestriction AccountUpdateEventEnum = "ACCOUNT_RESTRICTION"
AccountUpdateEventEnumAccountDeleted AccountUpdateEventEnum = "ACCOUNT_DELETED"
AccountUpdateEventEnumPartnerRemoved AccountUpdateEventEnum = "PARTNER_REMOVED"
)AdInteractionEvent represents an ad interaction event.
type AdInteractionEvent struct {
BaseMessageEvent `json:",inline"`
AdSource AdSource `json:"adSource"`
Text string `json:"text"`
}func NewAdInteractionEvent(baseMessageEvent BaseMessageEvent, adSource AdSource, text string) *AdInteractionEventNewAdInteractionEvent creates a new instance of AdInteractionEvent.
AdInteractionSourceMediaType represents the media type of an ad interaction source.
type AdInteractionSourceMediaType stringconst (
// AdInteractionSourceMediaTypeImage indicates that the ad interaction source is an image.
AdInteractionSourceMediaTypeImage AdInteractionSourceMediaType = "image"
// AdInteractionSourceMediaTypeVideo indicates that the ad interaction source is a video.
AdInteractionSourceMediaTypeVideo AdInteractionSourceMediaType = "video"
)AdInteractionSourceType represents the source type of an ad interaction.
type AdInteractionSourceType stringconst (
// AdInteractionSourceTypePost indicates that the ad interaction is from a post.
AdInteractionSourceTypePost AdInteractionSourceType = "post"
// AdInteractionSourceTypeAd indicates that the ad interaction is from an ad.
AdInteractionSourceTypeAd AdInteractionSourceType = "ad"
)AdSource represents the source of an ad.
type AdSource struct {
Url string `json:"url"`
Id string `json:"id"`
Type AdInteractionSourceType `json:"type"`
Title string `json:"title"`
Description string `json:"description"`
MediaUrl string `json:"mediaUrl"`
MediaType AdInteractionSourceMediaType `json:"mediaType"`
ThumbnailUrl string `json:"thumbnailUrl"`
CtwaClid string `json:"ctwaClid"`
}AudioMessageEvent represents an event for an audio message.
type AudioMessageEvent struct {
BaseMediaMessageEvent `json:",inline"`
Audio components.AudioMessage `json:"audio"`
}func NewAudioMessageEvent(baseMessageEvent BaseMessageEvent, audio components.AudioMessage, mimeType, sha256, mediaId string) *AudioMessageEventNewAudioMessageEvent creates a new AudioMessageEvent instance.
type BanInfo struct {
WabaBanState string
WabaBanDate string
}type BaseBusinessAccountEvent struct {
BusinessAccountId string `json:"business_account_id"`
Timestamp string `json:"timestamp"`
}func (bme BaseBusinessAccountEvent) GetEventType() stringtype BaseBusinessAccountEventInterface interface {
BaseEvent
}type BaseEvent interface {
GetEventType() string
}BaseMediaMessageEvent represents a base media message event which contains media information.
type BaseMediaMessageEvent struct {
BaseMessageEvent `json:",inline"`
MediaId string `json:"media_id"`
MimeType string `json:"mime_type"`
Sha256 string `json:"sha256"`
}type BaseMessageEvent struct {
BusinessAccountId string `json:"business_account_id"`
requester request_client.RequestClient
MessageId string `json:"message_id"`
From string `json:"from"`
SenderName string `json:"sender_name"`
Context MessageContext `json:"context"`
Timestamp string `json:"timestamp"`
IsForwarded bool `json:"is_forwarded"`
PhoneNumber BusinessPhoneNumber `json:"phone_number"`
}func NewBaseMessageEvent(params BaseMessageEventParams) BaseMessageEventfunc (bme BaseMessageEvent) GetEventType() stringfunc (baseMessageEvent *BaseMessageEvent) React(emoji string) (string, error)React to the message
func (baseMessageEvent *BaseMessageEvent) Reply(Message components.BaseMessage) (string, error)Reply to the message
type BaseMessageEventInterface interface {
BaseEvent
Reply() (string, error)
React() (string, error)
}type BaseMessageEventParams struct {
BusinessAccountId string
MessageId string
PhoneNumber BusinessPhoneNumber
Timestamp string
From string // * whatsapp account id of the user who sent the message
SenderName string
IsForwarded bool
Context MessageContext // * this context will not be present if in case a message is a reply to another message
Requester request_client.RequestClient
}type BaseSystemEvent struct {
Timestamp string `json:"timestamp"`
}func (bme BaseSystemEvent) GetEventType() stringtype BaseSystemEventInterface interface {
BaseEvent
}type BusinessCapabilityUpdateEvent struct {
BaseBusinessAccountEvent
MaxDailyConversationPerPhone int64
MaxPhoneNumbersPerBusiness int64
}func NewBusinessCapabilityUpdateEvent(baseEvent *BaseBusinessAccountEvent, maxDailyConversationPerPhone int64, maxPhoneNumbersPerBusiness int64) *BusinessCapabilityUpdateEventtype BusinessPhoneNumber struct {
DisplayNumber string `json:"display_number"`
Id string `json:"id"`
}ContactsMessageEvent represents an event that occurs when a message with contacts is received.
type ContactsMessageEvent struct {
BaseMessageEvent `json:",inline"`
Contacts components.ContactMessage `json:"contacts"`
}func NewContactsMessageEvent(baseMessageEvent BaseMessageEvent, contacts components.ContactMessage) *ContactsMessageEventNewContactsMessageEvent creates a new ContactsMessageEvent instance.
type CustomerIdentityChangedEvent struct {
BaseSystemEvent `json:",inline"`
Acknowledged string `json:"acknowledged"`
CreationTimestamp string `json:"creationTime"`
Hash string `json:"hash"`
}type CustomerNumberChangedEvent struct {
BaseSystemEvent `json:",inline"`
ChangeDescription string `json:"changeDescription"`
NewWaId string `json:"newWaId"`
OldWaId string `json:"oldWaId"`
}DocumentMessageEvent represents an event that occurs when a document message is received.
type DocumentMessageEvent struct {
BaseMediaMessageEvent
Document components.DocumentMessage
}func NewDocumentMessageEvent(baseMessageEvent BaseMessageEvent, document components.DocumentMessage, mediaId, sha256, mimeType string) *DocumentMessageEventNewDocumentMessageEvent creates a new DocumentMessageEvent instance.
type EventType stringconst (
TextMessageEventType EventType = "text_message"
AudioMessageEventType EventType = "audio_message"
VideoMessageEventType EventType = "video_message"
ImageMessageEventType EventType = "image_message"
ContactMessageEventType EventType = "contact_message"
DocumentMessageEventType EventType = "document_message"
LocationMessageEventType EventType = "location_message"
ReactionMessageEventType EventType = "reaction_message"
ListInteractionMessageEventType EventType = "list_interaction_message"
TemplateMessageEventType EventType = "template_message"
QuickReplyMessageEventType EventType = "quick_reply_message"
ReplyButtonInteractionEventType EventType = "reply_button_interaction"
StickerMessageEventType EventType = "sticker_message"
AdInteractionEventType EventType = "ad_interaction_message"
CustomerIdentityChangedEventType EventType = "customer_identity_changed"
CustomerNumberChangedEventType EventType = "customer_number_changed"
MessageDeliveredEventType EventType = "message_delivered"
MessageFailedEventType EventType = "message_failed"
MessageReadEventType EventType = "message_read"
MessageSentEventType EventType = "message_sent"
MessageUndeliveredEventType EventType = "message_undelivered"
OrderReceivedEventType EventType = "order_received"
ProductInquiryEventType EventType = "product_inquiry"
UnknownEventType EventType = "unknown"
ErrorEventType EventType = "error"
WarnEventType EventType = "warn"
ReadyEventType EventType = "ready"
MessageTemplateStatusUpdateEventType EventType = "message_template_status_update"
MessageTemplateQualityUpdateEventType EventType = "message_template_quality_update"
PhoneNumberNameUpdateEventType EventType = "phone_number_name_update"
PhoneNumberQualityUpdateEventType EventType = "phone_number_quality_update"
SecurityEventType EventType = "security"
AccountUpdateEventType EventType = "account_update"
AccountReviewUpdateEventType EventType = "account_review_update"
AccountAlertsEventType EventType = "account_alerts"
BusinessCapabilityUpdateEventType EventType = "business_capability_update"
)ImageMessageEvent represents an event for an image message.
type ImageMessageEvent struct {
BaseMediaMessageEvent `json:",inline"`
Image components.ImageMessage `json:"image"`
}func NewImageMessageEvent(baseMessageEvent BaseMessageEvent, image components.ImageMessage, mimeType, sha256, mediaId string) *ImageMessageEventNewImageMessageEvent creates a new ImageMessageEvent instance.
ListInteractionEvent represents an interaction event related to a list.
type ListInteractionEvent struct {
BaseMessageEvent `json:",inline"`
Title string `json:"title"`
ListId string `json:"list_id"`
Description string `json:"description"`
}func NewListInteractionEvent(baseMessageEvent BaseMessageEvent, title, listId, description string) *ListInteractionEventNewListInteractionEvent creates a new ListInteractionEvent instance.
LocationMessageEvent represents an event that contains a location message.
type LocationMessageEvent struct {
BaseMessageEvent `json:",inline"`
Location components.LocationMessage `json:"location"`
}func NewLocationMessageEvent(baseMessageEvent BaseMessageEvent, location components.LocationMessage) *LocationMessageEventNewLocationMessageEvent creates a new LocationMessageEvent instance.
type MessageContext struct {
RepliedToMessageId string `json:"replied_to_message_id"`
}MessageDeliveredEvent represents an event related to an undelivered message.
type MessageDeliveredEvent struct {
BaseSystemEvent `json:",inline"`
MessageId string `json:"messageId"`
SentTo string `json:"sentTo"`
}func NewMessageDeliveredEvent(baseSystemEvent BaseSystemEvent, messageId, sendTo string) *MessageDeliveredEventMessageDeliveredEvent creates a new instance of MessageUndeliveredEvent.
type MessageFailedEvent struct {
BaseSystemEvent `json:",inline"`
MessageId string `json:"messageId"`
SentTo string `json:"sentTo"`
FailReason string `json:"failReason"`
}func NewMessageFailedEvent(baseSystemEvent BaseSystemEvent, messageId, sendTo, failReason string) *MessageFailedEventMessageReadEvent represents an event indicating that a message has been read.
type MessageReadEvent struct {
BaseSystemEvent `json:",inline"`
MessageId string `json:"messageId"`
SentTo string `json:"sentTo"`
}func NewMessageReadEvent(baseSystemEvent BaseSystemEvent, messageId, sendTo string) *MessageReadEventNewMessageReadEvent creates a new instance of MessageReadEvent.
MessageSentEvent represents an event indicating that a message has been sent.
type MessageSentEvent struct {
BaseSystemEvent `json:",inline"`
MessageId string `json:"messageId"`
SentTo string `json:"sentTo"`
}func NewMessageSentEvent(baseSystemEvent BaseSystemEvent, messageId, sendTo string) *MessageSentEventNewMessageSentEvent creates a new instance of MessageSentEvent.
type MessageTemplateCategoryEnum stringconst (
MessageTemplateCategoryEnumMarketing MessageTemplateCategoryEnum = "MARKETING"
MessageTemplateCategoryEnumOtp MessageTemplateCategoryEnum = "OTP"
MessageTemplateCategoryEnumTransactional MessageTemplateCategoryEnum = "TRANSACTIONAL"
MessageTemplateCategoryEnumAuthentication MessageTemplateCategoryEnum = "AUTHENTICATION"
MessageTemplateCategoryEnumUtility MessageTemplateCategoryEnum = "UTILITY"
)type MessageTemplateQualityUpdateEvent struct {
BaseBusinessAccountEvent
PreviousQualityScore MessageTemplateQualityUpdateQualityScoreEnum
NewQualityScore MessageTemplateQualityUpdateQualityScoreEnum
MessageTemplateId int64
MessageTemplateName string
MessageTemplateLanguage string
}func NewMessageTemplateQualityUpdateEvent(baseEvent *BaseBusinessAccountEvent, previousQualityScore MessageTemplateQualityUpdateQualityScoreEnum, newQualityScore MessageTemplateQualityUpdateQualityScoreEnum, messageTemplateId int64, messageTemplateName string, messageTemplateLanguage string) *MessageTemplateQualityUpdateEventtype MessageTemplateQualityUpdateQualityScoreEnum stringconst (
MessageTemplateQualityUpdateQualityScoreEnumGreen MessageTemplateQualityUpdateQualityScoreEnum = "GREEN"
MessageTemplateQualityUpdateQualityScoreEnumRed MessageTemplateQualityUpdateQualityScoreEnum = "RED"
MessageTemplateQualityUpdateQualityScoreEnumUnknown MessageTemplateQualityUpdateQualityScoreEnum = "UNKNOWN"
MessageTemplateQualityUpdateQualityScoreEnumYellow MessageTemplateQualityUpdateQualityScoreEnum = "YELLOW"
)type MessageTemplateStatusUpdateEvent struct {
BaseBusinessAccountEvent
Event MessageTemplateStatusUpdateEventEnum
MessageTemplateId int64
MessageTemplateName string
MessageTemplateLanguage string
Reason MessageTemplateStatusUpdateReason
}func NewMessageTemplateStatusUpdateEvent(baseEvent *BaseBusinessAccountEvent, event MessageTemplateStatusUpdateEventEnum, messageTemplateId int64, messageTemplateName string, messageTemplateLanguage string, reason MessageTemplateStatusUpdateReason) *MessageTemplateStatusUpdateEventtype MessageTemplateStatusUpdateEventEnum stringconst (
MessageTemplateStatusUpdateEventEnumApproved MessageTemplateStatusUpdateEventEnum = "APPROVED"
MessageTemplateStatusUpdateEventEnumDisabled MessageTemplateStatusUpdateEventEnum = "DISABLED"
MessageTemplateStatusUpdateEventEnumInAppeal MessageTemplateStatusUpdateEventEnum = "IN_APPEAL"
MessageTemplateStatusUpdateEventEnumPending MessageTemplateStatusUpdateEventEnum = "PENDING"
MessageTemplateStatusUpdateEventEnumReinstated MessageTemplateStatusUpdateEventEnum = "REINSTATED"
MessageTemplateStatusUpdateEventEnumRejected MessageTemplateStatusUpdateEventEnum = "REJECTED"
MessageTemplateStatusUpdateEventEnumFlagged MessageTemplateStatusUpdateEventEnum = "FLAGGED"
)type MessageTemplateStatusUpdateReason stringconst (
MessageTemplateStatusUpdateReasonAbusiveContent MessageTemplateStatusUpdateReason = "ABUSIVE_CONTENT"
MessageTemplateStatusUpdateReasonIncorrectCategory MessageTemplateStatusUpdateReason = "INCORRECT_CATEGORY"
MessageTemplateStatusUpdateReasonInvalidFormat MessageTemplateStatusUpdateReason = "INVALID_FORMAT"
MessageTemplateStatusUpdateReasonNone MessageTemplateStatusUpdateReason = "NONE"
MessageTemplateStatusUpdateReasonScam MessageTemplateStatusUpdateReason = "SCAM"
)MessageUndeliveredEvent represents an event related to an undelivered message.
type MessageUndeliveredEvent struct {
BaseSystemEvent `json:",inline"`
MessageId string `json:"messageId"`
SentTo string `json:"sentTo"`
}func NewMessageUndeliveredEvent(baseSystemEvent BaseSystemEvent, messageId, sendTo string) *MessageUndeliveredEventNewMessageUndeliveredEvent creates a new instance of MessageUndeliveredEvent.
OrderEvent represents an event related to an order.
type OrderEvent struct {
BaseMessageEvent `json:",inline"`
Order components.Order `json:"order"`
}func NewOrderEvent(baseMessageEvent BaseMessageEvent, order components.Order) *OrderEventNewOrderEvent creates a new OrderEvent instance.
type PhoneNumberNameUpdateEvent struct {
BaseBusinessAccountEvent
PhoneNumber string
Name string
Decision string
RejectionReason *string
}func NewPhoneNumberNameUpdateEvent(baseEvent *BaseBusinessAccountEvent, phoneNumber string, name string, decision string, reason *string) *PhoneNumberNameUpdateEventtype PhoneNumberQualityUpdateCurrentLimitEnum stringconst (
PhoneNumberQualityUpdateCurrentLimitEnumTier50 PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_50"
PhoneNumberQualityUpdateCurrentLimitEnumTier250 PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_250"
PhoneNumberQualityUpdateCurrentLimitEnumTier1K PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_1K"
PhoneNumberQualityUpdateCurrentLimitEnumTier10K PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_10K"
PhoneNumberQualityUpdateCurrentLimitEnumTier100K PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_100K"
PhoneNumberQualityUpdateCurrentLimitEnumTierUnlimited PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_UNLIMITED"
)type PhoneNumberQualityUpdateEvent struct {
BaseBusinessAccountEvent
DisplayPhoneNumber string
Event PhoneNumberUpdateEventEnum
CurrentLimit PhoneNumberQualityUpdateCurrentLimitEnum
}func NewPhoneNumberQualityUpdateEvent(baseEvent *BaseBusinessAccountEvent, displayPhoneNumber string, event PhoneNumberUpdateEventEnum, currentLimit PhoneNumberQualityUpdateCurrentLimitEnum) *PhoneNumberQualityUpdateEventtype PhoneNumberUpdateEventEnum stringconst (
PhoneNumberUpdateEventEnumDowngrade PhoneNumberUpdateEventEnum = "DOWNGRADE"
PhoneNumberUpdateEventEnumFlagged PhoneNumberUpdateEventEnum = "FLAGGED"
PhoneNumberUpdateEventEnumOnboarding PhoneNumberUpdateEventEnum = "ONBOARDING"
PhoneNumberUpdateEventEnumUnflagged PhoneNumberUpdateEventEnum = "UNFLAGGED"
PhoneNumberUpdateEventEnumUpgrade PhoneNumberUpdateEventEnum = "UPGRADE"
)ProductInquiryEvent represents an event related to a product inquiry.
type ProductInquiryEvent struct {
BaseMessageEvent `json:",inline"`
ProductId string `json:"productId"`
CatalogId string `json:"catalogId"`
Text string `json:"text"`
}func NewProductInquiryEvent(baseMessageEvent BaseMessageEvent, productId, catalogId, text string) *ProductInquiryEventNewProductInquiryEvent creates a new instance of ProductInquiryEvent.
QuickReplyButtonInteractionEvent represents an event triggered when a user interacts with a quick reply button.
type QuickReplyButtonInteractionEvent struct {
BaseMessageEvent `json:",inline"`
ButtonText string `json:"button_text"`
ButtonPayload string `json:"button_payload"`
}func NewQuickReplyButtonInteractionEvent(baseMessageEvent BaseMessageEvent, buttonText, buttonPayload string) *QuickReplyButtonInteractionEventNewQuickReplyButtonInteractionEvent creates a new instance of QuickReplyButtonInteractionEvent.
ReactionMessageEvent represents an event that occurs when a reaction is added to a message.
type ReactionMessageEvent struct {
BaseMessageEvent `json:",inline"`
Reaction components.ReactionMessage
}func NewReactionMessageEvent(baseMessageEvent BaseMessageEvent, reaction components.ReactionMessage) *ReactionMessageEventNewReactionMessageEvent creates a new ReactionMessageEvent instance.
ReadyEvent represents an event that is triggered when the system is ready.
type ReadyEvent struct {
BaseSystemEvent `json:",inline"`
}func NewReadyEvent() *ReadyEventNewReadyEvent creates a new instance of ReadyEvent.
ReplyButtonInteractionEvent represents an interaction event triggered by a reply button.
type ReplyButtonInteractionEvent struct {
BaseMessageEvent `json:",inline"`
Title string `json:"title"`
ButtonId string `json:"button_id"`
}func NewReplyButtonInteractionEvent(baseMessageEvent BaseMessageEvent, title, buttonId string) *ReplyButtonInteractionEventNewReplyButtonInteractionEvent creates a new instance of ReplyButtonInteractionEvent.
type RestrictionInfo struct {
RestrictionType string
Expiration string
}type SecurityEvent struct {
BaseBusinessAccountEvent
}func NewSecurity() *SecurityEventStickerMessageEvent represents an event for a sticker message.
type StickerMessageEvent struct {
BaseMediaMessageEvent `json:",inline"`
Sticker components.StickerMessage
}func NewStickerMessageEvent(baseMessageEvent BaseMessageEvent, sticker components.StickerMessage, mediaId, sha256, mimeType string) *StickerMessageEventNewStickerMessageEvent creates a new StickerMessageEvent instance.
type TemplateCategoryUpdateEvent struct {
BaseBusinessAccountEvent
MessageTemplateId int64
MessageTemplateName string
MessageTemplateLanguage string
PreviousCategory MessageTemplateCategoryEnum
NewCategory MessageTemplateCategoryEnum
}func NewMessageTemplateCategoryUpdateEvent(baseEvent *BaseBusinessAccountEvent, messageTemplateId int64, messageTemplateName string, messageTemplateLanguage string, previousCategory MessageTemplateCategoryEnum, newCategory MessageTemplateCategoryEnum) *TemplateCategoryUpdateEventTextMessageEvent represents an event for a text message.
type TextMessageEvent struct {
BaseMessageEvent `json:",inline"`
Text string `json:"text"`
}func NewTextMessageEvent(baseMessageEvent BaseMessageEvent, text string) *TextMessageEventNewTextMessageEvent creates a new TextMessageEvent instance.
VideoMessageEvent represents a WhatsApp video message event.
type VideoMessageEvent struct {
BaseMediaMessageEvent `json:",inline"`
Video components.VideoMessage `json:"video"`
}func NewVideoMessageEvent(baseMessageEvent BaseMessageEvent, video components.VideoMessage, mimeType, sha256, mediaId string) *VideoMessageEventNewVideoMessageEvent creates a new VideoMessageEvent instance.
type ViolationInfo struct {
ViolationType string
}