Documentation ¶
Index ¶
- Variables
- func ParseContent(content interface{}) (err error)
- func ParseEvents(rawEventsPtr []*json.RawMessage) (*[]events.Event, error)
- func ParseRecipients(recips interface{}) (ra *[]Recipient, err error)
- type Address
- type Attachment
- type Client
- func (c *Client) DoRequest(method, urlStr string, data []byte) (*Response, error)
- func (c *Client) EventDocumentation() (g map[string]*EventGroup, res *Response, err error)
- func (c *Client) EventSamples(types *[]string) (*events.Events, error)
- func (c *Client) HttpDelete(url string) (*Response, error)
- func (c *Client) HttpGet(url string) (*Response, error)
- func (c *Client) HttpPost(url string, data []byte) (*Response, error)
- func (c *Client) HttpPut(url string, data []byte) (*Response, error)
- func (api *Client) Init(cfg *Config) error
- func (c *Client) ListWebhooks(parameters map[string]string) (*WebhookListWrapper, error)
- func (c *Client) MessageEvents(params map[string]string) (*EventsPage, error)
- func (c *Client) MetricEventAsString(e *DeliverabilityMetricItem) string
- func (c *Client) QueryDeliverabilityMetrics(extraPath string, parameters map[string]string) (*DeliverabilityMetricEventsWrapper, error)
- func (c *Client) QueryWebhook(id string, parameters map[string]string) (*WebhookQueryWrapper, error)
- func (c *Client) RecipientListCreate(rl *RecipientList) (id string, res *Response, err error)
- func (c *Client) RecipientLists() (*[]RecipientList, *Response, error)
- func (c *Client) RemoveHeader(header string)
- func (c *Client) Send(t *Transmission) (id string, res *Response, err error)
- func (c *Client) SetHeader(header string, value string)
- func (c *Client) Subaccount(id int) (subaccount *Subaccount, res *Response, err error)
- func (c *Client) SubaccountCreate(s *Subaccount) (res *Response, err error)
- func (c *Client) SubaccountUpdate(s *Subaccount) (res *Response, err error)
- func (c *Client) Subaccounts() (subaccounts []Subaccount, res *Response, err error)
- func (c *Client) SuppressionDelete(recipientEmail string) (res *Response, err error)
- func (c *Client) SuppressionInsertOrUpdate(entries []SuppressionEntry) (*Response, error)
- func (c *Client) SuppressionList() (*SuppressionListWrapper, *Response, error)
- func (c *Client) SuppressionRetrieve(recipientEmail string) (*SuppressionListWrapper, *Response, error)
- func (c *Client) SuppressionSearch(parameters map[string]string) (*SuppressionListWrapper, *Response, error)
- func (c *Client) TemplateCreate(t *Template) (id string, res *Response, err error)
- func (c *Client) TemplateDelete(id string) (res *Response, err error)
- func (c *Client) TemplatePreview(id string, payload *PreviewOptions) (res *Response, err error)
- func (c *Client) TemplateUpdate(t *Template) (res *Response, err error)
- func (c *Client) Templates() ([]Template, *Response, error)
- func (c *Client) Transmission(id string) (*Transmission, *Response, error)
- func (c *Client) TransmissionDelete(id string) (*Response, error)
- func (c *Client) Transmissions(campaignID, templateID *string) ([]Transmission, *Response, error)
- func (c *Client) WebhookStatus(id string, parameters map[string]string) (*WebhookStatusWrapper, error)
- type Config
- type Content
- type DeliverabilityMetricEventsWrapper
- type DeliverabilityMetricItem
- type Error
- type EventField
- type EventGroup
- type EventMeta
- type EventsPage
- type From
- type InlineImage
- type PreviewOptions
- type RFC3339
- type Recipient
- type RecipientList
- type Response
- type Subaccount
- type SuppressionEntry
- type SuppressionListWrapper
- type Template
- type TmplOptions
- type Transmission
- type TxOptions
- type WebhookItem
- type WebhookListWrapper
- type WebhookQueryWrapper
- type WebhookStatus
- type WebhookStatusWrapper
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var (
ErrEmptyPage = errors.New("empty page")
)
Functions ¶
func ParseContent ¶
func ParseContent(content interface{}) (err error)
ParseContent asserts that Transmission.Content is valid.
func ParseEvents ¶
func ParseEvents(rawEventsPtr []*json.RawMessage) (*[]events.Event, error)
ParseEvents function is left only for backward-compatibility. Events are parsed by events pkg.
func ParseRecipients ¶
ParseRecipients asserts that Transmission.Recipients is valid.
Types ¶
type Address ¶
type Address struct { Email string `json:"email"` Name string `json:"name,omitempty"` HeaderTo string `json:"header_to,omitempty"` }
Address describes the nested object way of specifying the Recipient's email address. Recipient.Address can also be a plain string.
func ParseAddress ¶
ParseAddress parses the various allowable Content.From values.
type Attachment ¶
type Attachment struct { MIMEType string `json:"type"` Filename string `json:"name"` B64Data string `json:"data"` }
Attachment contains metadata and the contents of the file to attach.
type Client ¶
Client contains connection, configuration, and authentication information. Specifying your own http.Client gives you lots of control over how connections are made.
func (*Client) EventDocumentation ¶
func (c *Client) EventDocumentation() (g map[string]*EventGroup, res *Response, err error)
func (*Client) EventSamples ¶
Samples requests a list of example event data.
func (*Client) HttpDelete ¶
HttpDelete sends a Delete request to the provided url. Query params are supported via net/url - roll your own and stringify it. Authenticate using the configured API key.
func (*Client) HttpGet ¶
HttpGet sends a Get request to the specified url. Query params are supported via net/url - roll your own and stringify it. Authenticate using the configured API key.
func (*Client) HttpPost ¶
HttpPost sends a Post request with the provided JSON payload to the specified url. Query params are supported via net/url - roll your own and stringify it. Authenticate using the configured API key.
func (*Client) HttpPut ¶
HttpPut sends a Put request with the provided JSON payload to the specified url. Query params are supported via net/url - roll your own and stringify it. Authenticate using the configured API key.
func (*Client) Init ¶
Init pulls together everything necessary to make an API request. Caller may provide their own http.Client by setting it in the provided API object.
func (*Client) ListWebhooks ¶
func (c *Client) ListWebhooks(parameters map[string]string) (*WebhookListWrapper, error)
https://developers.sparkpost.com/api/#/reference/webhooks/list/list-all-webhooks
func (*Client) MessageEvents ¶
func (c *Client) MessageEvents(params map[string]string) (*EventsPage, error)
func (*Client) MetricEventAsString ¶
func (c *Client) MetricEventAsString(e *DeliverabilityMetricItem) string
func (*Client) QueryDeliverabilityMetrics ¶
func (c *Client) QueryDeliverabilityMetrics(extraPath string, parameters map[string]string) (*DeliverabilityMetricEventsWrapper, error)
https://developers.sparkpost.com/api/#/reference/metrics/deliverability-metrics-by-domain
func (*Client) QueryWebhook ¶
func (c *Client) QueryWebhook(id string, parameters map[string]string) (*WebhookQueryWrapper, error)
https://developers.sparkpost.com/api/#/reference/webhooks/retrieve/retrieve-webhook-details
func (*Client) RecipientListCreate ¶
func (c *Client) RecipientListCreate(rl *RecipientList) (id string, res *Response, err error)
Create accepts a populated RecipientList object, validates it, and performs an API call against the configured endpoint.
func (*Client) RecipientLists ¶
func (c *Client) RecipientLists() (*[]RecipientList, *Response, error)
func (*Client) RemoveHeader ¶
Removes header set in SetHeader function
func (*Client) Send ¶
func (c *Client) Send(t *Transmission) (id string, res *Response, err error)
Create accepts a populated Transmission object, performs basic sanity checks on it, and performs an API call against the configured endpoint. Calling this function can cause email to be sent, if used correctly.
func (*Client) SetHeader ¶
SetHeader adds additional HTTP headers for every API request made from client. Useful to set subaccount X-MSYS-SUBACCOUNT header and etc.
func (*Client) Subaccount ¶
func (c *Client) Subaccount(id int) (subaccount *Subaccount, res *Response, err error)
func (*Client) SubaccountCreate ¶
func (c *Client) SubaccountCreate(s *Subaccount) (res *Response, err error)
Create accepts a populated Subaccount object, validates it, and performs an API call against the configured endpoint.
func (*Client) SubaccountUpdate ¶
func (c *Client) SubaccountUpdate(s *Subaccount) (res *Response, err error)
Update updates a subaccount with the specified id. Actually it will marshal and send all the subaccount fields, but that must not be a problem, as fields not supposed for update will be omitted
func (*Client) Subaccounts ¶
func (c *Client) Subaccounts() (subaccounts []Subaccount, res *Response, err error)
List returns metadata for all Templates in the system.
func (*Client) SuppressionDelete ¶
func (*Client) SuppressionInsertOrUpdate ¶
func (c *Client) SuppressionInsertOrUpdate(entries []SuppressionEntry) (*Response, error)
func (*Client) SuppressionList ¶
func (c *Client) SuppressionList() (*SuppressionListWrapper, *Response, error)
func (*Client) SuppressionRetrieve ¶
func (c *Client) SuppressionRetrieve(recipientEmail string) (*SuppressionListWrapper, *Response, error)
func (*Client) SuppressionSearch ¶
func (*Client) TemplateCreate ¶
Create accepts a populated Template object, validates its Contents, and performs an API call against the configured endpoint.
func (*Client) TemplateDelete ¶
Delete removes the Template with the specified id.
func (*Client) TemplatePreview ¶
func (c *Client) TemplatePreview(id string, payload *PreviewOptions) (res *Response, err error)
func (*Client) TemplateUpdate ¶
Update updates a draft/published template with the specified id
func (*Client) Transmission ¶
func (c *Client) Transmission(id string) (*Transmission, *Response, error)
Retrieve accepts a Transmission.ID and retrieves the corresponding object.
func (*Client) TransmissionDelete ¶
Delete attempts to remove the Transmission with the specified id. Only Transmissions which are scheduled for future generation may be deleted.
func (*Client) Transmissions ¶
func (c *Client) Transmissions(campaignID, templateID *string) ([]Transmission, *Response, error)
List returns Transmission summary information for matching Transmissions. To skip filtering by campaign or template id, use a nil param.
func (*Client) WebhookStatus ¶
func (c *Client) WebhookStatus(id string, parameters map[string]string) (*WebhookStatusWrapper, error)
https://developers.sparkpost.com/api/#/reference/webhooks/batch-status/retrieve-status-information
type Config ¶
type Config struct { BaseUrl string ApiKey string Username string Password string ApiVersion int Verbose bool }
Config includes all information necessary to make an API request.
type Content ¶
type Content struct { HTML string `json:"html,omitempty"` Text string `json:"text,omitempty"` Subject string `json:"subject,omitempty"` From interface{} `json:"from,omitempty"` ReplyTo string `json:"reply_to,omitempty"` Headers map[string]string `json:"headers,omitempty"` EmailRFC822 string `json:"email_rfc822,omitempty"` Attachments []Attachment `json:"attachments,omitempty"` InlineImages []InlineImage `json:"inline_images,omitempty"` }
Content is what you'll send to your Recipients. Knowledge of SparkPost's substitution/templating capabilities will come in handy here. https://www.sparkpost.com/api#/introduction/substitutions-reference
type DeliverabilityMetricEventsWrapper ¶
type DeliverabilityMetricEventsWrapper struct { Results []*DeliverabilityMetricItem `json:"results,omitempty"` TotalCount int `json:"total_count,omitempty"` Links []map[string]string `json:"links,omitempty"` Errors []interface{} `json:"errors,omitempty"` }
type DeliverabilityMetricItem ¶
type DeliverabilityMetricItem struct { CountInjected int `json:"count_injected"` CountBounce int `json:"count_bounce,omitempty"` CountRejected int `json:"count_rejected,omitempty"` CountDelivered int `json:"count_delivered,omitempty"` CountDeliveredFirst int `json:"count_delivered_first,omitempty"` CountDeliveredSubsequent int `json:"count_delivered_subsequent,omitempty"` TotalDeliveryTimeFirst int `json:"total_delivery_time_first,omitempty"` TotalDeliveryTimeSubsequent int `json:"total_delivery_time_subsequent,omitempty"` TotalMsgVolume int `json:"total_msg_volume,omitempty"` CountPolicyRejection int `json:"count_policy_rejection,omitempty"` CountGenerationRejection int `json:"count_generation_rejection,omitempty"` CountGenerationFailed int `json:"count_generation_failed,omitempty"` CountInbandBounce int `json:"count_inband_bounce,omitempty"` CountOutofbandBounce int `json:"count_outofband_bounce,omitempty"` CountSoftBounce int `json:"count_soft_bounce,omitempty"` CountHardBounce int `json:"count_hard_bounce,omitempty"` CountBlockBounce int `json:"count_block_bounce,omitempty"` CountAdminBounce int `json:"count_admin_bounce,omitempty"` CountUndeterminedBounce int `json:"count_undetermined_bounce,omitempty"` CountDelayed int `json:"count_delayed,omitempty"` CountDelayedFirst int `json:"count_delayed_first,omitempty"` CountRendered int `json:"count_rendered,omitempty"` CountUniqueRendered int `json:"count_unique_rendered,omitempty"` CountUniqueConfirmedOpened int `json:"count_unique_confirmed_opened,omitempty"` CountClicked int `json:"count_clicked,omitempty"` CountUniqueClicked int `json:"count_unique_clicked,omitempty"` CountTargeted int `json:"count_targeted,omitempty"` CountSent int `json:"count_sent,omitempty"` CountAccepted int `json:"count_accepted,omitempty"` CountSpamComplaint int `json:"count_spam_complaint,omitempty"` Domain string `json:"domain,omitempty"` CampaignId string `json:"campaign_id,omitempty"` TemplateId string `json:"template_id,omitempty"` TimeStamp string `json:"ts,omitempty"` WatchedDomain string `json:"watched_domain,omitempty"` Binding string `json:"binding,omitempty"` BindingGroup string `json:"binding_group,omitempty"` }
type Error ¶
type Error struct { Message string `json:"message"` Code string `json:"code"` Description string `json:"description"` Part string `json:"part,omitempty"` Line int `json:"line,omitempty"` }
Error mirrors the error format returned by SparkPost APIs.
type EventField ¶
type EventField struct { Description string `json:"description"` SampleValue interface{} `json:"sampleValue"` }
type EventGroup ¶
type EventMeta ¶
type EventMeta struct { Name string Fields map[string]EventField `json:"event"` Description string `json:"description"` DisplayName string `json:"display_name"` }
type EventsPage ¶
type EventsPage struct { Events events.Events TotalCount int // contains filtered or unexported fields }
func (*EventsPage) Next ¶
func (events *EventsPage) Next() (*EventsPage, error)
func (*EventsPage) UnmarshalJSON ¶
func (ep *EventsPage) UnmarshalJSON(data []byte) error
type From ¶
From describes the nested object way of specifying the From header. Content.From can be specified this way, or as a plain string.
type InlineImage ¶
type InlineImage Attachment
InlineImage contains metadata and the contents of the image to make available for inline use.
type PreviewOptions ¶
type PreviewOptions struct {
SubstitutionData map[string]interface{} `json:"substitution_data"`
}
Preview options contains the required subsitution_data object to preview a template
type RFC3339 ¶
func (*RFC3339) MarshalJSON ¶
type Recipient ¶
type Recipient struct { Address interface{} `json:"address"` ReturnPath string `json:"return_path,omitempty"` Tags []string `json:"tags,omitempty"` Metadata interface{} `json:"metadata,omitempty"` SubstitutionData interface{} `json:"substitution_data,omitempty"` }
Recipient represents one email (you guessed it) recipient.
type RecipientList ¶
type RecipientList struct { ID string `json:"id,omitempty"` Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` Attributes interface{} `json:"attributes,omitempty"` Recipients *[]Recipient `json:"recipients"` Accepted *int `json:"total_accepted_recipients,omitempty"` }
RecipientList is the JSON structure accepted by and returned from the SparkPost Recipient Lists API. It's mostly metadata at this level - see Recipients for more detail.
func (*RecipientList) String ¶
func (rl *RecipientList) String() string
func (*RecipientList) Validate ¶
func (rl *RecipientList) Validate() error
Validate runs sanity checks on a RecipientList struct. This should catch most errors before attempting a doomed API call.
type Response ¶
type Response struct { HTTP *http.Response Body []byte Verbose map[string]string Results interface{} `json:"results,omitempty"` Errors []Error `json:"errors,omitempty"` }
Response contains information about the last HTTP response. Helpful when an error message doesn't necessarily give the complete picture. Also contains any messages emitted as a result of the Verbose config option.
func (*Response) AssertJson ¶
AssertJson returns an error if the provided HTTP response isn't JSON.
func (*Response) ParseResponse ¶
ParseResponse pulls info from JSON http responses into api.Response object. It's helpful to call Response.AssertJson before calling this function.
func (*Response) PrettyError ¶
PrettyError returns a human-readable error message for common http errors returned by the API. The string parameters are used to customize the generated error message (example: noun=template, verb=create).
type Subaccount ¶
type Subaccount struct { ID int `json:"subaccount_id,omitempty"` Name string `json:"name,omitempty"` Key string `json:"key,omitempty"` KeyLabel string `json:"key_label,omitempty"` Grants []string `json:"key_grants,omitempty"` ShortKey string `json:"short_key,omitempty"` Status string `json:"status,omitempty"` ComplianceStatus string `json:"compliance_status,omitempty"` }
Subaccount is the JSON structure accepted by and returned from the SparkPost Subaccounts API.
type SuppressionEntry ¶
type SuppressionEntry struct { // Email is used when list is stored Email string `json:"email,omitempty"` // Recipient is used when a list is returned Recipient string `json:"recipient,omitempty"` Transactional bool `json:"transactional,omitempty"` NonTransactional bool `json:"non_transactional,omitempty"` Source string `json:"source,omitempty"` Type string `json:type,omitempty` Description string `json:"description,omitempty"` Updated string `json:"updated,omitempty"` Created string `json:"created,omitempty"` }
type SuppressionListWrapper ¶
type SuppressionListWrapper struct { Results []*SuppressionEntry `json:"results,omitempty"` Recipients []SuppressionEntry `json:"recipients,omitempty"` }
type Template ¶
type Template struct { ID string `json:"id,omitempty"` Content Content `json:"content,omitempty"` Published bool `json:"published,omitempty"` Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` LastUse time.Time `json:"last_use,omitempty"` LastUpdate time.Time `json:"last_update_time,omitempty"` Options *TmplOptions `json:"options,omitempty"` }
Template is the JSON structure accepted by and returned from the SparkPost Templates API. It's mostly metadata at this level - see Content and Options for more detail.
Example ¶
Build a native Go Template structure from a JSON string
package main import ( "encoding/json" "log" sp "github.com/SparkPost/gosparkpost" ) func main() { template := &sp.Template{} jsonStr := `{ "name": "testy template", "content": { "html": "this is a <b>test</b> email!", "subject": "test email", "from": { "name": "tester", "email": "tester@example.com" }, "reply_to": "tester@example.com" } }` err := json.Unmarshal([]byte(jsonStr), template) if err != nil { log.Fatal(err) } }
Output:
func (*Template) SetHeaders ¶
SetHeaders is a convenience method which sets Template.Content.Headers to the provided map.
type TmplOptions ¶
type TmplOptions struct { OpenTracking bool `json:"open_tracking,omitempty"` ClickTracking bool `json:"click_tracking,omitempty"` Transactional bool `json:"transactional,omitempty"` }
Options specifies settings to apply to this Template. These settings may be overridden in the Transmission API call.
type Transmission ¶
type Transmission struct { ID string `json:"id,omitempty"` State string `json:"state,omitempty"` Options *TxOptions `json:"options,omitempty"` Recipients interface{} `json:"recipients"` CampaignID string `json:"campaign_id,omitempty"` Description string `json:"description,omitempty"` Metadata interface{} `json:"metadata,omitempty"` SubstitutionData interface{} `json:"substitution_data,omitempty"` ReturnPath string `json:"return_path,omitempty"` Content interface{} `json:"content"` TotalRecipients *int `json:"total_recipients,omitempty"` NumGenerated *int `json:"num_generated,omitempty"` NumFailedGeneration *int `json:"num_failed_generation,omitempty"` NumInvalidRecipients *int `json:"num_invalid_recipients,omitempty"` }
Transmission is the JSON structure accepted by and returned from the SparkPost Transmissions API.
func (*Transmission) Validate ¶
func (t *Transmission) Validate() error
Validate runs sanity checks of a Transmission struct. This should catch most errors before attempting a doomed API call.
type TxOptions ¶
type TxOptions struct { TmplOptions StartTime *RFC3339 `json:"start_time,omitempty"` Sandbox string `json:"sandbox,omitempty"` SkipSuppression string `json:"skip_suppression,omitempty"` InlineCSS bool `json:"inline_css,omitempty"` }
Options specifies settings to apply to this Transmission. If not specified, and present in TmplOptions, those values will be used.
type WebhookItem ¶
type WebhookItem struct { ID string `json:"id,omitempty"` Name string `json:"name,omitempty"` Target string `json:"target,omitempty"` Events []string `json:"events,omitempty"` AuthType string `json:"auth_type,omitempty"` AuthRequestDetails struct { URL string `json:"url,omitempty"` Body struct { ClientID string `json:"client_id,omitempty"` ClientSecret string `json:"client_secret,omitempty"` } `json:"body,omitempty"` } `json:"auth_request_details,omitempty"` AuthCredentials struct { Username string `json:"username,omitempty"` Password string `json:"password,omitempty"` AccessToken string `json:"access_token,omitempty"` ExpiresIn int `json:"expires_in,omitempty"` } `json:"auth_credentials,omitempty"` AuthToken string `json:"auth_token,omitempty"` LastSuccessful string `json:"last_successful,omitempty,omitempty"` LastFailure string `json:"last_failure,omitempty,omitempty"` Links []struct { Href string `json:"href,omitempty"` Rel string `json:"rel,omitempty"` Method []string `json:"method,omitempty"` } `json:"links,omitempty"` }
type WebhookListWrapper ¶
type WebhookListWrapper struct { Results []*WebhookItem `json:"results,omitempty"` Errors []interface{} `json:"errors,omitempty"` }
type WebhookQueryWrapper ¶
type WebhookQueryWrapper struct { Results *WebhookItem `json:"results,omitempty"` Errors []interface{} `json:"errors,omitempty"` }
type WebhookStatus ¶
type WebhookStatusWrapper ¶
type WebhookStatusWrapper struct { Results []*WebhookStatus `json:"results,omitempty"` Errors []interface{} `json:"errors,omitempty"` }
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
cmd
|
|
sparks
Sparks is a command-line tool for quickly sending email using SparkPost.
|
Sparks is a command-line tool for quickly sending email using SparkPost. |
Package events defines a struct for each type of event and provides various other helper functions.
|
Package events defines a struct for each type of event and provides various other helper functions. |
examples
|
|
helpers
|
|