manager

package
v0.7.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 26, 2026 License: Apache-2.0 Imports: 21 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccountAlertSeverityEnum

type AccountAlertSeverityEnum string
const (
	AccountAlertSeverityEnumCritical AccountAlertSeverityEnum = "CRITICAL"
	AccountAlertSeverityEnumWarning  AccountAlertSeverityEnum = "WARNING"
)

type AccountAlertsValue

type AccountAlertsValue struct {
	EntityType string `json:"entity_type"`
	EntityId   string `json:"entity_id"`
	AlertInfo  struct {
		AlertSeverity    AccountAlertSeverityEnum `json:"alert_severity"`
		AlertStatus      string                   `json:"alert_status"`
		AlertType        string                   `json:"alert_type"`
		AlertDescription string                   `json:"alert_description"`
	} `json:"alert_info"`
}

type AccountReviewUpdateValue

type AccountReviewUpdateValue struct {
	Decision string `json:"decision"`
}

type AccountUpdateAuthInternationalRateEligibility added in v0.7.2

type AccountUpdateAuthInternationalRateEligibility struct {
	ExceptionCountries []struct {
		CountryCode string `json:"country_code"`
		StartTime   int64  `json:"start_time"`
	} `json:"exception_countries,omitempty"`
	StartTime int64 `json:"start_time"`
}

type AccountUpdateBanInfo

type AccountUpdateBanInfo struct {
	WabaBanState []string `json:"waba_ban_state"`
	WabaBanDate  string   `json:"waba_ban_date"`
}

type AccountUpdateEventEnum

type AccountUpdateEventEnum string
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"
)

type AccountUpdatePartnerClientCertificationInfo added in v0.7.2

type AccountUpdatePartnerClientCertificationInfo struct {
	ClientBusinessId string   `json:"client_business_id"`
	Status           string   `json:"status"`
	RejectionReasons []string `json:"rejection_reasons,omitempty"`
}

type AccountUpdateRestrictionInfo

type AccountUpdateRestrictionInfo struct {
	RestrictionType string `json:"restriction_type"`
	Expiration      string `json:"expiration"`
}

type AccountUpdateValue

type AccountUpdateValue struct {
	PhoneNumber                      string                                         `json:"phone_number,omitempty"`
	Event                            AccountUpdateEventEnum                         `json:"event"`
	Country                          string                                         `json:"country,omitempty"`                             // Only for BUSINESS_PRIMARY_LOCATION_COUNTRY_UPDATE
	WabaInfo                         *AccountUpdateWabaInfo                         `json:"waba_info,omitempty"`                           // For various events
	ViolationInfo                    *AccountUpdateViolationInfo                    `json:"violation_info,omitempty"`                      // Only for ACCOUNT_VIOLATION
	AuthInternationalRateEligibility *AccountUpdateAuthInternationalRateEligibility `json:"auth_international_rate_eligibility,omitempty"` // Only for AUTH_INTL_PRICE_ELIGIBILITY_UPDATE
	BanInfo                          *AccountUpdateBanInfo                          `json:"ban_info,omitempty"`                            // Only for DISABLED_UPDATE
	RestrictionInfo                  *AccountUpdateRestrictionInfo                  `json:"restriction_info,omitempty"`                    // Only for ACCOUNT_RESTRICTION
	PartnerClientCertificationInfo   *AccountUpdatePartnerClientCertificationInfo   `json:"partner_client_certification_info,omitempty"`   // Only for PARTNER_CLIENT_CERTIFICATION_STATUS_UPDATE
}

type AccountUpdateViolationInfo

type AccountUpdateViolationInfo struct {
	ViolationType string `json:"violation_type"`
}

type AccountUpdateWabaInfo added in v0.7.2

type AccountUpdateWabaInfo struct {
	WabaId                     string   `json:"waba_id"`
	OwnerBusinessId            string   `json:"owner_business_id"`
	AdAccountLinked            string   `json:"ad_account_linked,omitempty"`             // Only for AD_ACCOUNT_LINKED event
	PartnerAppId               string   `json:"partner_app_id,omitempty"`                // Only for PARTNER_APP_INSTALLED, PARTNER_APP_UNINSTALLED
	SolutionId                 string   `json:"solution_id,omitempty"`                   // Only if customer onboarded via multi-partner solution
	SolutionPartnerBusinessIds []string `json:"solution_partner_business_ids,omitempty"` // Only if customer onboarded via multi-partner solution
}

type AdInteractionSourceMediaTypeEnum

type AdInteractionSourceMediaTypeEnum string
const (
	AdInteractionSourceMediaTypeImage AdInteractionSourceMediaTypeEnum = "image"
	AdInteractionSourceMediaTypeVideo AdInteractionSourceMediaTypeEnum = "video"
)

type AdInteractionSourceTypeEnum

type AdInteractionSourceTypeEnum string
const (
	AdInteractionSourceTypeUnknown AdInteractionSourceTypeEnum = "unknown"
)
type Applinks struct {
	Web WebApplink `json:"web"`
}

type BusinessCapabilityUpdateValue

type BusinessCapabilityUpdateValue struct {
	MaxDailyConversationPerPhone int `json:"max_daily_conversation_per_phone"`
	MaxPhoneNumbersPerBusiness   int `json:"max_phone_numbers_per_business"`
}

type CapabilityReview added in v0.2.0

type CapabilityReview struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type Catalog added in v0.2.0

type Catalog struct {
	// Basic fields
	Id           string `json:"id"`
	Name         string `json:"name"`
	ProductCount int    `json:"product_count"`
	Vertical     string `json:"vertical,omitempty"`

	// Edge relationships (represented as slices for brevity)
	Agencies                      *[]interface{} `json:"agencies,omitempty"`
	AssignedUsers                 *[]interface{} `json:"assigned_users,omitempty"`
	AutomotiveModels              *[]interface{} `json:"automotive_models,omitempty"`
	Categories                    *[]interface{} `json:"categories,omitempty"`
	CheckBatchRequestStatus       *[]interface{} `json:"check_batch_request_status,omitempty"`
	CollaborativeAdsShareSettings *[]interface{} `json:"collaborative_ads_share_settings,omitempty"`
	DataSources                   *interface{}   `json:"data_sources,omitempty"`
	Destinations                  *[]interface{} `json:"destinations,omitempty"`
	Diagnostics                   *[]interface{} `json:"diagnostics,omitempty"`
	EventStats                    *[]interface{} `json:"event_stats,omitempty"`
	ExternalEventSources          *[]interface{} `json:"external_event_sources,omitempty"`
	Flights                       *[]interface{} `json:"flights,omitempty"`
	HomeListings                  *[]interface{} `json:"home_listings,omitempty"`
	HotelRoomsBatch               *[]interface{} `json:"hotel_rooms_batch,omitempty"`
	Hotels                        *[]interface{} `json:"hotels,omitempty"`
	PricingVariablesBatch         *[]interface{} `json:"pricing_variables_batch,omitempty"`
	ProductGroups                 *interface{}   `json:"product_groups,omitempty"`
	ProductSets                   *interface{}   `json:"product_sets,omitempty"`
	ProductSetsBatch              *[]interface{} `json:"product_sets_batch,omitempty"`
	Products                      struct {
		Data []ProductItem `json:"data"`
	} `json:"products,omitempty"`
	VehicleOffers *[]interface{} `json:"vehicle_offers,omitempty"`
	Vehicles      *[]interface{} `json:"vehicles,omitempty"`
}

Update Catalog to use []ProductItem for Products.

type CatalogFetchResponseEdge added in v0.2.0

type CatalogFetchResponseEdge struct {
	Data   []Catalog         `json:"data"`
	Paging PaginationDetails `json:"paging"`
}

type CatalogManager added in v0.2.0

type CatalogManager struct {
	// contains filtered or unexported fields
}

func NewCatalogManager added in v0.2.0

func NewCatalogManager(config *CatalogManagerConfig) *CatalogManager

func (*CatalogManager) GetAllCatalogProducts added in v0.7.0

func (cm *CatalogManager) GetAllCatalogProducts(catalogId string, limit ...int) ([]ProductItem, error)

GetAllCatalogProducts fetches all products across all pages for a given catalog This is a helper method that handles pagination automatically

func (*CatalogManager) GetAllCatalogs deprecated added in v0.2.0

func (cm *CatalogManager) GetAllCatalogs() (*CatalogFetchResponseEdge, error)

Deprecated: Use GetAllCatalogsWithPagination for better control

func (*CatalogManager) GetAllCatalogsWithPagination added in v0.7.0

func (cm *CatalogManager) GetAllCatalogsWithPagination(paginationInput ...*PaginationInput) (*PaginatedResponse[Catalog], error)

GetAllCatalogsWithPagination retrieves catalogs with pagination support

func (*CatalogManager) GetCatalogProducts deprecated added in v0.2.0

func (cm *CatalogManager) GetCatalogProducts(catalogId string, paginationInput ...*PaginationInput) ([]ProductItem, *PaginationDetails, error)

Deprecated: Use GetCatalogProductsWithPagination for better control

func (*CatalogManager) GetCatalogProductsWithPagination added in v0.7.0

func (cm *CatalogManager) GetCatalogProductsWithPagination(catalogId string, paginationInput ...*PaginationInput) (*PaginatedResponse[ProductItem], error)

GetCatalogProductsWithPagination retrieves products for a catalog with pagination support

type CatalogManagerConfig added in v0.2.0

type CatalogManagerConfig struct {
	BusinessAccountId string
	Requester         *request_client.RequestClient
}

type Change

type Change struct {
	Value interface{}      `json:"value"`
	Field WebhookFieldEnum `json:"field"`
}

type ChannelEvent

type ChannelEvent struct {
	Type events.EventType // Type is the type of the event.
	Data events.BaseEvent // Data is the data associated with the event.
}

ChannelEvent represents an event that can be published and subscribed to.

type Conversation

type Conversation struct {
	Id                  string `json:"id"`
	ExpirationTimestamp string `json:"expiration_timestamp,omitempty"`
	Origin              Origin `json:"origin,omitempty"`
}

type CreatePhoneNumberResponse

type CreatePhoneNumberResponse struct {
	Id string `json:"id,omitempty"`
}

type DeleteQrCodeResponse

type DeleteQrCodeResponse struct {
	Success bool `json:"success,omitempty"`
}

DeleteQrCodeResponse represents the response of deleting a QR code.

type DeleteSuccessResponse added in v0.1.0

type DeleteSuccessResponse struct {
	Success bool `json:"success"`
}

type Entry

type Entry struct {
	Id      string   `json:"id"`
	Changes []Change `json:"changes"`
	Time    int64    `json:"time,omitempty"`
}

type Error

type Error struct {
	Code      int    `json:"code"`
	Title     string `json:"title"`
	Message   string `json:"message"`
	Href      string `json:"href"`
	ErrorData struct {
		Details string `json:"details"`
	} `json:"error_data"`
}

type EventManager

type EventManager struct {
	sync.RWMutex // RWMutex is used to synchronize access to the subscribers map.
	// contains filtered or unexported fields
}

EventManager is responsible for managing events and their subscribers.

func NewEventManager

func NewEventManager() *EventManager

NewEventManager creates a new instance of EventManger.

func (*EventManager) On

func (em *EventManager) On(eventName events.EventType, handler func(events.BaseEvent)) events.EventType

On registers a handler function for the specified event type. The handler function will be called whenever the event is published. It returns the event type that the handler is registered for.

func (*EventManager) Publish

func (em *EventManager) Publish(event events.EventType, data events.BaseEvent) error

Publish publishes an event to the event system and notifies all the subscribers.

func (*EventManager) Subscribe

func (em *EventManager) Subscribe(eventName events.EventType) (chan ChannelEvent, error)

Subscribe adds a new subscriber to the specified event type. The subscriber will be notified when the event is published.

func (*EventManager) Unsubscribe

func (em *EventManager) Unsubscribe(id events.EventType)

Unsubscribe removes a subscriber from the specified event type.

type GenerateQrCodeResponse

type GenerateQrCodeResponse struct {
	Code             string `json:"code,omitempty"`
	PrefilledMessage string `json:"prefilled_message,omitempty"`
	DeepLinkUrl      string `json:"deep_link_url,omitempty"`
	QrImageUrl       string `json:"qr_image_url,omitempty"`
}

GenerateQrCodeResponse represents the response of generating a QR code.

type GetAllQrCodesResponse

type GetAllQrCodesResponse struct {
	Data []GenerateQrCodeResponse `json:"data,omitempty"`
}

GetAllQrCodesResponse represents the response of getting all QR codes for a phone number.

type HandleMessageSubscriptionEventPayload

type HandleMessageSubscriptionEventPayload struct {
	Messages          []Message                  `json:"messages"`
	Statuses          []Status                   `json:"statuses"`
	PhoneNumber       events.BusinessPhoneNumber `json:"phone_number_id"`     // * this is the phone number to which this event has bee sent to
	BusinessAccountId string                     `json:"business_account_id"` // * business account id to which this event has been sent to
	SenderName        string                     `json:"sender_name"`
}

type HistoryValue added in v0.7.2

type HistoryValue struct {
	MessagingProduct string `json:"messaging_product"`
	Metadata         struct {
		DisplayPhoneNumber string `json:"display_phone_number"`
		PhoneNumberId      string `json:"phone_number_id"`
	} `json:"metadata"`
	History []struct {
		Metadata struct {
			Phase      int `json:"phase"`
			ChunkOrder int `json:"chunk_order"`
			Progress   int `json:"progress"`
		} `json:"metadata"`
		Threads []struct {
			Id       string `json:"id"` // WhatsApp user phone number
			Messages []struct {
				From           string `json:"from"`
				To             string `json:"to,omitempty"` // Only included if SMB message echo
				Id             string `json:"id"`
				Timestamp      string `json:"timestamp"`
				Type           string `json:"type"`
				HistoryContext struct {
					Status string `json:"status"` // Message status
				} `json:"history_context"`
			} `json:"messages"`
		} `json:"threads"`
	} `json:"history"`
}

type ImageCdnUrl added in v0.2.0

type ImageCdnUrl struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type InteractiveNotificationTypeEnum

type InteractiveNotificationTypeEnum string
const (
	NotificationTypeButtonReply InteractiveNotificationTypeEnum = "button_reply"
	NotificationTypeListReply   InteractiveNotificationTypeEnum = "list_reply"
)

type KeyValue added in v0.2.0

type KeyValue struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

New helper type for key/value pairs.

type MediaManager

type MediaManager struct {
	// contains filtered or unexported fields
}

MediaManager is responsible for managing media related operations.

func NewMediaManager

func NewMediaManager(requester request_client.RequestClient) *MediaManager

NewMediaManager creates a new instance of MediaManager.

func (*MediaManager) DeleteMedia

func (mm *MediaManager) DeleteMedia(id string) (string, error)

func (*MediaManager) GetMediaUrlById

func (mm *MediaManager) GetMediaUrlById(id string) (string, error)

func (*MediaManager) UploadMedia added in v0.1.0

func (mm *MediaManager) UploadMedia(phoneNumberId string, file io.Reader, filename, mimeType string) (string, error)

UploadMedia uploads a media file to WhatsApp's Cloud API.

type MediaMetadata added in v0.1.0

type MediaMetadata struct {
	MessagingProduct string `json:"messaging_product"`
	Url              string `json:"url"`
	MimeType         string `json:"mime_type"`
	Sha256           string `json:"sha256"`
	FileSize         int    `json:"file_size"`
	ID               string `json:"id"`
}

type Message

type Message struct {
	Id                                              string                                      `json:"id"`
	From                                            string                                      `json:"from"`
	Timestamp                                       string                                      `json:"timestamp"`
	Type                                            NotificationMessageTypeEnum                 `json:"type"`
	GroupId                                         string                                      `json:"group_id,omitempty"`
	Context                                         NotificationPayloadMessageContextSchemaType `json:"context,omitempty"`
	Errors                                          []Error                                     `json:"errors,omitempty"`
	Referral                                        *ReferralInfo                               `json:"referral,omitempty"`
	NotificationPayloadTextMessageSchemaType        `json:",inline"`
	NotificationPayloadAudioMessageSchemaType       `json:",inline"`
	NotificationPayloadImageMessageSchemaType       `json:",inline"`
	NotificationPayloadButtonMessageSchemaType      `json:",inline"`
	NotificationPayloadDocumentMessageSchemaType    `json:",inline"`
	NotificationPayloadOrderMessageSchemaType       `json:",inline"`
	NotificationPayloadStickerMessageSchemaType     `json:",inline"`
	NotificationPayloadSystemMessageSchemaType      `json:",inline"`
	NotificationPayloadVideoMessageSchemaType       `json:",inline"`
	NotificationPayloadReactionMessageSchemaType    `json:",inline"`
	NotificationPayloadLocationMessageSchemaType    `json:",inline"`
	NotificationPayloadContactMessageSchemaType     `json:",inline"`
	NotificationPayloadInteractionMessageSchemaType `json:",inline"`
	NotificationPayloadUnsupportedMessageSchemaType `json:",inline"`
}

type MessageManager

type MessageManager struct {
	PhoneNumberId string
	// contains filtered or unexported fields
}

MessageManager is responsible for managing messages.

func NewMessageManager

func NewMessageManager(requester request_client.RequestClient, phoneNumberId string) *MessageManager

NewMessageManager creates a new instance of MessageManager.

func (*MessageManager) ReadMessageOnly added in v0.5.0

func (mm *MessageManager) ReadMessageOnly(messageId string) error

ReadMessageOnly marks a message as read without showing typing indicator. This is a convenience method for ReadMessage(messageId, false).

func (*MessageManager) ReadMessageWithTyping added in v0.5.0

func (mm *MessageManager) ReadMessageWithTyping(messageId string) error

ReadMessageWithTyping marks a message as read and shows typing indicator. This is a convenience method for ReadMessage(messageId, true).

func (*MessageManager) Reply added in v0.3.3

func (mm *MessageManager) Reply(message components.BaseMessage, phoneNumber string, replyTo string) (*MessageSendResponse, error)

Reply sends a reply message using the provided BaseMessage and returns a structured response. If the API response contains an error, it returns that error.

func (*MessageManager) Send

func (mm *MessageManager) Send(message components.BaseMessage, phoneNumber string) (*MessageSendResponse, error)

Send sends a message using the provided BaseMessage and returns a structured response. If the API response contains an error, it returns that error.

func (*MessageManager) SendMarketingMessage added in v0.7.4

func (mm *MessageManager) SendMarketingMessage(message components.BaseMessage, phoneNumber string) (*MessageSendResponse, error)

Send sends a using the MM Lite API. this only works if the WABA is eligible and has been onboarded on the MM Lite API.

type MessageSendError

type MessageSendError struct {
	Message   string `json:"message"` // Error description.
	Type      string `json:"type"`    // Error type (e.g., OAuthException).
	Code      int    `json:"code"`    // Error code.
	ErrorData struct {
		MessagingProduct string `json:"messaging_product"`
		Details          string `json:"details"`
	} `json:"error_data"` // Additional error details.
	ErrorSubcode int    `json:"error_subcode"`
	FbtraceID    string `json:"fbtrace_id"`
}

MessageSendError represents the error object in an API response.

type MessageSendResponse

type MessageSendResponse struct {
	MessagingProduct string `json:"messaging_product"`
	Contacts         []struct {
		Input string `json:"input"`
		WaID  string `json:"wa_id"`
	} `json:"contacts"`
	Messages []struct {
		ID string `json:"id"`
	} `json:"messages"`
	Error *MessageSendError `json:"error,omitempty"`
}

MessageSendResponse represents the structured API response for sending a message.

type MessageStatusCategoryEnum

type MessageStatusCategoryEnum string
const (
	MessageStatusCategorySent MessageStatusCategoryEnum = "sent"
)

type MessageStatusEnum

type MessageStatusEnum string
const (
	MessageStatusDelivered   MessageStatusEnum = "delivered"
	MessageStatusRead        MessageStatusEnum = "read"
	MessageStatusUnDelivered MessageStatusEnum = "undelivered"
	MessageStatusFailed      MessageStatusEnum = "failed"
	MessageStatusSent        MessageStatusEnum = "sent"
)

type MessageTemplateCategory

type MessageTemplateCategory string

MessageTemplateCategory represents the category of a WhatsApp Business message template.

const (
	MessageTemplateCategoryUtility        MessageTemplateCategory = "UTILITY"
	MessageTemplateCategoryMarketing      MessageTemplateCategory = "MARKETING"
	MessageTemplateCategoryAuthentication MessageTemplateCategory = "AUTHENTICATION"
)

type MessageTemplateComponentFormat

type MessageTemplateComponentFormat string

MessageTemplateComponentFormat represents the format of a template component.

const (
	MessageTemplateComponentFormatText     MessageTemplateComponentFormat = "TEXT"
	MessageTemplateComponentFormatImage    MessageTemplateComponentFormat = "IMAGE"
	MessageTemplateComponentFormatDocument MessageTemplateComponentFormat = "DOCUMENT"
	MessageTemplateComponentFormatVideo    MessageTemplateComponentFormat = "VIDEO"
	MessageTemplateComponentFormatLocation MessageTemplateComponentFormat = "LOCATION"
)

type MessageTemplateComponentType

type MessageTemplateComponentType string

MessageTemplateComponentType represents the type of a template component.

const (
	MessageTemplateComponentTypeGreeting         MessageTemplateComponentType = "GREETING"
	MessageTemplateComponentTypeHeader           MessageTemplateComponentType = "HEADER"
	MessageTemplateComponentTypeBody             MessageTemplateComponentType = "BODY"
	MessageTemplateComponentTypeFooter           MessageTemplateComponentType = "FOOTER"
	MessageTemplateComponentTypeButtons          MessageTemplateComponentType = "BUTTONS"
	MessageTemplateComponentTypeCarousel         MessageTemplateComponentType = "CAROUSEL" // this appears in case of product caraousel
	MessageTemplateComponentTypeLimitedTimeOffer MessageTemplateComponentType = "LIMITED_TIME_OFFER"
)

type MessageTemplateComponentsUpdateValue added in v0.7.2

type MessageTemplateComponentsUpdateValue struct {
	MessageTemplateId       int64  `json:"message_template_id"`
	MessageTemplateName     string `json:"message_template_name"`
	MessageTemplateLanguage string `json:"message_template_language"`
	MessageTemplateElement  string `json:"message_template_element"`          // Template body text
	MessageTemplateTitle    string `json:"message_template_title,omitempty"`  // Only if template has text header
	MessageTemplateFooter   string `json:"message_template_footer,omitempty"` // Only if template has footer
	MessageTemplateButtons  []struct {
		MessageTemplateButtonType        string `json:"message_template_button_type"`
		MessageTemplateButtonText        string `json:"message_template_button_text"`
		MessageTemplateButtonUrl         string `json:"message_template_button_url,omitempty"`          // Only for url buttons
		MessageTemplateButtonPhoneNumber string `json:"message_template_button_phone_number,omitempty"` // Only for phone number buttons
	} `json:"message_template_buttons,omitempty"` // Only if template has url or phone number button
}

type MessageTemplateCreationResponse

type MessageTemplateCreationResponse struct {
	Id       string                  `json:"id,omitempty"`
	Status   MessageTemplateStatus   `json:"status,omitempty"`
	Category MessageTemplateCategory `json:"category,omitempty"`
}

MessageTemplateCreationResponse represents the response after creating a template.

type MessageTemplateStatus

type MessageTemplateStatus string

MessageTemplateStatus represents the status of a WhatsApp Business message template.

const (
	MessageTemplateStatusApproved MessageTemplateStatus = "APPROVED"
	MessageTemplateStatusRejected MessageTemplateStatus = "REJECTED"
	MessageTemplateStatusPending  MessageTemplateStatus = "PENDING"
)

type MessagesValue

type MessagesValue struct {
	MessagingProduct string          `json:"messaging_product"`
	Metadata         Metadata        `json:"metadata"`
	Contacts         []SenderContact `json:"contacts,omitempty"`
	Statuses         []Status        `json:"statuses,omitempty"`
	Messages         []Message       `json:"messages,omitempty"`
	Errors           []Error         `json:"errors,omitempty"`
}

type Metadata

type Metadata struct {
	DisplayPhoneNumber string `json:"display_phone_number"`
	PhoneNumberId      string `json:"phone_number_id"`
}

type NamedParamExample added in v0.1.1

type NamedParamExample struct {
	ParamName string `json:"param_name"`
	Example   string `json:"example"`
}

NamedParamExample represents a single named parameter and its example value.

type NotificationMessageTypeEnum

type NotificationMessageTypeEnum string
const (
	NotificationMessageTypeText        NotificationMessageTypeEnum = "text"
	NotificationMessageTypeAudio       NotificationMessageTypeEnum = "audio"
	NotificationMessageTypeImage       NotificationMessageTypeEnum = "image"
	NotificationMessageTypeButton      NotificationMessageTypeEnum = "button"
	NotificationMessageTypeDocument    NotificationMessageTypeEnum = "document"
	NotificationMessageTypeOrder       NotificationMessageTypeEnum = "order"
	NotificationMessageTypeSticker     NotificationMessageTypeEnum = "sticker"
	NotificationMessageTypeSystem      NotificationMessageTypeEnum = "system"
	NotificationMessageTypeVideo       NotificationMessageTypeEnum = "video"
	NotificationMessageTypeReaction    NotificationMessageTypeEnum = "reaction"
	NotificationMessageTypeInteractive NotificationMessageTypeEnum = "interactive"
	NotificationMessageTypeUnknown     NotificationMessageTypeEnum = "unknown"
	NotificationMessageTypeLocation    NotificationMessageTypeEnum = "location"
	NotificationMessageTypeContacts    NotificationMessageTypeEnum = "contacts"
	NotificationMessageTypeUnsupported NotificationMessageTypeEnum = "unsupported"
)

type NotificationPayloadAudioMessageSchemaType

type NotificationPayloadAudioMessageSchemaType struct {
	Audio struct {
		Id       string `json:"id,omitempty"`
		MIMEType string `json:"mime_type,omitempty"`
		SHA256   string `json:"sha256,omitempty"`
		Url      string `json:"url,omitempty"`
		Voice    bool   `json:"voice,omitempty"` // Is Voice Recording?
	} `json:"audio,omitempty"`
}

type NotificationPayloadButtonInteractionMessageSchemaType

type NotificationPayloadButtonInteractionMessageSchemaType struct {
	ButtonReply struct {
		Id    string `json:"id"`
		Title string `json:"title"`
	} `json:"button_reply,omitempty"`
}

type NotificationPayloadButtonMessageSchemaType

type NotificationPayloadButtonMessageSchemaType struct {
	Button struct {
		Payload string `json:"payload"`
		Text    string `json:"text"`
	} `json:"button,omitempty"`
}

type NotificationPayloadContactMessageSchemaType

type NotificationPayloadContactMessageSchemaType struct {
	Contacts []components.Contact `json:"contacts"`
}

type NotificationPayloadDocumentMessageSchemaType

type NotificationPayloadDocumentMessageSchemaType struct {
	Document struct {
		Id       string `json:"id"`
		MIMEType string `json:"mime_type"`
		SHA256   string `json:"sha256"`
		Caption  string `json:"caption,omitempty"`
		Filename string `json:"filename,omitempty"`
		Link     string `json:"link,omitempty"`
	} `json:"document,omitempty"`
}

type NotificationPayloadErrorSchemaType

type NotificationPayloadErrorSchemaType struct {
	Code      int    `json:"code"`
	Title     string `json:"title"`
	Message   string `json:"message"`
	ErrorData struct {
		Details string `json:"details"`
	} `json:"error_data,omitempty"`
}

type NotificationPayloadImageMessageSchemaType

type NotificationPayloadImageMessageSchemaType struct {
	Image struct {
		Id       string `json:"id"`
		MIMEType string `json:"mime_type"`
		SHA256   string `json:"sha256"`
		Caption  string `json:"caption,omitempty"`
		Url      string `json:"url,omitempty"`
	} `json:"image,omitempty"`
}

type NotificationPayloadInteractionMessageSchemaType

type NotificationPayloadInteractionMessageSchemaType struct {
	Interactive struct {
		Type                                                  InteractiveNotificationTypeEnum `json:"type"`
		NotificationPayloadButtonInteractionMessageSchemaType `json:",inline,omitempty"`
		NotificationPayloadListInteractionMessageSchemaType   `json:",inline,omitempty"`
	} `json:"interactive,omitempty"`
}

type NotificationPayloadListInteractionMessageSchemaType

type NotificationPayloadListInteractionMessageSchemaType struct {
	ListReply struct {
		Id          string `json:"id"`
		Title       string `json:"title"`
		Description string `json:"description"`
	} `json:"list_reply,omitempty"`
}

type NotificationPayloadLocationMessageSchemaType

type NotificationPayloadLocationMessageSchemaType struct {
	Location struct {
		Latitude  float64 `json:"latitude"`
		Longitude float64 `json:"longitude"`
		Name      string  `json:"name,omitempty"`
		Address   string  `json:"address,omitempty"`
	} `json:"location,omitempty"`
}

type NotificationPayloadMessageContextSchemaType

type NotificationPayloadMessageContextSchemaType struct {
	Forwarded           bool   `json:"forwarded,omitempty"`
	FrequentlyForwarded bool   `json:"frequently_forwarded,omitempty"`
	From                string `json:"from,omitempty"`
	Id                  string `json:"id"`
	ReferredProduct     struct {
		CatalogId         string `json:"catalog_id"`
		ProductRetailerId string `json:"product_retailer_id"`
	} `json:"referred_product,omitempty"`
}

type NotificationPayloadOrderMessageSchemaType

type NotificationPayloadOrderMessageSchemaType struct {
	// OrderText string `json:"text"`
	Order struct {
		CatalogId    string `json:"catalog_id"`
		ProductItems []struct {
			ProductRetailerId string  `json:"product_retailer_id"`
			Quantity          int     `json:"quantity"`
			ItemPrice         float64 `json:"item_price"`
			Currency          string  `json:"currency"`
		} `json:"product_items"`
		Text *string `json:"text,omitempty"`
	} `json:"order,omitempty"`
}

type NotificationPayloadReactionMessageSchemaType

type NotificationPayloadReactionMessageSchemaType struct {
	Reaction struct {
		MessageId string `json:"message_id"`
		Emoji     string `json:"emoji"`
	} `json:"reaction,omitempty"`
}

type NotificationPayloadStickerMessageSchemaType

type NotificationPayloadStickerMessageSchemaType struct {
	Sticker struct {
		Id       string `json:"id"`
		MIMEType string `json:"mime_type"`
		SHA256   string `json:"sha256"`
		Animated bool   `json:"animated"`
		Url      string `json:"url,omitempty"`
	} `json:"sticker,omitempty"`
}

type NotificationPayloadSystemMessageSchemaType

type NotificationPayloadSystemMessageSchemaType struct {
	System struct {
		Body string                     `json:"body"`
		Type SystemNotificationTypeEnum `json:"type"`
		WaId string                     `json:"wa_id"`
	} `json:"system,omitempty"`
}

type NotificationPayloadTextMessageSchemaType

type NotificationPayloadTextMessageSchemaType struct {
	Text struct {
		Body string `json:"body"`
	} `json:"text,omitempty"`
}

type NotificationPayloadUnsupportedMessageSchemaType added in v0.7.2

type NotificationPayloadUnsupportedMessageSchemaType struct {
	Unsupported struct {
		Type string `json:"type"`
	} `json:"unsupported,omitempty"`
}

type NotificationPayloadVideoMessageSchemaType

type NotificationPayloadVideoMessageSchemaType struct {
	Video struct {
		Id       string `json:"id"`
		MIMEType string `json:"mime_type"`
		SHA256   string `json:"sha256"`
		Caption  string `json:"caption,omitempty"`
		Filename string `json:"filename,omitempty"`
		Url      string `json:"url,omitempty"`
	} `json:"video,omitempty"`
}

type NotificationReasonEnum

type NotificationReasonEnum string
const (
	NotificationReasonMessage NotificationReasonEnum = "message"
)

type Origin

type Origin struct {
	Type                MessageStatusCategoryEnum `json:"type"`
	ExpirationTimestamp string                    `json:"expiration_timestamp,omitempty"`
}

type PaginatedResponse added in v0.7.0

type PaginatedResponse[T any] struct {
	Data   []T               `json:"data"`
	Paging PaginationDetails `json:"paging,omitempty"`
}

PaginatedResponse is a generic wrapper for paginated responses

type PaginationCursors added in v0.7.0

type PaginationCursors struct {
	Before string `json:"before,omitempty"`
	After  string `json:"after,omitempty"`
}

PaginationCursors represents the before/after cursors used in cursor-based pagination

type PaginationDetails added in v0.7.0

type PaginationDetails struct {
	Cursors  PaginationCursors `json:"cursors,omitempty"`
	Next     string            `json:"next,omitempty"`
	Previous string            `json:"previous,omitempty"`
}

PaginationDetails contains the pagination metadata returned by WhatsApp API

func (*PaginationDetails) GetNextCursor added in v0.7.0

func (pd *PaginationDetails) GetNextCursor() string

GetNextCursor returns the cursor for the next page

func (*PaginationDetails) GetPreviousCursor added in v0.7.0

func (pd *PaginationDetails) GetPreviousCursor() string

GetPreviousCursor returns the cursor for the previous page

func (*PaginationDetails) HasNextPage added in v0.7.0

func (pd *PaginationDetails) HasNextPage() bool

HasNextPage checks if there's a next page available

func (*PaginationDetails) HasPreviousPage added in v0.7.0

func (pd *PaginationDetails) HasPreviousPage() bool

HasPreviousPage checks if there's a previous page available

type PaginationInput added in v0.7.0

type PaginationInput struct {
	Limit  int    `json:"limit,omitempty"`  // Number of results per page
	After  string `json:"after,omitempty"`  // Cursor for next page
	Before string `json:"before,omitempty"` // Cursor for previous page
}

PaginationInput represents the pagination parameters that can be passed to API calls

type PaymentConfigurationUpdateValue added in v0.7.2

type PaymentConfigurationUpdateValue struct {
	ConfigurationName string `json:"configuration_name"`
	ProviderName      string `json:"provider_name"`
	ProviderMid       string `json:"provider_mid"`
	Status            string `json:"status"`
	CreatedTimestamp  int64  `json:"created_timestamp"`
	UpdatedTimestamp  int64  `json:"updated_timestamp"`
}

type PhoneNumberManager

type PhoneNumberManager struct {
	// contains filtered or unexported fields
}

PhoneNumberManager is responsible for managing phone numbers for WhatsApp Business API and phone number specific operations.

func NewPhoneNumberManager

func NewPhoneNumberManager(config *PhoneNumberManagerConfig) *PhoneNumberManager

NewPhoneNumberManager creates a new instance of PhoneNumberManager.

func (*PhoneNumberManager) Create

func (manager *PhoneNumberManager) Create(phoneNumber, verifiedName, countryCode string) (CreatePhoneNumberResponse, error)

func (*PhoneNumberManager) DeleteQrCode

func (manager *PhoneNumberManager) DeleteQrCode(phoneNumber, id string) (*DeleteQrCodeResponse, error)

DeleteQrCode deletes a QR code by its ID for the specified phone number.

func (*PhoneNumberManager) Fetch

func (manager *PhoneNumberManager) Fetch(phoneNumberId string) (*WhatsappBusinessAccountPhoneNumber, error)

Fetch fetches a phone number by its ID.

func (*PhoneNumberManager) FetchAll

func (manager *PhoneNumberManager) FetchAll(getSandBoxNumbers bool) (*WhatsappBusinessAccountPhoneNumberEdge, error)

FetchAll fetches all phone numbers based on the provided filters.

func (*PhoneNumberManager) GenerateQrCode

func (manager *PhoneNumberManager) GenerateQrCode(phoneNumber string, prefilledMessage string) (*GenerateQrCodeResponse, error)

GenerateQrCode generates a QR code for the specified phone number with the given prefilled message.

func (*PhoneNumberManager) GetAllQrCodes

func (manager *PhoneNumberManager) GetAllQrCodes(phoneNumber string) (*GetAllQrCodesResponse, error)

GetAllQrCodes gets all QR codes for the specified phone number.

func (*PhoneNumberManager) GetQrCodeById

func (manager *PhoneNumberManager) GetQrCodeById(phoneNumber, id string) (*GetAllQrCodesResponse, error)

GetQrCodeById gets a QR code by its ID for the specified phone number.

func (*PhoneNumberManager) RequestVerificationCode

func (manager *PhoneNumberManager) RequestVerificationCode(phoneNumberId string, codeMethod VerifyCodeMethod, languageCode string) (RequestVerificationCodeResponse, error)

func (*PhoneNumberManager) UpdateQrCode

func (manager *PhoneNumberManager) UpdateQrCode(phoneNumber, id, prefilledMessage string) (*GenerateQrCodeResponse, error)

UpdateQrCode updates a QR code by its ID for the specified phone number with the given prefilled message.

func (*PhoneNumberManager) VerifyCode

func (manager *PhoneNumberManager) VerifyCode(phoneNumberId, verificationCode string) (VerifyCodeResponse, error)

type PhoneNumberManagerConfig

type PhoneNumberManagerConfig struct {
	BusinessAccountId string
	ApiAccessToken    string
	Requester         *request_client.RequestClient
}

PhoneNumberManagerConfig holds the configuration for PhoneNumberManager.

type PhoneNumberNameUpdateValue

type PhoneNumberNameUpdateValue struct {
	DisplayPhoneNumber    string `json:"display_phone_number"`
	Decision              string `json:"decision"`
	RequestedVerifiedName string `json:"requested_verified_name"`
	RejectionReason       string `json:"rejection_reason"`
}

type PhoneNumberQualityUpdateCurrentLimitEnum added in v0.3.0

type PhoneNumberQualityUpdateCurrentLimitEnum string
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"
)

type PhoneNumberQualityUpdateValue

type PhoneNumberQualityUpdateValue struct {
	DisplayPhoneNumber string                                   `json:"display_phone_number"`
	Event              string                                   `json:"event"`
	CurrentLimit       PhoneNumberQualityUpdateCurrentLimitEnum `json:"current_limit"`
}

type Pricing

type Pricing struct {
	Billable     bool                      `json:"billable"`
	PricingModel string                    `json:"pricing_model"`
	Category     MessageStatusCategoryEnum `json:"category"`
}

type ProductError added in v0.3.7

type ProductError struct {
	ErrorType     string `json:"error_type"`
	ErrorPriority string `json:"error_priority"`
	Title         string `json:"title"`
	Description   string `json:"description"`
}

type ProductFeed added in v0.3.4

type ProductFeed struct {
	Id       string `json:"id"`
	FileName string `json:"file_name"`
	Name     string `json:"name"`
}

type ProductGroup added in v0.2.0

type ProductGroup struct {
	ID         string `json:"id"`
	RetailerID string `json:"retailer_id"`
}

type ProductItem added in v0.2.0

type ProductItem struct {
	Id                                                    string          `json:"id"`
	AdditionalImageCdnUrls                                [][]ImageCdnUrl `json:"additional_image_cdn_urls,omitempty"`
	AdditionalImageUrls                                   []string        `json:"additional_image_urls,omitempty"`
	AdditionalVariantAttributes                           []KeyValue      `json:"additional_variant_attributes,omitempty"`
	AgeGroup                                              string          `json:"age_group,omitempty"`
	Applinks                                              *Applinks       `json:"applinks,omitempty"`
	Availability                                          string          `json:"availability,omitempty"`
	Brand                                                 string          `json:"brand,omitempty"`
	CapabilityToReviewStatus                              []KeyValue      `json:"capability_to_review_status,omitempty"`
	Category                                              string          `json:"category,omitempty"`
	CategorySpecificFields                                interface{}     `json:"category_specific_fields,omitempty"`
	Color                                                 string          `json:"color,omitempty"`
	CommerceInsights                                      string          `json:"commerce_insights,omitempty"`
	Condition                                             string          `json:"condition,omitempty"`
	Currency                                              string          `json:"currency,omitempty"`
	CustomData                                            []KeyValue      `json:"custom_data,omitempty"`
	CustomLabel0                                          string          `json:"custom_label_0,omitempty"`
	CustomLabel1                                          string          `json:"custom_label_1,omitempty"`
	CustomLabel2                                          string          `json:"custom_label_2,omitempty"`
	CustomLabel3                                          string          `json:"custom_label_3,omitempty"`
	CustomLabel4                                          string          `json:"custom_label_4,omitempty"`
	CustomNumber0                                         string          `json:"custom_number_0,omitempty"`
	CustomNumber1                                         string          `json:"custom_number_1,omitempty"`
	CustomNumber2                                         string          `json:"custom_number_2,omitempty"`
	CustomNumber3                                         string          `json:"custom_number_3,omitempty"`
	CustomNumber4                                         string          `json:"custom_number_4,omitempty"`
	Description                                           string          `json:"description,omitempty"`
	Errors                                                []ProductError  `json:"errors,omitempty"`
	ExpirationDate                                        string          `json:"expiration_date,omitempty"`
	FbProductCategory                                     string          `json:"fb_product_category,omitempty"`
	Gender                                                string          `json:"gender,omitempty"`
	Gtin                                                  string          `json:"gtin,omitempty"`
	ImageCdnUrls                                          []ImageCdnUrl   `json:"image_cdn_urls,omitempty"`
	ImageFetchStatus                                      string          `json:"image_fetch_status,omitempty"`
	ImageUrl                                              string          `json:"image_url,omitempty"`
	Images                                                []string        `json:"images,omitempty"`
	ImporterAddress                                       string          `json:"importer_address,omitempty"`
	ImporterName                                          string          `json:"importer_name,omitempty"`
	InvalidationErrors                                    []string        `json:"invalidation_errors,omitempty"`
	Inventory                                             int             `json:"inventory,omitempty"`
	ManufacturerInfo                                      string          `json:"manufacturer_info,omitempty"`
	ManufacturerPartNumber                                string          `json:"manufacturer_part_number,omitempty"`
	MarkedForProductLaunch                                string          `json:"marked_for_product_launch,omitempty"`
	Material                                              string          `json:"material,omitempty"`
	MobileLink                                            string          `json:"mobile_link,omitempty"`
	Name                                                  string          `json:"name,omitempty"`
	OrderingIndex                                         int             `json:"ordering_index,omitempty"`
	OriginCountry                                         string          `json:"origin_country,omitempty"`
	ParentProductID                                       string          `json:"parent_product_id,omitempty"`
	Pattern                                               string          `json:"pattern,omitempty"`
	PostConversionSignalBasedEnforcementAppealEligibility bool            `json:"post_conversion_signal_based_enforcement_appeal_eligibility,omitempty"`
	Price                                                 string          `json:"price,omitempty"`
	ProductFeed                                           *ProductFeed    `json:"product_feed,omitempty"`
	ProductGroup                                          *ProductGroup   `json:"product_group,omitempty"`
	ProductLocalInfo                                      string          `json:"product_local_info,omitempty"`
	ProductType                                           string          `json:"product_type,omitempty"`
	QuantityToSellOnFacebook                              int             `json:"quantity_to_sell_on_facebook,omitempty"`
	RetailerId                                            string          `json:"retailer_id,omitempty"`
	RetailerProductGroupID                                string          `json:"retailer_product_group_id,omitempty"`
	ReviewRejectionReasons                                []string        `json:"review_rejection_reasons,omitempty"`
	ReviewStatus                                          string          `json:"review_status,omitempty"`
	SalePrice                                             string          `json:"sale_price,omitempty"`
	SalePriceEndDate                                      string          `json:"sale_price_end_date,omitempty"`
	SalePriceStartDate                                    string          `json:"sale_price_start_date,omitempty"`
	ShippingWeightUnit                                    string          `json:"shipping_weight_unit,omitempty"`
	ShippingWeightValue                                   float64         `json:"shipping_weight_value,omitempty"`
	ShortDescription                                      string          `json:"short_description,omitempty"`
	Size                                                  string          `json:"size,omitempty"`
	StartDate                                             string          `json:"start_date,omitempty"`
	Tags                                                  []string        `json:"tags,omitempty"`
	Url                                                   string          `json:"url,omitempty"`
	VendorId                                              string          `json:"vendor_id,omitempty"`
	VideoFetchStatus                                      string          `json:"video_fetch_status,omitempty"`
	Visibility                                            string          `json:"visibility,omitempty"`
	WaComplianceCategory                                  string          `json:"wa_compliance_category,omitempty"`
}

ProductItem represents a product in a catalog.

type ProductSet added in v0.2.0

type ProductSet struct {
	Id              string             `json:"id"`
	AutoCreationUrl string             `json:"auto_creation_url,omitempty"`
	Filter          string             `json:"filter,omitempty"`
	LatestMetadata  ProductSetMetadata `json:"latest_metadata,omitempty"`
	LiveMetadata    ProductSetMetadata `json:"live_metadata,omitempty"`
	Name            string             `json:"name"`
	// Omit full ProductCatalog to avoid cyclic properties; use catalog Id instead.
	ProductCount uint32 `json:"product_count"`
	RetailerId   string `json:"retailer_id,omitempty"`
}

ProductSet represents a product set within a catalog.

type ProductSetMetadata added in v0.2.0

type ProductSetMetadata struct {
	UpdateTime string `json:"update_time,omitempty"`
}

ProductSetMetadata represents metadata for a product set.

type Profile

type Profile struct {
	Name string `json:"name"`
}

type ReferralInfo added in v0.7.2

type ReferralInfo struct {
	SourceUrl      string                           `json:"source_url"`
	SourceType     AdInteractionSourceTypeEnum      `json:"source_type"`
	SourceId       string                           `json:"source_id"`
	Headline       string                           `json:"headline"`
	Body           string                           `json:"body"`
	ImageUrl       string                           `json:"image_url,omitempty"`
	VideoUrl       string                           `json:"video_url,omitempty"`
	ThumbnailUrl   string                           `json:"thumbnail_url,omitempty"`
	CtwaClid       string                           `json:"ctwa_clid,omitempty"`
	MediaType      AdInteractionSourceMediaTypeEnum `json:"media_type"`
	WelcomeMessage struct {
		Text string `json:"text"`
	} `json:"welcome_message,omitempty"`
}

ReferralInfo represents referral data from Click to WhatsApp ads

type RequestVerificationCodeResponse

type RequestVerificationCodeResponse struct {
	Success bool `json:"success,omitempty"`
}

type SecurityValue

type SecurityValue struct {
	DisplayPhoneNumber string `json:"display_phone_number"`
	Event              string `json:"event"`
	Requester          string `json:"requester"`
}

type SenderContact added in v0.7.2

type SenderContact struct {
	WaId            string  `json:"wa_id"`
	Profile         Profile `json:"profile"`
	IdentityKeyHash string  `json:"identity_key_hash,omitempty"`
}

type SmbAppStateSyncValue added in v0.7.2

type SmbAppStateSyncValue struct {
	MessagingProduct string `json:"messaging_product"`
	Metadata         struct {
		DisplayPhoneNumber string `json:"display_phone_number"`
		PhoneNumberId      string `json:"phone_number_id"`
	} `json:"metadata"`
	StateSync []struct {
		Type    string `json:"type"` // e.g., "contact"
		Contact struct {
			FullName    string `json:"full_name,omitempty"`
			FirstName   string `json:"first_name,omitempty"`
			PhoneNumber string `json:"phone_number,omitempty"`
		} `json:"contact,omitempty"`
		Action   string `json:"action"` // e.g., "add", "remove", "update"
		Metadata struct {
			Timestamp string `json:"timestamp"`
		} `json:"metadata"`
	} `json:"state_sync"`
}

type SmbMessageEchoesValue added in v0.7.2

type SmbMessageEchoesValue struct {
	MessagingProduct string `json:"messaging_product"`
	Metadata         struct {
		DisplayPhoneNumber string `json:"display_phone_number"`
		PhoneNumberId      string `json:"phone_number_id"`
	} `json:"metadata"`
	MessageEchoes []struct {
		From      string `json:"from"`
		To        string `json:"to"`
		Id        string `json:"id"`
		Timestamp string `json:"timestamp"`
		Type      string `json:"type"`
		// Message contents are dynamic based on type
		// Using map for flexibility
		MessageContent map[string]interface{} `json:"-"` // Will be populated from the type-specific field
	} `json:"message_echoes"`
}

type Status

type Status struct {
	Id                       string       `json:"id"`
	Conversation             Conversation `json:"conversation,omitempty"`
	Errors                   []Error      `json:"errors,omitempty"`
	Status                   string       `json:"status"`
	Timestamp                string       `json:"timestamp"`
	RecipientId              string       `json:"recipient_id"`
	RecipientType            string       `json:"recipient_type,omitempty"`              // Only included if message sent to a group
	RecipientParticipantId   string       `json:"recipient_participant_id,omitempty"`    // Only included if message sent to a group
	RecipientIdentityKeyHash string       `json:"recipient_identity_key_hash,omitempty"` // Only included if identity change check enabled
	BizOpaqueCallbackData    string       `json:"biz_opaque_callback_data,omitempty"`    // Only included if message sent with biz_opaque_callback_data
	Pricing                  Pricing      `json:"pricing,omitempty"`
}

type StatusResponse added in v0.5.0

type StatusResponse struct {
	Success bool              `json:"success"`
	Error   *MessageSendError `json:"error,omitempty"`
}

StatusResponse represents the API response for status updates (read receipts).

type SystemNotificationTypeEnum

type SystemNotificationTypeEnum string
const (
	SystemNotificationTypeCustomerPhoneNumberChange SystemNotificationTypeEnum = "user_changed_number"
	SystemNotificationTypeCustomerIdentityChanged   SystemNotificationTypeEnum = "customer_identity_changed"
)

type TemplateCategoryUpdateValue

type TemplateCategoryUpdateValue struct {
	MessageTemplateId       int64                   `json:"message_template_id"`
	MessageTemplateName     string                  `json:"message_template_name"`
	MessageTemplateLanguage string                  `json:"message_template_language"`
	PreviousCategory        MessageTemplateCategory `json:"previous_category"`
	NewCategory             MessageTemplateCategory `json:"new_category"`
	CorrectCategory         MessageTemplateCategory `json:"correct_category"`
}

type TemplateManager

type TemplateManager struct {
	// contains filtered or unexported fields
}

TemplateManager is responsible for managing WhatsApp Business message templates.

func NewTemplateManager

func NewTemplateManager(config *TemplateManagerConfig) *TemplateManager

NewTemplateManager creates a new TemplateManager with the given configuration.

func (*TemplateManager) Create

Create sends a creation request for a message template.

func (*TemplateManager) Delete

func (tm *TemplateManager) Delete(id string)

Delete dissociates a template (delete implementation to be added as needed).

func (*TemplateManager) Fetch

Fetch fetches a single WhatsApp Business message template by its ID (no changes needed)

func (*TemplateManager) FetchAll deprecated

Deprecated: Use FetchAllWithPagination for better control

func (*TemplateManager) FetchAllWithPagination added in v0.7.0

func (manager *TemplateManager) FetchAllWithPagination(paginationInput ...*PaginationInput) (*PaginatedResponse[WhatsAppBusinessMessageTemplateNode], error)

FetchAllWithPagination fetches WhatsApp Business message templates with pagination support

func (*TemplateManager) GetAllTemplates added in v0.7.0

func (manager *TemplateManager) GetAllTemplates(limit ...int) ([]WhatsAppBusinessMessageTemplateNode, error)

GetAllTemplates fetches all templates across all pages This is a helper method that handles pagination automatically

func (*TemplateManager) MigrateFromOtherBusinessAccount

func (manager *TemplateManager) MigrateFromOtherBusinessAccount(sourcePageNumber int, sourceWabaId int) (*TemplateMigrationResponse, error)

MigrateFromOtherBusinessAccount migrates templates from another business account.

func (*TemplateManager) Update

Update sends an update request for a template.

type TemplateManagerConfig

type TemplateManagerConfig struct {
	BusinessAccountId string
	ApiAccessToken    string
	Requester         *request_client.RequestClient
}

TemplateManagerConfig represents the configuration for creating a new TemplateManager.

type TemplateMessageButtonType

type TemplateMessageButtonType string

TemplateMessageButtonType represents the type of a button.

const (
	TemplateMessageButtonTypeQuickReply          TemplateMessageButtonType = "QUICK_REPLY"
	TemplateMessageButtonTypeUrl                 TemplateMessageButtonType = "URL"
	TemplateMessageButtonTypePhoneNumber         TemplateMessageButtonType = "PHONE_NUMBER"
	TemplateMessageButtonTypeCopyCode            TemplateMessageButtonType = "COPY_CODE"
	TemplateMessageButtonTypeCatalog             TemplateMessageButtonType = "CATALOG"
	TemplateMessageButtonTypeMultiProductMessage TemplateMessageButtonType = "MPM"
)

type TemplateMessageComponentButton

type TemplateMessageComponentButton struct {
	Type        TemplateMessageButtonType `json:"type,omitempty"`
	Text        string                    `json:"text,omitempty"`
	PhoneNumber string                    `json:"phone_number,omitempty"` // required when Type = PHONE_NUMBER
	Example     []string                  `json:"example,omitempty"`      // required when Type = URL and button uses a variable
	Url         string                    `json:"url,omitempty"`          // required when Type = URL
}

TemplateMessageComponentButton represents a button component in a message template.

type TemplateMessageComponentCard

type TemplateMessageComponentCard struct {
	// Add card-specific fields if needed.
	Components []WhatsAppBusinessHSMWhatsAppHSMComponent `json:"components,omitempty"`
}

TemplateMessageComponentCard represents a card component in a message template.

type TemplateMessageComponentExample

type TemplateMessageComponentExample struct {
	HeaderHandle          *[]string            `json:"header_handle,omitempty"`            // for media headers (IMAGE, VIDEO, DOCUMENT)
	HeaderTextNamedParams *[]NamedParamExample `json:"header_text_named_params,omitempty"` // for named header params
	HeaderText            *[]string            `json:"header_text,omitempty"`              // for text headers (positional examples)
	BodyText              *[][]string          `json:"body_text,omitempty"`                // for body components (array of arrays for positional examples)
	BodyTextNamedParams   *[]NamedParamExample `json:"body_text_named_params,omitempty"`
}

TemplateMessageComponentExample represents an example object for a template component.

type TemplateMessageLimitedTimeOfferParameter

type TemplateMessageLimitedTimeOfferParameter struct {
	Text          string `json:"text,omitempty"`
	HasExpiration bool   `json:"has_expiration,omitempty"`
}

TemplateMessageLimitedTimeOfferParameter represents a limited time offer parameter.

type TemplateMessagePreviewEdge

type TemplateMessagePreviewEdge struct {
	Data   []TemplateMessagePreviewNode `json:"data,omitempty"`
	Paging PaginationDetails            `json:"paging,omitempty"`
}

TemplateMessagePreviewEdge represents the preview response.

type TemplateMessagePreviewNode

type TemplateMessagePreviewNode struct {
	Body     string                                                `json:"body,omitempty"`
	Buttons  []WhatsAppBusinessAccountMessageTemplatePreviewButton `json:"buttons,omitempty"`
	Footer   string                                                `json:"footer,omitempty"`
	Header   string                                                `json:"header,omitempty"`
	Language string                                                `json:"language,omitempty"`
}

TemplateMessagePreviewNode represents a preview node.

type TemplateMessageQualityScore

type TemplateMessageQualityScore struct {
	Date    int      `json:"date,omitempty"`
	Reasons []string `json:"reasons,omitempty"`
	Score   string   `json:"score,omitempty"`
}

TemplateMessageQualityScore represents the quality score of a template.

type TemplateMessageRejectionReasonEnum

type TemplateMessageRejectionReasonEnum string
const (
	TemplateMessageRejectionReasonEnumAbusiveContent    TemplateMessageRejectionReasonEnum = "ABUSIVE_CONTENT"
	TemplateMessageRejectionReasonEnumIncorrectCategory TemplateMessageRejectionReasonEnum = "INCORRECT_CATEGORY"
	TemplateMessageRejectionReasonEnumInvalidFormat     TemplateMessageRejectionReasonEnum = "INVALID_FORMAT"
	TemplateMessageRejectionReasonEnumNone              TemplateMessageRejectionReasonEnum = "NONE"
	TemplateMessageRejectionReasonEnumScam              TemplateMessageRejectionReasonEnum = "SCAM"
)

type TemplateMessageStatusUpdateDisableInfo

type TemplateMessageStatusUpdateDisableInfo struct {
	DisableDate string `json:"disable_date"`
}

type TemplateMessageStatusUpdateEventEnum

type TemplateMessageStatusUpdateEventEnum string
const (
	TemplateMessageStatusUpdateEventEnumApproved            TemplateMessageStatusUpdateEventEnum = "APPROVED"
	TemplateMessageStatusUpdateEventEnumRejected            TemplateMessageStatusUpdateEventEnum = "REJECTED"
	TemplateMessageStatusUpdateEventEnumFlaggedForDisabling TemplateMessageStatusUpdateEventEnum = "FLAGGED"
	TemplateMessageStatusUpdateEventEnumPaused              TemplateMessageStatusUpdateEventEnum = "PAUSED"
	TemplateMessageStatusUpdateEventEnumPendingDeletion     TemplateMessageStatusUpdateEventEnum = "PENDING_DELETION"
)

type TemplateMessageStatusUpdateOtherInfo

type TemplateMessageStatusUpdateOtherInfo struct {
	Title string `json:"title"`
}

type TemplateMigrationResponse

type TemplateMigrationResponse struct {
	MigratedTemplates []string          `json:"migrated_templates,omitempty"`
	FailedTemplates   map[string]string `json:"failed_templates,omitempty"`
}

TemplateMigrationResponse represents the migration response.

type TemplateQualityUpdateValue

type TemplateQualityUpdateValue struct {
	PreviousQualityScore    string `json:"previous_quality_score"`
	NewQualityScore         string `json:"new_quality_score"`
	MessageTemplateId       int64  `json:"message_template_id"`
	MessageTemplateName     string `json:"message_template_name"`
	MessageTemplateLanguage string `json:"message_template_language"`
}

type TemplateStatusUpdateValue

type TemplateStatusUpdateValue struct {
	Event                   TemplateMessageStatusUpdateEventEnum   `json:"event"`
	MessageTemplateId       int64                                  `json:"message_template_id"`
	MessageTemplateName     string                                 `json:"message_template_name"`
	MessageTemplateLanguage string                                 `json:"message_template_language"`
	Reason                  TemplateMessageRejectionReasonEnum     `json:"reason"`
	DisableInfo             TemplateMessageStatusUpdateDisableInfo `json:"disable_info,omitempty"`
	OtherInfo               TemplateMessageStatusUpdateOtherInfo   `json:"other_info,omitempty"`
}

type UserPreferencesValue added in v0.7.2

type UserPreferencesValue struct {
	UserPreferences []struct {
		WaId      string `json:"wa_id"`
		Detail    string `json:"detail"`
		Category  string `json:"category"` // e.g., "marketing_messages"
		Value     string `json:"value"`    // Preference value
		Timestamp int64  `json:"timestamp"`
	} `json:"user_preferences"`
}

type VerifyCodeMethod

type VerifyCodeMethod string
const (
	VerifyCodeMethodSms   VerifyCodeMethod = "SMS"
	VerifyCodeMethodVoice VerifyCodeMethod = "VOICE"
)

type VerifyCodeResponse

type VerifyCodeResponse struct {
	Success bool `json:"success,omitempty"`
}

type WabaHealthStatus added in v0.4.3

type WabaHealthStatus struct {
	CanSendMessage string `json:"can_send_message"`
	Entities       []struct {
		EntityType        string `json:"entity_type"`
		ID                string `json:"id"`
		CanSendMessage    string `json:"can_send_message,omitempty"`
		CanReceiveCallSIP string `json:"can_receive_call_sip,omitempty"`
		Errors            []struct {
			ErrorCode        int    `json:"error_code"`
			ErrorDescription string `json:"error_description"`
			PossibleSolution string `json:"possible_solution"`
		} `json:"errors,omitempty"`
	} `json:"entities"`
}

type WabaOfficialBusinessAccount added in v0.4.3

type WabaOfficialBusinessAccount struct {
	OBAStatus string `json:"oba_status"`
}

type WabaQualityScore added in v0.4.3

type WabaQualityScore struct {
	Score string `json:"score"`
}

type WabaThroughput added in v0.4.3

type WabaThroughput struct {
	Level string `json:"level"`
}
type WebApplink struct {
	ShouldFallback bool   `json:"should_fallback"`
	URL            string `json:"url"`
}

type WebhookFieldEnum

type WebhookFieldEnum string
const (
	WebhookFieldEnumAccountAlerts                   WebhookFieldEnum = "account_alerts"
	WebhookFieldEnumMessages                        WebhookFieldEnum = "messages"
	WebhookFieldEnumSecurity                        WebhookFieldEnum = "security"
	WebhookFieldEnumAccountUpdate                   WebhookFieldEnum = "account_update"
	WebhookFieldEnumAccountReview                   WebhookFieldEnum = "account_review"
	WebhookFieldEnumBusinessCapability              WebhookFieldEnum = "business_capability"
	WebhookFieldEnumMessageTemplateQuality          WebhookFieldEnum = "message_template_quality"
	WebhookFieldEnumMessageTemplateStatus           WebhookFieldEnum = "message_template_status"
	WebhookFieldEnumPhoneNumberName                 WebhookFieldEnum = "phone_number_name"
	WebhookFieldEnumPhoneNumberQuality              WebhookFieldEnum = "phone_number_quality"
	WebhookFieldEnumTemplateCategoryUpdate          WebhookFieldEnum = "template_category"
	WebhookFieldEnumUserPreferences                 WebhookFieldEnum = "user_preferences"
	WebhookFieldEnumMessageTemplateComponentsUpdate WebhookFieldEnum = "message_template_components_update"
	WebhookFieldEnumPaymentConfigurationUpdate      WebhookFieldEnum = "payment_configuration_update"
	WebhookFieldEnumSmbAppStateSync                 WebhookFieldEnum = "smb_app_state_sync"
	WebhookFieldEnumSmbMessageEchoes                WebhookFieldEnum = "smb_message_echoes"
	WebhookFieldEnumHistory                         WebhookFieldEnum = "history"
)

type WebhookManager

type WebhookManager struct {
	EventManager EventManager
	Requester    request_client.RequestClient
	// contains filtered or unexported fields
}

WebhookManager represents a manager for handling webhooks.

func NewWebhook

func NewWebhook(options *WebhookManagerConfig) *WebhookManager

NewWebhook creates a new WebhookManager with the given options.

func (*WebhookManager) GetRequestHandler

func (wh *WebhookManager) GetRequestHandler(c echo.Context) error

GetRequestHandler handles GET requests to the webhook endpoint.

func (*WebhookManager) ListenToEvents

func (wh *WebhookManager) ListenToEvents()

ListenToEvents starts listening to events and handles incoming requests.

func (*WebhookManager) PostRequestHandler

func (wh *WebhookManager) PostRequestHandler(c echo.Context) error

PostRequestHandler handles POST requests to the webhook endpoint.

type WebhookManagerConfig

type WebhookManagerConfig struct {
	Secret       string                       `validate:"required"`
	EventManager EventManager                 `validate:"required"`
	Requester    request_client.RequestClient `validate:"required"`
	Path         string
	Port         int
}

WebhookManagerConfig represents the configuration options for creating a new WebhookManager.

type WhatsAppBusinessAccountMessageTemplateDeleteRequestBody

type WhatsAppBusinessAccountMessageTemplateDeleteRequestBody struct {
	HsmId string `json:"hsm_id,omitempty"`
	Name  string `json:"name,omitempty"`
}

WhatsAppBusinessAccountMessageTemplateDeleteRequestBody represents the request body for deleting a template.

type WhatsAppBusinessAccountMessageTemplatePreviewButton

type WhatsAppBusinessAccountMessageTemplatePreviewButton struct {
	AutoFillText string `json:"auto_fill_text,omitempty"`
	Text         string `json:"text,omitempty"`
}

WhatsAppBusinessAccountMessageTemplatePreviewButton represents a preview button.

type WhatsAppBusinessAccountMessageTemplateUpdateRequestBody

type WhatsAppBusinessAccountMessageTemplateUpdateRequestBody struct {
	Components            []WhatsappMessageTemplateComponentCreateOrUpdateRequestBody `json:"components,omitempty"`
	Category              string                                                      `json:"category,omitempty"`
	MessageSendTtlSeconds int                                                         `json:"message_send_ttl_seconds,omitempty"`
}

WhatsAppBusinessAccountMessageTemplateUpdateRequestBody represents the request body for updating a template.

type WhatsAppBusinessHSMWhatsAppHSMComponent

type WhatsAppBusinessHSMWhatsAppHSMComponent struct {
	AddSecurityRecommendation bool                                      `json:"add_security_recommendation,omitempty"`
	Buttons                   []TemplateMessageComponentButton          `json:"buttons,omitempty"`
	Cards                     []TemplateMessageComponentCard            `json:"cards,omitempty"`
	CodeExpirationMinutes     int                                       `json:"code_expiration_minutes,omitempty"`
	Example                   *TemplateMessageComponentExample          `json:"example,omitempty"`
	Format                    MessageTemplateComponentFormat            `json:"format,omitempty"`
	LimitedTimeOffer          *TemplateMessageLimitedTimeOfferParameter `json:"limited_time_offer,omitempty"`
	Text                      string                                    `json:"text,omitempty"`
	Type                      MessageTemplateComponentType              `json:"type,omitempty"`
}

WhatsAppBusinessHSMWhatsAppHSMComponent represents a component in a message template. Note: The "Type" field here now uses MessageTemplateComponentType.

type WhatsAppBusinessMessageTemplateNode

type WhatsAppBusinessMessageTemplateNode struct {
	Id                         string                                    `json:"id,omitempty"`
	Category                   MessageTemplateCategory                   `json:"category,omitempty"`
	Components                 []WhatsAppBusinessHSMWhatsAppHSMComponent `json:"components,omitempty"`
	CorrectCategory            string                                    `json:"correct_category,omitempty"`
	CtaUrlLinkTrackingOptedOut bool                                      `json:"cta_url_link_tracking_opted_out,omitempty"`
	Language                   string                                    `json:"language,omitempty"`
	LibraryTemplateName        string                                    `json:"library_template_name,omitempty"`
	MessageSendTtlSeconds      int                                       `json:"message_send_ttl_seconds,omitempty"`
	Name                       string                                    `json:"name,omitempty"`
	PreviousCategory           string                                    `json:"previous_category,omitempty"`
	QualityScore               TemplateMessageQualityScore               `json:"quality_score,omitempty"`
	RejectedReason             string                                    `json:"rejected_reason,omitempty"`
	Status                     MessageTemplateStatus                     `json:"status,omitempty"`
}

WhatsAppBusinessMessageTemplateNode represents a WhatsApp Business message template.

type WhatsAppBusinessTemplatesFetchResponseEdge

type WhatsAppBusinessTemplatesFetchResponseEdge struct {
	Data   []WhatsAppBusinessMessageTemplateNode `json:"data,omitempty"`
	Paging PaginationDetails                     `json:"paging,omitempty"`
}

WhatsAppBusinessTemplatesFetchResponseEdge represents the response structure for fetching templates.

type WhatsappApiNotificationPayloadSchemaType

type WhatsappApiNotificationPayloadSchemaType struct {
	Object string  `json:"object"`
	Entry  []Entry `json:"entry"`
}

type WhatsappBusinessAccountPhoneNumber

type WhatsappBusinessAccountPhoneNumber struct {
	VerifiedName                          string                                                   `json:"verified_name,omitempty"`
	DisplayPhoneNumber                    string                                                   `json:"display_phone_number,omitempty"`
	Id                                    string                                                   `json:"id,omitempty"`
	QualityRating                         string                                                   `json:"quality_rating,omitempty"`
	CodeVerificationStatus                WhatsappBusinessAccountPhoneNumberCodeVerificationStatus `json:"code_verification_status,omitempty"`
	Status                                WhatsappBusinessAccountPhoneNumberStatus                 `json:"status,omitempty"` // CONNECTED
	PlatformType                          WhatsappBusinessAccountPhoneNumberPlatformType           `json:"platform_type,omitempty"`
	CountryDialCode                       string                                                   `json:"country_dial_code,omitempty"`
	SearchVisibility                      string                                                   `json:"search_visibility,omitempty"`
	Certificate                           string                                                   `json:"certificate,omitempty"`
	HealthStatus                          *WabaHealthStatus                                        `json:"health_status,omitempty"`
	IsOfficialBusinessAccount             bool                                                     `json:"is_official_business_account,omitempty"`
	IsOnBizApp                            bool                                                     `json:"is_on_biz_app,omitempty"`
	IsPinEnabled                          bool                                                     `json:"is_pin_enabled,omitempty"`
	IsPreverifiedNumber                   bool                                                     `json:"is_preverified_number,omitempty"`
	LastOnboardedTime                     string                                                   `json:"last_onboarded_time,omitempty"`
	MessagingLimitTier                    WhatsappBusinessAccountPhoneNumberMessagingLimitTier     `json:"messaging_limit_tier,omitempty"`
	NameStatus                            WhatsappBusinessAccountPhoneNumberNameStatus             `json:"name_status,omitempty"`
	NewCertificate                        string                                                   `json:"new_certificate,omitempty"`
	NewDisplayName                        string                                                   `json:"new_display_name,omitempty"`
	NewNameStatus                         WhatsappBusinessAccountPhoneNumberNameStatus             `json:"new_name_status,omitempty"`
	EligibilityForApiBusinessGlobalSearch string                                                   `json:"eligibility_for_api_business_global_search,omitempty"`
	AccountMode                           string                                                   `json:"account_mode,omitempty"`
	Throughput                            *WabaThroughput                                          `json:"throughput,omitempty"`
	OfficialBusinessAccount               *WabaOfficialBusinessAccount                             `json:"official_business_account,omitempty"`
	QualityScore                          *WabaQualityScore                                        `json:"quality_score,omitempty"`
}

WhatsappBusinessAccountPhoneNumber represents a WhatsApp Business Account phone number.

type WhatsappBusinessAccountPhoneNumberCodeVerificationStatus added in v0.4.3

type WhatsappBusinessAccountPhoneNumberCodeVerificationStatus string
const (
	WhatsappBusinessAccountPhoneNumberCodeVerificationStatusVerified    WhatsappBusinessAccountPhoneNumberCodeVerificationStatus = "VERIFIED"
	WhatsappBusinessAccountPhoneNumberCodeVerificationStatusNotVerified WhatsappBusinessAccountPhoneNumberCodeVerificationStatus = "NOT_VERIFIED"
	WhatsappBusinessAccountPhoneNumberCodeVerificationStatusExpired     WhatsappBusinessAccountPhoneNumberCodeVerificationStatus = "EXPIRED"
)

type WhatsappBusinessAccountPhoneNumberEdge

type WhatsappBusinessAccountPhoneNumberEdge struct {
	Data    []WhatsappBusinessAccountPhoneNumber `json:"data,omitempty"`
	Paging  PaginationDetails                    `json:"paging,omitempty"`
	Summary string                               `json:"summary,omitempty"`
}

WhatsappBusinessAccountPhoneNumberEdge represents a list of WhatsApp Business Account phone numbers.

type WhatsappBusinessAccountPhoneNumberMessagingLimitTier added in v0.4.3

type WhatsappBusinessAccountPhoneNumberMessagingLimitTier string
const (
	WhatsappBusinessAccountPhoneNumberMessagingLimitTierTier50        WhatsappBusinessAccountPhoneNumberMessagingLimitTier = "TIER_50"
	WhatsappBusinessAccountPhoneNumberMessagingLimitTierTier250       WhatsappBusinessAccountPhoneNumberMessagingLimitTier = "TIER_250"
	WhatsappBusinessAccountPhoneNumberMessagingLimitTierTier1K        WhatsappBusinessAccountPhoneNumberMessagingLimitTier = "TIER_1K"
	WhatsappBusinessAccountPhoneNumberMessagingLimitTierTier10K       WhatsappBusinessAccountPhoneNumberMessagingLimitTier = "TIER_10K"
	WhatsappBusinessAccountPhoneNumberMessagingLimitTierTier100K      WhatsappBusinessAccountPhoneNumberMessagingLimitTier = "TIER_100K"
	WhatsappBusinessAccountPhoneNumberMessagingLimitTierTierUnlimited WhatsappBusinessAccountPhoneNumberMessagingLimitTier = "TIER_UNLIMITED"
)

type WhatsappBusinessAccountPhoneNumberNameStatus added in v0.4.3

type WhatsappBusinessAccountPhoneNumberNameStatus string
const (
	WhatsappBusinessAccountPhoneNumberNameStatusApproved               WhatsappBusinessAccountPhoneNumberNameStatus = "APPROVED"
	WhatsappBusinessAccountPhoneNumberNameStatusAvailableWithoutReview WhatsappBusinessAccountPhoneNumberNameStatus = "AVAILABLE_WITHOUT_REVIEW"
	WhatsappBusinessAccountPhoneNumberNameStatusDeclined               WhatsappBusinessAccountPhoneNumberNameStatus = "DECLINED"
	WhatsappBusinessAccountPhoneNumberNameStatusExpired                WhatsappBusinessAccountPhoneNumberNameStatus = "EXPIRED"
	WhatsappBusinessAccountPhoneNumberNameStatusNonExists              WhatsappBusinessAccountPhoneNumberNameStatus = "NON_EXISTS"
	WhatsappBusinessAccountPhoneNumberNameStatusNone                   WhatsappBusinessAccountPhoneNumberNameStatus = "NONE"
	WhatsappBusinessAccountPhoneNumberNameStatusPendingReview          WhatsappBusinessAccountPhoneNumberNameStatus = "PENDING_REVIEW"
)

type WhatsappBusinessAccountPhoneNumberPlatformType added in v0.4.3

type WhatsappBusinessAccountPhoneNumberPlatformType string
const (
	WhatsappBusinessAccountPhoneNumberPlatformTypeCloudApi      WhatsappBusinessAccountPhoneNumberPlatformType = "CLOUD_API"
	WhatsappBusinessAccountPhoneNumberPlatformTypeNotApplicable WhatsappBusinessAccountPhoneNumberPlatformType = "NOT_APPLICABLE"
	WhatsappBusinessAccountPhoneNumberPlatformTypeOnPremise     WhatsappBusinessAccountPhoneNumberPlatformType = "ON_PREMISE"
)

type WhatsappBusinessAccountPhoneNumberStatus added in v0.4.3

type WhatsappBusinessAccountPhoneNumberStatus string
const (
	WhatsappBusinessAccountPhoneNumberStatusPending      WhatsappBusinessAccountPhoneNumberStatus = "PENDING"
	WhatsappBusinessAccountPhoneNumberStatusDeleted      WhatsappBusinessAccountPhoneNumberStatus = "DELETED"
	WhatsappBusinessAccountPhoneNumberStatusMigrated     WhatsappBusinessAccountPhoneNumberStatus = "MIGRATED"
	WhatsappBusinessAccountPhoneNumberStatusBanned       WhatsappBusinessAccountPhoneNumberStatus = "BANNED"
	WhatsappBusinessAccountPhoneNumberStatusRestricted   WhatsappBusinessAccountPhoneNumberStatus = "RESTRICTED"
	WhatsappBusinessAccountPhoneNumberStatusRateLimited  WhatsappBusinessAccountPhoneNumberStatus = "RATE_LIMITED"
	WhatsappBusinessAccountPhoneNumberStatusFlagged      WhatsappBusinessAccountPhoneNumberStatus = "FLAGGED"
	WhatsappBusinessAccountPhoneNumberStatusConnected    WhatsappBusinessAccountPhoneNumberStatus = "CONNECTED"
	WhatsappBusinessAccountPhoneNumberStatusDisconnected WhatsappBusinessAccountPhoneNumberStatus = "DISCONNECTED"
	WhatsappBusinessAccountPhoneNumberStatusUnknown      WhatsappBusinessAccountPhoneNumberStatus = "UNKNOWN"
	WhatsappBusinessAccountPhoneNumberStatusUnverified   WhatsappBusinessAccountPhoneNumberStatus = "UNVERIFIED"
)

type WhatsappMessageTemplateButtonCreateRequestBody

type WhatsappMessageTemplateButtonCreateRequestBody struct {
	Type                 string   `json:"type,omitempty"`
	Text                 string   `json:"text,omitempty"`
	Url                  string   `json:"url,omitempty"`
	PhoneNumber          string   `json:"phone_number,omitempty"`
	Example              []string `json:"example,omitempty"` // For URL buttons with variables.
	FlowId               string   `json:"flow_id,omitempty"`
	ZeroTapTermsAccepted bool     `json:"zero_tap_terms_accepted,omitempty"`
}

WhatsappMessageTemplateButtonCreateRequestBody represents the request body for creating a button.

type WhatsappMessageTemplateButtonCreateRequestBodyAlias

type WhatsappMessageTemplateButtonCreateRequestBodyAlias = WhatsappMessageTemplateButtonCreateRequestBody

WhatsappMessageTemplateButtonCreateRequestBody alias used in component creation.

type WhatsappMessageTemplateComponentCreateOrUpdateRequestBody

type WhatsappMessageTemplateComponentCreateOrUpdateRequestBody struct {
	Type    MessageTemplateComponentType                     `json:"type,omitempty"`
	Format  MessageTemplateComponentFormat                   `json:"format,omitempty"`
	Text    string                                           `json:"text,omitempty"`
	Buttons []WhatsappMessageTemplateButtonCreateRequestBody `json:"buttons,omitempty"`
	Example *TemplateMessageComponentExample                 `json:"example,omitempty"`
}

WhatsappMessageTemplateComponentCreateOrUpdateRequestBody represents the request body for creating/updating a component.

type WhatsappMessageTemplateCreateRequestBody

type WhatsappMessageTemplateCreateRequestBody struct {
	AllowCategoryChange         bool                                                        `json:"allow_category_change,omitempty"`
	Category                    string                                                      `json:"category,omitempty" validate:"required"`
	Components                  []WhatsappMessageTemplateComponentCreateOrUpdateRequestBody `json:"components" validate:"required"`
	Name                        string                                                      `json:"name,omitempty" validate:"required"`
	Language                    string                                                      `json:"language" validate:"required"`
	LibraryTemplateName         string                                                      `json:"library_template_name,omitempty"`
	LibraryTemplateButtonInputs []WhatsappMessageTemplateButtonCreateRequestBody            `json:"library_template_button_inputs,omitempty"`
}

WhatsappMessageTemplateCreateRequestBody represents the request body for creating a message template.

func (*WhatsappMessageTemplateCreateRequestBody) AddComponent

AddComponent appends a component to the template creation request body.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL