Packages Documentation
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
import "github.com/sarthakjdev/wapi.go/internal/manager"
type AdInteractionSourceMediaTypeEnum string
const (
AdInteractionSourceMediaTypeImage AdInteractionSourceMediaTypeEnum = "image"
AdInteractionSourceMediaTypeVideo AdInteractionSourceMediaTypeEnum = "video"
)
type AdInteractionSourceTypeEnum string
const (
AdInteractionSourceTypeUnknown AdInteractionSourceTypeEnum = "unknown"
)
type Change struct {
Value Value `json:"value"`
Field string `json:"field"`
}
type ChannelEvent struct {
Type events.EventType // Type is the type of the event.
Data events.BaseEvent // Data is the data associated with the event.
}
type Contact struct {
WaId string `json:"wa_id"`
Profile Profile `json:"profile"`
}
type Conversation struct {
Id string `json:"id"`
Origin Origin `json:"origin,omitempty"`
}
type CreatePhoneNumberResponse struct {
Id string `json:"id,omitempty"`
}
type DeleteQrCodeResponse struct {
Success bool `json:"success,omitempty"`
}
type Entry struct {
Id string `json:"id"`
Changes []Change `json:"changes"`
}
type Error struct {
}
type EventManager struct {
subscribers map[events.EventType]chan ChannelEvent // subscribers is a map of event types to channels of ChannelEvent.
sync.RWMutex // RWMutex is used to synchronize access to the subscribers map.
}
func NewEventManager() *EventManager
func (em *EventManager) On(eventName events.EventType, handler func(events.BaseEvent)) events.EventType
func (em *EventManager) Publish(event events.EventType, data events.BaseEvent) error
func (em *EventManager) Subscribe(eventName events.EventType) (chan ChannelEvent, error)
func (em *EventManager) Unsubscribe(id events.EventType)
type FetchPhoneNumberFilters struct {
GetSandboxNumbers bool
}
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"`
}
type GetAllQrCodesResponse struct {
Data []GenerateQrCodeResponse `json:"data,omitempty"`
}
type InteractiveNotificationTypeEnum string
const (
NotificationTypeButtonReply InteractiveNotificationTypeEnum = "button_reply"
NotificationTypeListReply InteractiveNotificationTypeEnum = "list_reply"
)
type MediaManager struct {
requester request_client.RequestClient
}
func NewMediaManager(requester request_client.RequestClient) *MediaManager
func (mm *MediaManager) GetMediaIdByUrl(id string)
func (mm *MediaManager) GetMediaUrlById(id string)
type Message struct {
Id string `json:"id"`
From string `json:"from"`
Timestamp string `json:"timestamp"`
Type NotificationMessageTypeEnum `json:"type"`
Context NotificationPayloadMessageContextSchemaType `json:"context"`
Errors []Error `json:",inline"`
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"`
}
type MessageManager struct {
requester request_client.RequestClient
PhoneNumberId string
}
func NewMessageManager(requester request_client.RequestClient, phoneNumberId string) *MessageManager
func (mm *MessageManager) Send(message components.BaseMessage, phoneNumber string) (string, error)
type MessageStatusCategoryEnum string
const (
MessageStatusCategorySent MessageStatusCategoryEnum = "sent"
)
type MessageStatusEnum string
const (
MessageStatusDelivered MessageStatusEnum = "delivered"
MessageStatusRead MessageStatusEnum = "read"
MessageStatusUnDelivered MessageStatusEnum = "undelivered"
MessageStatusFailed MessageStatusEnum = "failed"
MessageStatusSent MessageStatusEnum = "sent"
)
type MessageTemplateCategory string
const (
MessageTemplateCategoryUtility MessageTemplateCategory = "UTILITY"
MessageTemplateCategoryMarketing MessageTemplateCategory = "MARKETING"
MessageTemplateCategoryAuthentication MessageTemplateCategory = "AUTHENTICATION"
)
type MessageTemplateComponentFormat string
const (
MessageTemplateComponentFormatText MessageTemplateComponentFormat = "TEXT"
MessageTemplateComponentFormatImage MessageTemplateComponentFormat = "IMAGE"
MessageTemplateComponentFormatDocument MessageTemplateComponentFormat = "DOCUMENT"
MessageTemplateComponentFormatVideo MessageTemplateComponentFormat = "VIDEO"
MessageTemplateComponentFormatLocation MessageTemplateComponentFormat = "LOCATION"
)
type MessageTemplateComponentType string
const (
MessageTemplateComponentTypeGreeting MessageTemplateComponentType = "GREETING"
MessageTemplateComponentTypeHeader MessageTemplateComponentType = "HEADER"
MessageTemplateComponentTypeBody MessageTemplateComponentType = "BODY"
MessageTemplateComponentTypeFooter MessageTemplateComponentType = "FOOTER"
MessageTemplateComponentTypeButtons MessageTemplateComponentType = "BUTTONS"
MessageTemplateComponentTypeCarousel MessageTemplateComponentType = "CAROUSEL"
MessageTemplateComponentTypeLimitedTimeOffer MessageTemplateComponentType = "LIMITED_TIME_OFFER"
)
type MessageTemplateCreationResponse struct {
Id string `json:"id,omitempty"`
Status MessageTemplateStatus `json:"status,omitempty"`
Category MessageTemplateCategory `json:"category,omitempty"`
}
type MessageTemplateStatus string
const (
MessageTemplateStatusApproved MessageTemplateStatus = "APPROVED"
MessageTemplateStatusRejected MessageTemplateStatus = "REJECTED"
MessageTemplateStatusPending MessageTemplateStatus = "PENDING"
)
type Metadata struct {
DisplayPhoneNumber string `json:"display_phone_number"`
PhoneNumberId string `json:"phone_number_id"`
}
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"
)
type NotificationPayloadAudioMessageSchemaType struct {
Audio struct {
Id string `json:"id,omitempty"`
MIMEType string `json:"mime_type,omitempty"`
SHA256 string `json:"sha256,omitempty"`
} `json:"audio,omitempty"`
}
type NotificationPayloadButtonInteractionMessageSchemaType struct {
ButtonReply struct {
ReplyId string `json:"reply_id"`
Title string `json:"title"`
} `json:"button_reply,omitempty"`
}
type NotificationPayloadButtonMessageSchemaType struct {
Button struct {
Payload string `json:"payload"`
Text string `json:"text"`
} `json:"button,omitempty"`
}
type NotificationPayloadContactMessageSchemaType struct {
Contacts []Contact `json:"contacts"`
}
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"`
} `json:"document,omitempty"`
}
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 struct {
Image struct {
Id string `json:"id"`
MIMEType string `json:"mime_type"`
SHA256 string `json:"sha256"`
Caption string `json:"caption,omitempty"`
} `json:"image,omitempty"`
}
type NotificationPayloadInteractionMessageSchemaType struct {
Interactive struct {
Type InteractiveNotificationTypeEnum `json:"type"`
NotificationPayloadButtonInteractionMessageSchemaType `json:",inline,omitempty"`
NotificationPayloadListInteractionMessageSchemaType `json:",inline,omitempty"`
} `json:"interactive,omitempty"`
}
type NotificationPayloadListInteractionMessageSchemaType struct {
ListReply struct {
Id string `json:"id"`
Title string `json:"title"`
Description string `json:"description"`
} `json:"list_reply,omitempty"`
}
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 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 struct {
// OrderText string `json:"text"`
Order struct {
CatalogId string `json:"catalog_id"`
ProductItems []struct {
ProductRetailerId string `json:"product_retailer_id"`
Quantity string `json:"quantity"`
ItemPrice string `json:"item_price"`
Currency string `json:"currency"`
} `json:"product_items"`
} `json:"order,omitempty"`
}
type NotificationPayloadReactionMessageSchemaType struct {
Reaction struct {
MessageId string `json:"message_id"`
Emoji string `json:"emoji"`
} `json:"reaction,omitempty"`
}
type NotificationPayloadStickerMessageSchemaType struct {
Sticker struct {
Id string `json:"id"`
MIMEType string `json:"mime_type"`
SHA256 string `json:"sha256"`
Animated bool `json:"animated"`
} `json:"sticker,omitempty"`
}
type NotificationPayloadSystemMessageSchemaType struct {
System struct {
Identity string `json:"identity"`
Body string `json:"body"`
Customer string `json:"customer"`
Type SystemNotificationTypeEnum `json:"type"`
WaId string `json:"wa_id"`
} `json:"system,omitempty"`
Identity struct {
Acknowledged string `json:"acknowledged"`
CreatedTimestamp string `json:"created_timestamp"`
Hash string `json:"hash"`
} `json:"identity,omitempty"`
}
type NotificationPayloadTextMessageSchemaType struct {
Text struct {
Body string `json:"body"`
} `json:"text,omitempty"`
Referral 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"`
CtwaCLId string `json:"ctwa_clid"`
MediaType AdInteractionSourceMediaTypeEnum `json:"media_type"`
} `json:"referral,omitempty"`
}
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"`
} `json:"video,omitempty"`
}
type NotificationReasonEnum string
const (
NotificationReasonMessage NotificationReasonEnum = "message"
)
type Origin struct {
Type MessageStatusCategoryEnum `json:"type"`
ExpirationTimestamp string `json:"expiration_timestamp,omitempty"`
}
type PhoneNumberManager struct {
businessAccountId string
apiAccessToken string
requester *request_client.RequestClient
}
func NewPhoneNumberManager(config *PhoneNumberManagerConfig) *PhoneNumberManager
func (manager *PhoneNumberManager) Create(phoneNumber, verifiedName, countryCode string) (CreatePhoneNumberResponse, error)
func (manager *PhoneNumberManager) DeleteQrCode(phoneNumber, id string) (*DeleteQrCodeResponse, error)
func (manager *PhoneNumberManager) Fetch(phoneNumberId string) (*WhatsappBusinessAccountPhoneNumber, error)
func (manager *PhoneNumberManager) FetchAll(options FetchPhoneNumberFilters) (*WhatsappBusinessAccountPhoneNumberEdge, error)
func (manager *PhoneNumberManager) GenerateQrCode(phoneNumber string, prefilledMessage string) (*GenerateQrCodeResponse, error)
func (manager *PhoneNumberManager) GetAllQrCodes(phoneNumber string) (*GetAllQrCodesResponse, error)
func (manager *PhoneNumberManager) GetQrCodeById(phoneNumber, id string) (*GetAllQrCodesResponse, error)
func (manager *PhoneNumberManager) RequestVerificationCode(phoneNumberId string, codeMethod VerifyCodeMethod, languageCode string) (RequestVerificationCodeResponse, error)
func (manager *PhoneNumberManager) UpdateQrCode(phoneNumber, id, prefilledMessage string) (*GenerateQrCodeResponse, error)
func (manager *PhoneNumberManager) VerifyCode(phoneNumberId, verificationCode string) (VerifyCodeResponse, error)
type PhoneNumberManagerConfig struct {
BusinessAccountId string
ApiAccessToken string
Requester *request_client.RequestClient
}
type Pricing struct {
PricingModel string `json:"pricing_model"`
Category MessageStatusCategoryEnum `json:"category"`
}
type Profile struct {
Name string `json:"name"`
}
type RequestVerificationCodeResponse struct {
Success bool `json:"success,omitempty"`
}
type Status struct {
Conversation Conversation `json:"conversation,omitempty"`
Errors []Error `json:"errors,omitempty"`
Status string `json:"status"`
Timestamp string `json:"timestamp"`
RecipientId string `json:"recipient_id"`
Pricing Pricing `json:"pricing,omitempty"`
}
type SystemNotificationTypeEnum string
const (
SystemNotificationTypeCustomerPhoneNumberChange SystemNotificationTypeEnum = "user_changed_number"
SystemNotificationTypeCustomerIdentityChanged SystemNotificationTypeEnum = "customer_identity_changed"
)
type TemplateAnalyticsType struct {
}
type TemplateManager struct {
businessAccountId string
apiAccessToken string
requester *request_client.RequestClient
}
func NewTemplateManager(config *TemplateManagerConfig) *TemplateManager
func (manager *TemplateManager) Create(body WhatsappMessageTemplateCreateRequestBody) (*MessageTemplateCreationResponse, error)
func (tm *TemplateManager) Delete(id string)
func (manager *TemplateManager) Fetch(Id string) (*WhatsAppBusinessMessageTemplateNode, error)
func (manager *TemplateManager) FetchAll() (*WhatsAppBusinessTemplatesFetchResponseEdge, error)
func (tm *TemplateManager) FetchMessageTemplatePreviews()
func (manager *TemplateManager) FetchPerformanceAnalytics(templateName, templateId string) (string, error)
func (manager *TemplateManager) MigrateFromOtherBusinessAccount(sourcePageNumber int, sourceWabaId int) (string, error)
func (manager *TemplateManager) Update(templateId string, updates WhatsAppBusinessAccountMessageTemplateUpdateRequestBody) (*MessageTemplateCreationResponse, error)
type TemplateManagerConfig struct {
BusinessAccountId string
ApiAccessToken string
Requester *request_client.RequestClient
}
type TemplateMessagePreviewEdge struct {
Data []TemplateMessagePreviewNode `json:"data,omitempty"`
Paging internal.WhatsAppBusinessApiPaginationMeta `json:"paging,omitempty"`
}
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"`
}
type TemplatePerformanceAnalytics struct {
}
type Value struct {
MessagingProduct string `json:"messaging_product"`
Metadata Metadata `json:"metadata"`
Contacts []Contact `json:"contacts,omitempty"`
Statuses []Status `json:"statuses,omitempty"`
Messages []Message `json:"messages,omitempty"`
Errors []Error `json:"errors,omitempty"`
}
type VerifyCodeMethod string
const (
VerifyCodeMethodSms VerifyCodeMethod = "SMS"
VerifyCodeMethodVoice VerifyCodeMethod = "VOICE"
)
type VerifyCodeResponse struct {
Success bool `json:"success,omitempty"`
}
type WebhookManager struct {
secret string
path string
port int
EventManager EventManager
Requester request_client.RequestClient
}
func NewWebhook(options *WebhookManagerConfig) *WebhookManager
func (wh *WebhookManager) GetRequestHandler(c echo.Context) error
func (wh *WebhookManager) ListenToEvents()
func (wh *WebhookManager) PostRequestHandler(c echo.Context) error
func (wh *WebhookManager) createEchoHttpServer() *echo.Echo
type WebhookManagerConfig struct {
Secret string `validate:"required"`
EventManager EventManager `validate:"required"`
Requester request_client.RequestClient `validate:"required"`
Path string
Port int
}
type WhatsAppBusinessAccountMessageTemplateDeleteRequestBody struct {
HsmId string `json:"hsm_id,omitempty"`
Name string `json:"name,omitempty"`
}
type WhatsAppBusinessAccountMessageTemplatePreviewButton struct {
AutoFillText string `json:"auto_fill_text,omitempty"`
Text string `json:"text,omitempty"`
}
type WhatsAppBusinessAccountMessageTemplateUpdateRequestBody struct {
Components []WhatsappMessageTemplateComponentCreateOrUpdateRequestBody `json:"components,omitempty"`
Category string `json:"category,omitempty"`
MessageSendTtlSeconds int `json:"message_send_ttl_seconds,omitempty"`
}
type WhatsAppBusinessHSMWhatsAppBusinessHSMQualityScoreShape struct {
Date int `json:"date,omitempty"`
Reasons []string `json:"reasons,omitempty"`
Score int `json:"score,omitempty"`
}
type WhatsAppBusinessHSMWhatsAppHSMComponent struct {
AddSecurityRecommendation bool `json:"add_security_recommendation,omitempty"`
Buttons []WhatsAppBusinessHSMWhatsAppHSMComponentButton `json:"buttons,omitempty"`
Cards []WhatsAppBusinessHSMWhatsAppHSMComponentCard `json:"cards,omitempty"`
CodeExpirationMinutes int `json:"code_expiration_minutes,omitempty"`
Example WhatsAppBusinessHSMWhatsAppHSMComponentExample `json:"example,omitempty"`
Format string `json:"format,omitempty"`
LimitedTimeOffer WhatsAppBusinessHSMWhatsAppLimitedTimeOfferParameterShape `json:"limited_time_offer,omitempty"`
Text string `json:"text,omitempty"`
Type string `json:"type,omitempty"`
}
type WhatsAppBusinessHSMWhatsAppHSMComponentButton struct {
}
type WhatsAppBusinessHSMWhatsAppHSMComponentCard struct {
}
type WhatsAppBusinessHSMWhatsAppHSMComponentExample struct {
}
type WhatsAppBusinessHSMWhatsAppLimitedTimeOfferParameterShape struct {
}
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 WhatsAppBusinessHSMWhatsAppBusinessHSMQualityScoreShape `json:"quality_score,omitempty"`
RejectedReason string `json:"rejected_reason,omitempty"`
Status MessageTemplateStatus `json:"status,omitempty"`
}
type WhatsAppBusinessTemplatesFetchResponseEdge struct {
Data []WhatsAppBusinessMessageTemplateNode `json:"data,omitempty"`
Paging internal.WhatsAppBusinessApiPaginationMeta `json:"paging,omitempty"`
}
type WhatsappApiNotificationPayloadSchemaType struct {
Object string `json:"object"`
Entry []Entry `json:"entry"`
}
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"`
CodeVerification struct {
Status string `json:"code_verification_status,omitempty"`
} `json:"code_verification_status,omitempty"`
PlatformType string `json:"platform_type,omitempty"`
}
type WhatsappBusinessAccountPhoneNumberEdge struct {
Data []WhatsappBusinessAccountPhoneNumber `json:"data,omitempty"`
Paging internal.WhatsAppBusinessApiPaginationMeta `json:"paging,omitempty"`
Summary string `json:"summary,omitempty"`
}
type WhatsappMessageTemplateButtonCreateRequestBody struct {
// enum {QUICK_REPLY, URL, PHONE_NUMBER, OTP, MPM, CATALOG, FLOW, VOICE_CALL}
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"`
FlowId string `json:"flow_id,omitempty"`
ZeroTapTermsAccepted bool `json:"zero_tap_terms_accepted,omitempty"`
}
type WhatsappMessageTemplateComponentCreateOrUpdateRequestBody struct {
Type MessageTemplateComponentType `json:"type,omitempty"`
Format MessageTemplateComponentFormat `json:"format,omitempty"`
Text string `json:"text,omitempty"`
Buttons []WhatsappMessageTemplateButtonCreateRequestBody `json:"buttons,omitempty"`
}
func (component *WhatsappMessageTemplateComponentCreateOrUpdateRequestBody) AddButton(button WhatsappMessageTemplateButtonCreateRequestBody)
type WhatsappMessageTemplateCreateRequestBody struct {
AllowCategoryChange bool `json:"allow_category_change,omitempty" `
// enum {UTILITY, MARKETING, AUTHENTICATION}
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"`
}
func (body *WhatsappMessageTemplateCreateRequestBody) AddComponent(component WhatsappMessageTemplateComponentCreateOrUpdateRequestBody)