gochimp3

package module
v0.0.0-...-76bced2 Latest Latest
Warning

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

Go to latest
Published: May 23, 2017 License: MIT Imports: 14 Imported by: 0

README

gochimp3

GoDoc Build Status Gitter chat

Introduction

Golang client for MailChimp API 3.0.

Install

Install with go get:

$ go get github.com/zeekay/gochimp3

Usage

package main

import (
    "fmt"
    "os"

    "github.com/zeekay/gochimp3"
)

const (
    apiKey = "f6f6eb412g2b9677b00550d14d86db5e-us4"
)

func main() {
    client := gochimp3.New(apiKey)

    // Fetch list
	list, err := client.GetList("28a3d7a5", nil)
	if err != nil {
		fmt.Println("Failed to get list '%s'", listId)
		os.Exit(1)
	}

    // Add subscriber
    req := &gochimp3.MemberRequest{
        EmailAddress: "spam@zeekay.io",
    }

	if _, err := list.CreateMember(req); err != nil {
		fmt.Println("Failed to subscribe '%s'", req.EmailAddress)
		os.Exit(1)
	}
}

Documentation

Index

Constants

View Source
const URIFormat string = "%s.api.mailchimp.com"

URIFormat defines the endpoint for a single app

View Source
const Version string = "/3.0"

Version the latest API version

Variables

View Source
var DatacenterRegex = regexp.MustCompile("[^-]\\w+$")

DatacenterRegex defines which datacenter to hit

Functions

This section is empty.

Types

type API

type API struct {
	Key       string
	Timeout   time.Duration
	Transport http.RoundTripper

	User  string
	Debug bool
	// contains filtered or unexported fields
}

API represents the origin of the API

func New

func New(apiKey string) *API

New creates a API

func (API) CreateAuthorizedApp

func (api API) CreateAuthorizedApp(body *AuthorizedAppRequest) (*AuthorizedAppCreateResponse, error)

func (API) CreateAutomationEmailQueue

func (api API) CreateAutomationEmailQueue(workflowID, emailID, emailAddress string) (*AutomationQueue, error)

func (API) CreateAutomationRemovedSubscribers

func (api API) CreateAutomationRemovedSubscribers(workflowID, emailAddress string) (*RemovedSubscriber, error)

func (API) CreateList

func (api API) CreateList(body *ListCreationRequest) (*ListResponse, error)

func (API) CreateStore

func (api API) CreateStore(req *Store) (*Store, error)

func (API) DeleteList

func (api API) DeleteList(id string) (bool, error)

func (API) DeleteStore

func (api API) DeleteStore(id string) (bool, error)

func (API) GetAuthorizedApps

func (api API) GetAuthorizedApps(params *ExtendedQueryParams) (*ListOfAuthorizedApps, error)

func (API) GetAuthroizedApp

func (api API) GetAuthroizedApp(id string, params *BasicQueryParams) (*AuthorizedApp, error)

func (API) GetAutomation

func (api API) GetAutomation(id string) (*Automation, error)

TODO query params?

func (API) GetAutomationEmail

func (api API) GetAutomationEmail(automationID, emailID string) (*AutomationEmail, error)

func (API) GetAutomationEmails

func (api API) GetAutomationEmails(automationID string) (*ListOfEmails, error)

func (API) GetAutomationQueue

func (api API) GetAutomationQueue(workflowID, emailID, subsID string) (*AutomationQueue, error)

func (API) GetAutomationQueues

func (api API) GetAutomationQueues(workflowID, emailID string) (*ListOfAutomationQueues, error)

func (API) GetAutomationRemovedSubscribers

func (api API) GetAutomationRemovedSubscribers(workflowID string) (*ListOfRemovedSubscribers, error)

func (API) GetAutomations

func (api API) GetAutomations(params *BasicQueryParams) (*ListOfAutomations, error)

func (API) GetList

func (api API) GetList(id string, params *BasicQueryParams) (*ListResponse, error)

func (API) GetLists

func (api API) GetLists(params *ListQueryParams) (*ListOfLists, error)

func (API) GetReports

func (api API) GetReports(params *ReportQueryParams) (*ListOfReports, error)

func (API) GetRoot

func (api API) GetRoot(params *BasicQueryParams) (*RootResponse, error)

GetRoot queries the root of the API for stats

func (API) GetStore

func (api API) GetStore(id string, params QueryParams) (*Store, error)

func (API) GetStores

func (api API) GetStores(params *ExtendedQueryParams) (*StoreList, error)

func (API) PauseSending

func (api API) PauseSending(workflowID, emailID string) (bool, error)

func (API) PauseSendingAll

func (api API) PauseSendingAll(id string) (bool, error)

func (API) Request

func (api API) Request(method, path string, params QueryParams, body, response interface{}) error

Request will make a call to the actual API.

func (API) RequestOk

func (api API) RequestOk(method, path string) (bool, error)

RequestOk Make Request ignoring body and return true if HTTP status code is 2xx.

func (API) StartSending

func (api API) StartSending(workflowID, emailID string) (bool, error)

func (API) StartSendingAll

func (api API) StartSendingAll(id string) (bool, error)

func (API) UpdateList

func (api API) UpdateList(id string, body *ListCreationRequest) (*ListResponse, error)

func (API) UpdateStore

func (api API) UpdateStore(req *Store) (*Store, error)

type APIError

type APIError struct {
	Type     string `json:"type,omitempty"`
	Title    string `json:"title,omitempty"`
	Status   int    `json:"status,omitempty"`
	Detail   string `json:"detail,omitempty"`
	Instance string `json:"instance,omitempty"`
}

APIError is what the what the api returns on error

func (APIError) Error

func (err APIError) Error() string

func (APIError) HasError

func (err APIError) HasError() bool

HasError checks if this call had an error

func (APIError) String

func (err APIError) String() string

type AbuseReport

type AbuseReport struct {
	ID           string `json:"id"`
	CampaignID   string `json:"campaign_id"`
	ListID       string `json:"list_id"`
	EmailID      string `json:"email_id"`
	EmailAddress string `json:"email_address"`
	Date         string `json:"date"`
	// contains filtered or unexported fields
}

type AccountContact

type AccountContact struct {
	Company string `json:"company"`
	Addr1   string `json:"addr1"`
	Addr2   string `json:"addr2"`
	City    string `json:"city"`
	State   string `json:"state"`
	Zip     string `json:"zip"`
	Country string `json:"country"`
}

type Activity

type Activity struct {
	Day             string `json:"day"`
	EmailsSent      int    `json:"emails_sent"`
	UniqueOpens     int    `json:"unique_opens"`
	RecipientClicks int    `json:"recipient_clicks"`
	HardBounce      int    `json:"hard_bounce"`
	SoftBounce      int    `json:"soft_bounce"`
	Subs            int    `json:"subs"`
	Unsubs          int    `json:"unsubs"`
	OtherAdds       int    `json:"other_adds"`
	OtherRemoves    int    `json:"other_removes"`
	// contains filtered or unexported fields
}

type Address

type Address struct {
	Address1     string  `json:"address1"`
	Address2     string  `json:"address2"`
	City         string  `json:"city"`
	Province     string  `json:"province"`
	ProvinceCode string  `json:"province_code"`
	PostalCode   string  `json:"postal_code"`
	Country      string  `json:"country"`
	CountryCode  string  `json:"country_code"`
	Longitude    float64 `json:"longitude"`
	Latitude     float64 `json:"latitude"`
}

Address represents what it says

func (*Address) MarshalJSON

func (address *Address) MarshalJSON() ([]byte, error)

type AuthorizedApp

type AuthorizedApp struct {
	ID          int      `json:"id"`
	Name        string   `json:"name"`
	Description string   `json:"description"`
	Users       []string `json:"users "`
	// contains filtered or unexported fields
}

type AuthorizedAppCreateResponse

type AuthorizedAppCreateResponse struct {
	AccessToken string `json:"access_token"`
	ViewerToken string `json:"viewer_token"`
}

type AuthorizedAppRequest

type AuthorizedAppRequest struct {
	ClientID     string `json:"client_id"`
	ClientSecret string `json:"client_secret"`
}

type Automation

type Automation struct {
	ID              string                  `json:"id"`
	CreateTime      string                  `json:"create_time"`
	StartTime       string                  `json:"start_time"`
	Status          string                  `json:"status"`
	EmailsSent      int                     `json:"emails_sent"`
	Recipients      AutomationRecipient     `json:"recipients"`
	Settings        AutomationSettingsShort `json:"settings"`
	Tracking        AutomationTracking      `json:"tracking"`
	TriggerSettings WorkflowType            `json:"trigger_settings"`
	ReportSummary   ReportSummary           `json:"report_summary"`
	// contains filtered or unexported fields
}

func (Automation) CanMakeRequest

func (auto Automation) CanMakeRequest() error

func (Automation) CreateRemovedSubscribers

func (auto Automation) CreateRemovedSubscribers(emailAddress string) (*RemovedSubscriber, error)

func (Automation) GetEmail

func (auto Automation) GetEmail(id string) (*AutomationEmail, error)

func (Automation) GetEmails

func (auto Automation) GetEmails() (*ListOfEmails, error)

func (Automation) GetRemovedSubscribers

func (auto Automation) GetRemovedSubscribers() (*ListOfRemovedSubscribers, error)

func (Automation) PauseSendingAll

func (auto Automation) PauseSendingAll() (bool, error)

func (Automation) StartSendingAll

func (auto Automation) StartSendingAll() (bool, error)

type AutomationDelay

type AutomationDelay struct {
	Amount    int    `json:"amount"`
	Type      string `json:"type"`
	Direction string `json:"direction"`
	Action    string `json:"action"`
}

type AutomationEmail

type AutomationEmail struct {
	ID              string                 `json:"id"`
	WorkflowID      string                 `json:"workflow_id"`
	Position        int                    `json:"position"`
	Delay           AutomationDelay        `json:"delay"`
	CreateTime      string                 `json:"create_time"`
	StartTime       string                 `json:"start_time"`
	ArchiveURL      string                 `json:"archive_url"`
	Status          string                 `json:"status"`
	EmailsSent      int                    `json:"emails_sent"`
	SendTime        string                 `json:"send_time"`
	ContentType     string                 `json:"content_type"`
	Recipients      AutomationRecipient    `json:"recipients"`
	Settings        AutomationSettingsLong `json:"settings"`
	Tracking        AutomationTracking     `json:"tracking"`
	SocialCard      SocialCard             `json:"social_card"`
	TriggerSettings WorkflowType           `json:"trigger_settings"`
	ReportSummary   ReportSummary          `json:"report_summary"`
	// contains filtered or unexported fields
}

func (AutomationEmail) CanMakeRequest

func (email AutomationEmail) CanMakeRequest() error

func (AutomationEmail) CreateQueue

func (email AutomationEmail) CreateQueue(emailAddress string) (*AutomationQueue, error)

func (AutomationEmail) GetQueue

func (email AutomationEmail) GetQueue(id string) (*AutomationQueue, error)

func (AutomationEmail) GetQueues

func (email AutomationEmail) GetQueues() (*ListOfAutomationQueues, error)

func (AutomationEmail) PauseSending

func (email AutomationEmail) PauseSending() (bool, error)

func (AutomationEmail) StartSending

func (email AutomationEmail) StartSending() (bool, error)

type AutomationOptions

type AutomationOptions struct {
	SavedSegmentID int                  `json:"saved_segment_id"`
	Match          string               `json:"match"`
	Conditions     []SegmentConditional `json:"conditions"`
}

type AutomationQueue

type AutomationQueue struct {
	ID           string `json:"id"`
	WorkflowID   string `json:"workflow_id"`
	EmailID      string `json:"email_id"`
	ListID       string `json:"list_id"`
	EmailAddress string `json:"email_address"`
	NextSend     string `json:"next_send"`
	// contains filtered or unexported fields
}

type AutomationQueueRequest

type AutomationQueueRequest struct {
	EmailAddress string `json:"email_address"`
}

type AutomationRecipient

type AutomationRecipient struct {
	ListID         string            `json:"list_id"`
	SegmentOptions AutomationOptions `json:"segment_options"`
}

type AutomationSettingsLong

type AutomationSettingsLong struct {
	Title        string   `json:"title"`
	FromName     string   `json:"from_name"`
	ReplyTo      string   `json:"reply_to"`
	Authenticate bool     `json:"authenticate"`
	AutoFooter   bool     `json:"auto_footer"`
	InlineCSS    bool     `json:"inline_css"`
	SubjectLine  string   `json:"subject_line"`
	AutoTweet    bool     `json:"auto_tweet"`
	AutoFBPost   []string `json:"auto_fb_post"`
	FBComments   bool     `json:"fb_comments"`
	TemplateID   int      `json:"template_id"`
	DragAndDrop  bool     `json:"drag_and_drop"`
}

type AutomationSettingsShort

type AutomationSettingsShort struct {
	UseConversation bool   `json:"use_conversation"`
	ToName          string `json:"to_name"`
	Title           string `json:"title"`
	FromName        string `json:"from_name"`
	ReplyTo         string `json:"reply_to"`
	Authenticate    bool   `json:"authenticate"`
	AutoFooter      bool   `json:"auto_footer"`
	InlineCSS       bool   `json:"inline_css"`
}

type AutomationTracking

type AutomationTracking struct {
	Opens           bool       `json:"opens"`
	HTMLClicks      bool       `json:"html_clicks"`
	TextClicks      bool       `json:"text_clicks"`
	GoalTracking    bool       `json:"goal_tracking"`
	Ecomm360        bool       `json:"ecomm360"`
	GoogleAnalytics string     `json:"google_analytics"`
	Clicktale       string     `json:"clicktale"`
	Salesforce      Salesforce `json:"salesforce"`
	Highrise        Highrise   `json:"highrise"`
	Capsule         Capsule    `json:"capsule"`
}

type BasicQueryParams

type BasicQueryParams struct {
	Fields        []string
	ExcludeFields []string
}

BasicQueryParams basic filter queries

func (BasicQueryParams) Params

func (q BasicQueryParams) Params() map[string]string

type BatchSubscribeMembersError

type BatchSubscribeMembersError struct {
	EmailAddress string `json:"email_address"`
	ErrorMessage string ` json:"error"`
}

------------------------------------------------------------------------------------------------ Batch subscribe list members ------------------------------------------------------------------------------------------------

type BatchSubscribeMembersRequest

type BatchSubscribeMembersRequest struct {
	Members        []MemberRequest `json:"members"`
	UpdateExisting bool            `json:"update_existing"`
}

type BatchSubscribeMembersResponse

type BatchSubscribeMembersResponse struct {
	NewMembers     []ListOfMembers              `json:"new_members"`
	UpdatedMembers []ListOfMembers              `json:"updated_members"`
	ErrorMessages  []BatchSubscribeMembersError `json:"errors"`
	TotalCreated   int                          `json:"total_created"`
	TotalUpdated   int                          `json:"total_updated"`
	ErrorCount     int                          `json:"error_count"`
	// contains filtered or unexported fields
}

type CampaignDefaults

type CampaignDefaults struct {
	FromName  string `json:"from_name"`
	FromEmail string `json:"from_email"`
	Subject   string `json:"subject"`
	Language  string `json:"language"`
}

type Capsule

type Capsule struct {
	Notes bool `json:"notes"`
}

type Cart

type Cart struct {
	APIError

	// Required
	Customer     Customer   `json:"customer"`
	CurrencyCode string     `json:"currency_code"`
	OrderTotal   float64    `json:"order_total"`
	Lines        []LineItem `json:"lines"`

	// Optional
	ID          string  `json:"id,omitempty"`
	CampaignID  string  `json:"campaign_id,omitempty"`
	CheckoutURL string  `json:"checkout_url,omitempty"`
	TaxTotal    float64 `json:"tax_total,omitempty"`

	// Response only
	CreatedAt time.Time `json:"created_at,omitempty"`
	UpdatedAt time.Time `json:"updated_at,omitempty"`
	Links     []Link    `json:"_links,omitempty"`
}

func (*Cart) MarshalJSON

func (cart *Cart) MarshalJSON() ([]byte, error)

type CartList

type CartList struct {
	APIError

	Carts      []Cart `json:"cart"`
	TotalItems int    `json:"total_items"`
	Links      []Link `json:"_links"`
}

type Clicks

type Clicks struct {
	ClicksTotal  int     `json:"clicks_total"`
	UniqueClicks int     `json:"unique_clicks"`
	ClickRate    float64 `json:"click_rate"`
}

type Client

type Client struct {
	Client  string `json:"client"`
	Members int    `json:"members"`
	ListID  string `json:"list_id"`
	// contains filtered or unexported fields
}

type Contact

type Contact struct {
	Company     string `json:"customer"`
	Address1    string `json:"address1"`
	Address2    string `json:"address2"`
	City        string `json:"city"`
	State       string `json:"state"`
	Zip         string `json:"zip"`
	Country     string `json:"country"`
	PhoneNumber string `json:"phone"`
}

Contact defines a single contact

type Customer

type Customer struct {
	// Required
	ID string `json:"id"`

	// Optional
	EmailAddress string   `json:"email_address,omitempty"`
	OptInStatus  bool     `json:"opt_in_status,omitempty"`
	Company      string   `json:"company,omitempty"`
	FirstName    string   `json:"first_name,omitempty"`
	LastName     string   `json:"last_name,omitempty"`
	OrdersCount  int      `json:"orders_count,omitempty"`
	TotalSpent   float64  `json:"total_spent,omitempty"`
	Address      *Address `json:"address,omitempty"`

	// Response
	CreatedAt string `json:"created_at,omitempty"`
	UpdatedAt string `json:"updated_at,omitempty"`
	Links     []Link `json:"_links,omitempty"`
}

Customer defines a mailchimp customer

type CustomerList

type CustomerList struct {
	APIError

	Customers  []Customer `json:"customer"`
	TotalItems int        `json:"total_items"`
	Links      []Link     `json:"_links"`
}

type ExtendedQueryParams

type ExtendedQueryParams struct {
	BasicQueryParams

	Count  int
	Offset int
}

ExtendedQueryParams includes a count and offset

func (ExtendedQueryParams) Params

func (q ExtendedQueryParams) Params() map[string]string

type GrowthHistory

type GrowthHistory struct {
	ListID   string `json:"list_id"`
	Month    string `json:"month"`
	Existing int    `json:"existing"`
	Imports  int    `json:"imports"`
	OptIns   int    `json:"optins"`
	// contains filtered or unexported fields
}

type Highrise

type Highrise struct {
	Campaign bool `json:"campaign"`
	Notes    bool `json:"notes"`
}

type HookEvents

type HookEvents struct {
	Subscribe   bool `json:"subscribe"`
	Unsubscribe bool `json:"unsubscribe"`
	Profile     bool `json:"profile"`
	Cleaned     bool `json:"cleaned"`
	Upemail     bool `json:"upemail"`
	Campaign    bool `json:"campaign"`
}

type HookSources

type HookSources struct {
	User  bool `json:"user"`
	Admin bool `json:"admin"`
	API   bool `json:"api"`
}

type IndustryStats

type IndustryStats struct {
	OpenRate   float64 `json:"open_rate"`
	BounceRate float64 `json:"bounce_rate"`
	ClickRate  float64 `json:"click_rate"`
}

type Interest

type Interest struct {
	CategoryID   string `json:"category_id"`
	ListID       string `json:"list_id"`
	ID           string `json:"id"`
	Name         string `json:"name"`
	DisplayOrder int    `json:"display_order"`
	// contains filtered or unexported fields
}

type InterestCategoriesQueryParams

type InterestCategoriesQueryParams struct {
	ExtendedQueryParams

	Type string `json:"type"`
}

func (InterestCategoriesQueryParams) Params

type InterestCategory

type InterestCategory struct {
	InterestCategoryRequest

	ListID string `json:"list_id"`
	ID     string `json:"id"`
	// contains filtered or unexported fields
}

type InterestCategoryRequest

type InterestCategoryRequest struct {
	Title        string `json:"title"`
	DisplayOrder int    `json:"display_order"`
	Type         string `json:"type"`
}

type LineItem

type LineItem struct {
	// Required
	ID               string  `json:"id"`
	ProductID        string  `json:"product_id"`
	ProductVariantID string  `json:"product_variant_id"`
	Quantity         int     `json:"quantity"`
	Price            float64 `json:"price"`

	// Optional
	ProductTitle        string `json:"product_title,omitempty"`
	ProductVariantTitle string `json:"product_variant_title,omitempty"`
}

LineItem defines a mailchimp cart or order line item

type Link struct {
	Rel          string `json:"re"`
	Href         string `json:"href"`
	Method       string `json:"method"`
	TargetSchema string `json:"targetSchema"`
	Schema       string `json:"schema"`
}

Link refereneces another object

type ListCreationRequest

type ListCreationRequest struct {
	Name                string           `json:"name"`
	Contact             Contact          `json:"contact"`
	PermissionReminder  string           `json:"permission_reminder"`
	UseArchiveBar       bool             `json:"use_archive_bar"`
	CampaignDefaults    CampaignDefaults `json:"campaign_defaults"`
	NotifyOnSubscribe   string           `json:"notify_on_subscribe"`
	NotifyOnUnsubscribe string           `json:"notify_on_unsubscribe"`
	EmailTypeOption     bool             `json:"email_type_option"`
	Visibilty           string           `json:"visiblity"`
}

type ListOfAbuseReports

type ListOfAbuseReports struct {
	ListID  string        `json:"list_id"`
	Reports []AbuseReport `json:"abuse_reports"`
	// contains filtered or unexported fields
}

type ListOfActivity

type ListOfActivity struct {
	ListID     string     `json:"list_id"`
	Activities []Activity `json:"activity"`
	// contains filtered or unexported fields
}

type ListOfAuthorizedApps

type ListOfAuthorizedApps struct {
	Apps []AuthorizedApp `json:""`
	// contains filtered or unexported fields
}

type ListOfAutomationQueues

type ListOfAutomationQueues struct {
	WorkflowID string            `json:"workflow_id"`
	EmailID    string            `json:"email_id"`
	Queues     []AutomationQueue `json:"queue"`
	// contains filtered or unexported fields
}

type ListOfAutomations

type ListOfAutomations struct {
	Automations []Automation `json:"automations"`
	// contains filtered or unexported fields
}

type ListOfClients

type ListOfClients struct {
	ListID  string   `json:"list_id"`
	Clients []Client `json:"clients"`
	// contains filtered or unexported fields
}

type ListOfEmails

type ListOfEmails struct {
	Emails []AutomationEmail `json:"emails"`
	// contains filtered or unexported fields
}

type ListOfGrownHistory

type ListOfGrownHistory struct {
	ListID  string          `json:"list_id"`
	History []GrowthHistory `json:"history"`
	// contains filtered or unexported fields
}

type ListOfInterestCategories

type ListOfInterestCategories struct {
	ListID     string             `json:"list_id"`
	Categories []InterestCategory `json:"categories"`
	// contains filtered or unexported fields
}

type ListOfInterests

type ListOfInterests struct {
	Interests  []Interest `json:"interests"`
	CategoryID string     `json:"category_id"`
	ListID     string     `json:"list_id"`
	TotalItems int        `json:"total_items"`
	// contains filtered or unexported fields
}

type ListOfLists

type ListOfLists struct {
	Lists []ListResponse `json:"lists"`
	// contains filtered or unexported fields
}

type ListOfMemberActivity

type ListOfMemberActivity struct {
	EmailID  string     `json:"email_id"`
	ListID   string     `json:"list_id"`
	Activity []Activity `json:"activity"`
	// contains filtered or unexported fields
}

type ListOfMemberGoals

type ListOfMemberGoals struct {
	EmailID string       `json:"email_id"`
	ListID  string       `json:"list_id"`
	Goals   []MemberGoal `json:"goals"`
	// contains filtered or unexported fields
}

type ListOfMemberNotes

type ListOfMemberNotes struct {
	EmailID string           `json:"email_id"`
	ListID  string           `json:"list_id"`
	Notes   []MemberNoteLong `json:"notes"`
	// contains filtered or unexported fields
}

type ListOfMembers

type ListOfMembers struct {
	ListID  string   `json:"list_id"`
	Members []Member `json:"members"`
	// contains filtered or unexported fields
}

type ListOfRemovedSubscribers

type ListOfRemovedSubscribers struct {
	WorkflowID  string              `json:"workflow_id"`
	Subscribers []RemovedSubscriber `json:"subscribers"`
	// contains filtered or unexported fields
}

type ListOfReports

type ListOfReports struct {
	TotalItems int      `json:"total_items"`
	Reports    []Report `json:"reports"`
}

type ListOfSegments

type ListOfSegments struct {
	Segments []Segment `json:"segments"`
	ListID   string    `json:"list_id"`
	// contains filtered or unexported fields
}

type ListOfWebHooks

type ListOfWebHooks struct {
	ListID   string    `json:"list_id"`
	WebHooks []WebHook `json:"webhooks"`
	// contains filtered or unexported fields
}

type ListQueryParams

type ListQueryParams struct {
	ExtendedQueryParams

	BeforeDateCreated      string
	SinceDateCreated       string
	BeforeCampaignLastSent string
	SinceCampaignLastSent  string
	Email                  string
}

func (ListQueryParams) Params

func (q ListQueryParams) Params() map[string]string

type ListResponse

type ListResponse struct {
	ListCreationRequest

	ID                string   `json:"id"`
	DateCreated       string   `json:"date_created"`
	ListRating        int      `json:"list_rating"`
	SubscribeURLShort string   `json:"subscribe_url_short"`
	SubscribeURLLong  string   `json:"subscribe_url_long"`
	BeamerAddress     string   `json:"beamer_address"`
	Modules           []string `json:"modules"`
	Stats             Stats    `json:"stats"`
	// contains filtered or unexported fields
}

func (ListResponse) BatchSubscribeMembers

func (list ListResponse) BatchSubscribeMembers(body *BatchSubscribeMembersRequest) (*BatchSubscribeMembersResponse, error)

func (ListResponse) CanMakeRequest

func (list ListResponse) CanMakeRequest() error

func (ListResponse) CreateInterestCategory

func (list ListResponse) CreateInterestCategory(body *InterestCategoryRequest) (*InterestCategory, error)

func (ListResponse) CreateMember

func (list ListResponse) CreateMember(body *MemberRequest) (*Member, error)

func (ListResponse) CreateSegment

func (list ListResponse) CreateSegment(body *SegmentRequest) (*Segment, error)

func (ListResponse) CreateWebHooks

func (list ListResponse) CreateWebHooks(body *WebHookRequest) (*WebHook, error)

func (ListResponse) DeleteInterestCategory

func (list ListResponse) DeleteInterestCategory(id string) (bool, error)

func (ListResponse) DeleteMember

func (list ListResponse) DeleteMember(id string) (bool, error)

func (ListResponse) DeleteSegment

func (list ListResponse) DeleteSegment(id string) (bool, error)

func (ListResponse) DeleteWebHook

func (list ListResponse) DeleteWebHook(id string) (bool, error)

func (ListResponse) GetAbuseReport

func (list ListResponse) GetAbuseReport(id string, params *ExtendedQueryParams) (*AbuseReport, error)

func (ListResponse) GetAbuseReports

func (list ListResponse) GetAbuseReports(params *ExtendedQueryParams) (*ListOfAbuseReports, error)

func (ListResponse) GetActivity

func (list ListResponse) GetActivity(params *BasicQueryParams, api API) (*ListOfActivity, error)

func (ListResponse) GetClients

func (list ListResponse) GetClients(params *BasicQueryParams) (*ListOfClients, error)

func (ListResponse) GetGrowthHistory

func (list ListResponse) GetGrowthHistory(params *ExtendedQueryParams) (*ListOfGrownHistory, error)

func (ListResponse) GetGrowthHistoryForMonth

func (list ListResponse) GetGrowthHistoryForMonth(month string, params *BasicQueryParams) (*GrowthHistory, error)

func (ListResponse) GetInterest

func (list ListResponse) GetInterest(interestCategoryID, interestID string, params *BasicQueryParams) (*Interest, error)

func (ListResponse) GetInterestCategories

func (list ListResponse) GetInterestCategories(params *InterestCategoriesQueryParams) (*ListOfInterestCategories, error)

func (ListResponse) GetInterestCategory

func (list ListResponse) GetInterestCategory(id string, params *BasicQueryParams) (*InterestCategory, error)

func (ListResponse) GetInterests

func (list ListResponse) GetInterests(interestCategoryID string, params *BasicQueryParams) (*ListOfInterests, error)

func (ListResponse) GetMember

func (list ListResponse) GetMember(id string, params *BasicQueryParams) (*Member, error)

func (ListResponse) GetMembers

func (list ListResponse) GetMembers(params *InterestCategoriesQueryParams) (*ListOfMembers, error)

func (ListResponse) GetSegment

func (list ListResponse) GetSegment(id string, params *BasicQueryParams) (*Segment, error)

func (ListResponse) GetSegments

func (list ListResponse) GetSegments(params *SegmentQueryParams) (*ListOfSegments, error)

func (ListResponse) GetWebHook

func (list ListResponse) GetWebHook(id string) (*WebHook, error)

func (ListResponse) GetWebHooks

func (list ListResponse) GetWebHooks() (*ListOfWebHooks, error)

func (ListResponse) UpdateInterestCategory

func (list ListResponse) UpdateInterestCategory(id string, body *InterestCategoryRequest) (*InterestCategory, error)

func (ListResponse) UpdateMember

func (list ListResponse) UpdateMember(id string, body *MemberRequest) (*Member, error)

func (ListResponse) UpdateSegment

func (list ListResponse) UpdateSegment(id string, body *SegmentRequest) (*Segment, error)

func (ListResponse) UpdateWebHook

func (list ListResponse) UpdateWebHook(id string, body *WebHookRequest) (*WebHook, error)

type Member

type Member struct {
	MemberRequest

	ID              string          `json:"id"`
	ListID          string          `json:"list_id"`
	UniqueEmailID   string          `json:"unique_email_id"`
	EmailType       string          `json:"email_type"`
	Stats           MemberStats     `json:"stats"`
	IPSignup        string          `json:"ip_signup"`
	TimestampSignup string          `json:"timestamp_signup"`
	TimestampOpt    string          `json:"timestamp_opt"`
	MemberRating    int             `json:"member_rating"`
	LastChanged     string          `json:"last_changed"`
	EmailClient     string          `json:"email_client"`
	LastNote        MemberNoteShort `json:"last_note"`
	// contains filtered or unexported fields
}

func (Member) CanMakeRequest

func (mem Member) CanMakeRequest() error

func (Member) CreateNote

func (mem Member) CreateNote(msg string) (*MemberNoteLong, error)

func (Member) DeleteNote

func (mem Member) DeleteNote(id string) (bool, error)

func (Member) GetActivity

func (mem Member) GetActivity(params *BasicQueryParams) (*ListOfMemberActivity, error)

func (Member) GetGoals

func (mem Member) GetGoals(params *BasicQueryParams) (*ListOfMemberGoals, error)

func (Member) GetNote

func (mem Member) GetNote(id string, params *BasicQueryParams) (*MemberNoteLong, error)

func (Member) GetNotes

func (mem Member) GetNotes(params *ExtendedQueryParams) (*ListOfMemberNotes, error)

func (Member) UpdateNote

func (mem Member) UpdateNote(id, msg string) (*MemberNoteLong, error)

type MemberActivity

type MemberActivity struct {
	Action         string `json:"action"`
	Timestamp      string `json:"timestamp"`
	URL            string `json:"url"`
	Type           string `json:"type"`
	CampaignID     string `json:"campaign_id"`
	Title          string `json:"title"`
	ParentCampaign string `json:"parent_campaign"`
}

type MemberGoal

type MemberGoal struct {
	ID            int    `json:"goal_id"`
	Event         string `json:"event"`
	LastVisitedAt string `json:"last_visited_at"`
	Data          string `json:"data"`
}

type MemberLocation

type MemberLocation struct {
	Latitude    float64 `json:"latitude"`
	Longitude   float64 `json:"longitude"`
	GMTOffset   int     `json:"gmtoff"`
	DSTOffset   int     `json:"dstoff"`
	CountryCode string  `json:"country_code"`
	Timezone    string  `json:"timezone"`
}

func (*MemberLocation) MarshalJSON

func (loc *MemberLocation) MarshalJSON() ([]byte, error)

type MemberNoteLong

type MemberNoteLong struct {
	ID        int    `json:"id"`
	CreatedAt string `json:"created_at"`
	CreatedBy string `json:"created_by"`
	UpdatedAt string `json:"updated_at"`
	Note      string `json:"note"`
	ListID    string `json:"list_id"`
	EmailID   string `json:"email_id"`
	// contains filtered or unexported fields
}

type MemberNoteShort

type MemberNoteShort struct {
	ID        string `json:"note_id"`
	CreatedAt string `json:"created_at"`
	CreatedBy string `json:"created_by"`
	Note      string `json:"note"`
}

type MemberRequest

type MemberRequest struct {
	EmailAddress string            `json:"email_address"`
	Status       string            `json:"status"`
	MergeFields  map[string]string `json:"merge_fields,omitempty"`
	Interests    map[string]bool   `json:"interests,omitempty"`
	Language     string            `json:"language"`
	VIP          bool              `json:"vip"`
	Location     *MemberLocation   `json:"location"`
}

type MemberStats

type MemberStats struct {
	AvgOpenRate  float64 `json:"avg_open_rate"`
	AvgClickRate float64 `json:"avg_click_rate"`
}

type Opens

type Opens struct {
	OpensTotal  int     `json:"opens_total"`
	UniqueOpens int     `json:"unique_opens"`
	OpenRate    float64 `json:"open_rate"`
}

type Order

type Order struct {
	APIError

	// Required
	ID           string     `json:"id"`
	Customer     Customer   `json:"customer"`
	Lines        []LineItem `json:"lines"`
	CurrencyCode string     `json:"currency_code"`
	OrderTotal   float64    `json:"order_total"`

	// Optional
	TaxTotal           float64   `json:"tax_total,omitempty"`
	ShippingTotal      float64   `json:"shipping_total,omitempty"`
	TrackingCode       string    `json:"tracking_code,omitempty"`
	ProcessedAtForeign time.Time `json:"processed_at_foreign"`
	CancelledAtForeign time.Time `json:"cancelled_at_foreign"`
	UpdatedAtForeign   time.Time `json:"updated_at_foreign"`
	CampaignID         string    `json:"campaign_id,omitempty"`
	FinancialStatus    string    `json:"financial_status,omitempty"`
	FulfillmentStatus  string    `json:"fulfillment_status,omitempty"`

	BillingAddress  *Address `json:"billing_address,omitempty"`
	ShippingAddress *Address `json:"shipping_address,omitempty"`

	// Response only
	CreatedAt time.Time `json:"created_at,omitempty"`
	UpdatedAt time.Time `json:"updated_at,omitempty"`
	Links     []Link    `json:"_links,omitempty"`
}

func (*Order) MarshalJSON

func (order *Order) MarshalJSON() ([]byte, error)

type OrderList

type OrderList struct {
	APIError

	Orders     []Order `json:"cart"`
	TotalItems int     `json:"total_items"`
	Links      []Link  `json:"_links,omitempty"`
}

type Product

type Product struct {
	APIError

	StoreID string `json:"-"`

	// Required
	ID       string    `json:"id"`
	Title    string    `json:"title"`
	Variants []Variant `json:"variants"`

	// Optional
	Handle             string    `json:"handle,omitempty"`
	URL                string    `json:"url,omitempty"`
	Description        string    `json:"description,omitempty"`
	Type               string    `json:"type,omitempty"`
	Vendor             string    `json:"vendor,omitempty"`
	ImageURL           string    `json:"image_url,omitempty"`
	PublishedAtForeign time.Time `json:"published_at_foreign,omitempty"`

	// Response only
	Links []Link `json:"_links,omitempty"`
	// contains filtered or unexported fields
}

------------------------------------------------------------------------------------------------ Products ------------------------------------------------------------------------------------------------

func (Product) CreateVariant

func (product Product) CreateVariant(req *Variant) (*Variant, error)

func (Product) DeleteVariant

func (product Product) DeleteVariant(id string) (bool, error)

func (Product) HasID

func (product Product) HasID() error

func (*Product) MarshalJSON

func (product *Product) MarshalJSON() ([]byte, error)

func (Product) UpdateVariant

func (product Product) UpdateVariant(req *Variant) (*Variant, error)

type ProductList

type ProductList struct {
	APIError

	StoreID    string    `json:"store_id"`
	Products   []Product `json:"products"`
	TotalItems int       `json:"total_items"`
	Links      []Link    `json:"_links"`
}

type QueryParams

type QueryParams interface {
	Params() map[string]string
}

QueryParams defines the different params

type RemovedSubscriber

type RemovedSubscriber struct {
	ID           string `json:"id"`
	WorkflowID   string `json:"workflow_id"`
	ListID       string `json:"list_id"`
	EmailAddress string `json:"email_address"`
	// contains filtered or unexported fields
}

type RemovedSubscriberRequest

type RemovedSubscriberRequest struct {
	EmailAddress string `json:"email_address"`
}

type Report

type Report struct {
	ID            string `json:"total_items"`
	CampaignTitle string `json:"campaign_title"`
	EmailsSent    int    `json:"emails_sent"`
	Opens         Opens  `json:"opens"`
	Clicks        Clicks `json:"clicks"`
}

type ReportQueryParams

type ReportQueryParams struct {
	ExtendedQueryParams
}

type ReportSummary

type ReportSummary struct {
	Opens            int     `json:"opens"`
	UniqueOpens      int     `json:"unique_opens"`
	OpenRate         float64 `json:"open_rate"`
	Clicks           int     `json:"clicks"`
	SubscriberClicks int     `json:"subscriber_clicks"`
	ClickRate        float64 `json:"click_rate"`
}

type RootResponse

type RootResponse struct {
	AccountID        string         `json:"account_id"`
	AccountName      string         `json:"account_name"`
	Email            string         `json:"email"`
	Role             string         `json:"role"`
	Contact          AccountContact `json:"contact"`
	ProEnabled       bool           `json:"pro_enabled"`
	LastLogin        string         `json:"last_login"`
	TotalSubscribers int            `json:"total_subscribers"`
	IndustyStats     IndustryStats  `json:"industry_stats"`
	Links            []Link         `json:"_links"`
}

RootResponse - https://developer.mailchimp.com/documentation/mailchimp/reference/root/#read-get_root

type Salesforce

type Salesforce struct {
	Campaign bool `json:"campaign"`
	Notes    bool `json:"notes"`
}

type Segment

type Segment struct {
	SegmentRequest

	ID          string `json:"id"`
	MemberCount int    `json:"member_count"`
	Type        string `json:"type"`
	CreatedAt   string `json:"created_at"`
	UpdatedAt   string `json:"updated_at"`
	ListID      string `json:"list_id"`
	// contains filtered or unexported fields
}

type SegmentConditional

type SegmentConditional struct {
	Field string  `json:"field"`
	OP    string  `json:"op"`
	Value float64 `json:"value"`
}

SegmentConditional represents parameters to filter by

type SegmentOptions

type SegmentOptions struct {
	Match      string               `json:"match"`
	Conditions []SegmentConditional `json:"conditions"`
}

type SegmentQueryParams

type SegmentQueryParams struct {
	ExtendedQueryParams

	Type            string
	SinceCreatedAt  string
	BeforeCreatedAt string
	SinceUpdatedAt  string
	BeforeUpdatedAt string
}

func (SegmentQueryParams) Params

func (q SegmentQueryParams) Params() map[string]string

type SegmentRequest

type SegmentRequest struct {
	Name          string         `json:"name"`
	StaticSegment []string       `json:"static_segments"`
	Options       SegmentOptions `json:"options"`
}

type SocialCard

type SocialCard struct {
	ImageURL    string `json:"image_url"`
	Description string `json:"description"`
	Title       string `json:"title"`
}

type Stats

type Stats struct {
	MemberCount               int     `json:"member_count"`
	UnsubscribeCount          int     `json:"unsubscribe_count"`
	CleanedCount              int     `json:"cleaned_count"`
	MemberCountSinceSend      int     `json:"member_count_since_send"`
	UnsubscribeCountSinceSend int     `json:"unsubscribe_count_since_send"`
	CleanedCountSinceSend     int     `json:"cleaned_count_since_send"`
	CampaignCount             int     `json:"campaign_count"`
	CampaignLastSent          string  `json:"campaign_last_sent"`
	MergeFieldCount           int     `json:"merge_field_count"`
	AvgSubRate                float64 `json:"avg_sub_rate"`
	AvgUnsubRate              float64 `json:"avg_unsub_rate"`
	TargetSubRate             float64 `json:"target_sub_rate"`
	OpenRate                  float64 `json:"open_rate"`
	ClickRate                 float64 `json:"click_rate"`
	LastSubDate               string  `json:"last_sub_date"`
	LastUnsubDate             string  `json:"last_unsub_date"`
}

type Store

type Store struct {
	APIError

	// Required
	ID           string `json:"id"`
	ListID       string `json:"list_id"`
	CurrencyCode string `json:"currency_code"`
	Name         string `json:"name"`

	// Optional
	Platform      string   `json:"platform,omitempty"`
	Domain        string   `json:"domain,omitempty"`
	EmailAddress  string   `json:"email_address,omitempty"`
	MoneyFormat   string   `json:"money_format,omitempty"`
	PrimaryLocale string   `json:"primary_locale,omitempty"`
	Timezone      string   `json:"timezone,omitempty"`
	Phone         string   `json:"phone,omitempty"`
	Address       *Address `json:"address,omitempty"`

	// Response
	CreatedAt time.Time `json:"created_at,omitempty"`
	UpdatedAt time.Time `json:"updated_at,omitempty"`
	Links     []Link    `json:"_links,omitempty"`
	// contains filtered or unexported fields
}

func (Store) CreateCart

func (store Store) CreateCart(req *Cart) (*Cart, error)

func (Store) CreateCustomer

func (store Store) CreateCustomer(req *Customer) (*Customer, error)

func (Store) CreateOrder

func (store Store) CreateOrder(req *Order) (*Order, error)

func (Store) CreateProduct

func (store Store) CreateProduct(req *Product) (*Product, error)

func (Store) DeleteCart

func (store Store) DeleteCart(id string) (bool, error)

func (Store) DeleteCustomer

func (store Store) DeleteCustomer(id string) (bool, error)

func (Store) DeleteOrder

func (store Store) DeleteOrder(id string) (bool, error)

func (Store) DeleteProduct

func (store Store) DeleteProduct(id string) (bool, error)

func (Store) GetCart

func (store Store) GetCart(id string, params *BasicQueryParams) (*Cart, error)

func (Store) GetCarts

func (store Store) GetCarts(params *ExtendedQueryParams) (*CartList, error)

func (Store) GetCustomer

func (store Store) GetCustomer(id string, params *BasicQueryParams) (*Customer, error)

func (Store) GetCustomers

func (store Store) GetCustomers(params *ExtendedQueryParams) (*CustomerList, error)

func (Store) GetOrder

func (store Store) GetOrder(id string, params *BasicQueryParams) (*Order, error)

func (Store) GetOrders

func (store Store) GetOrders(params *ExtendedQueryParams) (*OrderList, error)

func (Store) GetProduct

func (store Store) GetProduct(id string, params *BasicQueryParams) (*Product, error)

func (Store) GetProducts

func (store Store) GetProducts(params *ExtendedQueryParams) (*ProductList, error)

func (Store) HasID

func (store Store) HasID() error

func (*Store) MarshalJSON

func (store *Store) MarshalJSON() ([]byte, error)

func (Store) UpdateCart

func (store Store) UpdateCart(req *Cart) (*Cart, error)

func (Store) UpdateCustomer

func (store Store) UpdateCustomer(req *Customer) (*Customer, error)

func (Store) UpdateOrder

func (store Store) UpdateOrder(req *Order) (*Order, error)

func (Store) UpdateProduct

func (store Store) UpdateProduct(req *Product) (*Product, error)

type StoreList

type StoreList struct {
	APIError

	Stores     []Store `json:"stores"`
	TotalItems int     `json:"total_items"`
	Links      []Link  `json:"_links"`
}

type TimeToRun

type TimeToRun map[string]interface{}

func SendAsap

func SendAsap(days []string, sendAsap bool) *TimeToRun

func SendAt

func SendAt(days []string, sendAt string) *TimeToRun

func SendBetween

func SendBetween(days []string, start string, end string) *TimeToRun

type Variant

type Variant struct {
	APIError

	StoreID   string `json:"-"`
	ProductID string `json:"-"`

	// Required
	ID    string `json:"id"`
	Title string `json:"title"`

	// Optional
	URL               string  `json:"url,omitempty"`
	SKU               string  `json:"sku,omitempty"`
	Price             float64 `json:"price,omitempty"`
	InventoryQuantity int     `json:"inventory_quantity,omitempty"`
	ImageURL          string  `json:"image_url,omitempty"`
	Backorders        string  `json:"backorders,omitempty"`
	Visibility        string  `json:"visibility,omitempty"`
	// contains filtered or unexported fields
}

------------------------------------------------------------------------------------------------ Variants ------------------------------------------------------------------------------------------------

type VariantList

type VariantList struct {
	APIError

	StoreID    string    `json:"store_id"`
	Variants   []Variant `json:"variants"`
	TotalItems int       `json:"total_items"`
	Links      []Link    `json:"_links,omitempty"`
}

type WebHook

type WebHook struct {
	WebHookRequest
	ListID string `json:"list_id"`
	// contains filtered or unexported fields
}

type WebHookRequest

type WebHookRequest struct {
	URL     string      `json:"url"`
	Events  HookEvents  `json:"events"`
	Sources HookSources `json:"sources"`
}

type WorkflowType

type WorkflowType map[string]interface{}

func WorkflowAPI

func WorkflowAPI(emailCount int, runtime TimeToRun) *WorkflowType

func WorkflowBestCustomer

func WorkflowBestCustomer(emailCount int, sendImmediately bool, lifetimePurchaseValue float64, purchaseOrders int, runtime TimeToRun) *WorkflowType

func WorkflowCategoryFollowup

func WorkflowCategoryFollowup(emailCount int, sendImmediately bool, categoryName string, runtime TimeToRun) *WorkflowType

func WorkflowDateAdded

func WorkflowDateAdded(emailCount int, runtime TimeToRun) *WorkflowType

func WorkflowEmailFollowup

func WorkflowEmailFollowup(emailCount int, triggerOnImport, sendImmediately bool, runtime TimeToRun) *WorkflowType

func WorkflowEmailSeries

func WorkflowEmailSeries(emailCount int, triggerOnImport, sendImmediately bool, runtime TimeToRun) *WorkflowType

func WorkflowGroupAdd

func WorkflowGroupAdd(emailCount int, sendImmediately bool, groupID int, runtime TimeToRun) *WorkflowType

func WorkflowGroupRemove

func WorkflowGroupRemove(emailCount int, sendImmediately bool, groupID int, runtime TimeToRun) *WorkflowType

func WorkflowMandrill

func WorkflowMandrill(emailCount int, sendImmediately bool, mandrillTags []string, runtime TimeToRun) *WorkflowType

func WorkflowProductFollowup

func WorkflowProductFollowup(emailCount int, sendImmediately bool, productName string, runtime TimeToRun) *WorkflowType

func WorkflowPurchaseFollowup

func WorkflowPurchaseFollowup(emailCount int, sendImmediately bool, runtime TimeToRun) *WorkflowType

func WorkflowRecurringEvent

func WorkflowRecurringEvent(emailCount int, mergeFieldTrigger string, runtime TimeToRun) *WorkflowType

func WorkflowSpecialEvent

func WorkflowSpecialEvent(emailCount int, mergeFieldTrigger string, runtime TimeToRun) *WorkflowType

func WorkflowVisitURL

func WorkflowVisitURL(emailCount int, sendImmediately bool, goalURL string, runtime TimeToRun) *WorkflowType

func WorkflowWelcomeSeries

func WorkflowWelcomeSeries(emailCount int, triggerOnImport, sendImmediately bool, runtime TimeToRun) *WorkflowType

Jump to

Keyboard shortcuts

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