import "github.com/sarthakjdev/wapi.go/internal/manager"

type AdInteractionSourceMediaTypeEnum

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

type AdInteractionSourceTypeEnum

type AdInteractionSourceTypeEnum string
const (
    AdInteractionSourceTypeUnknown AdInteractionSourceTypeEnum = "unknown"
)

type Change

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

type ChannelEvent

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

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

type Contact

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 CreatePhoneNumberResponse

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

type DeleteQrCodeResponse

DeleteQrCodeResponse represents the response of deleting a QR code.

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

type Entry

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

type Error

type Error struct {
}

type EventManager

EventManager is responsible for managing events and their subscribers.

type EventManager struct {
    subscribers  map[events.EventType]chan ChannelEvent // subscribers is a map of event types to channels of ChannelEvent.
    sync.RWMutex                                        // RWMutex is used to synchronize access to the subscribers map.
}

func NewEventManager

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 FetchPhoneNumberFilters

FetchPhoneNumberFilters holds the filters for fetching phone numbers.

type FetchPhoneNumberFilters struct {
    GetSandboxNumbers bool
}

type GenerateQrCodeResponse

GenerateQrCodeResponse represents the response of generating a QR code.

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

type GetAllQrCodesResponse

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

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

type InteractiveNotificationTypeEnum

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

type MediaManager

MediaManager is responsible for managing media related operations.

type MediaManager struct {
    requester request_client.RequestClient
}

func NewMediaManager

func NewMediaManager(requester request_client.RequestClient) *MediaManager

NewMediaManager creates a new instance of MediaManager.

func (*MediaManager) GetMediaIdByUrl

func (mm *MediaManager) GetMediaIdByUrl(id string)

GetMediaIdByUrl retrieves the media ID by its URL.

func (*MediaManager) GetMediaUrlById

func (mm *MediaManager) GetMediaUrlById(id string)

GetMediaUrlById retrieves the media URL by its ID.

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

MessageManager is responsible for managing messages.

type MessageManager struct {
    requester     request_client.RequestClient
    PhoneNumberId string
}

func NewMessageManager

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

NewMessageManager creates a new instance of MessageManager.

func (*MessageManager) Send

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

Send sends a message with the given parameters and returns the response. TODO: return the structured response from here

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

MessageTemplateCategory represents the category of a WhatsApp Business message template.

type MessageTemplateCategory string

Constants representing different message template categories.

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

type MessageTemplateComponentFormat

MessageTemplateComponentFormat represents the format of a message template component.

type MessageTemplateComponentFormat string

Constants representing different message template component formats.

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

type MessageTemplateComponentType

MessageTemplateComponentType represents the type of a message template component.

type MessageTemplateComponentType string

Constants representing different message template component types.

const (
    MessageTemplateComponentTypeGreeting         MessageTemplateComponentType = "GREETING"
    MessageTemplateComponentTypeHeader           MessageTemplateComponentType = "HEADER"
    MessageTemplateComponentTypeBody             MessageTemplateComponentType = "BODY"
    MessageTemplateComponentTypeFooter           MessageTemplateComponentType = "FOOTER"
    MessageTemplateComponentTypeButtons          MessageTemplateComponentType = "BUTTONS"
    MessageTemplateComponentTypeCarousel         MessageTemplateComponentType = "CAROUSEL"
    MessageTemplateComponentTypeLimitedTimeOffer MessageTemplateComponentType = "LIMITED_TIME_OFFER"
)

type MessageTemplateCreationResponse

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

type MessageTemplateStatus

MessageTemplateStatus represents the status of a WhatsApp Business message template.

type MessageTemplateStatus string

Constants representing different message template statuses.

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

type Metadata

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

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 {
        ReplyId string `json:"reply_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          string `json:"quantity"`
            ItemPrice         string `json:"item_price"`
            Currency          string `json:"currency"`
        }   `json:"product_items"`
    } `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

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

type PhoneNumberManager struct {
    businessAccountId string
    apiAccessToken    string
    requester         *request_client.RequestClient
}

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(options FetchPhoneNumberFilters) (*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

PhoneNumberManagerConfig holds the configuration for PhoneNumberManager.

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

type Pricing

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

type Profile

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

type RequestVerificationCodeResponse

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

type Status

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

type SystemNotificationTypeEnum

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

type TemplateAnalyticsType

type TemplateAnalyticsType struct {
}

type TemplateManager

TemplateManager is responsible for managing WhatsApp Business message templates.

type TemplateManager struct {
    businessAccountId string
    apiAccessToken    string
    requester         *request_client.RequestClient
}

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)

func (*TemplateManager) Delete

func (tm *TemplateManager) Delete(id string)

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) FetchMessageTemplatePreviews

func (tm *TemplateManager) FetchMessageTemplatePreviews()

func (*TemplateManager) FetchPerformanceAnalytics

func (manager *TemplateManager) FetchPerformanceAnalytics(templateName, templateId string) (string, error)

func (*TemplateManager) MigrateFromOtherBusinessAccount

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

func (*TemplateManager) Update

func (manager *TemplateManager) Update(templateId string, updates WhatsAppBusinessAccountMessageTemplateUpdateRequestBody) (*MessageTemplateCreationResponse, error)

type TemplateManagerConfig

TemplateManagerConfig represents the configuration for creating a new TemplateManager.

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

type TemplateMessagePreviewEdge

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

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"`
}

type TemplatePerformanceAnalytics

type TemplatePerformanceAnalytics struct {
}

type Value

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

type VerifyCodeMethod

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

type VerifyCodeResponse

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

type WebhookManager

WebhookManager represents a manager for handling webhooks.

type WebhookManager struct {
    secret       string
    path         string
    port         int
    EventManager EventManager
    Requester    request_client.RequestClient
}

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.

func (*WebhookManager) createEchoHttpServer

func (wh *WebhookManager) createEchoHttpServer() *echo.Echo

createEchoHttpServer creates a new instance of Echo HTTP server. This function is used in case the client has not provided any custom HTTP server.

type WebhookManagerConfig

WebhookManagerConfig represents the configuration options for creating a new WebhookManager.

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

type WhatsAppBusinessAccountMessageTemplateDeleteRequestBody

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

type WhatsAppBusinessAccountMessageTemplatePreviewButton

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

type WhatsAppBusinessAccountMessageTemplateUpdateRequestBody

this is the request body for the message template update request

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

type WhatsAppBusinessHSMWhatsAppBusinessHSMQualityScoreShape

WhatsAppBusinessHSMWhatsAppBusinessHSMQualityScoreShape represents the quality score of a WhatsApp Business message template.

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

type WhatsAppBusinessHSMWhatsAppHSMComponent

WhatsAppBusinessHSMWhatsAppHSMComponent represents a component in a WhatsApp Business message template.

type WhatsAppBusinessHSMWhatsAppHSMComponent struct {
    AddSecurityRecommendation bool                                                      `json:"add_security_recommendation,omitempty"`
    Buttons                   []WhatsAppBusinessHSMWhatsAppHSMComponentButton           `json:"buttons,omitempty"`
    Cards                     []WhatsAppBusinessHSMWhatsAppHSMComponentCard             `json:"cards,omitempty"`
    CodeExpirationMinutes     int                                                       `json:"code_expiration_minutes,omitempty"`
    Example                   WhatsAppBusinessHSMWhatsAppHSMComponentExample            `json:"example,omitempty"`
    Format                    string                                                    `json:"format,omitempty"`
    LimitedTimeOffer          WhatsAppBusinessHSMWhatsAppLimitedTimeOfferParameterShape `json:"limited_time_offer,omitempty"`
    Text                      string                                                    `json:"text,omitempty"`
    Type                      string                                                    `json:"type,omitempty"`
}

type WhatsAppBusinessHSMWhatsAppHSMComponentButton

WhatsAppBusinessHSMWhatsAppHSMComponentButton represents a button component in a WhatsApp Business message template.

type WhatsAppBusinessHSMWhatsAppHSMComponentButton struct {
}

type WhatsAppBusinessHSMWhatsAppHSMComponentCard

WhatsAppBusinessHSMWhatsAppHSMComponentCard represents a card component in a WhatsApp Business message template.

type WhatsAppBusinessHSMWhatsAppHSMComponentCard struct {
}

type WhatsAppBusinessHSMWhatsAppHSMComponentExample

WhatsAppBusinessHSMWhatsAppHSMComponentExample represents an example component in a WhatsApp Business message template.

type WhatsAppBusinessHSMWhatsAppHSMComponentExample struct {
}

type WhatsAppBusinessHSMWhatsAppLimitedTimeOfferParameterShape

WhatsAppBusinessHSMWhatsAppLimitedTimeOfferParameterShape represents a limited time offer parameter in a WhatsApp Business message template.

type WhatsAppBusinessHSMWhatsAppLimitedTimeOfferParameterShape struct {
}

type WhatsAppBusinessMessageTemplateNode

WhatsAppBusinessMessageTemplateNode represents a WhatsApp Business message template.

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

type WhatsAppBusinessTemplatesFetchResponseEdge

WhatsAppBusinessTemplatesFetchResponseEdge represents the response structure for fetching WhatsApp Business message templates.

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

type WhatsappApiNotificationPayloadSchemaType

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

type WhatsappBusinessAccountPhoneNumber

WhatsappBusinessAccountPhoneNumber represents a WhatsApp Business Account phone number.

type WhatsappBusinessAccountPhoneNumber struct {
    VerifiedName       string `json:"verified_name,omitempty"`
    DisplayPhoneNumber string `json:"display_phone_number,omitempty"`
    Id                 string `json:"id,omitempty"`
    QualityRating      string `json:"quality_rating,omitempty"`
    CodeVerification   struct {
        Status string `json:"code_verification_status,omitempty"`
    }   `json:"code_verification_status,omitempty"`
    PlatformType string `json:"platform_type,omitempty"`
}

type WhatsappBusinessAccountPhoneNumberEdge

WhatsappBusinessAccountPhoneNumberEdge represents a list of WhatsApp Business Account phone numbers.

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

type WhatsappMessageTemplateButtonCreateRequestBody

WhatsappMessageTemplateButtonCreateRequestBody represents the request body for creating a button in a message template.

type WhatsappMessageTemplateButtonCreateRequestBody struct {
    // enum {QUICK_REPLY, URL, PHONE_NUMBER, OTP, MPM, CATALOG, FLOW, VOICE_CALL}
    Type                 string `json:"type,omitempty"`
    Text                 string `json:"text,omitempty"`
    Url                  string `json:"url,omitempty"`
    PhoneNumber          string `json:"phone_number,omitempty"`
    Example              string `json:"example,omitempty"`
    FlowId               string `json:"flow_id,omitempty"`
    ZeroTapTermsAccepted bool   `json:"zero_tap_terms_accepted,omitempty"`
}

type WhatsappMessageTemplateComponentCreateOrUpdateRequestBody

WhatsappMessageTemplateComponentCreateOrUpdateRequestBody represents the request body for creating or updating a component in a message template.

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

func (*WhatsappMessageTemplateComponentCreateOrUpdateRequestBody) AddButton

func (component *WhatsappMessageTemplateComponentCreateOrUpdateRequestBody) AddButton(button WhatsappMessageTemplateButtonCreateRequestBody)

AddButton adds a button to the component.

type WhatsappMessageTemplateCreateRequestBody

WhatsappMessageTemplateCreateRequestBody represents the request body for creating a message template.

type WhatsappMessageTemplateCreateRequestBody struct {
    AllowCategoryChange bool `json:"allow_category_change,omitempty" `

    // enum {UTILITY, MARKETING, AUTHENTICATION}
    Category string `json:"category,omitempty" validate:"required"`

    Components                  []WhatsappMessageTemplateComponentCreateOrUpdateRequestBody `json:"components" validate:"required"`
    Name                        string                                                      `json:"name,omitempty" validate:"required"`
    Language                    string                                                      `json:"language" validate:"required"`
    LibraryTemplateName         string                                                      `json:"library_template_name,omitempty"`
    LibraryTemplateButtonInputs []WhatsappMessageTemplateButtonCreateRequestBody            `json:"library_template_button_inputs,omitempty"`
}

func (*WhatsappMessageTemplateCreateRequestBody) AddComponent

func (body *WhatsappMessageTemplateCreateRequestBody) AddComponent(component WhatsappMessageTemplateComponentCreateOrUpdateRequestBody)