Documentation
¶
Index ¶
- type AccountAlertSeverityEnum
- type AccountAlertsValue
- type AccountReviewUpdateValue
- type AccountUpdateBanInfo
- type AccountUpdateEventEnum
- type AccountUpdateRestrictionInfo
- type AccountUpdateValue
- type AccountUpdateViolationInfo
- type AdInteractionSourceMediaTypeEnum
- type AdInteractionSourceTypeEnum
- type Applinks
- type BusinessCapabilityUpdateValue
- type CapabilityReview
- type Catalog
- type CatalogFetchResponseEdge
- type CatalogManager
- func (cm *CatalogManager) AssociateCatalog(catalogId string) (bool, error)
- func (cm *CatalogManager) BatchUpsertProductItems(catalogId string, items []map[string]interface{}) ([]ProductItem, map[int]error)
- func (cm *CatalogManager) CreateCatalog(name string, vertical string) (*Catalog, error)
- func (cm *CatalogManager) CreateNewProductCatalog() (CreateProductCatalogOptions, error)deprecated
- func (cm *CatalogManager) CreateProductFeed(catalogId string, name string) (*ProductFeed, error)
- func (cm *CatalogManager) CreateScheduledProductFeed(catalogId string, name string, schedule ProductFeedSchedule, updateOnly bool, ...) (*ProductFeed, error)
- func (cm *CatalogManager) DeleteCatalog(catalogId string) error
- func (cm *CatalogManager) GetAllCatalogs() (*CatalogFetchResponseEdge, error)
- func (cm *CatalogManager) GetCatalog(catalogId string, fields string) (*Catalog, error)
- func (cm *CatalogManager) GetCatalogProducts(catalogId string) ([]ProductItem, error)
- func (cm *CatalogManager) GetFeedUploadErrorReport(uploadId string) (*FeedUploadErrorReportResponse, error)
- func (cm *CatalogManager) GetFeedUploadErrors(uploadId string) ([]FeedUploadError, error)
- func (cm *CatalogManager) GetFeedUploadStatus(uploadId string) (*FeedUploadErrorReportResponse, error)
- func (cm *CatalogManager) ListFeedUploads(feedId string) ([]FeedUploadSession, error)
- func (cm *CatalogManager) ListOwnedCatalogs() ([]Catalog, error)
- func (cm *CatalogManager) ListProductFeeds(catalogId string) ([]ProductFeed, error)
- func (cm *CatalogManager) RequestFeedUploadErrorReport(uploadId string) (bool, error)
- func (cm *CatalogManager) UpdateCatalog(catalogId string, name string) (*Catalog, error)
- func (cm *CatalogManager) UpdateProductImages(catalogId, retailerId, imageURL string, additionalImageURLs []string) (*ProductItem, error)
- func (cm *CatalogManager) UploadFeedCSV(feedId string, file io.Reader, filename, mimeType string, updateOnly bool) (*FeedUploadResponse, error)
- func (cm *CatalogManager) UploadFeedCSVFromURL(feedId, csvURL string, updateOnly bool) (*FeedUploadResponse, error)
- func (cm *CatalogManager) UpsertProductItem(catalogId string, fields map[string]interface{}) (*ProductItem, error)
- type CatalogManagerConfig
- type Change
- type ChannelEvent
- type Contact
- type Conversation
- type CreateFlowRequest
- type CreateFlowResponse
- type CreatePhoneNumberResponse
- type CreateProductCatalogOptions
- type DeleteQrCodeResponse
- type DeleteSuccessResponse
- type Entry
- type Error
- type 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 FeedUpload
- type FeedUploadError
- type FeedUploadErrorReport
- type FeedUploadErrorReportResponse
- type FeedUploadErrorSample
- type FeedUploadResponse
- type FeedUploadSession
- type FlowCategory
- type FlowHealthStatus
- type FlowHealthStatusEntity
- type FlowManager
- func (m *FlowManager) Create(req CreateFlowRequest) (*CreateFlowResponse, error)
- func (m *FlowManager) Delete(flowID string) error
- func (m *FlowManager) Deprecate(flowID string) error
- func (m *FlowManager) Fetch(flowID string) (*FlowNode, error)
- func (m *FlowManager) FetchAll() (*FlowsListResponse, error)
- func (m *FlowManager) GetFlowJSON(flowID string) (string, error)
- func (m *FlowManager) Publish(flowID string) error
- func (m *FlowManager) Update(flowID string, req UpdateFlowRequest) error
- func (m *FlowManager) UploadFlowJSON(flowID string, flowJSON string) (*CreateFlowResponse, error)
- type FlowManagerConfig
- type FlowNode
- type FlowPreview
- type FlowStatus
- type FlowValidationError
- type FlowsListResponse
- type GenerateQrCodeResponse
- type GetAllQrCodesResponse
- type HandleMessageSubscriptionEventPayload
- type ImageCdnUrl
- type InteractiveNotificationTypeEnum
- type KeyValue
- type MarketingMessagesLinkClickData
- type MediaManager
- func (mm *MediaManager) CreateResumableUploadSession(appID string, fileLength int64, fileType string) (string, error)
- func (mm *MediaManager) DeleteMedia(id string) (string, error)
- func (mm *MediaManager) GetMediaUrlById(id string) (string, error)
- func (mm *MediaManager) UploadMedia(phoneNumberId string, file io.Reader, filename, mimeType string) (string, error)
- func (mm *MediaManager) UploadMediaForTemplate(appID string, fileData []byte, fileType string) (string, error)
- func (mm *MediaManager) UploadResumableMedia(sessionID string, fileData []byte, fileOffset int64) (string, error)
- type MediaMetadata
- type Message
- type MessageManager
- func (mm *MessageManager) ReadMessageOnly(messageId string) error
- func (mm *MessageManager) ReadMessageWithTyping(messageId string) error
- func (mm *MessageManager) Reply(message components.BaseMessage, phoneNumber string, replyTo string) (*MessageSendResponse, error)
- func (mm *MessageManager) Send(message components.BaseMessage, phoneNumber string) (*MessageSendResponse, error)
- type MessageSendError
- type MessageSendResponse
- type MessageStatusCategoryEnum
- type MessageStatusEnum
- type MessageTemplateCategory
- type MessageTemplateComponentFormat
- type MessageTemplateComponentType
- type MessageTemplateCreationResponse
- type MessageTemplateStatus
- type MessagesValue
- type Metadata
- type NamedParamExample
- type NotificationMessageTypeEnum
- type NotificationPayloadAudioMessageSchemaType
- type NotificationPayloadButtonInteractionMessageSchemaType
- type NotificationPayloadButtonMessageSchemaType
- type NotificationPayloadContactMessageSchemaType
- type NotificationPayloadDocumentMessageSchemaType
- type NotificationPayloadErrorSchemaType
- type NotificationPayloadImageMessageSchemaType
- type NotificationPayloadInteractionMessageSchemaType
- type NotificationPayloadListInteractionMessageSchemaType
- type NotificationPayloadLocationMessageSchemaType
- type NotificationPayloadMessageContextSchemaType
- type NotificationPayloadOrderMessageSchemaType
- type NotificationPayloadReactionMessageSchemaType
- type NotificationPayloadStickerMessageSchemaType
- type NotificationPayloadSystemMessageSchemaType
- type NotificationPayloadTextMessageSchemaType
- type NotificationPayloadVideoMessageSchemaType
- type NotificationReasonEnum
- type Origin
- type 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(getSandBoxNumbers bool) (*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
- type PhoneNumberNameUpdateValue
- type PhoneNumberQualityUpdateCurrentLimitEnum
- type PhoneNumberQualityUpdateValue
- type Pricing
- type ProductError
- type ProductFeed
- type ProductFeedSchedule
- type ProductGroup
- type ProductItem
- type ProductSet
- type ProductSetMetadata
- type Profile
- type RequestVerificationCodeResponse
- type ResumableUploadResult
- type ResumableUploadSession
- type SecurityValue
- type Status
- type StatusResponse
- type SystemNotificationTypeEnum
- type TemplateCategoryUpdateValue
- type 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 (manager *TemplateManager) MigrateFromOtherBusinessAccount(sourcePageNumber int, sourceWabaId int) (*TemplateMigrationResponse, error)
- func (manager *TemplateManager) Update(templateId string, ...) (*MessageTemplateCreationResponse, error)
- type TemplateManagerConfig
- type TemplateMessageButtonType
- type TemplateMessageComponentButton
- type TemplateMessageComponentCard
- type TemplateMessageComponentExample
- type TemplateMessageLimitedTimeOfferParameter
- type TemplateMessagePreviewEdge
- type TemplateMessagePreviewNode
- type TemplateMessageQualityScore
- type TemplateMessageRejectionReasonEnum
- type TemplateMessageStatusUpdateDisableInfo
- type TemplateMessageStatusUpdateEventEnum
- type TemplateMessageStatusUpdateOtherInfo
- type TemplateMigrationResponse
- type TemplateQualityUpdateValue
- type TemplateStatusUpdateValue
- type UpdateFlowRequest
- type UploadFlowJSONRequest
- type UserAction
- type UserActionTypeEnum
- type VerifyCodeMethod
- type VerifyCodeResponse
- type WabaHealthStatus
- type WabaOfficialBusinessAccount
- type WabaQualityScore
- type WabaThroughput
- type WebApplink
- type WebhookFieldEnum
- type WebhookManager
- type WebhookManagerConfig
- type WhatsAppBusinessAccountMessageTemplateDeleteRequestBody
- type WhatsAppBusinessAccountMessageTemplatePreviewButton
- type WhatsAppBusinessAccountMessageTemplateUpdateRequestBody
- type WhatsAppBusinessHSMWhatsAppHSMComponent
- type WhatsAppBusinessMessageTemplateNode
- type WhatsAppBusinessTemplatesFetchResponseEdge
- type WhatsappApiNotificationPayloadSchemaType
- type WhatsappBusinessAccountPhoneNumber
- type WhatsappBusinessAccountPhoneNumberCodeVerificationStatus
- type WhatsappBusinessAccountPhoneNumberEdge
- type WhatsappBusinessAccountPhoneNumberMessagingLimitTier
- type WhatsappBusinessAccountPhoneNumberNameStatus
- type WhatsappBusinessAccountPhoneNumberPlatformType
- type WhatsappBusinessAccountPhoneNumberStatus
- type WhatsappMessageTemplateButtonCreateRequestBody
- type WhatsappMessageTemplateButtonCreateRequestBodyAlias
- type WhatsappMessageTemplateComponentCreateOrUpdateRequestBody
- type WhatsappMessageTemplateCreateRequestBody
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"`
AlertSeverity AccountAlertSeverityEnum `json:"alert_severity"`
AlertStatus string `json:"alert_status"`
AlertType string `json:"alert_type"`
AlertDescription string `json:"alert_description"`
}
type AccountReviewUpdateValue ¶
type AccountReviewUpdateValue struct {
Decision string `json:"decision"`
}
type AccountUpdateBanInfo ¶
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 AccountUpdateValue ¶
type AccountUpdateValue struct {
PhoneNumber string `json:"phone_number,omitempty"`
Event AccountUpdateEventEnum `json:"event"`
}
type AccountUpdateViolationInfo ¶
type AccountUpdateViolationInfo struct {
ViolationType string `json:"violation_type"`
}
type AdInteractionSourceMediaTypeEnum ¶
type AdInteractionSourceMediaTypeEnum string
const ( AdInteractionSourceMediaTypeImage AdInteractionSourceMediaTypeEnum = "image" AdInteractionSourceMediaTypeVideo AdInteractionSourceMediaTypeEnum = "video" )
type AdInteractionSourceTypeEnum ¶
type AdInteractionSourceTypeEnum string
const (
AdInteractionSourceTypeUnknown AdInteractionSourceTypeEnum = "unknown"
)
type Applinks ¶
type Applinks struct {
Web WebApplink `json:"web"`
}
type CapabilityReview ¶
type Catalog ¶
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"`
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 ¶
type CatalogFetchResponseEdge struct {
Data []Catalog `json:"data"`
Paging internal.WhatsAppBusinessApiPaginationMeta `json:"paging"`
}
type CatalogManager ¶
type CatalogManager struct {
// contains filtered or unexported fields
}
func NewCatalogManager ¶
func NewCatalogManager(config *CatalogManagerConfig) *CatalogManager
func (*CatalogManager) AssociateCatalog ¶ added in v0.7.1
func (cm *CatalogManager) AssociateCatalog(catalogId string) (bool, error)
AssociateCatalog associates an existing product catalog to this business account (WABA). Endpoint: POST /{business_account_id}/product_catalogs Body: { "catalog_id": "<catalog_id>" } Returns true on success.
func (*CatalogManager) BatchUpsertProductItems ¶ added in v0.3.5
func (cm *CatalogManager) BatchUpsertProductItems(catalogId string, items []map[string]interface{}) ([]ProductItem, map[int]error)
BatchUpsertProductItems performs multiple upserts sequentially. Returns the successfully upserted items and a map of index->error for failures.
func (*CatalogManager) CreateCatalog ¶ added in v0.7.0
func (cm *CatalogManager) CreateCatalog(name string, vertical string) (*Catalog, error)
CreateCatalog creates a new product catalog for the business account. vertical: "commerce" or "ecommerce" (default: "commerce") Returns the created catalog with ID and name. CreateCatalog creates a new product catalog owned by the business account. vertical: "commerce" or "ecommerce" (default: "commerce") Note: The business must accept Meta Commerce Terms of Service (TOS) in Business Manager before this endpoint can succeed. Returns the created catalog with ID and name.
func (*CatalogManager) CreateNewProductCatalog
deprecated
func (cm *CatalogManager) CreateNewProductCatalog() (CreateProductCatalogOptions, error)
Deprecated: CreateNewProductCatalog misused the Graph API by calling POST /{business_account_id}/product_catalogs without a body. That endpoint does not create a catalog; it associates an EXISTING catalog with the WhatsApp Business Account and requires a catalog_id in the request body.
Use CreateCatalog to create a new catalog owned by the business (POST /{business_account_id}/owned_product_catalogs) and AssociateCatalog to link an existing catalog to this business account.
func (*CatalogManager) CreateProductFeed ¶ added in v0.3.5
func (cm *CatalogManager) CreateProductFeed(catalogId string, name string) (*ProductFeed, error)
CreateProductFeed creates a product feed without a schedule (for immediate CSV uploads). Use UploadFeedCSV or UploadFeedCSVFromURL afterwards to ingest data.
func (*CatalogManager) CreateScheduledProductFeed ¶ added in v0.3.5
func (cm *CatalogManager) CreateScheduledProductFeed( catalogId string, name string, schedule ProductFeedSchedule, updateOnly bool, ingestionSourceType string, primaryFeedIds []string, ) (*ProductFeed, error)
func (*CatalogManager) DeleteCatalog ¶ added in v0.7.0
func (cm *CatalogManager) DeleteCatalog(catalogId string) error
DeleteCatalog deletes a catalog by ID.
func (*CatalogManager) GetAllCatalogs ¶
func (cm *CatalogManager) GetAllCatalogs() (*CatalogFetchResponseEdge, error)
GetAllCatalogs retrieves catalogs linked to this WhatsApp Business Account via association (i.e., /{business_account_id}/product_catalogs). Note: This is not the same as listing all catalogs OWNED by the business. For owned catalogs, use ListOwnedCatalogs.
func (*CatalogManager) GetCatalog ¶ added in v0.7.0
func (cm *CatalogManager) GetCatalog(catalogId string, fields string) (*Catalog, error)
GetCatalog retrieves a catalog by ID with optional fields. fields: comma-separated list of fields to retrieve (e.g., "id,name,product_count,vertical")
func (*CatalogManager) GetCatalogProducts ¶
func (cm *CatalogManager) GetCatalogProducts(catalogId string) ([]ProductItem, error)
GetCatalogProducts retrieves the list of products for a given catalog.
func (*CatalogManager) GetFeedUploadErrorReport ¶ added in v0.3.5
func (cm *CatalogManager) GetFeedUploadErrorReport(uploadId string) (*FeedUploadErrorReportResponse, error)
func (*CatalogManager) GetFeedUploadErrors ¶ added in v0.3.5
func (cm *CatalogManager) GetFeedUploadErrors(uploadId string) ([]FeedUploadError, error)
func (*CatalogManager) GetFeedUploadStatus ¶ added in v0.3.5
func (cm *CatalogManager) GetFeedUploadStatus(uploadId string) (*FeedUploadErrorReportResponse, error)
func (*CatalogManager) ListFeedUploads ¶ added in v0.3.5
func (cm *CatalogManager) ListFeedUploads(feedId string) ([]FeedUploadSession, error)
func (*CatalogManager) ListOwnedCatalogs ¶ added in v0.7.0
func (cm *CatalogManager) ListOwnedCatalogs() ([]Catalog, error)
ListOwnedCatalogs retrieves all catalogs owned by the business account. Returns a simplified list of catalogs with basic information.
func (*CatalogManager) ListProductFeeds ¶ added in v0.3.5
func (cm *CatalogManager) ListProductFeeds(catalogId string) ([]ProductFeed, error)
ListProductFeeds lists product feeds for a given catalog.
func (*CatalogManager) RequestFeedUploadErrorReport ¶ added in v0.3.5
func (cm *CatalogManager) RequestFeedUploadErrorReport(uploadId string) (bool, error)
func (*CatalogManager) UpdateCatalog ¶ added in v0.7.0
func (cm *CatalogManager) UpdateCatalog(catalogId string, name string) (*Catalog, error)
UpdateCatalog updates a catalog's name.
func (*CatalogManager) UpdateProductImages ¶ added in v0.3.5
func (cm *CatalogManager) UpdateProductImages(catalogId, retailerId, imageURL string, additionalImageURLs []string) (*ProductItem, error)
UpdateProductImages updates image_url and additional_image_urls for a retailer_id.
func (*CatalogManager) UploadFeedCSV ¶ added in v0.3.5
func (cm *CatalogManager) UploadFeedCSV(feedId string, file io.Reader, filename, mimeType string, updateOnly bool) (*FeedUploadResponse, error)
UploadFeedCSV uploads a CSV file to a product feed using multipart/form-data.
func (*CatalogManager) UploadFeedCSVFromURL ¶ added in v0.3.5
func (cm *CatalogManager) UploadFeedCSVFromURL(feedId, csvURL string, updateOnly bool) (*FeedUploadResponse, error)
func (*CatalogManager) UpsertProductItem ¶ added in v0.3.5
func (cm *CatalogManager) UpsertProductItem(catalogId string, fields map[string]interface{}) (*ProductItem, error)
UpsertProductItem updates or creates a product item using Meta's format. fields should include at least retailer_id, name, price, currency, image_url, availability, etc.
type CatalogManagerConfig ¶
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 CreateFlowRequest ¶ added in v0.9.30
type CreateFlowRequest struct {
Name string `json:"name" validate:"required"`
Categories []FlowCategory `json:"categories" validate:"required,min=1"`
FlowJSON string `json:"flow_json,omitempty"`
Publish bool `json:"publish,omitempty"`
CloneFlowID string `json:"clone_flow_id,omitempty"`
EndpointURI string `json:"endpoint_uri,omitempty"`
}
type CreateFlowResponse ¶ added in v0.9.30
type CreateFlowResponse struct {
ID string `json:"id"`
Success bool `json:"success"`
ValidationErrors []FlowValidationError `json:"validation_errors,omitempty"`
}
type CreatePhoneNumberResponse ¶
type CreatePhoneNumberResponse struct {
Id string `json:"id,omitempty"`
}
type CreateProductCatalogOptions ¶
type CreateProductCatalogOptions struct {
Success string `json:"success,omitempty"`
}
type DeleteQrCodeResponse ¶
type DeleteQrCodeResponse struct {
Success bool `json:"success,omitempty"`
}
DeleteQrCodeResponse represents the response of deleting a QR code.
type DeleteSuccessResponse ¶
type DeleteSuccessResponse struct {
Success bool `json:"success"`
}
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 ¶
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 FeedUpload ¶ added in v0.3.5
type FeedUpload struct {
Id string `json:"id,omitempty"`
Status string `json:"status,omitempty"`
Errors []string `json:"errors,omitempty"`
ErrorMessage string `json:"error_message,omitempty"`
CreatedTime string `json:"created_time,omitempty"`
LastUpdated string `json:"last_updated_time,omitempty"`
}
FeedUpload represents a single upload attempt and its status/diagnostics.
type FeedUploadError ¶ added in v0.3.5
type FeedUploadError struct {
Id string `json:"id"`
Summary string `json:"summary"`
Description string `json:"description"`
Severity string `json:"severity"` // fatal | warning
Samples struct {
Data []FeedUploadErrorSample `json:"data"`
} `json:"samples"`
}
FeedUploadError represents an individual ingestion error/warning.
type FeedUploadErrorReport ¶ added in v0.3.5
type FeedUploadErrorReport struct {
ReportStatus string `json:"report_status,omitempty"`
FileHandle string `json:"file_handle,omitempty"`
}
FeedUploadErrorReport represents the generated error report metadata.
type FeedUploadErrorReportResponse ¶ added in v0.3.5
type FeedUploadErrorReportResponse struct {
ErrorReport FeedUploadErrorReport `json:"error_report,omitempty"`
Id string `json:"id,omitempty"`
}
type FeedUploadErrorSample ¶ added in v0.3.5
type FeedUploadErrorSample struct {
RowNumber int `json:"row_number"`
RetailerId string `json:"retailer_id"`
Id string `json:"id"`
}
FeedUploadErrorSample represents a row sample in an error entry.
type FeedUploadResponse ¶ added in v0.3.5
type FeedUploadResponse struct {
Id string `json:"id,omitempty"`
Status string `json:"status,omitempty"`
}
FeedUploadResponse wraps basic responses for CSV upload operations.
type FeedUploadSession ¶ added in v0.3.5
type FeedUploadSession struct {
Id string `json:"id"`
StartTime string `json:"start_time,omitempty"`
EndTime string `json:"end_time,omitempty"`
}
FeedUploadSession represents an upload session listing entry (start/end time).
type FlowCategory ¶ added in v0.9.30
type FlowCategory string
FlowCategory represents the category of a WhatsApp Flow
const ( FlowCategorySignUp FlowCategory = "SIGN_UP" FlowCategorySignIn FlowCategory = "SIGN_IN" FlowCategoryAppointmentBooking FlowCategory = "APPOINTMENT_BOOKING" FlowCategoryLeadGeneration FlowCategory = "LEAD_GENERATION" FlowCategoryContactUs FlowCategory = "CONTACT_US" FlowCategoryCustomerSupport FlowCategory = "CUSTOMER_SUPPORT" FlowCategorySurvey FlowCategory = "SURVEY" FlowCategoryOther FlowCategory = "OTHER" )
type FlowHealthStatus ¶ added in v0.9.30
type FlowHealthStatus struct {
CanSend bool `json:"can_send"`
Entities []FlowHealthStatusEntity `json:"entities,omitempty"`
}
type FlowHealthStatusEntity ¶ added in v0.9.30
type FlowManager ¶ added in v0.9.30
type FlowManager struct {
// contains filtered or unexported fields
}
func NewFlowManager ¶ added in v0.9.30
func NewFlowManager(config *FlowManagerConfig) *FlowManager
func (*FlowManager) Create ¶ added in v0.9.30
func (m *FlowManager) Create(req CreateFlowRequest) (*CreateFlowResponse, error)
func (*FlowManager) Delete ¶ added in v0.9.30
func (m *FlowManager) Delete(flowID string) error
func (*FlowManager) Deprecate ¶ added in v0.9.30
func (m *FlowManager) Deprecate(flowID string) error
func (*FlowManager) Fetch ¶ added in v0.9.30
func (m *FlowManager) Fetch(flowID string) (*FlowNode, error)
func (*FlowManager) FetchAll ¶ added in v0.9.30
func (m *FlowManager) FetchAll() (*FlowsListResponse, error)
func (*FlowManager) GetFlowJSON ¶ added in v0.9.30
func (m *FlowManager) GetFlowJSON(flowID string) (string, error)
func (*FlowManager) Publish ¶ added in v0.9.30
func (m *FlowManager) Publish(flowID string) error
func (*FlowManager) Update ¶ added in v0.9.30
func (m *FlowManager) Update(flowID string, req UpdateFlowRequest) error
func (*FlowManager) UploadFlowJSON ¶ added in v0.9.30
func (m *FlowManager) UploadFlowJSON(flowID string, flowJSON string) (*CreateFlowResponse, error)
type FlowManagerConfig ¶ added in v0.9.30
type FlowManagerConfig struct {
BusinessAccountId string
ApiAccessToken string
Requester *request_client.RequestClient
}
type FlowNode ¶ added in v0.9.30
type FlowNode struct {
ID string `json:"id"`
Name string `json:"name"`
Status FlowStatus `json:"status"`
Categories []FlowCategory `json:"categories"`
ValidationErrors []FlowValidationError `json:"validation_errors,omitempty"`
JSONVersion string `json:"json_version,omitempty"`
DataAPIVersion string `json:"data_api_version,omitempty"`
EndpointURI string `json:"endpoint_uri,omitempty"`
Preview *FlowPreview `json:"preview,omitempty"`
HealthStatus *FlowHealthStatus `json:"health_status,omitempty"`
}
type FlowPreview ¶ added in v0.9.30
type FlowStatus ¶ added in v0.9.30
type FlowStatus string
FlowStatus represents the status of a WhatsApp Flow
const ( FlowStatusDraft FlowStatus = "DRAFT" FlowStatusPublished FlowStatus = "PUBLISHED" FlowStatusDeprecated FlowStatus = "DEPRECATED" FlowStatusBlocked FlowStatus = "BLOCKED" FlowStatusThrottled FlowStatus = "THROTTLED" )
type FlowValidationError ¶ added in v0.9.30
type FlowValidationError struct {
Error string `json:"error"`
ErrorType string `json:"error_type"`
Message string `json:"message"`
LineStart int `json:"line_start,omitempty"`
LineEnd int `json:"line_end,omitempty"`
ColumnStart int `json:"column_start,omitempty"`
ColumnEnd int `json:"column_end,omitempty"`
}
type FlowsListResponse ¶ added in v0.9.30
type FlowsListResponse struct {
Data []FlowNode `json:"data"`
Paging internal.WhatsAppBusinessApiPaginationMeta `json:"paging,omitempty"`
}
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"`
UserActions []UserAction `json:"user_actions"`
}
type ImageCdnUrl ¶
type InteractiveNotificationTypeEnum ¶
type InteractiveNotificationTypeEnum string
const ( NotificationTypeButtonReply InteractiveNotificationTypeEnum = "button_reply" NotificationTypeListReply InteractiveNotificationTypeEnum = "list_reply" )
type MarketingMessagesLinkClickData ¶ added in v0.9.8
type MarketingMessagesLinkClickData struct {
ClickComponent string `json:"click_component"`
ProductId string `json:"product_id,omitempty"`
ClickId string `json:"click_id,omitempty"`
TrackingToken string `json:"tracking_token,omitempty"`
}
MarketingMessagesLinkClickData contains link click details from the webhook
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) CreateResumableUploadSession ¶ added in v0.8.1
func (mm *MediaManager) CreateResumableUploadSession(appID string, fileLength int64, fileType string) (string, error)
CreateResumableUploadSession creates a new resumable upload session for template media. This is used to upload media files that will be used in message template headers. appID is your Meta App ID, fileLength is the size in bytes, fileType is the MIME type (e.g., "image/png"). Returns the upload session ID.
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 ¶
func (mm *MediaManager) UploadMedia(phoneNumberId string, file io.Reader, filename, mimeType string) (string, error)
UploadMedia uploads a media file to WhatsApp's Cloud API.
func (*MediaManager) UploadMediaForTemplate ¶ added in v0.8.1
func (mm *MediaManager) UploadMediaForTemplate(appID string, fileData []byte, fileType string) (string, error)
UploadMediaForTemplate uploads a file and returns a handle suitable for use in template header_handle. This is a convenience method that combines CreateResumableUploadSession and UploadResumableMedia. appID is your Meta App ID, fileData is the raw file bytes, fileType is the MIME type.
func (*MediaManager) UploadResumableMedia ¶ added in v0.8.1
func (mm *MediaManager) UploadResumableMedia(sessionID string, fileData []byte, fileOffset int64) (string, error)
UploadResumableMedia uploads file data to an existing upload session. sessionID is the upload session ID from CreateResumableUploadSession. fileData is the raw file bytes, fileOffset is the starting byte offset (usually 0). Returns the media handle to use in template header_handle.
type MediaMetadata ¶
type Message ¶
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 ¶
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.3.5
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.3.5
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.5
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.
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" MessageTemplateComponentTypeButtons MessageTemplateComponentType = "BUTTONS" MessageTemplateComponentTypeCarousel MessageTemplateComponentType = "CAROUSEL" // this appears in case of product caraousel MessageTemplateComponentTypeLimitedTimeOffer MessageTemplateComponentType = "LIMITED_TIME_OFFER" )
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 []Contact `json:"contacts,omitempty"`
Statuses []Status `json:"statuses,omitempty"`
Messages []Message `json:"messages,omitempty"`
Errors []Error `json:"errors,omitempty"`
UserActions []UserAction `json:"user_actions,omitempty"`
}
type NamedParamExample ¶
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" )
type NotificationPayloadContactMessageSchemaType ¶
type NotificationPayloadContactMessageSchemaType struct {
Contacts []Contact `json:"contacts"`
}
type NotificationPayloadInteractionMessageSchemaType ¶
type NotificationPayloadInteractionMessageSchemaType struct {
Interactive struct {
Type InteractiveNotificationTypeEnum `json:"type"`
NotificationPayloadButtonInteractionMessageSchemaType `json:",inline,omitempty"`
NotificationPayloadListInteractionMessageSchemaType `json:",inline,omitempty"`
} `json:"interactive,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 NotificationPayloadSystemMessageSchemaType ¶
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 ¶
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 NotificationReasonEnum ¶
type NotificationReasonEnum string
const (
NotificationReasonMessage NotificationReasonEnum = "message"
)
type Origin ¶
type Origin struct {
Type MessageStatusCategoryEnum `json:"type"`
ExpirationTimestamp string `json:"expiration_timestamp,omitempty"`
}
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 PhoneNumberQualityUpdateCurrentLimitEnum ¶
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 {
PricingModel string `json:"pricing_model"`
Category MessageStatusCategoryEnum `json:"category"`
}
type ProductError ¶ added in v0.3.5
type ProductFeed ¶ added in v0.3.5
type ProductFeedSchedule ¶ added in v0.3.5
type ProductGroup ¶
type ProductItem ¶
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"`
}
type ProductSet ¶
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 ¶
type ProductSetMetadata struct {
UpdateTime string `json:"update_time,omitempty"`
}
ProductSetMetadata represents metadata for a product set.
type RequestVerificationCodeResponse ¶
type RequestVerificationCodeResponse struct {
Success bool `json:"success,omitempty"`
}
type ResumableUploadResult ¶ added in v0.8.1
type ResumableUploadResult struct {
Handle string `json:"h"` // The media handle to use in templates (4::xxx format)
}
ResumableUploadResult represents the response from completing an upload
type ResumableUploadSession ¶ added in v0.8.1
type ResumableUploadSession struct {
ID string `json:"id"` // The upload session ID (h:xxx format)
}
ResumableUploadSession represents the response from creating an upload session
type SecurityValue ¶
type StatusResponse ¶ added in v0.3.5
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 ¶
func (manager *TemplateManager) Create(body WhatsappMessageTemplateCreateRequestBody) (*MessageTemplateCreationResponse, error)
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 ¶
func (manager *TemplateManager) Fetch(Id string) (*WhatsAppBusinessMessageTemplateNode, error)
Fetch fetches a single WhatsApp Business message template by its ID.
func (*TemplateManager) FetchAll ¶
func (manager *TemplateManager) FetchAll() (*WhatsAppBusinessTemplatesFetchResponseEdge, error)
FetchAll fetches all WhatsApp Business message templates.
func (*TemplateManager) MigrateFromOtherBusinessAccount ¶
func (manager *TemplateManager) MigrateFromOtherBusinessAccount(sourcePageNumber int, sourceWabaId int) (*TemplateMigrationResponse, error)
MigrateFromOtherBusinessAccount migrates templates from another business account.
func (*TemplateManager) Update ¶
func (manager *TemplateManager) Update(templateId string, updates WhatsAppBusinessAccountMessageTemplateUpdateRequestBody) (*MessageTemplateCreationResponse, error)
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" TemplateMessageButtonTypeFlow TemplateMessageButtonType = "FLOW" )
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 using Meta upload handle
HeaderUrl *[]string `json:"header_url,omitempty"` // for media headers using external URL (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 internal.WhatsAppBusinessApiPaginationMeta `json:"paging,omitempty"`
}
TemplateMessagePreviewEdge represents the preview response.
type TemplateMessagePreviewNode ¶
type TemplateMessagePreviewNode struct {
Body string `json:"body,omitempty"`
Buttons []WhatsAppBusinessAccountMessageTemplatePreviewButton `json:"buttons,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 int `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 UpdateFlowRequest ¶ added in v0.9.30
type UpdateFlowRequest struct {
Name string `json:"name,omitempty"`
Categories []FlowCategory `json:"categories,omitempty"`
EndpointURI string `json:"endpoint_uri,omitempty"`
}
type UploadFlowJSONRequest ¶ added in v0.9.30
type UserAction ¶ added in v0.9.8
type UserAction struct {
ActionType UserActionTypeEnum `json:"action_type"`
Timestamp string `json:"timestamp"`
MarketingMessagesLinkClickData MarketingMessagesLinkClickData `json:"marketing_messages_link_click_data,omitempty"`
}
UserAction represents a user action from the webhook payload
type UserActionTypeEnum ¶ added in v0.9.8
type UserActionTypeEnum string
UserActionTypeEnum represents the type of user action
const (
UserActionTypeMarketingMessagesLinkClick UserActionTypeEnum = "marketing_messages_link_click"
)
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.3.5
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.3.5
type WabaOfficialBusinessAccount struct {
OBAStatus string `json:"oba_status"`
}
type WabaQualityScore ¶ added in v0.3.5
type WabaQualityScore struct {
Score string `json:"score"`
}
type WabaThroughput ¶ added in v0.3.5
type WabaThroughput struct {
Level string `json:"level"`
}
type WebApplink ¶
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" )
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 internal.WhatsAppBusinessApiPaginationMeta `json:"paging,omitempty"`
}
WhatsAppBusinessTemplatesFetchResponseEdge represents the response structure for fetching templates.
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.3.5
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 internal.WhatsAppBusinessApiPaginationMeta `json:"paging,omitempty"`
Summary string `json:"summary,omitempty"`
}
WhatsappBusinessAccountPhoneNumberEdge represents a list of WhatsApp Business Account phone numbers.
type WhatsappBusinessAccountPhoneNumberMessagingLimitTier ¶ added in v0.3.5
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.3.5
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.3.5
type WhatsappBusinessAccountPhoneNumberPlatformType string
const ( WhatsappBusinessAccountPhoneNumberPlatformTypeCloudApi WhatsappBusinessAccountPhoneNumberPlatformType = "CLOUD_API" WhatsappBusinessAccountPhoneNumberPlatformTypeNotApplicable WhatsappBusinessAccountPhoneNumberPlatformType = "NOT_APPLICABLE" WhatsappBusinessAccountPhoneNumberPlatformTypeOnPremise WhatsappBusinessAccountPhoneNumberPlatformType = "ON_PREMISE" )
type WhatsappBusinessAccountPhoneNumberStatus ¶ added in v0.3.5
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"`
FlowId string `json:"flow_id,omitempty"`
FlowName string `json:"flow_name,omitempty"`
FlowJSON string `json:"flow_json,omitempty"`
FlowAction string `json:"flow_action,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 ¶
func (body *WhatsappMessageTemplateCreateRequestBody) AddComponent(component WhatsappMessageTemplateComponentCreateOrUpdateRequestBody)
AddComponent appends a component to the template creation request body.