> ## Documentation Index
> Fetch the complete documentation index at: https://golang.wapikit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Events

```go theme={null}
import "github.com/wapikit/wapi.go/pkg/events"
```

<a name="AccountAlertEvent" />

## type AccountAlertEvent

```go theme={null}
type AccountAlertEvent struct {
    BaseBusinessAccountEvent
    EntityType       string
    EntityId         string
    AlertSeverity    AccountAlertSeverityEnum
    AlertStatus      AccountAlertStatusEnum
    AlertType        string
    AlertDescription string
}
```

<a name="NewAccountAlertEvent" />

### func NewAccountAlertEvent

```go theme={null}
func NewAccountAlertEvent(baseEvent *BaseBusinessAccountEvent, entityType string, entityId string, alertSeverity AccountAlertSeverityEnum, alertStatus AccountAlertStatusEnum, alertType string, alertDescription string) *AccountAlertEvent
```

<a name="AccountAlertSeverityEnum" />

## type AccountAlertSeverityEnum

```go theme={null}
type AccountAlertSeverityEnum string
```

<a name="AccountAlertSeverityEnumCritical" />

```go theme={null}
const (
    AccountAlertSeverityEnumCritical AccountAlertSeverityEnum = "CRITICAL"
    AccountAlertSeverityEnumWarning  AccountAlertSeverityEnum = "WARNING"
)
```

<a name="AccountAlertStatusEnum" />

## type AccountAlertStatusEnum

```go theme={null}
type AccountAlertStatusEnum string
```

<a name="AccountAlertStatusEnumActive" />

```go theme={null}
const (
    AccountAlertStatusEnumActive   AccountAlertStatusEnum = "ACTIVE"
    AccountAlertStatusEnumResolved AccountAlertStatusEnum = "RESOLVED"
)
```

<a name="AccountReviewUpdateEvent" />

## type AccountReviewUpdateEvent

```go theme={null}
type AccountReviewUpdateEvent struct {
    BaseBusinessAccountEvent
    Decision AccountReviewUpdateEventEnum
}
```

<a name="NewAccountReviewUpdateEvent" />

### func NewAccountReviewUpdateEvent

```go theme={null}
func NewAccountReviewUpdateEvent(baseEvent *BaseBusinessAccountEvent, decision AccountReviewUpdateEventEnum) *AccountReviewUpdateEvent
```

<a name="AccountReviewUpdateEventEnum" />

## type AccountReviewUpdateEventEnum

```go theme={null}
type AccountReviewUpdateEventEnum string
```

<a name="AccountReviewUpdateEventEnumApproved" />

```go theme={null}
const (
    AccountReviewUpdateEventEnumApproved AccountReviewUpdateEventEnum = "APPROVED"
    AccountReviewUpdateEventEnumRejected AccountReviewUpdateEventEnum = "REJECTED"
)
```

<a name="AccountUpdateEvent" />

## type AccountUpdateEvent

```go theme={null}
type AccountUpdateEvent struct {
    BaseBusinessAccountEvent
    StatusUpdate    AccountUpdateEventEnum
    PhoneNumber     string
    BanInfo         *BanInfo
    ViolationInfo   *ViolationInfo
    RestrictionInfo []RestrictionInfo
}
```

<a name="NewAccountUpdateEvent" />

### func NewAccountUpdateEvent

```go theme={null}
func NewAccountUpdateEvent(baseEvent *BaseBusinessAccountEvent, statusUpdate AccountUpdateEventEnum, phoneNumber string) *AccountUpdateEvent
```

<a name="AccountUpdateEventEnum" />

## type AccountUpdateEventEnum

```go theme={null}
type AccountUpdateEventEnum string
```

<a name="AccountUpdateEventEnumVerifiedAccount" />

```go theme={null}
const (
    AccountUpdateEventEnumVerifiedAccount    AccountUpdateEventEnum = "VERIFIED_ACCOUNT"
    AccountUpdateEventEnumDisabledAccount    AccountUpdateEventEnum = "DISABLED_UPDATE"
    AccountUpdateEventEnumAccountViolation   AccountUpdateEventEnum = "ACCOUNT_VIOLATION"
    AccountUpdateEventEnumAccountRestriction AccountUpdateEventEnum = "ACCOUNT_RESTRICTION"
    AccountUpdateEventEnumAccountDeleted     AccountUpdateEventEnum = "ACCOUNT_DELETED"
    AccountUpdateEventEnumPartnerRemoved     AccountUpdateEventEnum = "PARTNER_REMOVED"
)
```

<a name="AdInteractionEvent" />

## type AdInteractionEvent

AdInteractionEvent represents an ad interaction event.

```go theme={null}
type AdInteractionEvent struct {
    BaseMessageEvent `json:",inline"`
    AdSource         AdSource `json:"adSource"`
    Text             string   `json:"text"`
}
```

<a name="NewAdInteractionEvent" />

### func NewAdInteractionEvent

```go theme={null}
func NewAdInteractionEvent(baseMessageEvent BaseMessageEvent, adSource AdSource, text string) *AdInteractionEvent
```

NewAdInteractionEvent creates a new instance of AdInteractionEvent.

<a name="AdInteractionSourceMediaType" />

## type AdInteractionSourceMediaType

AdInteractionSourceMediaType represents the media type of an ad interaction source.

```go theme={null}
type AdInteractionSourceMediaType string
```

<a name="AdInteractionSourceMediaTypeImage" />

```go theme={null}
const (
    // 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"
)
```

<a name="AdInteractionSourceType" />

## type AdInteractionSourceType

AdInteractionSourceType represents the source type of an ad interaction.

```go theme={null}
type AdInteractionSourceType string
```

<a name="AdInteractionSourceTypePost" />

```go theme={null}
const (
    // 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"
)
```

<a name="AdSource" />

## type AdSource

AdSource represents the source of an ad.

```go theme={null}
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"`
}
```

<a name="AudioMessageEvent" />

## type AudioMessageEvent

AudioMessageEvent represents an event for an audio message.

```go theme={null}
type AudioMessageEvent struct {
    BaseMediaMessageEvent `json:",inline"`
    Audio                 components.AudioMessage `json:"audio"`
}
```

<a name="NewAudioMessageEvent" />

### func NewAudioMessageEvent

```go theme={null}
func NewAudioMessageEvent(baseMessageEvent BaseMessageEvent, audio components.AudioMessage, mimeType, sha256, mediaId string) *AudioMessageEvent
```

NewAudioMessageEvent creates a new AudioMessageEvent instance.

<a name="BanInfo" />

## type BanInfo

```go theme={null}
type BanInfo struct {
    WabaBanState string
    WabaBanDate  string
}
```

<a name="BaseBusinessAccountEvent" />

## type BaseBusinessAccountEvent

```go theme={null}
type BaseBusinessAccountEvent struct {
    BusinessAccountId string `json:"business_account_id"`
    Timestamp         string `json:"timestamp"`
}
```

<a name="BaseBusinessAccountEvent.GetEventType" />

### func (BaseBusinessAccountEvent) GetEventType

```go theme={null}
func (bme BaseBusinessAccountEvent) GetEventType() string
```

<a name="BaseBusinessAccountEventInterface" />

## type BaseBusinessAccountEventInterface

```go theme={null}
type BaseBusinessAccountEventInterface interface {
    BaseEvent
}
```

<a name="BaseEvent" />

## type BaseEvent

```go theme={null}
type BaseEvent interface {
    GetEventType() string
}
```

<a name="BaseMediaMessageEvent" />

## type BaseMediaMessageEvent

BaseMediaMessageEvent represents a base media message event which contains media information.

```go theme={null}
type BaseMediaMessageEvent struct {
    BaseMessageEvent `json:",inline"`
    MediaId          string `json:"media_id"`
    MimeType         string `json:"mime_type"`
    Sha256           string `json:"sha256"`
}
```

<a name="BaseMessageEvent" />

## type BaseMessageEvent

```go theme={null}
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"`
}
```

<a name="NewBaseMessageEvent" />

### func NewBaseMessageEvent

```go theme={null}
func NewBaseMessageEvent(params BaseMessageEventParams) BaseMessageEvent
```

<a name="BaseMessageEvent.GetEventType" />

### func (BaseMessageEvent) GetEventType

```go theme={null}
func (bme BaseMessageEvent) GetEventType() string
```

<a name="BaseMessageEvent.React" />

### func (\*BaseMessageEvent) React

```go theme={null}
func (baseMessageEvent *BaseMessageEvent) React(emoji string) (string, error)
```

React to the message

<a name="BaseMessageEvent.Reply" />

### func (\*BaseMessageEvent) Reply

```go theme={null}
func (baseMessageEvent *BaseMessageEvent) Reply(Message components.BaseMessage) (string, error)
```

Reply to the message

<a name="BaseMessageEventInterface" />

## type BaseMessageEventInterface

```go theme={null}
type BaseMessageEventInterface interface {
    BaseEvent
    Reply() (string, error)
    React() (string, error)
}
```

<a name="BaseMessageEventParams" />

## type BaseMessageEventParams

```go theme={null}
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
}
```

<a name="BaseSystemEvent" />

## type BaseSystemEvent

```go theme={null}
type BaseSystemEvent struct {
    Timestamp string `json:"timestamp"`
}
```

<a name="BaseSystemEvent.GetEventType" />

### func (BaseSystemEvent) GetEventType

```go theme={null}
func (bme BaseSystemEvent) GetEventType() string
```

<a name="BaseSystemEventInterface" />

## type BaseSystemEventInterface

```go theme={null}
type BaseSystemEventInterface interface {
    BaseEvent
}
```

<a name="BusinessCapabilityUpdateEvent" />

## type BusinessCapabilityUpdateEvent

```go theme={null}
type BusinessCapabilityUpdateEvent struct {
    BaseBusinessAccountEvent
    MaxDailyConversationPerPhone int64
    MaxPhoneNumbersPerBusiness   int64
}
```

<a name="NewBusinessCapabilityUpdateEvent" />

### func NewBusinessCapabilityUpdateEvent

```go theme={null}
func NewBusinessCapabilityUpdateEvent(baseEvent *BaseBusinessAccountEvent, maxDailyConversationPerPhone int64, maxPhoneNumbersPerBusiness int64) *BusinessCapabilityUpdateEvent
```

<a name="BusinessPhoneNumber" />

## type BusinessPhoneNumber

```go theme={null}
type BusinessPhoneNumber struct {
    DisplayNumber string `json:"display_number"`
    Id            string `json:"id"`
}
```

<a name="ContactsMessageEvent" />

## type ContactsMessageEvent

ContactsMessageEvent represents an event that occurs when a message with contacts is received.

```go theme={null}
type ContactsMessageEvent struct {
    BaseMessageEvent `json:",inline"`
    Contacts         components.ContactMessage `json:"contacts"`
}
```

<a name="NewContactsMessageEvent" />

### func NewContactsMessageEvent

```go theme={null}
func NewContactsMessageEvent(baseMessageEvent BaseMessageEvent, contacts components.ContactMessage) *ContactsMessageEvent
```

NewContactsMessageEvent creates a new ContactsMessageEvent instance.

<a name="CustomerIdentityChangedEvent" />

## type CustomerIdentityChangedEvent

```go theme={null}
type CustomerIdentityChangedEvent struct {
    BaseSystemEvent   `json:",inline"`
    Acknowledged      string `json:"acknowledged"`
    CreationTimestamp string `json:"creationTime"`
    Hash              string `json:"hash"`
}
```

<a name="CustomerNumberChangedEvent" />

## type CustomerNumberChangedEvent

```go theme={null}
type CustomerNumberChangedEvent struct {
    BaseSystemEvent   `json:",inline"`
    ChangeDescription string `json:"changeDescription"`
    NewWaId           string `json:"newWaId"`
    OldWaId           string `json:"oldWaId"`
}
```

<a name="DocumentMessageEvent" />

## type DocumentMessageEvent

DocumentMessageEvent represents an event that occurs when a document message is received.

```go theme={null}
type DocumentMessageEvent struct {
    BaseMediaMessageEvent
    Document components.DocumentMessage
}
```

<a name="NewDocumentMessageEvent" />

### func NewDocumentMessageEvent

```go theme={null}
func NewDocumentMessageEvent(baseMessageEvent BaseMessageEvent, document components.DocumentMessage, mediaId, sha256, mimeType string) *DocumentMessageEvent
```

NewDocumentMessageEvent creates a new DocumentMessageEvent instance.

<a name="EventType" />

## type EventType

```go theme={null}
type EventType string
```

<a name="TextMessageEventType" />

```go theme={null}
const (
    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"
)
```

<a name="ImageMessageEvent" />

## type ImageMessageEvent

ImageMessageEvent represents an event for an image message.

```go theme={null}
type ImageMessageEvent struct {
    BaseMediaMessageEvent `json:",inline"`
    Image                 components.ImageMessage `json:"image"`
}
```

<a name="NewImageMessageEvent" />

### func NewImageMessageEvent

```go theme={null}
func NewImageMessageEvent(baseMessageEvent BaseMessageEvent, image components.ImageMessage, mimeType, sha256, mediaId string) *ImageMessageEvent
```

NewImageMessageEvent creates a new ImageMessageEvent instance.

<a name="ListInteractionEvent" />

## type ListInteractionEvent

ListInteractionEvent represents an interaction event related to a list.

```go theme={null}
type ListInteractionEvent struct {
    BaseMessageEvent `json:",inline"`
    Title            string `json:"title"`
    ListId           string `json:"list_id"`
    Description      string `json:"description"`
}
```

<a name="NewListInteractionEvent" />

### func NewListInteractionEvent

```go theme={null}
func NewListInteractionEvent(baseMessageEvent BaseMessageEvent, title, listId, description string) *ListInteractionEvent
```

NewListInteractionEvent creates a new ListInteractionEvent instance.

<a name="LocationMessageEvent" />

## type LocationMessageEvent

LocationMessageEvent represents an event that contains a location message.

```go theme={null}
type LocationMessageEvent struct {
    BaseMessageEvent `json:",inline"`
    Location         components.LocationMessage `json:"location"`
}
```

<a name="NewLocationMessageEvent" />

### func NewLocationMessageEvent

```go theme={null}
func NewLocationMessageEvent(baseMessageEvent BaseMessageEvent, location components.LocationMessage) *LocationMessageEvent
```

NewLocationMessageEvent creates a new LocationMessageEvent instance.

<a name="MessageContext" />

## type MessageContext

```go theme={null}
type MessageContext struct {
    RepliedToMessageId string `json:"replied_to_message_id"`
}
```

<a name="MessageDeliveredEvent" />

## type MessageDeliveredEvent

MessageDeliveredEvent represents an event related to an undelivered message.

```go theme={null}
type MessageDeliveredEvent struct {
    BaseSystemEvent `json:",inline"`
    MessageId       string `json:"messageId"`
    SentTo          string `json:"sentTo"`
}
```

<a name="NewMessageDeliveredEvent" />

### func NewMessageDeliveredEvent

```go theme={null}
func NewMessageDeliveredEvent(baseSystemEvent BaseSystemEvent, messageId, sendTo string) *MessageDeliveredEvent
```

MessageDeliveredEvent creates a new instance of MessageUndeliveredEvent.

<a name="MessageFailedEvent" />

## type MessageFailedEvent

```go theme={null}
type MessageFailedEvent struct {
    BaseSystemEvent `json:",inline"`
    MessageId       string `json:"messageId"`
    SentTo          string `json:"sentTo"`
    FailReason      string `json:"failReason"`
}
```

<a name="NewMessageFailedEvent" />

### func NewMessageFailedEvent

```go theme={null}
func NewMessageFailedEvent(baseSystemEvent BaseSystemEvent, messageId, sendTo, failReason string) *MessageFailedEvent
```

<a name="MessageReadEvent" />

## type MessageReadEvent

MessageReadEvent represents an event indicating that a message has been read.

```go theme={null}
type MessageReadEvent struct {
    BaseSystemEvent `json:",inline"`
    MessageId       string `json:"messageId"`
    SentTo          string `json:"sentTo"`
}
```

<a name="NewMessageReadEvent" />

### func NewMessageReadEvent

```go theme={null}
func NewMessageReadEvent(baseSystemEvent BaseSystemEvent, messageId, sendTo string) *MessageReadEvent
```

NewMessageReadEvent creates a new instance of MessageReadEvent.

<a name="MessageSentEvent" />

## type MessageSentEvent

MessageSentEvent represents an event indicating that a message has been sent.

```go theme={null}
type MessageSentEvent struct {
    BaseSystemEvent `json:",inline"`
    MessageId       string `json:"messageId"`
    SentTo          string `json:"sentTo"`
}
```

<a name="NewMessageSentEvent" />

### func NewMessageSentEvent

```go theme={null}
func NewMessageSentEvent(baseSystemEvent BaseSystemEvent, messageId, sendTo string) *MessageSentEvent
```

NewMessageSentEvent creates a new instance of MessageSentEvent.

<a name="MessageTemplateCategoryEnum" />

## type MessageTemplateCategoryEnum

```go theme={null}
type MessageTemplateCategoryEnum string
```

<a name="MessageTemplateCategoryEnumMarketing" />

```go theme={null}
const (
    MessageTemplateCategoryEnumMarketing      MessageTemplateCategoryEnum = "MARKETING"
    MessageTemplateCategoryEnumOtp            MessageTemplateCategoryEnum = "OTP"
    MessageTemplateCategoryEnumTransactional  MessageTemplateCategoryEnum = "TRANSACTIONAL"
    MessageTemplateCategoryEnumAuthentication MessageTemplateCategoryEnum = "AUTHENTICATION"
    MessageTemplateCategoryEnumUtility        MessageTemplateCategoryEnum = "UTILITY"
)
```

<a name="MessageTemplateQualityUpdateEvent" />

## type MessageTemplateQualityUpdateEvent

```go theme={null}
type MessageTemplateQualityUpdateEvent struct {
    BaseBusinessAccountEvent
    PreviousQualityScore    MessageTemplateQualityUpdateQualityScoreEnum
    NewQualityScore         MessageTemplateQualityUpdateQualityScoreEnum
    MessageTemplateId       int64
    MessageTemplateName     string
    MessageTemplateLanguage string
}
```

<a name="NewMessageTemplateQualityUpdateEvent" />

### func NewMessageTemplateQualityUpdateEvent

```go theme={null}
func NewMessageTemplateQualityUpdateEvent(baseEvent *BaseBusinessAccountEvent, previousQualityScore MessageTemplateQualityUpdateQualityScoreEnum, newQualityScore MessageTemplateQualityUpdateQualityScoreEnum, messageTemplateId int64, messageTemplateName string, messageTemplateLanguage string) *MessageTemplateQualityUpdateEvent
```

<a name="MessageTemplateQualityUpdateQualityScoreEnum" />

## type MessageTemplateQualityUpdateQualityScoreEnum

```go theme={null}
type MessageTemplateQualityUpdateQualityScoreEnum string
```

<a name="MessageTemplateQualityUpdateQualityScoreEnumGreen" />

```go theme={null}
const (
    MessageTemplateQualityUpdateQualityScoreEnumGreen   MessageTemplateQualityUpdateQualityScoreEnum = "GREEN"
    MessageTemplateQualityUpdateQualityScoreEnumRed     MessageTemplateQualityUpdateQualityScoreEnum = "RED"
    MessageTemplateQualityUpdateQualityScoreEnumUnknown MessageTemplateQualityUpdateQualityScoreEnum = "UNKNOWN"
    MessageTemplateQualityUpdateQualityScoreEnumYellow  MessageTemplateQualityUpdateQualityScoreEnum = "YELLOW"
)
```

<a name="MessageTemplateStatusUpdateEvent" />

## type MessageTemplateStatusUpdateEvent

```go theme={null}
type MessageTemplateStatusUpdateEvent struct {
    BaseBusinessAccountEvent
    Event                   MessageTemplateStatusUpdateEventEnum
    MessageTemplateId       int64
    MessageTemplateName     string
    MessageTemplateLanguage string
    Reason                  MessageTemplateStatusUpdateReason
}
```

<a name="NewMessageTemplateStatusUpdateEvent" />

### func NewMessageTemplateStatusUpdateEvent

```go theme={null}
func NewMessageTemplateStatusUpdateEvent(baseEvent *BaseBusinessAccountEvent, event MessageTemplateStatusUpdateEventEnum, messageTemplateId int64, messageTemplateName string, messageTemplateLanguage string, reason MessageTemplateStatusUpdateReason) *MessageTemplateStatusUpdateEvent
```

<a name="MessageTemplateStatusUpdateEventEnum" />

## type MessageTemplateStatusUpdateEventEnum

```go theme={null}
type MessageTemplateStatusUpdateEventEnum string
```

<a name="MessageTemplateStatusUpdateEventEnumApproved" />

```go theme={null}
const (
    MessageTemplateStatusUpdateEventEnumApproved   MessageTemplateStatusUpdateEventEnum = "APPROVED"
    MessageTemplateStatusUpdateEventEnumDisabled   MessageTemplateStatusUpdateEventEnum = "DISABLED"
    MessageTemplateStatusUpdateEventEnumInAppeal   MessageTemplateStatusUpdateEventEnum = "IN_APPEAL"
    MessageTemplateStatusUpdateEventEnumPending    MessageTemplateStatusUpdateEventEnum = "PENDING"
    MessageTemplateStatusUpdateEventEnumReinstated MessageTemplateStatusUpdateEventEnum = "REINSTATED"
    MessageTemplateStatusUpdateEventEnumRejected   MessageTemplateStatusUpdateEventEnum = "REJECTED"
    MessageTemplateStatusUpdateEventEnumFlagged    MessageTemplateStatusUpdateEventEnum = "FLAGGED"
)
```

<a name="MessageTemplateStatusUpdateReason" />

## type MessageTemplateStatusUpdateReason

```go theme={null}
type MessageTemplateStatusUpdateReason string
```

<a name="MessageTemplateStatusUpdateReasonAbusiveContent" />

```go theme={null}
const (
    MessageTemplateStatusUpdateReasonAbusiveContent    MessageTemplateStatusUpdateReason = "ABUSIVE_CONTENT"
    MessageTemplateStatusUpdateReasonIncorrectCategory MessageTemplateStatusUpdateReason = "INCORRECT_CATEGORY"
    MessageTemplateStatusUpdateReasonInvalidFormat     MessageTemplateStatusUpdateReason = "INVALID_FORMAT"
    MessageTemplateStatusUpdateReasonNone              MessageTemplateStatusUpdateReason = "NONE"
    MessageTemplateStatusUpdateReasonScam              MessageTemplateStatusUpdateReason = "SCAM"
)
```

<a name="MessageUndeliveredEvent" />

## type MessageUndeliveredEvent

MessageUndeliveredEvent represents an event related to an undelivered message.

```go theme={null}
type MessageUndeliveredEvent struct {
    BaseSystemEvent `json:",inline"`
    MessageId       string `json:"messageId"`
    SentTo          string `json:"sentTo"`
}
```

<a name="NewMessageUndeliveredEvent" />

### func NewMessageUndeliveredEvent

```go theme={null}
func NewMessageUndeliveredEvent(baseSystemEvent BaseSystemEvent, messageId, sendTo string) *MessageUndeliveredEvent
```

NewMessageUndeliveredEvent creates a new instance of MessageUndeliveredEvent.

<a name="OrderEvent" />

## type OrderEvent

OrderEvent represents an event related to an order.

```go theme={null}
type OrderEvent struct {
    BaseMessageEvent `json:",inline"`
    Order            components.Order `json:"order"`
}
```

<a name="NewOrderEvent" />

### func NewOrderEvent

```go theme={null}
func NewOrderEvent(baseMessageEvent BaseMessageEvent, order components.Order) *OrderEvent
```

NewOrderEvent creates a new OrderEvent instance.

<a name="PhoneNumberNameUpdateEvent" />

## type PhoneNumberNameUpdateEvent

```go theme={null}
type PhoneNumberNameUpdateEvent struct {
    BaseBusinessAccountEvent
    PhoneNumber     string
    Name            string
    Decision        string
    RejectionReason *string
}
```

<a name="NewPhoneNumberNameUpdateEvent" />

### func NewPhoneNumberNameUpdateEvent

```go theme={null}
func NewPhoneNumberNameUpdateEvent(baseEvent *BaseBusinessAccountEvent, phoneNumber string, name string, decision string, reason *string) *PhoneNumberNameUpdateEvent
```

<a name="PhoneNumberQualityUpdateCurrentLimitEnum" />

## type PhoneNumberQualityUpdateCurrentLimitEnum

```go theme={null}
type PhoneNumberQualityUpdateCurrentLimitEnum string
```

<a name="PhoneNumberQualityUpdateCurrentLimitEnumTier50" />

```go theme={null}
const (
    PhoneNumberQualityUpdateCurrentLimitEnumTier50        PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_50"
    PhoneNumberQualityUpdateCurrentLimitEnumTier250       PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_250"
    PhoneNumberQualityUpdateCurrentLimitEnumTier1K        PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_1K"
    PhoneNumberQualityUpdateCurrentLimitEnumTier10K       PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_10K"
    PhoneNumberQualityUpdateCurrentLimitEnumTier100K      PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_100K"
    PhoneNumberQualityUpdateCurrentLimitEnumTierUnlimited PhoneNumberQualityUpdateCurrentLimitEnum = "TIER_UNLIMITED"
)
```

<a name="PhoneNumberQualityUpdateEvent" />

## type PhoneNumberQualityUpdateEvent

```go theme={null}
type PhoneNumberQualityUpdateEvent struct {
    BaseBusinessAccountEvent
    DisplayPhoneNumber string
    Event              PhoneNumberUpdateEventEnum
    CurrentLimit       PhoneNumberQualityUpdateCurrentLimitEnum
}
```

<a name="NewPhoneNumberQualityUpdateEvent" />

### func NewPhoneNumberQualityUpdateEvent

```go theme={null}
func NewPhoneNumberQualityUpdateEvent(baseEvent *BaseBusinessAccountEvent, displayPhoneNumber string, event PhoneNumberUpdateEventEnum, currentLimit PhoneNumberQualityUpdateCurrentLimitEnum) *PhoneNumberQualityUpdateEvent
```

<a name="PhoneNumberUpdateEventEnum" />

## type PhoneNumberUpdateEventEnum

```go theme={null}
type PhoneNumberUpdateEventEnum string
```

<a name="PhoneNumberUpdateEventEnumDowngrade" />

```go theme={null}
const (
    PhoneNumberUpdateEventEnumDowngrade  PhoneNumberUpdateEventEnum = "DOWNGRADE"
    PhoneNumberUpdateEventEnumFlagged    PhoneNumberUpdateEventEnum = "FLAGGED"
    PhoneNumberUpdateEventEnumOnboarding PhoneNumberUpdateEventEnum = "ONBOARDING"
    PhoneNumberUpdateEventEnumUnflagged  PhoneNumberUpdateEventEnum = "UNFLAGGED"
    PhoneNumberUpdateEventEnumUpgrade    PhoneNumberUpdateEventEnum = "UPGRADE"
)
```

<a name="ProductInquiryEvent" />

## type ProductInquiryEvent

ProductInquiryEvent represents an event related to a product inquiry.

```go theme={null}
type ProductInquiryEvent struct {
    BaseMessageEvent `json:",inline"`
    ProductId        string `json:"productId"`
    CatalogId        string `json:"catalogId"`
    Text             string `json:"text"`
}
```

<a name="NewProductInquiryEvent" />

### func NewProductInquiryEvent

```go theme={null}
func NewProductInquiryEvent(baseMessageEvent BaseMessageEvent, productId, catalogId, text string) *ProductInquiryEvent
```

NewProductInquiryEvent creates a new instance of ProductInquiryEvent.

<a name="QuickReplyButtonInteractionEvent" />

## type QuickReplyButtonInteractionEvent

QuickReplyButtonInteractionEvent represents an event triggered when a user interacts with a quick reply button.

```go theme={null}
type QuickReplyButtonInteractionEvent struct {
    BaseMessageEvent `json:",inline"`
    ButtonText       string `json:"button_text"`
    ButtonPayload    string `json:"button_payload"`
}
```

<a name="NewQuickReplyButtonInteractionEvent" />

### func NewQuickReplyButtonInteractionEvent

```go theme={null}
func NewQuickReplyButtonInteractionEvent(baseMessageEvent BaseMessageEvent, buttonText, buttonPayload string) *QuickReplyButtonInteractionEvent
```

NewQuickReplyButtonInteractionEvent creates a new instance of QuickReplyButtonInteractionEvent.

<a name="ReactionMessageEvent" />

## type ReactionMessageEvent

ReactionMessageEvent represents an event that occurs when a reaction is added to a message.

```go theme={null}
type ReactionMessageEvent struct {
    BaseMessageEvent `json:",inline"`
    Reaction         components.ReactionMessage
}
```

<a name="NewReactionMessageEvent" />

### func NewReactionMessageEvent

```go theme={null}
func NewReactionMessageEvent(baseMessageEvent BaseMessageEvent, reaction components.ReactionMessage) *ReactionMessageEvent
```

NewReactionMessageEvent creates a new ReactionMessageEvent instance.

<a name="ReadyEvent" />

## type ReadyEvent

ReadyEvent represents an event that is triggered when the system is ready.

```go theme={null}
type ReadyEvent struct {
    BaseSystemEvent `json:",inline"`
}
```

<a name="NewReadyEvent" />

### func NewReadyEvent

```go theme={null}
func NewReadyEvent() *ReadyEvent
```

NewReadyEvent creates a new instance of ReadyEvent.

<a name="ReplyButtonInteractionEvent" />

## type ReplyButtonInteractionEvent

ReplyButtonInteractionEvent represents an interaction event triggered by a reply button.

```go theme={null}
type ReplyButtonInteractionEvent struct {
    BaseMessageEvent `json:",inline"`
    Title            string `json:"title"`
    ButtonId         string `json:"button_id"`
}
```

<a name="NewReplyButtonInteractionEvent" />

### func NewReplyButtonInteractionEvent

```go theme={null}
func NewReplyButtonInteractionEvent(baseMessageEvent BaseMessageEvent, title, buttonId string) *ReplyButtonInteractionEvent
```

NewReplyButtonInteractionEvent creates a new instance of ReplyButtonInteractionEvent.

<a name="RestrictionInfo" />

## type RestrictionInfo

```go theme={null}
type RestrictionInfo struct {
    RestrictionType string
    Expiration      string
}
```

<a name="SecurityEvent" />

## type SecurityEvent

```go theme={null}
type SecurityEvent struct {
    BaseBusinessAccountEvent
}
```

<a name="NewSecurity" />

### func NewSecurity

```go theme={null}
func NewSecurity() *SecurityEvent
```

<a name="StickerMessageEvent" />

## type StickerMessageEvent

StickerMessageEvent represents an event for a sticker message.

```go theme={null}
type StickerMessageEvent struct {
    BaseMediaMessageEvent `json:",inline"`
    Sticker               components.StickerMessage
}
```

<a name="NewStickerMessageEvent" />

### func NewStickerMessageEvent

```go theme={null}
func NewStickerMessageEvent(baseMessageEvent BaseMessageEvent, sticker components.StickerMessage, mediaId, sha256, mimeType string) *StickerMessageEvent
```

NewStickerMessageEvent creates a new StickerMessageEvent instance.

<a name="TemplateCategoryUpdateEvent" />

## type TemplateCategoryUpdateEvent

```go theme={null}
type TemplateCategoryUpdateEvent struct {
    BaseBusinessAccountEvent
    MessageTemplateId       int64
    MessageTemplateName     string
    MessageTemplateLanguage string
    PreviousCategory        MessageTemplateCategoryEnum
    NewCategory             MessageTemplateCategoryEnum
}
```

<a name="NewMessageTemplateCategoryUpdateEvent" />

### func NewMessageTemplateCategoryUpdateEvent

```go theme={null}
func NewMessageTemplateCategoryUpdateEvent(baseEvent *BaseBusinessAccountEvent, messageTemplateId int64, messageTemplateName string, messageTemplateLanguage string, previousCategory MessageTemplateCategoryEnum, newCategory MessageTemplateCategoryEnum) *TemplateCategoryUpdateEvent
```

<a name="TextMessageEvent" />

## type TextMessageEvent

TextMessageEvent represents an event for a text message.

```go theme={null}
type TextMessageEvent struct {
    BaseMessageEvent `json:",inline"`
    Text             string `json:"text"`
}
```

<a name="NewTextMessageEvent" />

### func NewTextMessageEvent

```go theme={null}
func NewTextMessageEvent(baseMessageEvent BaseMessageEvent, text string) *TextMessageEvent
```

NewTextMessageEvent creates a new TextMessageEvent instance.

<a name="VideoMessageEvent" />

## type VideoMessageEvent

VideoMessageEvent represents a WhatsApp video message event.

```go theme={null}
type VideoMessageEvent struct {
    BaseMediaMessageEvent `json:",inline"`
    Video                 components.VideoMessage `json:"video"`
}
```

<a name="NewVideoMessageEvent" />

### func NewVideoMessageEvent

```go theme={null}
func NewVideoMessageEvent(baseMessageEvent BaseMessageEvent, video components.VideoMessage, mimeType, sha256, mediaId string) *VideoMessageEvent
```

NewVideoMessageEvent creates a new VideoMessageEvent instance.

<a name="ViolationInfo" />

## type ViolationInfo

```go theme={null}
type ViolationInfo struct {
    ViolationType string
}
```
