manager

package
v0.9.40 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2025 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccountAlertSeverityEnum

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

type AccountAlertsValue

type AccountAlertsValue struct {
	EntityType       string                   `json:"entity_type"`
	EntityId         string                   `json:"entity_id"`
	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 AccountUpdateBanInfo struct {
	WabaBanState []string `json:"waba_ban_state"`
	WabaBanDate  string   `json:"waba_ban_date"`
}

type AccountUpdateEventEnum

type AccountUpdateEventEnum string
const (
	AccountUpdateEventEnumVerifiedAccount    AccountUpdateEventEnum = "VERIFIED_ACCOUNT"
	AccountUpdateEventEnumDisabledAccount    AccountUpdateEventEnum = "DISABLED_UPDATE"
	AccountUpdateEventEnumAccountViolation   AccountUpdateEventEnum = "ACCOUNT_VIOLATION"
	AccountUpdateEventEnumAccountRestriction AccountUpdateEventEnum = "ACCOUNT_RESTRICTION"
	AccountUpdateEventEnumAccountDeleted     AccountUpdateEventEnum = "ACCOUNT_DELETED"
	AccountUpdateEventEnumPartnerRemoved     AccountUpdateEventEnum = "PARTNER_REMOVED"
)

type AccountUpdateRestrictionInfo

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

type AccountUpdateValue

type AccountUpdateValue struct {
	PhoneNumber string                 `json:"phone_number,omitempty"`
	Event       AccountUpdateEventEnum `json:"event"`
}

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 struct {
	Web WebApplink `json:"web"`
}

type BusinessCapabilityUpdateValue

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

type CapabilityReview

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

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"`
	CollaborativeAdsShareSettings *[]interface{} `json:"collaborative_ads_share_settings,omitempty"`
	DataSources                   *interface{}   `json:"data_sources,omitempty"`
	Destinations                  *[]interface{} `json:"destinations,omitempty"`
	Diagnostics                   *[]interface{} `json:"diagnostics,omitempty"`
	EventStats                    *[]interface{} `json:"event_stats,omitempty"`
	ExternalEventSources          *[]interface{} `json:"external_event_sources,omitempty"`
	Flights                       *[]interface{} `json:"flights,omitempty"`
	HomeListings                  *[]interface{} `json:"home_listings,omitempty"`
	HotelRoomsBatch               *[]interface{} `json:"hotel_rooms_batch,omitempty"`
	Hotels                        *[]interface{} `json:"hotels,omitempty"`
	PricingVariablesBatch         *[]interface{} `json:"pricing_variables_batch,omitempty"`
	ProductGroups                 *interface{}   `json:"product_groups,omitempty"`
	ProductSets                   *interface{}   `json:"product_sets,omitempty"`
	ProductSetsBatch              *[]interface{} `json:"product_sets_batch,omitempty"`
	Products                      struct {
		Data []ProductItem `json:"data"`
	} `json:"products,omitempty"`
	VehicleOffers *[]interface{} `json:"vehicle_offers,omitempty"`
	Vehicles      *[]interface{} `json:"vehicles,omitempty"`
}

Update Catalog to use []ProductItem for Products.

type CatalogFetchResponseEdge

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 Contact

type Contact struct {
	WaId    string  `json:"wa_id"`
	Profile Profile `json:"profile"`
}

type Conversation

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

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 Entry

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

type Error

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

type EventManager

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

EventManager is responsible for managing events and their subscribers.

func NewEventManager

func NewEventManager() *EventManager

NewEventManager creates a new instance of EventManger.

func (*EventManager) On

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

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

func (*EventManager) Publish

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

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

func (*EventManager) Subscribe

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

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

func (*EventManager) Unsubscribe

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

Unsubscribe removes a subscriber from the specified event type.

type 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 FlowHealthStatusEntity struct {
	EntityType     string   `json:"entity_type"`
	ID             string   `json:"id"`
	CanSend        bool     `json:"can_send"`
	Errors         []string `json:"errors,omitempty"`
	AdditionalInfo string   `json:"additional_info,omitempty"`
}

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 (*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 FlowPreview struct {
	PreviewURL string `json:"preview_url"`
	ExpiresAt  string `json:"expires_at"`
}

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 ImageCdnUrl struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type InteractiveNotificationTypeEnum

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

type KeyValue

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

New helper type for key/value pairs.

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 MediaMetadata struct {
	MessagingProduct string `json:"messaging_product"`
	Url              string `json:"url"`
	MimeType         string `json:"mime_type"`
	Sha256           string `json:"sha256"`
	FileSize         int    `json:"file_size"`
	ID               string `json:"id"`
}

type 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"
	MessageTemplateComponentTypeFooter           MessageTemplateComponentType = "FOOTER"
	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 Metadata

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

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 NotificationPayloadAudioMessageSchemaType

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

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

type NotificationPayloadButtonMessageSchemaType

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

type NotificationPayloadContactMessageSchemaType

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

type NotificationPayloadDocumentMessageSchemaType

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

type NotificationPayloadErrorSchemaType

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

type NotificationPayloadImageMessageSchemaType

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

type NotificationPayloadInteractionMessageSchemaType

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

type NotificationPayloadListInteractionMessageSchemaType

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

type NotificationPayloadLocationMessageSchemaType

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

type NotificationPayloadMessageContextSchemaType

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

type NotificationPayloadOrderMessageSchemaType

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

type NotificationPayloadReactionMessageSchemaType

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

type NotificationPayloadStickerMessageSchemaType

type NotificationPayloadStickerMessageSchemaType struct {
	Sticker struct {
		Id       string `json:"id"`
		MIMEType string `json:"mime_type"`
		SHA256   string `json:"sha256"`
		Animated bool   `json:"animated"`
	} `json:"sticker,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 NotificationPayloadVideoMessageSchemaType

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

type NotificationReasonEnum

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

type Origin

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

type PhoneNumberManager

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

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

func NewPhoneNumberManager

func NewPhoneNumberManager(config *PhoneNumberManagerConfig) *PhoneNumberManager

NewPhoneNumberManager creates a new instance of PhoneNumberManager.

func (*PhoneNumberManager) Create

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

func (*PhoneNumberManager) DeleteQrCode

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

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

func (*PhoneNumberManager) Fetch

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

Fetch fetches a phone number by its ID.

func (*PhoneNumberManager) FetchAll

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

FetchAll fetches all phone numbers based on the provided filters.

func (*PhoneNumberManager) GenerateQrCode

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

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

func (*PhoneNumberManager) GetAllQrCodes

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

GetAllQrCodes gets all QR codes for the specified phone number.

func (*PhoneNumberManager) GetQrCodeById

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

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

func (*PhoneNumberManager) RequestVerificationCode

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

func (*PhoneNumberManager) UpdateQrCode

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

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

func (*PhoneNumberManager) VerifyCode

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

type PhoneNumberManagerConfig

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

PhoneNumberManagerConfig holds the configuration for PhoneNumberManager.

type PhoneNumberNameUpdateValue

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

type PhoneNumberQualityUpdateCurrentLimitEnum

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 ProductError struct {
	ErrorType     string `json:"error_type"`
	ErrorPriority string `json:"error_priority"`
	Title         string `json:"title"`
	Description   string `json:"description"`
}

type ProductFeed added in v0.3.5

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

type ProductFeedSchedule added in v0.3.5

type ProductFeedSchedule struct {
	Url      string `json:"url"`
	Interval string `json:"interval"` // e.g., HOURLY, DAILY; Meta specific values
	Hour     *int   `json:"hour,omitempty"`
}

type ProductGroup

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

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 Profile

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

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 SecurityValue struct {
	DisplayPhoneNumber string `json:"display_phone_number"`
	Event              string `json:"event"`
	Requester          string `json:"requester"`
}

type Status

type Status struct {
	Id           string       `json:"id"`
	Conversation Conversation `json:"conversation,omitempty"`
	Errors       []Error      `json:"errors,omitempty"`
	Status       string       `json:"status"`
	Timestamp    string       `json:"timestamp"`
	RecipientId  string       `json:"recipient_id"`
	Pricing      Pricing      `json:"pricing,omitempty"`
}

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

Create sends a creation request for a message template.

func (*TemplateManager) Delete

func (tm *TemplateManager) Delete(id string)

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

func (*TemplateManager) Fetch

Fetch fetches a single WhatsApp Business message template by its ID.

func (*TemplateManager) FetchAll

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

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"`
	Footer   string                                                `json:"footer,omitempty"`
	Header   string                                                `json:"header,omitempty"`
	Language string                                                `json:"language,omitempty"`
}

TemplateMessagePreviewNode represents a preview node.

type TemplateMessageQualityScore

type TemplateMessageQualityScore struct {
	Date    int      `json:"date,omitempty"`
	Reasons []string `json:"reasons,omitempty"`
	Score   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 UploadFlowJSONRequest struct {
	Name      string `json:"name"`
	AssetType string `json:"asset_type"`
	File      string `json:"file"`
}

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 struct {
	ShouldFallback bool   `json:"should_fallback"`
	URL            string `json:"url"`
}

type WebhookFieldEnum

type WebhookFieldEnum string
const (
	WebhookFieldEnumAccountAlerts          WebhookFieldEnum = "account_alerts"
	WebhookFieldEnumMessages               WebhookFieldEnum = "messages"
	WebhookFieldEnumSecurity               WebhookFieldEnum = "security"
	WebhookFieldEnumAccountUpdate          WebhookFieldEnum = "account_update"
	WebhookFieldEnumAccountReview          WebhookFieldEnum = "account_review"
	WebhookFieldEnumBusinessCapability     WebhookFieldEnum = "business_capability"
	WebhookFieldEnumMessageTemplateQuality WebhookFieldEnum = "message_template_quality"
	WebhookFieldEnumMessageTemplateStatus  WebhookFieldEnum = "message_template_status"
	WebhookFieldEnumPhoneNumberName        WebhookFieldEnum = "phone_number_name"
	WebhookFieldEnumPhoneNumberQuality     WebhookFieldEnum = "phone_number_quality"
	WebhookFieldEnumTemplateCategoryUpdate WebhookFieldEnum = "template_category"
)

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 WhatsappApiNotificationPayloadSchemaType

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

type WhatsappBusinessAccountPhoneNumber

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

WhatsappBusinessAccountPhoneNumber represents a WhatsApp Business Account phone number.

type WhatsappBusinessAccountPhoneNumberCodeVerificationStatus added in v0.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"`
	NavigateScreen       string   `json:"navigate_screen,omitempty"`
	ZeroTapTermsAccepted bool     `json:"zero_tap_terms_accepted,omitempty"`
}

WhatsappMessageTemplateButtonCreateRequestBody represents the request body for creating a button.

type WhatsappMessageTemplateButtonCreateRequestBodyAlias

type WhatsappMessageTemplateButtonCreateRequestBodyAlias = WhatsappMessageTemplateButtonCreateRequestBody

WhatsappMessageTemplateButtonCreateRequestBody alias used in component creation.

type WhatsappMessageTemplateComponentCreateOrUpdateRequestBody

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

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

type WhatsappMessageTemplateCreateRequestBody

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

WhatsappMessageTemplateCreateRequestBody represents the request body for creating a message template.

func (*WhatsappMessageTemplateCreateRequestBody) AddComponent

AddComponent appends a component to the template creation request body.

Jump to

Keyboard shortcuts

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