> ## Documentation Index
> Fetch the complete documentation index at: https://golang.wapikit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Business

```go theme={null}
import "github.com/wapikit/wapi.go/pkg/business"
```

<a name="AccountAnalyticsOptions" />

## type AccountAnalyticsOptions

```go theme={null}
type AccountAnalyticsOptions struct {
    Start        time.Time                       `json:"start" validate:"required"`
    End          time.Time                       `json:"end" validate:"required"`
    Granularity  AnalyticsRequestGranularityType `json:"granularity" validate:"required"`
    PhoneNumbers []string                        `json:"phone_numbers,omitempty"`

    // * NOT SUPPORTED AS OF NOW
    // ProductTypes []WhatsAppBusinessAccountAnalyticsProductType `json:"product_types,omitempty"`
    CountryCodes []string `json:"country_codes,omitempty"`
}
```

<a name="AnalyticsDataPoint" />

## type AnalyticsDataPoint

```go theme={null}
type AnalyticsDataPoint struct {
    Start     int `json:"start,omitempty"`
    End       int `json:"end,omitempty"`
    Sent      int `json:"sent,omitempty"`
    Delivered int `json:"delivered,omitempty"`
}
```

<a name="AnalyticsRequestGranularityType" />

## type AnalyticsRequestGranularityType

```go theme={null}
type AnalyticsRequestGranularityType string
```

<a name="AnalyticsRequestGranularityTypeHalfHour" />

```go theme={null}
const (
    AnalyticsRequestGranularityTypeHalfHour AnalyticsRequestGranularityType = "HALF_HOUR"
    AnalyticsRequestGranularityTypeDay      AnalyticsRequestGranularityType = "DAY"
    AnalyticsRequestGranularityTypeMonth    AnalyticsRequestGranularityType = "MONTH"
)
```

<a name="BusinessClient" />

## type BusinessClient

BusinessClient is responsible for managing business account related operations.

```go theme={null}
type BusinessClient struct {
    BusinessAccountId string `json:"businessAccountId" validate:"required"`
    AccessToken       string `json:"accessToken" validate:"required"`
    PhoneNumber       *manager.PhoneNumberManager
    Template          *manager.TemplateManager
    requester         *request_client.RequestClient
    Catalog           *manager.CatalogManager
}
```

<a name="NewBusinessClient" />

### func NewBusinessClient

```go theme={null}
func NewBusinessClient(config *BusinessClientConfig) *BusinessClient
```

NewBusinessClient creates a new instance of BusinessClient.

<a name="BusinessClient.ConversationAnalytics" />

### func (\*BusinessClient) ConversationAnalytics

```go theme={null}
func (client *BusinessClient) ConversationAnalytics(options ConversationAnalyticsOptions) (*WhatsAppConversationAnalyticsResponse, error)
```

ConversationAnalytics fetches the conversation analytics for the business account.

<a name="BusinessClient.Fetch" />

### func (\*BusinessClient) Fetch

```go theme={null}
func (client *BusinessClient) Fetch() (*FetchBusinessAccountResponse, error)
```

This method fetches the business account details.

<a name="BusinessClient.FetchAnalytics" />

### func (\*BusinessClient) FetchAnalytics

```go theme={null}
func (client *BusinessClient) FetchAnalytics(options AccountAnalyticsOptions) (WhatsappBusinessAccountAnalyticsResponse, error)
```

FetchAnalytics fetches the analytics for the business account.

<a name="BusinessClient.GetBusinessId" />

### func (\*BusinessClient) GetBusinessId

```go theme={null}
func (bc *BusinessClient) GetBusinessId() string
```

GetBusinessId returns the business account ID.

<a name="BusinessClient.SetBusinessId" />

### func (\*BusinessClient) SetBusinessId

```go theme={null}
func (bc *BusinessClient) SetBusinessId(id string)
```

SetBusinessId sets the business account ID.

<a name="BusinessClientConfig" />

## type BusinessClientConfig

BusinessClientConfig holds the configuration for BusinessClient.

```go theme={null}
type BusinessClientConfig struct {
    BusinessAccountId string `json:"businessAccountId" validate:"required"`
    AccessToken       string `json:"accessToken" validate:"required"`
    Requester         *request_client.RequestClient
}
```

<a name="BusinessRole" />

## type BusinessRole

```go theme={null}
type BusinessRole string
```

<a name="BusinessRoleManage" />

```go theme={null}
const (
    BusinessRoleManage               BusinessRole = "MANAGE"
    BusinessRoleDevelop              BusinessRole = "DEVELOP"
    BusinessRoleManageTemplates      BusinessRole = "MANAGE_TEMPLATES"
    BusinessRoleManagePhone          BusinessRole = "MANAGE_PHONE"
    BusinessRoleViewCost             BusinessRole = "VIEW_COST"
    BusinessRoleManageExtensions     BusinessRole = "MANAGE_EXTENSIONS"
    BusinessRoleViewPhoneAssets      BusinessRole = "VIEW_PHONE_ASSETS"
    BusinessRoleManagePhoneAssets    BusinessRole = "MANAGE_PHONE_ASSETS"
    BusinessRoleViewTemplates        BusinessRole = "VIEW_TEMPLATES"
    BusinessRoleMessaging            BusinessRole = "MESSAGING"
    BusinessRoleManageBusinessPhones BusinessRole = "MANAGE_BUSINESS_PHONES"
)
```

<a name="ConversationAnalyticsGranularityType" />

## type ConversationAnalyticsGranularityType

```go theme={null}
type ConversationAnalyticsGranularityType string
```

<a name="ConversationAnalyticsGranularityTypeHalfHour" />

```go theme={null}
const (
    ConversationAnalyticsGranularityTypeHalfHour ConversationAnalyticsGranularityType = "HALF_HOUR"
    ConversationAnalyticsGranularityTypeDay      ConversationAnalyticsGranularityType = "DAILY"
    ConversationAnalyticsGranularityTypeMonth    ConversationAnalyticsGranularityType = "MONTHLY"
)
```

<a name="ConversationAnalyticsOptions" />

## type ConversationAnalyticsOptions

```go theme={null}
type ConversationAnalyticsOptions struct {
    Start        time.Time                            `json:"start" validate:"required"`
    End          time.Time                            `json:"end" validate:"required"`
    Granularity  ConversationAnalyticsGranularityType `json:"granularity" validate:"required"`
    PhoneNumbers []string                             `json:"phone_numbers,omitempty"`

    ConversationCategory  []ConversationCategoryType  `json:"conversation_category,omitempty"`
    ConversationTypes     []ConversationCategoryType  `json:"conversation_types,omitempty"`
    ConversationDirection []ConversationDirection     `json:"conversation_direction,omitempty"`
    Dimensions            []ConversationDimensionType `json:"dimensions,omitempty"`
}
```

<a name="ConversationCategoryType" />

## type ConversationCategoryType

```go theme={null}
type ConversationCategoryType string
```

<a name="ConversationCategoryTypeAuthentication" />

```go theme={null}
const (
    ConversationCategoryTypeAuthentication ConversationCategoryType = "AUTHENTICATION"
    ConversationCategoryTypeMarketing      ConversationCategoryType = "MARKETING"
    ConversationCategoryTypeService        ConversationCategoryType = "SERVICE"
    ConversationCategoryTypeUtility        ConversationCategoryType = "UTILITY"
)
```

<a name="ConversationDimensionType" />

## type ConversationDimensionType

```go theme={null}
type ConversationDimensionType string
```

<a name="ConversationDimensionTypeConversationCategory" />

```go theme={null}
const (
    ConversationDimensionTypeConversationCategory  ConversationDimensionType = "CONVERSATION_CATEGORY"
    ConversationDimensionTypeConversationDirection ConversationDimensionType = "CONVERSATION_DIRECTION"
    ConversationDimensionTypeConversationType      ConversationDimensionType = "CONVERSATION_TYPE"
    ConversationDimensionTypeCountry               ConversationDimensionType = "COUNTRY"
    ConversationDimensionTypePhone                 ConversationDimensionType = "PHONE"
)
```

<a name="ConversationDirection" />

## type ConversationDirection

```go theme={null}
type ConversationDirection string
```

<a name="ConversationDirectionBusinessInitiated" />

```go theme={null}
const (
    ConversationDirectionBusinessInitiated ConversationDirection = "BUSINESS_INITIATED"
    ConversationDirectionUserInitiated     ConversationDirection = "USER_INITIATED"
)
```

<a name="ConversationType" />

## type ConversationType

```go theme={null}
type ConversationType string
```

<a name="ConversationTypeFreeEntry" />

```go theme={null}
const (
    ConversationTypeFreeEntry ConversationType = "FREE_ENTRY"
    ConversationTypeFreeTier  ConversationType = "FREE_TIER"
    ConversationTypeRegular   ConversationType = "REGULAR"
)
```

<a name="FetchBusinessAccountResponse" />

## type FetchBusinessAccountResponse

```go theme={null}
type FetchBusinessAccountResponse struct {
    Id                string `json:"id" validate:"required"`
    Name              string `json:"name" validate:"required"`
    TimezoneId        string `json:"timezone_id" validate:"required"`
    Currency          string `json:"currency" validate:"required"`
    OwnerBusinessInfo struct {
        Name string `json:"name" validate:"required"`
        Id   string `json:"id" validate:"required"`
    }   `json:"owner_business_info" validate:"required"`
}
```

<a name="WhatsAppBusinessAccountAnalyticsProductType" />

## type WhatsAppBusinessAccountAnalyticsProductType

```go theme={null}
type WhatsAppBusinessAccountAnalyticsProductType int
```

<a name="WhatsAppBusinessAccountAnalyticsProductTypeNotificationMessages" />

```go theme={null}
const (
    WhatsAppBusinessAccountAnalyticsProductTypeNotificationMessages    WhatsAppBusinessAccountAnalyticsProductType = 0
    WhatsAppBusinessAccountAnalyticsProductTypeCustomerSupportMessages WhatsAppBusinessAccountAnalyticsProductType = 2
)
```

<a name="WhatsAppConversationAnalyticsEdge" />

## type WhatsAppConversationAnalyticsEdge

```go theme={null}
type WhatsAppConversationAnalyticsEdge struct {
    Data []struct {
        DataPoints []WhatsAppConversationAnalyticsNode `json:"data_points,omitempty"`
    }   `json:"data,omitempty"`
    Paging internal.WhatsAppBusinessApiPaginationMeta `json:"paging,omitempty"`
}
```

<a name="WhatsAppConversationAnalyticsNode" />

## type WhatsAppConversationAnalyticsNode

```go theme={null}
type WhatsAppConversationAnalyticsNode struct {
    Start                 int    `json:"start" validate:"required"`
    End                   int    `json:"end,omitempty" validate:"required"`
    Conversation          int    `json:"conversation,omitempty"`
    PhoneNumber           string `json:"phone_number,omitempty"`
    Country               string `json:"country,omitempty"`
    ConversationType      string `json:"conversation_type,omitempty"`
    ConversationDirection string `json:"conversation_direction,omitempty"`
    ConversationCategory  string `json:"conversation_category,omitempty"`
    Cost                  int    `json:"cost,omitempty"`
}
```

<a name="WhatsAppConversationAnalyticsResponse" />

## type WhatsAppConversationAnalyticsResponse

```go theme={null}
type WhatsAppConversationAnalyticsResponse struct {
    ConversationAnalytics []WhatsAppConversationAnalyticsEdge `json:"conversation_analytics" validate:"required"`
}
```

<a name="WhatsappBusinessAccount" />

## type WhatsappBusinessAccount

WhatsappBusinessAccount represents a WhatsApp Business Account.

```go theme={null}
type WhatsappBusinessAccount struct {
    BusinessVerificationStatus string `json:"business_verification_status,omitempty"`
    Country                    string `json:"country,omitempty"`
    Currency                   string `json:"currency,omitempty"`
    IsTemplateAnalyticsEnabled string `json:"is_enabled_for_insights,omitempty"`
    MessageTemplateNamespace   string `json:"message_template_namespace,omitempty"`
    Name                       string `json:"name,omitempty"`
    OwnershipType              string `json:"ownership_type,omitempty"`
    PrimaryFundingId           string `json:"primary_funding_id,omitempty"`
    PurchaseOrderNumber        string `json:"purchase_order_number,omitempty"`
    TimezoneId                 string `json:"timezone_id,omitempty"`
}
```

<a name="WhatsappBusinessAccountAnalyticsResponse" />

## type WhatsappBusinessAccountAnalyticsResponse

```go theme={null}
type WhatsappBusinessAccountAnalyticsResponse struct {
    PhoneNumbers []string             `json:"phone_numbers,omitempty"`
    Granularity  string               `json:"granularity,omitempty"`
    DataPoints   []AnalyticsDataPoint `json:"data_points,omitempty"`
}
```
