DefinitelyTyped/types/sparkpost/index.d.ts

1671 lines
76 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Type definitions for sparkpost 2.1
// Project: https://github.com/SparkPost/node-sparkpost
// Definitions by: Joshua DeVinney <https://github.com/geoffreak>, Bond <https://github.com/bondz>, Victor <https://github.com/vvu>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.3
/// <reference types="node"/>
import * as Request from "request";
import * as Http from "http";
declare class SparkPost {
/** Specifying an inbound domain enables you to customize the address to which inbound messages are sent. */
inboundDomains: {
/**
* List all your inbound domains.
* @param callback The request callback with Domain results array
*/
list(callback: SparkPost.ResultsCallback<SparkPost.Domain[]>): void;
/**
* List all your inbound domains.
* @returns Promise The Domain results array
*/
list(): SparkPost.ResultsPromise<SparkPost.Domain[]>;
/**
* Retrieve an inbound domain by specifying its domain name in the URI path.
* @param domain Domain name
* @param callback The request callback with Domain results
*/
get(domain: string, callback: SparkPost.ResultsCallback<SparkPost.Domain>): void;
/**
* Retrieve an inbound domain by specifying its domain name in the URI path.
* @param domain Domain name
* @returns Promise The Domain results
*/
get(domain: string): SparkPost.ResultsPromise<SparkPost.Domain>;
/**
* Create an inbound domain by providing an inbound domains object as the POST request body.
* @param createOpts a hash of [inbound domain attributes]{@link https://developers.sparkpost.com/api/inbound-domains#header-inbound-domains-attributes}
* @param callback The request callback
*/
create(createOpts: SparkPost.CreateOpts, callback: SparkPost.Callback<void>): void;
/**
* Create an inbound domain by providing an inbound domains object as the POST request body.
* @param createOpts a hash of [inbound domain attributes]{@link https://developers.sparkpost.com/api/inbound-domains#header-inbound-domains-attributes}
* @returns Promise void
*/
create(createOpts: SparkPost.CreateOpts): Promise<void>;
/**
* Delete an inbound domain by specifying its domain name in the URI path.
* @param domain Domain name
* @param callback The request callback
*/
delete(domain: string, callback: SparkPost.Callback<void>): void;
/**
* Delete an inbound domain by specifying its domain name in the URI path.
* @param domain Domain name
* @returns Promise void
*/
delete(domain: string): Promise<void>;
};
/** The Message Events API provides the means to search the raw events generated by SparkPost. */
messageEvents: {
/**
* Retrieves list of message events according to given params
* @param parameters Query parameters
* @param callback The request callback with MessageEvent results array
*/
search(parameters: SparkPost.MessageEventParameters, callback: SparkPost.ResultsCallback<SparkPost.MessageEvent[]>): void;
/**
* Retrieves list of message events according to given params
* @param parameters Query parameters
* @returns Promise The MessageEvent results array
*/
search(parameters: SparkPost.MessageEventParameters): SparkPost.ResultsPromise<SparkPost.MessageEvent[]>;
};
/** A recipient list is a collection of recipients that can be used in a transmission. */
recipientLists: {
/**
* List a summary of all recipient lists. The recipients for each list are not included in the results.
* To retrieve recipient details, use the [Retrieve a Recipient List endpoint]{@link https://developers.sparkpost.com/api/recipient-lists.html#recipient-lists-retrieve-get},
* and specify the recipient list.
*
* @param callback The request callback with RecipientList results array
*/
list(callback: SparkPost.ResultsCallback<SparkPost.RecipientList[]>): void;
/**
* List a summary of all recipient lists. The recipients for each list are not included in the results.
* To retrieve recipient details, use the [Retrieve a Recipient List endpoint]{@link https://developers.sparkpost.com/api/recipient-lists.html#recipient-lists-retrieve-get},
* and specify the recipient list.
*
* @returns Promise The RecipientList results array
*/
list(): SparkPost.ResultsPromise<SparkPost.RecipientList[]>;
/**
* Retrieve details about a specified recipient list by specifying its id in the URI path.
* To retrieve the recipients contained in a list, the show_recipients parameter must be set to true.
*
* @param specifies whether to retrieve the recipients. Defaults to false
*/
get(id: string, options: { show_recipients?: boolean }, callback: SparkPost.Callback<SparkPost.RecipientListWithRecipients>): void;
/**
* Retrieve details about a specified recipient list by specifying its id in the URI path.
* To retrieve the recipients contained in a list, the show_recipients parameter must be set to true.
*
*/
get(id: string, callback: SparkPost.Callback<SparkPost.RecipientListWithRecipients>): void;
/**
* Retrieve details about a specified recipient list by specifying its id in the URI path.
* To retrieve the recipients contained in a list, the show_recipients parameter must be set to true.
*
* @param [options] specifies whether to retrieve the recipients. Defaults to false
*/
get(id: string, options?: { show_recipients?: boolean }): SparkPost.ResultsPromise<SparkPost.RecipientListWithRecipients>;
/**
* Create a recipient list by providing a recipient list object as the POST request body.
* At a minimum, the “recipients” array is required, which must contain a valid “address”.
* If the recipient list “id” is not provided in the POST request body, one will be generated and returned in the results body.
* Use the num_rcpt_errors parameter to limit the number of recipient errors returned.
* @param options The create options
* @param callback The request callback with metadata results
*/
create(options: SparkPost.CreateRecipientList, callback: SparkPost.ResultsCallback<SparkPost.RecipientListMetadata>): void;
/**
* Create a recipient list by providing a recipient list object as the POST request body.
* At a minimum, the “recipients” array is required, which must contain a valid “address”.
* If the recipient list “id” is not provided in the POST request body, one will be generated and returned in the results body.
* Use the num_rcpt_errors parameter to limit the number of recipient errors returned.
* @param options The create options
* @returns Promise metadata results
*/
create(options: SparkPost.CreateRecipientList): SparkPost.ResultsPromise<SparkPost.RecipientListMetadata>;
/**
* Update an existing recipient list by specifying its ID in the URI path and use a recipient list object as the PUT request body.
* Use the num_rcpt_errors parameter to limit the number of recipient errors returned.
*
* @param id Identifier of the recipient list
* @param options The update options
* @param callback The request callback with metadata results
*/
update(id: string, options: SparkPost.UpdateRecipientList, callback: SparkPost.ResultsCallback<SparkPost.RecipientListMetadata>): void;
/**
* Update an existing recipient list by specifying its ID in the URI path and use a recipient list object as the PUT request body.
* Use the num_rcpt_errors parameter to limit the number of recipient errors returned.
*
* @param id Identifier of the recipient list
*/
update(id: string, options: SparkPost.UpdateRecipientList): SparkPost.ResultsPromise<SparkPost.RecipientListMetadata>;
/**
* Permanently delete the specified recipient list.
*
* @param id The list id
* @param callback The request callback
*/
delete(id: string, callback: SparkPost.Callback<void>): void;
/**
* Permanently delete the specified recipient list.
*
* @param id The list id
* @returns Promise void
*/
delete(id: string): Promise<void>;
};
/** Relay Webhooks are a way to instruct SparkPost to accept inbound email on your behalf and forward it to you over HTTP for your own consumption. */
relayWebhooks: {
/**
* List all your relay webhooks.
* @param callback The request callback with RelayWebhook results array
*/
list(callback: SparkPost.ResultsCallback<SparkPost.RelayWebhook[]>): void;
/**
* List all your relay webhooks.
* @returns Promise The RelayWebhook results array
*/
list(): SparkPost.ResultsPromise<SparkPost.RelayWebhook[]>;
/**
* Delete a relay webhook by specifying the webhook ID in the URI path.
* @param relayWebhookId The webhook id
* @param callback The request callback with RelayWebhook results
*/
get(relayWebhookId: string, callback: SparkPost.ResultsCallback<SparkPost.RelayWebhook>): void;
/**
* Delete a relay webhook by specifying the webhook ID in the URI path.
* @param relayWebhookId The webhook id
* @returns Promise The RelayWebhook results
*/
get(relayWebhookId: string): SparkPost.ResultsPromise<SparkPost.RelayWebhook>;
/**
* Create a relay webhook by providing a relay webhooks object as the POST request body.
* @param options The create options
* @param callback The request callback with webhook id results
*/
create(options: SparkPost.RelayWebhook, callback: SparkPost.ResultsCallback<{ id: string }>): void;
/**
* Create a relay webhook by providing a relay webhooks object as the POST request body.
* @param options The create options
* @returns Promise The webhook id results
*/
create(options: SparkPost.RelayWebhook): SparkPost.ResultsPromise<{ id: string }>;
/**
* Update a relay webhook by specifying the webhook ID in the URI path.
* @param options The update options
* @param callback The request callback with webhook id results
*/
update(id: string, options: SparkPost.UpdateRelayWebhook, callback: SparkPost.ResultsCallback<{ id: string }>): void;
/**
* Update a relay webhook by specifying the webhook ID in the URI path.
* @param options The update options
* @returns Promise The webhook id results
*/
update(id: string, options: SparkPost.UpdateRelayWebhook): SparkPost.ResultsPromise<{ id: string }>;
/**
* Delete a relay webhook by specifying the webhook ID in the URI path.
* @param relayWebhookId The webhook id
* @param callback The request callback
*/
delete(relayWebhookId: string, callback: SparkPost.Callback<void>): void;
/**
* Delete a relay webhook by specifying the webhook ID in the URI path.
* @param relayWebhookId The webhook id
* @returns Promise void
*/
delete(relayWebhookId: string): Promise<void>;
};
sendingDomains: {
/**
* List an overview of all sending domains in the system.
* @param callback The request callback with SendingDomain results array
*/
list(callback: SparkPost.ResultsCallback<SparkPost.SendingDomain[]>): void;
/**
* List an overview of all sending domains in the system.
*
* @returns The SendingDomain results array
*/
list(): SparkPost.ResultsPromise<SparkPost.SendingDomain[]>;
/**
* Retrieve a sending domain by specifying its domain name in the URI path. The response includes details about its DKIM key configuration.
* @param domain The domain
* @param callback The request callback with SendingDomain results
*/
get(domain: string, callback: SparkPost.ResultsCallback<SparkPost.SendingDomain>): void;
/**
* Retrieve a sending domain by specifying its domain name in the URI path. The response includes details about its DKIM key configuration.
*
* @param domain The domain
* @returns Promise The SendingDomain results
*/
get(domain: string): SparkPost.ResultsPromise<SparkPost.SendingDomain>;
/**
* Create a sending domain by providing a sending domain object as the POST request body.
* @param options The create options
* @param callback The request callback with basic info results
*/
create(options: SparkPost.CreateSendingDomain, callback: SparkPost.ResultsCallback<{ message: string, domain: string }>): void;
/**
* Create a sending domain by providing a sending domain object as the POST request body.
*
* @param options The create options
* @returns Promise The basic info results
*/
create(options: SparkPost.CreateSendingDomain): SparkPost.ResultsPromise<{ message: string, domain: string }>;
/**
* Update the attributes of an existing sending domain by specifying its domain name in the URI path and use a sending domain object as the PUT request body.
* @param domain The domain
* @param updateOpts The update options
* @param callback The request callback with basic info results
*/
update(domain: string, updateOpts: SparkPost.UpdateSendingDomain, callback: SparkPost.ResultsCallback<{ message: string, domain: string }>): void;
/**
* Update the attributes of an existing sending domain by specifying its domain name in the URI path and use a sending domain object as the PUT request body.
*
* @param domain The domain
* @param updateOpts The update options
* @returns Promise The basic info results
*/
update(domain: string, updateOpts: SparkPost.UpdateSendingDomain): SparkPost.ResultsPromise<{ message: string, domain: string }>;
/**
* Delete an existing sending domain.
* @param domain The domain
* @param callback The request callback
*/
delete(domain: string, callback: SparkPost.Callback<void>): void;
/**
* Delete an existing sending domain.
*
* @param domain The domain
* @returns Promise void
*/
delete(domain: string): Promise<void>;
/**
* Verify a Sending Domain
* @param domain The domain
* @param options a hash of [verify attributes]{@link https://developers.sparkpost.com/api/sending-domains#header-verify-attributes}
* @param callback The request callback with verify results
*/
verify(domain: string, options: SparkPost.VerifyOptions, callback: SparkPost.ResultsCallback<SparkPost.VerifyResults>): void;
/**
* Verify a Sending Domain
*
* @param domain The domain
* @param options a hash of [verify attributes]{@link https://developers.sparkpost.com/api/sending-domains#header-verify-attributes}
* @returns Promise The verify results
*/
verify(domain: string, options: SparkPost.VerifyOptions): SparkPost.ResultsPromise<SparkPost.VerifyResults>;
};
subaccounts: {
/**
* Endpoint for retrieving a list of your subaccounts.
* This endpoint only returns information about the subaccounts themselves, not the data associated with the subaccount.
* @param callback The request callback with subaccount information results array
*/
list(callback: SparkPost.ResultsCallback<SparkPost.SubaccountInformation[]>): void;
/**
* Endpoint for retrieving a list of your subaccounts.
* This endpoint only returns information about the subaccounts themselves, not the data associated with the subaccount.
*
* @returns Promise The subaccount information results array
*/
list(): SparkPost.ResultsPromise<SparkPost.SubaccountInformation[]>;
/**
* Get details about a specified subaccount by its id
*
* @param id the id of the subaccount you want to look up
* @param callback The request callback with subaccount information results
*/
get(id: string | number, callback: SparkPost.ResultsCallback<SparkPost.SubaccountInformation>): void;
/**
* Get details about a specified subaccount by its id
*
* @param id the id of the subaccount you want to look up
* @returns Promise The subaccount information results
*/
get(id: string | number): SparkPost.ResultsPromise<SparkPost.SubaccountInformation>;
/**
* Provisions a new subaccount and an initial subaccount API key.
* @param subaccount The create options
* @param callback The request callback with basic subaccount information results
*/
create(subaccount: SparkPost.CreateSubaccount, callback: SparkPost.ResultsCallback<SparkPost.CreateSubaccountResponse>): void;
/**
* Provisions a new subaccount and an initial subaccount API key.
*
* @param subaccount The create options
* @returns Promise The basic subaccount information results
*/
create(subaccount: SparkPost.CreateSubaccount): SparkPost.ResultsPromise<SparkPost.CreateSubaccountResponse>;
/**
* Update an existing subaccounts information.
*
* @param id the id of the subaccount you want to update
* @param subaccount an object of [updatable subaccount attributes]{@link https://developers.sparkpost.com/api/subaccounts#header-request-body-attributes-1}
* @param callback The request callback with webhook id results
*/
update(id: string, subaccount: SparkPost.UpdateSubaccount, callback: SparkPost.ResultsCallback<{ message: string }>): void;
/**
* Update an existing subaccounts information.
*
* @param id the id of the subaccount you want to update
* @param subaccount an object of [updatable subaccount attributes]{@link https://developers.sparkpost.com/api/subaccounts#header-request-body-attributes-1}
* @returns Promise The webhook id results
*/
update(id: string, subaccount: SparkPost.UpdateSubaccount): SparkPost.ResultsPromise<{ message: string }>;
};
suppressionList: {
/**
* List all entries in your suppression list, filtered by an optional set of search parameters.
*
* @param callback The request callback with supression lists.
*/
list(callback: SparkPost.ResultsCallback<SparkPost.SupressionListEntry[]>): void;
/**
* List all entries in your suppression list, filtered by an optional set of search parameters.
*
* @param parameters an object of [search parameters]{@link https://developers.sparkpost.com/api/suppression-list#suppression-list-search-get}
* @param callback The request callback with supression lists.
*/
list(parameters: SparkPost.SupressionSearchParameters, callback: SparkPost.ResultsCallback<SparkPost.SupressionListEntry[]>): void;
/**
* List all entries in your suppression list, filtered by an optional set of search parameters.
*
* @param [parameters] an object of [search parameters]{@link https://developers.sparkpost.com/api/suppression-list#suppression-list-search-get}
* @returns Promise The supression lists
*/
list(parameters?: SparkPost.SupressionSearchParameters): SparkPost.ResultsPromise<SparkPost.SupressionListEntry[]>;
/**
* Retrieve an entry by recipient email.
*
* @param email address to check
* @returns void
*/
get(email: string, callback: SparkPost.ResultsCallback<SparkPost.SupressionListEntry[]>): void;
/**
* Retrieve an entry by recipient email.
*
* @param email address to check
* @returns void
*/
get(email: string): SparkPost.ResultsPromise<SparkPost.SupressionListEntry[]>;
/**
* Delete a recipient from the list by specifying the recipients email address in the URI path.
*
* @param email Recipient email address
*/
delete(email: string, callback: SparkPost.Callback<void>): void;
/**
* Delete a recipient from the list by specifying the recipients email address in the URI path.
*
* @param email Recipient email address
* @returns void
*/
delete(email: string): Promise<void>;
/**
* Insert or update one or many entries.
*
* @param listEntries The suppression entry list
* @param callback The request callback
*/
upsert(listEntries: SparkPost.CreateSupressionListEntry | SparkPost.CreateSupressionListEntry[], callback: SparkPost.ResultsCallback<{ message: string }>): void;
/**
* Insert or update one or many entries.
*
* @param listEntries The suppression entry list
*/
upsert(listEntries: SparkPost.CreateSupressionListEntry | SparkPost.CreateSupressionListEntry[]): SparkPost.ResultsPromise<{ message: string }>;
};
templates: {
/**
* List a summary of all templates.
* @param callback The request callback with TemplateMeta results array
*/
list(callback: SparkPost.ResultsCallback<SparkPost.TemplateMeta[]>): void;
/**
* List a summary of all templates.
*
* @returns The TemplateMeta results array
*/
list(): SparkPost.ResultsPromise<SparkPost.TemplateMeta[]>;
/**
* Retrieve details about a specified template by its id
*
* @param id the id of the template you want to look up
* @param options specifies a draft or published template
* @param callback The request callback with Template results
*/
get(id: string, options: { draft?: boolean }, callback: SparkPost.ResultsCallback<SparkPost.Template>): void;
/**
* Retrieve details about a specified template by its id
*
* @param id the id of the template you want to look up
* @param callback The request callback with Template results
*/
get(id: string, callback: SparkPost.ResultsCallback<SparkPost.Template>): void;
/**
* Retrieve details about a specified template by its id
*
* @param id the id of the template you want to look up
* @param [options] specifies a draft or published template
* @returns The Template results
*/
get(id: string, options?: { draft?: boolean }): SparkPost.ResultsPromise<SparkPost.Template>;
/**
* Create a new template
*
* @param template an object of [template attributes]{@link https://developers.sparkpost.com/api/templates#header-template-attributes}
* @param callback The request callback with template id results
*/
create(template: SparkPost.CreateTemplate, callback: SparkPost.ResultsCallback<{ id: string }>): void;
/**
* Create a new template
*
* @param template an object of [template attributes]{@link https://developers.sparkpost.com/api/templates#header-template-attributes}
* @returns The template id results
*/
create(template: SparkPost.CreateTemplate): SparkPost.ResultsPromise<{ id: string }>;
/**
* Update an existing template
*
* @param id the id of the template you want to update
* @param template an object of [template attributes]{@link https://developers.sparkpost.com/api/templates#header-template-attributes}
* @param options The create options. If true, directly overwrite the existing published template. If false, create a new draft
* @param callback The request callback with template id results
*/
update(
id: string,
template: SparkPost.UpdateTemplate,
options: { update_published?: boolean },
callback: SparkPost.ResultsCallback<{ id: string }>): void;
/**
* Update an existing template
*
* @param id the id of the template you want to update
* @param template an object of [template attributes]{@link https://developers.sparkpost.com/api/templates#header-template-attributes}
* @param callback The request callback with template id results
*/
update(
id: string,
template: SparkPost.UpdateTemplate,
callback: SparkPost.ResultsCallback<{ id: string }>): void;
/**
* Update an existing template
*
* @param id the id of the template you want to update
* @param template an object of [template attributes]{@link https://developers.sparkpost.com/api/templates#header-template-attributes}
* @param options If true, directly overwrite the existing published template. If false, create a new draft
* @returns The template id results
*/
update(id: string, template: SparkPost.UpdateTemplate, options?: {
update_published?: boolean;
}): SparkPost.ResultsPromise<{ id: string }>;
/**
* Delete an existing template
* @param id The template id
* @param callback The request callback
*/
delete(id: string, callback: SparkPost.Callback<void>): void;
/**
* Delete an existing template
*
* @param id The template id
* @returns Promise void
*/
delete(id: string): Promise<void>;
/**
* Preview the most recent version of an existing template by id
*
* @param id the id of the template you want to look up
* @param options The preview options
* @param callback The request callback with webhook id results
*/
preview(id: string, options: { substitution_data?: any, draft?: boolean }, callback: SparkPost.ResultsCallback<SparkPost.TemplateContent>): void;
/**
* Preview the most recent version of an existing template by id
*
* @param id the id of the template you want to look up
* @param callback The request callback with webhook id results
*/
preview(id: string, callback: SparkPost.ResultsCallback<SparkPost.TemplateContent>): void;
/**
* Preview the most recent version of an existing template by id
*
* @param id the id of the template you want to look up
* @returns The webhook id results
*/
preview(id: string, options?: { substitution_data?: any, draft?: boolean }): SparkPost.ResultsPromise<SparkPost.TemplateContent>;
};
transmissions: {
/**
* List an overview of all transmissions in the account
*
* @param callback The request callback with Transmission results array
*/
list(callback: SparkPost.ResultsCallback<SparkPost.TransmissionSummary[]>): void;
/**
* List an overview of all transmissions in the account
*
* @param callback The request callback with Transmission results array
*/
list(options: { campaign_id?: string, template_id?: string }, callback: SparkPost.ResultsCallback<SparkPost.TransmissionSummary[]>): void;
/**
* List an overview of all transmissions in the account
*
* @returns The Transmission results array
*/
list(options?: { campaign_id?: string, template_id?: string }): SparkPost.ResultsPromise<SparkPost.TransmissionSummary[]>;
/**
* Retrieve the details about a transmission by its ID
*
* @param id The id of the transmission you want to look up
* @param callback The request callback with Transmission results
*/
get(transmissionID: string, callback: SparkPost.ResultsCallback<SparkPost.Transmission>): void;
/**
* Retrieve the details about a transmission by its ID
*
* @param id The id of the transmission you want to look up
* @returns The Transmission results
*/
get(id: string): SparkPost.ResultsPromise<SparkPost.Transmission>;
/**
* Sends a message by creating a new transmission
*
* @param transmission an object of [transmission attributes]{@link https://developers.sparkpost.com/api/transmissions#header-transmission-attributes}
* @param options The create options. Specify maximum number of recipient errors returned
* @param callback The request callback with metadata and id results
*/
send(transmission: SparkPost.CreateTransmission, options: { num_rcpt_errors?: number }, callback: SparkPost.ResultsCallback<{
total_rejected_recipients: number;
total_accepted_recipients: number;
id: string;
}>): void;
/**
*
*
* @param transmission an object of [transmission attributes]{@link https://developers.sparkpost.com/api/transmissions#header-transmission-attributes}
* @param callback The request callback with metadata and id results
*/
send(transmission: SparkPost.CreateTransmission, callback: SparkPost.ResultsCallback<{
total_rejected_recipients: number;
total_accepted_recipients: number;
id: string;
}>): void;
/**
* Sends a message by creating a new transmission
*
* @param transmission an object of [transmission attributes]{@link https://developers.sparkpost.com/api/transmissions#header-transmission-attributes}
* @param [options] specify maximum number of recipient errors returned
* @returns The metadata and id results
*/
send(transmission: SparkPost.CreateTransmission, options?: { num_rcpt_errors?: number }): SparkPost.ResultsPromise<{
total_rejected_recipients: number;
total_accepted_recipients: number;
id: string;
}>;
};
webhooks: {
/**
* List currently existing webhooks.
* @param callback The request callback with RelayWebhook results array
*/
list(callback: SparkPost.ResultsCallback<Array<SparkPost.WebhookLinks & SparkPost.Webhook>>): void;
/**
* List currently existing webhooks.
* @param options Object containing optional timezone
* @param callback The request callback with RelayWebhook results array
*/
list(options: { timezone?: string }, callback: SparkPost.ResultsCallback<Array<SparkPost.WebhookLinks & SparkPost.Webhook>>): void;
/**
* List currently existing webhooks.the timezone to use for the last_successful and last_failure properties | Default: UTC
*
*/
list(options?: { timezone?: string }): SparkPost.ResultsPromise<Array<SparkPost.WebhookLinks & SparkPost.Webhook>>;
/**
* Retrieve details about a specified webhook by its id
*
* @param id The id of the webhook to get
* @param options Object containing id and optional timezone
* @param callback The request callback with RelayWebhook results
*/
get(id: string, options: { timezone?: string }, callback: SparkPost.ResultsCallback<SparkPost.WebhookLinks & SparkPost.Webhook>): void;
/**
* Retrieve details about a specified webhook by its id
*
* @param id The id of the webhook to get
* @param callback The request callback with RelayWebhook results
*/
get(id: string, callback: SparkPost.ResultsCallback<SparkPost.WebhookLinks & SparkPost.Webhook>): void;
/**
* Retrieve details about a specified webhook by its id
*
* @param id The id of the webhook to get
* @param [options] the timezone to use for the last_successful and last_failure properties
* @returns The RelayWebhook results
*/
get(id: string, options?: { timezone?: string }): SparkPost.ResultsPromise<SparkPost.WebhookLinks & SparkPost.Webhook>;
/**
* Create a new webhook
*
* @param options a hash of [webhook attributes]{@link https://developers.sparkpost.com/api/webhooks#header-webhooks-object-properties}
* @param callback The request callback with webhook id results
*/
create(options: SparkPost.Webhook, callback: SparkPost.ResultsCallback<SparkPost.WebhookLinks & { id: string }>): void;
/**
* Create a new webhook
*
* @param options a hash of [webhook attributes]{@link https://developers.sparkpost.com/api/webhooks#header-webhooks-object-properties}
* @returns The webhook id results
*/
create(options: SparkPost.Webhook): SparkPost.ResultsPromise<SparkPost.WebhookLinks & { id: string }>;
/**
* Update an existing webhook
* @param id the id of the webhook to update
* @param options A hash of [webhook attribues]{@link https://developers.sparkpost.com/api/webhooks#header-webhooks-object-properties}
* @param callback The request callback with webhook id results
*/
update(id: string, options: SparkPost.UpdateWebhook, callback: SparkPost.ResultsCallback<SparkPost.WebhookLinks & { id: string }>): void;
/**
* Update an existing webhook
*
*/
update(id: string, options: SparkPost.UpdateWebhook): SparkPost.ResultsPromise<SparkPost.WebhookLinks & { id: string }>;
/**
* Delete an existing webhook
* @param id The webhook id
* @param callback The request callback
*/
delete(id: string, callback: SparkPost.Callback<void>): void;
/**
* Delete an existing webhook.
*
* @param id The id of the webhook to delete
*/
delete(id: string): Promise<void>;
/**
* Sends an example message event batch from the Webhook API to the target URL
*
* @param id The id of the webhook to validate
* @param options the message (payload) to send to the webhook consumer
* @param callback The request callback with validation results
*/
validate(id: string, options: { message: any }, callback: SparkPost.ResultsCallback<{
msg: string;
response: {
status: number;
headers: any;
body: string;
}
}>): void;
/**
* Sends an example message event batch from the Webhook API to the target URL.
*
* @param id The id of the webhook to validate
* @param options The message (payload) to send to the webhook consumer
* @returns The validation results
*/
validate(id: string, options: { message: any }): SparkPost.ResultsPromise<{
msg: string;
response: {
status: number;
headers: any;
body: string;
}
}>;
/**
* Gets recent status information about a webhook.
*
* @param id The id of the webhook
* @param options An optional limit that specifies the maximum number of results to return. Defaults to 1000
* @param callback The request callback with status results
*/
getBatchStatus(id: string, options: { limit?: number }, callback: SparkPost.ResultsCallback<Array<{
batch_id: string;
ts: string;
attempts: number;
response_code: number;
}>>): void;
/**
* Gets recent status information about a webhook.
*
* @param id The id of the webhook
* @param callback The request callback with status results
*/
getBatchStatus(id: string, callback: SparkPost.ResultsCallback<Array<{
batch_id: string;
ts: string;
attempts: number;
response_code: number;
}>>): void;
/**
* Gets recent status information about a webhook.
*
* @param id The id of the webhook
* @param Maximum number of results to return. Defaults to 1000
* @returns The status results
*/
getBatchStatus(id: string, options: { limit?: number }): SparkPost.ResultsPromise<Array<{
batch_id: string;
ts: string;
attempts: number;
response_code: number;
}>>;
/**
* Lists descriptions of the events, event types, and event fields that could be included in a Webhooks post to your target URL.
* @param callback The request callback containing documentation results
*/
getDocumentation(callback: SparkPost.ResultsCallback<any>): void;
/**
* Lists descriptions of the events, event types, and event fields that could be included in a Webhooks post to your target URL.
*
* @returns The documentation results
*/
getDocumentation(): SparkPost.ResultsPromise<any>;
/**
* List an example of the event data that will be posted by a Webhook for the specified events.
* @param callback The request callback containing examples
*/
getSamples(callback: SparkPost.Callback<any>): void;
/**
* List an example of the event data that will be posted by a Webhook for the specified events.
* @param options The optional event name
* @param callback The request callback containing examples
*/
getSamples(options: { events?: string }, callback: SparkPost.Callback<any>): void;
/**
* List an example of the event data that will be posted by a Webhook for the specified events.
*
* @param options [event types]{@link https://support.sparkpost.com/customer/portal/articles/1976204} for which to get a sample payload
* Default: all event types returned
*/
getSamples(options?: { events?: string }): Promise<SparkPost.Response<any>>;
};
/**
* The official Node.js binding for your favorite SparkPost APIs!
* @param apiKey A passed in apiKey will take precedence over an environment variable
* @param options Additional options
*/
constructor(apiKey?: string, options?: SparkPost.ConstructorOptions);
request(options: Request.Options, callback: SparkPost.Callback<any>): void;
request(options: Request.Options): Promise<SparkPost.Response<any>>;
get(options: Request.Options, callback: SparkPost.Callback<any>): void;
get(options: Request.Options): Promise<SparkPost.Response<any>>;
post(options: Request.Options, callback: SparkPost.Callback<any>): void;
post(options: Request.Options): Promise<SparkPost.Response<any>>;
put(options: Request.Options, callback: SparkPost.Callback<any>): void;
put(options: Request.Options): Promise<SparkPost.Response<any>>;
delete(options: Request.Options, callback: SparkPost.Callback<any>): void;
delete(options: Request.Options): Promise<SparkPost.Response<any>>;
}
declare namespace SparkPost {
interface ErrorWithDescription {
message: string;
code: string;
description: string;
}
interface ErrorWithParam {
message: string;
param: string;
value: string | null;
}
interface SparkPostError extends Error {
name: "SparkPostError";
errors: ErrorWithDescription[] | ErrorWithParam[];
statusCode: number;
}
interface ConstructorOptions {
origin?: string;
endpoint?: string;
apiVersion?: string;
headers?: any;
}
interface Response<T> extends Http.IncomingMessage {
body: T;
}
type Callback<T> = (err: Error | SparkPostError | null, res: Response<T>) => void;
type ResultsCallback<T> = Callback<{ results: T }>;
type ResultsPromise<T> = Promise<{ results: T }>;
interface Domain {
domain: string;
}
interface MessageEvent {
/** Type of event this record describes */
type: string;
/** Classification code for a given message (see [Bounce Classification Codes](https://support.sparkpost.com/customer/portal/articles/1929896)) */
bounce_class: string;
/** Campaign of which this message was a part */
campaign_id: string;
/** SparkPost-customer identifier through which this message was sent */
customer_id: string;
/** Protocol by which SparkPost delivered this message */
delv_method: string;
/** Token of the device / application targeted by this PUSH notification message. Applies only when delv_method is gcm or apn. */
device_token: string;
/** Error code by which the remote server described a failed delivery attempt */
error_code: string;
/** IP address of the host to which SparkPost delivered this message; in engagement events, the IP address of the host where the HTTP request originated */
ip_address: string;
/** SparkPost-cluster-wide unique identifier for this message */
message_id: string;
/** Sender address used on this message"s SMTP envelope */
msg_from: string;
/** Message"s size in bytes */
msg_size: string;
/** Number of failed attempts before this message was successfully delivered; when the first attempt succeeds, zero */
num_retries: string;
/** Metadata describing the message recipient */
rcpt_meta: any;
/** Tags applied to the message which generated this event */
rcpt_tags: string[];
/** Recipient address used on this message"s SMTP envelope */
rcpt_to: string;
/** Indicates that a recipient address appeared in the Cc or Bcc header or the archive JSON array */
rcpt_type: string;
/** Unmodified, exact response returned by the remote server due to a failed delivery attempt */
raw_reason: string;
/** Canonicalized text of the response returned by the remote server due to a failed delivery attempt */
reason: string;
/** Domain receiving this message */
routing_domain: string;
/** Subject line from the email header */
subject: string;
/** Slug of the template used to construct this message */
template_id: string;
/** Version of the template used to construct this message */
template_version: string;
/** Event date and time formatted as: YYYY-MM-DDTHH:MM:SS.SSS±hh:mm */
timestamp: string;
/** Transmission which originated this message */
transmission_id: string;
}
interface MessageEventParameters {
/** delimited list of bounce classification codes to search. (See Bounce Classification Codes.) */
bounce_classes?: Array<string | number> | string | number;
/** delimited list of campaign IDs to search (i.e. the campaign id used during creation of a transmission). */
campaign_ids?: string[] | string;
/** Specifies the delimiter for query parameter lists */
delimiter?: string;
/** delimited list of event types to search. Defaults to all event types. */
events?: string[] | string;
/** delimited list of friendly from emails to search. */
friendly_froms?: string[] | string;
/** Datetime in format of YYYY-MM-DDTHH:MM. */
from?: string;
/** delimited list of message IDs to search. */
message_ids?: string[] | string;
/** The results page number to return. Used with per_page for paging through results. */
page?: number;
/** Number of results to return per page. Must be between 1 and 10,000 (inclusive). */
per_page?: number;
/** Bounce/failure/rejection reason that will be matched using a wildcard (e.g., %reason%). */
reason?: string[] | string;
/** delimited list of recipients to search. */
recipients?: string[] | string;
/** delimited list of subaccount IDs to search. */
subaccounts?: number[] | number;
/** delimited list of template IDs to search. */
template_ids?: string[] | string;
/** Standard timezone identification string. */
timezone?: string;
/** Datetime in format of YYYY-MM-DDTHH:MM. */
to?: string;
/** delimited list of transmission IDs to search (i.e. id generated during creation of a transmission). */
transmission_ids?: string[] | string;
}
interface RecipientListMetadata {
total_rejected_recipients: number;
total_accepted_recipients: number;
id: string;
name: string;
}
interface RecipientList {
/** Short, unique, recipient list identifier */
id: string;
/** Short, pretty/readable recipient list display name, not required to be unique */
name: string;
/** Detailed description of the recipient list */
description: string;
/** Recipient list attribute object */
attributes: any;
/** Number of accepted recipients */
total_accepted_recipients: number;
}
interface RecipientListWithRecipients extends RecipientList {
/** Array of recipient objects */
recipients: Recipient[];
}
interface CreateRecipientList {
/** Short, unique, recipient list identifier */
id?: string;
/** Short, pretty/readable recipient list display name, not required to be unique */
name?: string;
/** Detailed description of the recipient list */
description?: string;
/** Recipient list attribute object */
attributes?: any;
/** limit the number of recipient errors returned. */
num_rcpt_errors?: number;
/** Array of recipient objects */
recipients: Recipient[];
}
interface UpdateRecipientList {
/** Short, unique, recipient list identifier */
id?: string;
/** Short, pretty/readable recipient list display name, not required to be unique */
name?: string;
/** Detailed description of the recipient list */
description?: string;
/** Recipient list attribute object */
attributes?: any;
/** Array of recipient objects */
recipients: Recipient[];
}
interface BaseRecipient {
/** SparkPost Enterprise API only. Email to use for envelope FROM. */
return_path?: string;
/** Array of text labels associated with a recipient. */
tags?: string[];
/** Key/value pairs associated with a recipient. */
metadata?: any;
/** Key/value pairs associated with a recipient that are provided to the substitution engine. */
substitution_data?: any;
}
interface RecipientWithAddress {
/** Address information for a recipient At a minimum, address or multichannel_addresses is required. */
address: Address | string;
}
interface RecipientWithMultichannelAddresses {
/**
* Address information for a recipient. At a minimum, address or multichannel_addresses is required.
* If both address and multichannel_addresses are specified only multichannel_addresses will be used.
*
*/
address?: Address | string;
/**
* Array of Multichannel Address objects for a recipient. At a minimum, address or multichannel_addresses is required.
* If both address and multichannel_addresses are specified only multichannel_addresses will be used.
*
*/
multichannel_addresses: MultichannelAddress[];
}
type Recipient = (RecipientWithAddress | RecipientWithMultichannelAddresses) & BaseRecipient;
interface Address {
/** Valid email address */
email: string;
/** User-friendly name for the email address */
name?: string;
/** Email address to display in the “To” header instead of address.email (for CC and BCC) */
header_to?: string;
}
interface MultichannelAddress {
/** The communication channel used to reach recipient. Valid values are “email”, “gcm”, “apns”. */
channel: string;
/** Valid email address. Required if channel is “email”. */
email: string;
/** User-friendly name for the email address. Used when channel is “email” */
name: string;
/** Email address to display in the “To” header instead of address.email (for BCC). Used when channel is “email” */
header_to: string;
/** SparkPost Enterprise API only. Required if channel is “gcm” or “apns” */
token: string;
/** SparkPost Enterprise API only. Required if channel is “gcm” or “apns” */
app_id: string;
}
interface RelayWebhook {
/** User-friendly name no example: Inbound Customer Replies */
name?: string;
/** URL of the target to which to POST relay batches */
target: string;
/** Authentication token to present in the X-MessageSystems-Webhook-Token header of POST requests to target */
auth_token?: string;
/** Restrict which inbound messages will be relayed to the target */
match: Match;
}
interface UpdateRelayWebhook {
/** User-friendly name no example: Inbound Customer Replies */
name?: string;
/** URL of the target to which to POST relay batches */
target: string;
/** Authentication token to present in the X-MessageSystems-Webhook-Token header of POST requests to target */
auth_token?: string;
/** Restrict which inbound messages will be relayed to the target */
match?: Match;
}
interface Match {
/** Inbound messaging protocol associated with this webhook. Defaults to “SMTP” */
protocol?: string;
/** Inbound domain associated with this webhook. Required when protocol is “SMTP”. */
domain?: string;
/** ESME address binding associated with this webhook yes, when protocol is “SMPP”. SparkPost Enterprise API only. */
esme_address?: string;
}
interface SendingDomain {
/** Name of the sending domain. */
domain: string;
/** Associated tracking domain. */
tracking_domain: string;
/** JSON object containing status details, including whether this domains ownership has been verified. */
status: Status;
/** JSON object in which DKIM key configuration is defined. */
dkim?: DKIM;
/** Whether to generate a DKIM keypair on creation. */
generate_dkim?: boolean;
/** Size, in bits, of the DKIM private key to be generated. This option only applies if generate_dkim is true. */
dkim_key_length?: number;
/** Setting to true allows this domain to be used by subaccounts. Defaults to false, only available to domains belonging to a master account. */
shared_with_subaccounts: boolean;
}
interface CreateSendingDomain {
/** Name of the sending domain. */
domain: string;
/** Associated tracking domain. */
tracking_domain?: string;
/** JSON object containing status details, including whether this domains ownership has been verified. */
status?: Status;
/** JSON object in which DKIM key configuration is defined. */
dkim?: DKIM;
/** Whether to generate a DKIM keypair on creation. */
generate_dkim?: boolean;
/** Size, in bits, of the DKIM private key to be generated. This option only applies if generate_dkim is true. */
dkim_key_length?: number;
/** Setting to true allows this domain to be used by subaccounts. Defaults to false, only available to domains belonging to a master account. */
shared_with_subaccounts?: boolean;
}
interface UpdateSendingDomain {
/** Associated tracking domain. */
tracking_domain?: string;
/** JSON object in which DKIM key configuration is defined. */
dkim?: DKIM;
/** Whether to generate a DKIM keypair on creation. */
generate_dkim?: boolean;
/** Size, in bits, of the DKIM private key to be generated. This option only applies if generate_dkim is true. */
dkim_key_length?: number;
/** Setting to true allows this domain to be used by subaccounts. Defaults to false, only available to domains belonging to a master account. */
shared_with_subaccounts?: boolean;
}
interface DKIM {
/** Signing Domain Identifier (SDID). SparkPost Enterprise API only. */
signing_domain?: string;
/** DKIM private key. */
private?: string;
/** DKIM public key. */
public: string;
/** DomainKey selector. */
selector: string;
/** Header fields to be included in the DKIM signature. This field is currently ignored. */
headers?: string;
}
interface Status {
/** Whether domain ownership has been verified */
ownership_verified: boolean;
/** Verification status of SPF configuration */
spf_status: "valid" | "invalid" | "unverified" | "pending";
/** Compliance status */
compliance_status: "valid" | "pending" | "blocked";
/** Verification status of DKIM configuration */
dkim_status: "valid" | "invalid" | "unverified" | "pending";
/** Verification status of abuse@ mailbox */
abuse_at_status: "valid" | "invalid" | "unverified" | "pending";
/** Verification status of postmaster@ mailbox */
postmaster_at_status: "valid" | "invalid" | "unverified" | "pending";
/** Verification status of CNAME configuration */
cname_status: "valid" | "invalid" | "unverified" | "pending";
/** Verification status of MX configuration */
mx_status: "valid" | "invalid" | "unverified" | "pending";
}
interface VerifyOptions {
/**
* Request verification of DKIM record
*
*/
dkim_verify?: boolean;
/**
* Request verification of SPF record
*
* @deprecated
*/
spf_verify?: boolean;
/**
* Request an email with a verification link to be sent to the sending domains postmaster@ mailbox.
*
*/
postmaster_at_verify?: boolean;
/**
* Request an email with a verification link to be sent to the sending domains abuse@ mailbox.
*
*/
abuse_at_verify?: boolean;
/**
* A token retrieved from the verification link contained in the postmaster@ verification email.
*
*/
postmaster_at_token?: string;
/**
* A token retrieved from the verification link contained in the abuse@ verification email.
*
*/
abuse_at_token?: string;
/**
* Request verification of CNAME record
*/
cname_verify?: boolean;
}
interface VerifyResults extends Status {
dns?: {
dkim_record: string;
spf_record: string;
};
}
interface CreateSubaccount {
/** user-friendly name */
name: string;
/** user-friendly identifier for subaccount API key */
key_label: string;
/** list of grants to give the subaccount API key */
key_grants: string[];
/** list of IPs the subaccount may be used from */
key_valid_ips?: string[];
/** id of the default IP pool assigned to subaccount"s transmissions */
ip_pool?: string;
}
interface CreateSubaccountResponse {
subaccount_id: number;
key: string;
label: string;
short_key: string;
}
interface UpdateSubaccount {
/** user-friendly name */
name: string;
/** status of the subaccount */
status: string;
/** id of the default IP pool assigned to subaccount"s transmissions */
ip_pool?: string;
}
interface SubaccountInformation {
/** ID of subaccount */
id: number;
/** User friendly identifier for a specific subaccount */
name: string;
/** Status of the account */
status: "active" | "suspended" | "terminated";
/** The ID of the default IP Pool assigned to this subaccounts transmissions */
ip_pool?: string;
compliance_status: string;
}
interface CreateSupressionListEntry {
/**
* Email address to be suppressed
*
*/
recipient: string;
/**
* Type of suppression record
*
*/
type?: "transactional" | "non_transactional";
/**
* Whether the recipient requested to not receive any non-transactional messages
* Not required if a valid type is passed
*
* @deprecated Available, but deprecated in favor of type
*/
transactional?: boolean;
/**
* Whether the recipient requested to not receive any non-transactional messages
* Not required if a valid type is passed
*
* @deprecated Available, but deprecated in favor of type
*/
non_transactional?: boolean;
/**
* Source responsible for inserting the list entry
* no - entries created by the user are marked as Manually Added
*
*/
readonly source?: "Spam Complaint" | "List Unsubscribe" | "Bounce Rule" | "Unsubscribe Link" | "Manually Added" | "Compliance";
/** Short explanation of the suppression */
description?: string;
}
interface SupressionListEntry {
/**
* Email address to be suppressed
*
*/
recipient: string;
/**
* Whether the recipient requested to not receive any transactional messages
* Not required if a valid type is passed
*
* @deprecated Available, but deprecated in favor of type
*/
transactional?: boolean;
/**
* Whether the recipient requested to not receive any non-transactional messages
* Not required if a valid type is passed
*
* @deprecated Available, but deprecated in favor of type
*/
non_transactional?: boolean;
/** Type of suppression record: transactional or non_transactional */
type?: "transactional" | "non_transactional";
/**
* Source responsible for inserting the list entry
*
* no - entries created by the user are marked as Manually Added
*
*/
source?: "Spam Complaint" | "List Unsubscribe" | "Bounce Rule" | "Unsubscribe Link" | "Manually Added" | "Compliance";
/** Short explanation of the suppression */
description?: string;
created: string;
updated: string;
}
interface SupressionSearchParameters {
/** Datetime the entries were last updated, in the format of YYYY-MM-DDTHH:mm:ssZ */
to?: string;
/** Datetime the entries were last updated, in the format YYYY-MM-DDTHH:mm:ssZ */
from?: string;
/**
* Domain of entries to include in the search. ( Note: SparkPost only)
*
*/
domain?: string;
/**
* The results cursor location to return, to start paging with cursor, use the value of initial.
* When cursor is provided the page parameter is ignored. (Note: SparkPost only)
*
*/
cursor?: string;
/**
* Maximum number of results to return per page. Must be between 1 and 10,000.
* ( Note: SparkPost only)
* @default 1000
*/
per_page?: string | number;
/**
* The results page number to return. Used with per_page for paging through results.
* The page parameter works up to 10,000 results.
* You must use the cursor parameter and start with cursor=initial to page result sets larger than 10,000
* ( Note: SparkPost only)
*
*/
page?: string | number;
/** Types of entries to include in the search, i.e. entries with “transactional” and/or “non_transactional” keys set to true */
types?: string;
/** Sources of the entries to include in the search, i.e. entries that were added by this source */
sources?: string;
/**
* Description of the entries to include in the search, i.e descriptions that include the text submitted.
* ( Note: SparkPost only)
*
*/
description?: string;
/**
* Maximum number of results to return per page. Must be between 1 and 10,000.
* @deprecated use per_page instead
*/
limit?: number;
}
interface TemplateContent {
/** HTML content for the emails text/html MIME part */
html: string;
/** Text content for the emails text/plain MIME part */
text: string;
/** Email subject line. */
subject: string;
/**
* Address "from" : "deals@company.com" or JSON object composed of the "name" and "email" fields.
* "from" : { "name" : "My Company", "email" : "deals@company.com" } used to compose the emails "From" header.
*
*/
from: Address | string;
/** Email address used to compose the emails “Reply-To” header. */
reply_to?: string;
/** JSON dictionary containing headers other than “Subject”, “From”, “To”, and “Reply-To”. */
headers?: any;
}
interface CreateTemplateContent {
/** HTML content for the emails text/html MIME part */
html?: string;
/** Text content for the emails text/plain MIME part */
text?: string;
/** Email subject line. */
subject: string;
/**
* Address "from" : "deals@company.com" or JSON object composed of the "name" and "email" fields.
* "from" : { "name" : "My Company", "email" : "deals@company.com" } used to compose the emails "From" header.
*
*/
from: Address | string;
/** Email address used to compose the emails “Reply-To” header. */
reply_to?: string;
/** JSON dictionary containing headers other than “Subject”, “From”, “To”, and “Reply-To”. */
headers?: any;
}
interface TemplateMeta {
/** Unique template ID */
id: string;
/** Template name */
name: string;
/** Published state of the template (true = published, false = draft) */
published: boolean;
/** Template description */
description: string;
}
interface Template {
/**
* Short, unique, alphanumeric ID used to reference the template.
* At a minimum, id or name is required upon creation.
* It is auto generated if not provided.
* After a template has been created, this property cannot be changed. Maximum length - 64 bytes
*
*/
id: string;
/** Content that will be used to construct a message yes For a full description, see the Content Attributes. Maximum length - 20 MBs */
content: TemplateContent | { email_rfc822: string };
/** Whether the template is published or is a draft version no - defaults to false A template cannot be changed from published to draft. */
published: boolean;
/** Editable display name At a minimum, id or name is required upon creation. The name does not have to be unique. Maximum length - 1024 bytes */
name: string;
/** Detailed description of the template no Maximum length - 1024 bytes */
description: string;
/** JSON object in which template options are defined no For a full description, see the Options Attributes. */
options: TemplateOptions;
/** The “last_update_time” is the time the template was last updated, for both draft and published versions */
last_update_time: string;
/** The “last_use” time represents the last time any version of this template was used (draft or published). */
last_use?: string;
}
interface CreateTemplate {
/**
* Short, unique, alphanumeric ID used to reference the template.
* At a minimum, id or name is required upon creation.
* It is auto generated if not provided.
* After a template has been created, this property cannot be changed. Maximum length - 64 bytes
*
*/
id?: string;
/** Content that will be used to construct a message yes For a full description, see the Content Attributes. Maximum length - 20 MBs */
content: CreateTemplateContent | { email_rfc822: string };
/** Whether the template is published or is a draft version no - defaults to false A template cannot be changed from published to draft. */
published?: boolean;
/** Editable display name At a minimum, id or name is required upon creation. The name does not have to be unique. Maximum length - 1024 bytes */
name?: string;
/** Detailed description of the template no Maximum length - 1024 bytes */
description?: string;
/** JSON object in which template options are defined no For a full description, see the Options Attributes. */
options?: CreateTemplateOptions;
}
interface UpdateTemplate {
/** Content that will be used to construct a message yes For a full description, see the Content Attributes. Maximum length - 20 MBs */
content?: CreateTemplateContent | { email_rfc822: string };
/** Whether the template is published or is a draft version no - defaults to false A template cannot be changed from published to draft. */
published?: boolean;
/** Editable display name At a minimum, id or name is required upon creation. The name does not have to be unique. Maximum length - 1024 bytes */
name?: string;
/** Detailed description of the template no Maximum length - 1024 bytes */
description?: string;
/** JSON object in which template options are defined no For a full description, see the Options Attributes. */
options?: CreateTemplateOptions;
}
interface TemplateOptions {
/** Enable or disable open tracking */
open_tracking: boolean;
/** Enable or disable click tracking */
click_tracking: boolean;
/** Distinguish between transactional and non-transactional messages for unsubscribe and suppression purposes */
transactional: boolean;
}
interface CreateTemplateOptions {
/** Enable or disable open tracking */
open_tracking?: boolean;
/** Enable or disable click tracking */
click_tracking?: boolean;
/** Distinguish between transactional and non-transactional messages for unsubscribe and suppression purposes */
transactional?: boolean;
}
interface CreateTransmission {
/** JSON object in which transmission options are defined */
options?: TransmissionOptions;
/**
* Recipients to receive a carbon copy of the transmission
*
*/
cc?: Recipient[];
/**
* Recipients to discreetly receive a carbon copy of the transmission
*
*/
bcc?: Recipient[];
/** Inline recipient objects or object containing stored recipient list ID */
recipients?: Recipient[] | { list_id: string };
/** Name of the campaign */
campaign_id?: string;
/** Description of the transmission */
description?: string;
/** Transmission level metadata containing key/value pairs */
metadata?: any;
/** Key/value pairs that are provided to the substitution engine */
substitution_data?: any;
/** SparkPost Enterprise API only: email to use for envelope FROM */
return_path?: string;
/** Content that will be used to construct a message */
content: InlineContent | { template_id: string, use_draft_template?: boolean } | { email_rfc822: string };
}
interface TransmissionSummary {
/** ID of the transmission */
id: string;
/** State of the transmission */
state: "submitted" | "Generating" | "Success" | "Canceled";
/** Description of the transmission */
description: string;
/** Name of the campaign */
campaign_id: string;
/** Content that will be used to construct a message */
content: { template_id: string };
}
interface Transmission {
/** ID of the transmission */
id: string;
/** State of the transmission */
state: "submitted" | "Generating" | "Success" | "Canceled";
/** JSON object in which transmission options are defined */
options: TransmissionOptions;
/** Name of the campaign */
campaign_id: string;
/** Description of the transmission */
description: string;
/** Transmission level metadata containing key/value pairs */
metadata: any;
/** Key/value pairs that are provided to the substitution engine */
substitution_data: any;
/** Content that will be used to construct a message */
content: InlineContent | { template_id: string, use_draft_template?: boolean } | { email_rfc822: string };
/** Computed total number of messages generated */
num_generated: number;
/** Computed total number of failed messages */
num_failed_generation: number;
/** Number of recipients that failed input validation */
num_invalid_recipients: number;
rcpt_list_chunk_size: number;
rcpt_list_total_chunks: number;
}
interface TransmissionOptions {
/** Delay generation of messages until this datetime. */
start_time?: string;
/** Whether open tracking is enabled for this transmission */
open_tracking?: boolean;
/** Whether click tracking is enabled for this transmission */
click_tracking?: boolean;
/** Whether message is transactional or non-transactional for unsubscribe and suppression purposes */
transactional?: boolean;
/** Whether or not to use the sandbox sending domain */
sandbox?: boolean;
/** SparkPost Enterprise API only: Whether or not to ignore customer suppression rules, for this transmission only. Only applicable if your configuration supports this parameter. */
skip_suppression?: boolean;
/** The ID of a dedicated IP pool associated with your account ( Note: SparkPost only ). */
ip_pool?: string;
/** Whether or not to perform CSS inlining in HTML content */
inline_css?: boolean;
}
interface InlineContent {
/** HTML content for the emails text/html MIME part At a minimum, html, text, or push is required. */
html?: string;
/** Text content for the emails text/plain MIME part At a minimum, html, text, or push is required. */
text?: string;
/** Content of push notifications At a minimum, html, text, or push is required. SparkPost Enterprise API only. */
push?: PushData;
/** Email subject line required for email transmissions Expected in the UTF-8 charset without RFC2047 encoding. Substitution syntax is supported. */
subject?: string;
/** "deals@company.com" or JSON object composed of the “name” and “email” fields “from” : { “name” : “My Company”, “email” : "deals@company.com" } used to compose the emails “From” header */
from?: string | { email: string, name: string };
/** Email address used to compose the emails “Reply-To” header */
reply_to?: string;
/** JSON dictionary containing headers other than “Subject”, “From”, “To”, and “Reply-To” */
headers?: any;
/** JSON array of attachments. */
attachments?: Attachment[];
/** JSON array of inline images. */
inline_images?: Attachment[];
}
interface PushData {
/** payload for APNs messages */
apns?: any;
/** payload for GCM messages */
gcm?: any;
}
interface Attachment {
/**
* The MIME type of the attachment; e.g., “text/plain”, “image/jpeg”, “audio/mp3”, “video/mp4”, “application/msword”, “application/pdf”, etc.,
* including the “charset” parameter (text/html; charset=“UTF-8”) if needed.
* The value will apply “as-is” to the “Content-Type” header of the generated MIME part for the attachment.
*
*/
type: string;
/** The filename of the attachment (for example, “document.pdf”). This is inserted into the filename parameter of the Content-Disposition header. */
name: string;
/**
* The content of the attachment as a Base64 encoded string.
* The string should not contain \r\n line breaks.
* The SparkPost systems will add line breaks as necessary to ensure the Base64 encoded lines contain no more than 76 characters each.
*
*/
data: string;
}
interface Webhook {
/** User-friendly name for webhook */
name: string;
/** URL of the target to which to POST event batches */
target: string;
/** Array of event types this webhook will receive */
events: string[];
/**
* Reserved for future use
*
* @default {true}
*/
active?: boolean;
/** Type of authentication to be used during POST requests to target */
auth_type?: string;
/** Object containing details needed to request authorization credentials, as necessary */
auth_request_details?: any;
/** Object containing credentials needed to make authorized POST requests to target */
auth_credentials?: any;
/** Authentication token to present in the X-MessageSystems-Webhook-Token header of POST requests to target */
auth_token?: string;
}
interface UpdateWebhook {
/** User-friendly name for webhook */
name?: string;
/** URL of the target to which to POST event batches */
target?: string;
/** Array of event types this webhook will receive */
events?: string[];
active?: boolean;
/** Type of authentication to be used during POST requests to target */
auth_type?: string;
/** Object containing details needed to request authorization credentials, as necessary */
auth_request_details?: any;
/** Object containing credentials needed to make authorized POST requests to target */
auth_credentials?: any;
/** Authentication token to present in the X-MessageSystems-Webhook-Token header of POST requests to target */
auth_token?: string;
}
interface WebhookLinks {
links: Array<{
href: string;
rel: string;
method: string[];
}>;
}
interface CreateOpts {
/**
* Domain (or subdomain) name for which SparkPost will receive inbound emails
*
*/
domain: string;
}
}
export = SparkPost;